Example #1
0
 double IVariableReferenceNumericalOut <double> .EvaluateNumerical(IVariableStoreContainer context)
 {
     if (Evaluate(context, out float value))
     {
         return(value);
     }
     throw new VariableEntryNotFoundException();
 }
Example #2
0
        public bool Evaluate(IVariableStoreContainer context, bool onFailedValue = false)
        {
            if (left.Evaluate(context, out var leftValue) && right.Evaluate(context, out var rightValue))
            {
                if (leftValue is IComparable leftComparable && rightValue is IComparable rightComparable)
                {
                    int comparison = leftComparable.CompareTo(rightComparable);

                    switch (conditionOperator)
                    {
                    case ConditionOperatorType.Equal:
                        return(comparison == 0);

                    case ConditionOperatorType.NotEqual:
                        return(comparison != 0);

                    case ConditionOperatorType.LessThan:
                        return(comparison < 0);

                    case ConditionOperatorType.MoreThan:
                        return(comparison > 0);

                    case ConditionOperatorType.LessThanEqual:
                        return(comparison <= 0);

                    case ConditionOperatorType.MoreThanEqual:
                        return(comparison >= 0);

                    default:
                        throw new ArgumentOutOfRangeException();
                    }
                }
                else
                {
                    switch (conditionOperator)
                    {
                    case ConditionOperatorType.Equal:
                        return(leftValue == rightValue);

                    case ConditionOperatorType.NotEqual:
                        return(leftValue != rightValue);

                    default:
                        throw new InvalidOperationException("この変数に対してこの比較演算子は適用できません。");
                    }
                }
            }
Example #3
0
        public bool Evaluate(IVariableStoreContainer context)
        {
            bool result = conditionOperator == CompositeVariableConditionOperator.And;

            for (int i = 0; i < conditionCount; i++)
            {
                var con = GetCondition(i);
                var res = con.Evaluate(context);
                if (result && !res)
                {
                    result = false;
                    break;
                }
                else if (!result && res)
                {
                    result = true;
                    break;
                }
            }

            return result;
        }
Example #4
0
 public void SetValue(IVariableStoreContainer context, char value)
 {
     base.SetValue(context, value);
 }
Example #5
0
 public abstract void SetValue(IVariableStoreContainer context, object value);
Example #6
0
 public abstract bool Evaluate(IVariableStoreContainer context, out object value);