コード例 #1
0
ファイル: Shift.cs プロジェクト: meikeric/DotCopter
 public static IntExpression Create(IntExpression lhs, IntExpression rhs, bool shiftLeft)
 {
     int lhsValue, rhsValue;
       if(lhs.TryGetConstant(out lhsValue) && rhs.TryGetConstant(out rhsValue)) {
     return shiftLeft ? lhsValue<<rhsValue : lhsValue>>rhsValue;
       }
       return new Shift(lhs, rhs, shiftLeft);
 }
コード例 #2
0
        public static IntExpression Create(IntExpression lhs, IntExpression rhs, bool shiftLeft)
        {
            int lhsValue, rhsValue;

            if (lhs.TryGetConstant(out lhsValue) && rhs.TryGetConstant(out rhsValue))
            {
                return(shiftLeft ? lhsValue << rhsValue : lhsValue >> rhsValue);
            }
            return(new Shift(lhs, rhs, shiftLeft));
        }
コード例 #3
0
 public static IntExpression Create(IntExpression expr)
 {
     int value;
       if(expr.TryGetConstant(out value)) {
     return new IntConstant(-value);
       }
       var alreadyNegatedExpression=expr as UnaryMinus;
       return ReferenceEquals(alreadyNegatedExpression, null)
     ? new UnaryMinus(expr)
     : alreadyNegatedExpression.expr;
 }
コード例 #4
0
ファイル: UnaryMinus.cs プロジェクト: meikeric/DotCopter
        public static IntExpression Create(IntExpression expr)
        {
            int value;

            if (expr.TryGetConstant(out value))
            {
                return(new IntConstant(-value));
            }
            var alreadyNegatedExpression = expr as UnaryMinus;

            return(ReferenceEquals(alreadyNegatedExpression, null)
        ? new UnaryMinus(expr)
        : alreadyNegatedExpression.expr);
        }