/// <summary>Optimizations: !(Bool)->(!Bool), !!X->X, !(X==Bool)->(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)); }
private static NQExpression ToNQExpression(ConstValue value) { if (IsTrue(value.Value())) { return(BoolConstExpression.True); } return(BoolConstExpression.False); }
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(); }
public virtual void Visit(ConstValue operand) { _clazz = _referenceProvider.ForType(operand.Value().GetType()); }