Ejemplo n.º 1
0
 /// <summary>Optimizations: !(Bool)-&gt;(!Bool), !!X-&gt;X, !(X==Bool)-&gt;(X==!Bool)
 ///     </summary>
 public virtual IExpression Not(IExpression expr)
 {
     if (expr.Equals(BoolConstExpression.True))
     {
         return(BoolConstExpression.False);
     }
     if (expr.Equals(BoolConstExpression.False))
     {
         return(BoolConstExpression.True);
     }
     if (expr is NotExpression)
     {
         return(((NotExpression)expr).Expr());
     }
     if (expr is ComparisonExpression)
     {
         ComparisonExpression cmpExpr = (ComparisonExpression)expr;
         if (cmpExpr.Right() is ConstValue)
         {
             ConstValue rightConst = (ConstValue)cmpExpr.Right();
             if (rightConst.Value() is bool)
             {
                 bool boolVal = (bool)rightConst.Value();
                 // new Boolean() instead of Boolean.valueOf() for .NET conversion
                 return(new ComparisonExpression(cmpExpr.Left(), new ConstValue(!boolVal), cmpExpr
                                                 .Op()));
             }
         }
     }
     return(new NotExpression(expr));
 }
Ejemplo n.º 2
0
 private static NQExpression ToNQExpression(ConstValue value)
 {
     if (IsTrue(value.Value()))
     {
         return(BoolConstExpression.True);
     }
     return(BoolConstExpression.False);
 }
Ejemplo n.º 3
0
        private static void AdjustConstValue(TypeReference typeRef, ConstValue constValue)
        {
            object value = constValue.Value();

            if (!value.GetType().IsValueType)
            {
                return;
            }

            System.Type type = ResolveTypeReference(typeRef);
            if (!type.IsEnum || value.GetType() == type)
            {
                return;
            }

            constValue.Value(Enum.ToObject(type, value));
        }
        public virtual void Visit(ConstValue operand)
        {
            object value = operand.Value();

            if (value != null)
            {
                _opClass = TypeRef(value.GetType());
            }
            _methodBuilder.Ldc(value);
            if (value != null)
            {
                Box(_opClass, !_inArithmetic);
            }
        }
 public void Visit(ConstValue operand)
 {
     _value = operand.Value();
 }
Ejemplo n.º 6
0
 public virtual void Visit(ConstValue operand)
 {
     _clazz = _referenceProvider.ForType(operand.Value().GetType());
 }