コード例 #1
0
        public static TypedExpressionValue <bool> Compare(IExpressionNumeric leftNumeric, IExpressionNumeric rightNumeric, ExpressionOperator op)
        {
            ExpressionDouble left  = leftNumeric.ToDoubleExpression();
            ExpressionDouble right = rightNumeric.ToDoubleExpression();

            string[] elementIDs = left.UsedIdentifiers.Concat(right.UsedIdentifiers).Distinct().ToArray();

            switch (op)
            {
            case ExpressionOperator.GreaterThan:
                return(new ExpressionBool(elementIDs, () => { return left.Result > right.Result; }));

            case ExpressionOperator.GreaterEquals:
                return(new ExpressionBool(elementIDs, () => { return left.Result >= right.Result; }));

            case ExpressionOperator.LessThan:
                return(new ExpressionBool(elementIDs, () => { return left.Result < right.Result; }));

            case ExpressionOperator.LessEquals:
                return(new ExpressionBool(elementIDs, () => { return left.Result <= right.Result; }));

            case ExpressionOperator.Equals:
                return(new ExpressionBool(elementIDs, () => { return left.Result == right.Result; }));
            }
            throw new InvalidOperationException(UserMessages.ExceptionNoComparison(left.ExpressionType, right.ExpressionType, op));
        }
コード例 #2
0
ファイル: ExpressionBool.cs プロジェクト: njtromp/endless-ql
 /// <summary>
 /// Compares with expression
 /// </summary>
 /// <param name="expressionValue">Expression to compare with</param>
 /// <param name="op">Operator</param>
 /// <returns>Boolean expression</returns>
 public override TypedExpressionValue <bool> Compare(ExpressionValue expressionValue, ExpressionOperator op)
 {
     if (ValidCompare(expressionValue, op))
     {
         if (expressionValue.Type == typeof(bool))
         {
             AddToChain((expressionValue as ExpressionBool).GetExpression(), op);
             UsedWidgetIDs = CombineWidgets(expressionValue);
             return(this);
         }
     }
     throw new InvalidOperationException(UserMessages.ExceptionNoComparison(Type, expressionValue.Type, op));
 }
コード例 #3
0
        public override TypedExpressionValue <bool> Compare(ExpressionValue expressionValue, ExpressionOperator op)
        {
            if (ValidCompare(expressionValue, op))
            {
                switch (expressionValue)
                {
                case ExpressionText expressionText:
                    return(CompareWith(expressionText, op));

                default:
                    throw new NotImplementedException();
                }
            }
            throw new InvalidOperationException(UserMessages.ExceptionNoComparison(ExpressionType, expressionValue.ExpressionType, op));
        }
コード例 #4
0
        public override TypedExpressionValue <bool> Compare(ExpressionValue expressionValue, ExpressionOperator op)
        {
            if (ValidCompare(expressionValue, op))
            {
                switch (expressionValue)
                {
                case IExpressionNumeric expressionNumeric:
                    return(NumericUtils.Compare(this, expressionNumeric, op));

                default:
                    throw new NotImplementedException();
                }
            }
            throw new InvalidOperationException(UserMessages.ExceptionNoComparison(ExpressionType, expressionValue.ExpressionType, op));
        }
コード例 #5
0
ファイル: ExpressionInt.cs プロジェクト: njtromp/endless-ql
 /// <summary>
 /// Compares with expression
 /// </summary>
 /// <param name="expressionValue">Expression to compare with</param>
 /// <param name="op">Operator</param>
 /// <returns>Boolean expression</returns>
 public override TypedExpressionValue <bool> Compare(ExpressionValue expressionValue, ExpressionOperator op)
 {
     if (ValidCompare(expressionValue, op))
     {
         if (expressionValue.Type == typeof(double))
         {
             return(CompareValue(expressionValue as TypedExpressionValue <double>, op));
         }
         else if (expressionValue.Type == typeof(int))
         {
             return(CompareValue(expressionValue as ExpressionInt, op)); // Uses implicit cast
         }
     }
     throw new InvalidOperationException(UserMessages.ExceptionNoComparison(Type, expressionValue.Type, op));
 }
コード例 #6
0
ファイル: ExpressionInt.cs プロジェクト: njtromp/endless-ql
        /// <summary>
        /// Compares expression with double expression
        /// </summary>
        /// <param name="item">double expression</param>
        /// <param name="op">Compare operator</param>
        /// <returns>Boolean expression</returns>
        private TypedExpressionValue <bool> CompareValue(TypedExpressionValue <double> item, ExpressionOperator op)
        {
            switch (op)
            {
            case ExpressionOperator.GreaterThan:
                return(new ExpressionBool(CombineWidgets(item), () => { return Result > item.Result; }));

            case ExpressionOperator.GreaterEquals:
                return(new ExpressionBool(CombineWidgets(item), () => { return Result >= item.Result; }));

            case ExpressionOperator.LessThan:
                return(new ExpressionBool(CombineWidgets(item), () => { return Result < item.Result; }));

            case ExpressionOperator.LessEquals:
                return(new ExpressionBool(CombineWidgets(item), () => { return Result <= item.Result; }));

            case ExpressionOperator.Equals:
                return(new ExpressionBool(CombineWidgets(item), () => { return Result == item.Result; }));
            }
            throw new InvalidOperationException(UserMessages.ExceptionNoComparison(Type, item.Type, op));
        }
コード例 #7
0
        public override TypedExpressionValue <bool> Compare(ExpressionValue expressionValue, ExpressionOperator op)
        {
            if (ValidCompare(expressionValue, op))
            {
                ExpressionBool expression;
                switch (expressionValue.ExpressionType)
                {
                case ExpressionType.Bool:
                    expression = expressionValue as ExpressionBool;
                    break;

                default:
                    throw new NotImplementedException();
                }

                AddToChain(expression.GetExpression(), op);
                UsedIdentifiers = CombineElements(expressionValue);
                return(this);
            }
            throw new InvalidOperationException(UserMessages.ExceptionNoComparison(ExpressionType, expressionValue.ExpressionType, op));
        }