コード例 #1
0
ファイル: InterpreterVisitor.cs プロジェクト: anycall/Orchard
 private static EvaluationResult EvaluateComparison(EvaluationResult left, EvaluationResult right, Func<int, bool> operation) {
     var type = PrimitiveType.InstanceFor(left.Value);
     var result = type.ComparisonOperator(left, right);
     if (result.IsInt32)
         return Result(operation(result.Int32Value));
     return result;
 }
コード例 #2
0
ファイル: InterpreterVisitor.cs プロジェクト: anycall/Orchard
 private EvaluationResult EvaluateLogicalOr(EvaluationResult left, EvaluationResult right) {
     var type = PrimitiveType.InstanceFor(left.Value);
     return type.LogicalOr(left, right);
 }
コード例 #3
0
ファイル: PrimitiveType.cs プロジェクト: RasterImage/Orchard
 public override EvaluationResult ComparisonOperator(EvaluationResult value, EvaluationResult other) {
     if (value.IsInt32 && other.IsInt32)
         return Result(value.Int32Value.CompareTo(other.Int32Value));
     return Error("Integer values can only be compared to other integer values");
 }
コード例 #4
0
ファイル: PrimitiveType.cs プロジェクト: RasterImage/Orchard
 public override EvaluationResult LogicalOr(EvaluationResult value, EvaluationResult other) {
     return value;
 }
コード例 #5
0
ファイル: PrimitiveType.cs プロジェクト: RasterImage/Orchard
 public override EvaluationResult EqualityOperator(EvaluationResult value, EvaluationResult other) {
     if (value.IsBool && other.IsBool)
         return Result(value.BoolValue == other.BoolValue);
     return Error("Boolean values can only be compared to other boolean values");
 }
コード例 #6
0
ファイル: PrimitiveType.cs プロジェクト: RasterImage/Orchard
 public override EvaluationResult LogicalOr(EvaluationResult value, EvaluationResult other) {
     if (value.BoolValue)
         return value;
     return other;
 }
コード例 #7
0
 public abstract EvaluationResult ComparisonOperator(EvaluationResult value, EvaluationResult other);
コード例 #8
0
ファイル: PrimitiveType.cs プロジェクト: RasterImage/Orchard
 public abstract EvaluationResult ComparisonOperator(EvaluationResult value, EvaluationResult other);
コード例 #9
0
 public override EvaluationResult LogicalOr(EvaluationResult value, EvaluationResult other)
 {
     return(value);
 }
コード例 #10
0
 public abstract EvaluationResult EqualityOperator(EvaluationResult value, EvaluationResult other);
コード例 #11
0
 public override EvaluationResult ComparisonOperator(EvaluationResult value, EvaluationResult other)
 {
     return(value);
 }
コード例 #12
0
 public override EvaluationResult EqualityOperator(EvaluationResult value, EvaluationResult other)
 {
     return(value);
 }
コード例 #13
0
 public override EvaluationResult ComparisonOperator(EvaluationResult value, EvaluationResult other)
 {
     return(Error("'null' values can not be compared"));
 }
コード例 #14
0
ファイル: InterpreterVisitor.cs プロジェクト: anycall/Orchard
        private static EvaluationResult ConvertToBool(EvaluationResult value) {
            //TODO: Proper type conversion
            if (value.IsBool)
                return value;

            return Error(string.Format("Value '{0}' is not convertible to a boolean.", value));
        }
コード例 #15
0
 public abstract EvaluationResult LogicalOr(EvaluationResult value, EvaluationResult other);
コード例 #16
0
 public override EvaluationResult EqualityOperator(EvaluationResult value, EvaluationResult other)
 {
     return(Result(value.IsNull && other.IsNull));
 }
コード例 #17
0
 protected EvaluationResult Result(object value)
 {
     return(EvaluationResult.Result(value));
 }
コード例 #18
0
ファイル: PrimitiveType.cs プロジェクト: RasterImage/Orchard
 public abstract EvaluationResult LogicalOr(EvaluationResult value, EvaluationResult other);
コード例 #19
0
 protected EvaluationResult Error(string message)
 {
     return(EvaluationResult.Error(message));
 }
コード例 #20
0
ファイル: PrimitiveType.cs プロジェクト: RasterImage/Orchard
 public override EvaluationResult ComparisonOperator(EvaluationResult value, EvaluationResult other) {
     return Error("Boolean values can only be compared to other boolean values");
 }
コード例 #21
0
 public override EvaluationResult ComparisonOperator(EvaluationResult value, EvaluationResult other)
 {
     return(Error("Boolean values can only be compared to other boolean values"));
 }
コード例 #22
0
ファイル: PrimitiveType.cs プロジェクト: RasterImage/Orchard
 public override EvaluationResult EqualityOperator(EvaluationResult value, EvaluationResult other) {
     if (value.IsInt32 && other.IsInt32)
         return Result(value.Int32Value == other.Int32Value);
     return Error("Integer values can only be compared to other integer values");
 }
コード例 #23
0
ファイル: PrimitiveType.cs プロジェクト: RasterImage/Orchard
 public override EvaluationResult EqualityOperator(EvaluationResult value, EvaluationResult other) {
     return Result(value.IsNull && other.IsNull);
 }
コード例 #24
0
ファイル: PrimitiveType.cs プロジェクト: RasterImage/Orchard
 public override EvaluationResult LogicalAnd(EvaluationResult value, EvaluationResult other) {
     return other;
 }
コード例 #25
0
ファイル: PrimitiveType.cs プロジェクト: RasterImage/Orchard
 public override EvaluationResult ComparisonOperator(EvaluationResult value, EvaluationResult other) {
     return Error("'null' values can not be compared");
 }
コード例 #26
0
ファイル: PrimitiveType.cs プロジェクト: RasterImage/Orchard
 public override EvaluationResult EqualityOperator(EvaluationResult value, EvaluationResult other) {
     if (value.IsString && other.IsString)
         return Result(value.StringValue == other.StringValue);
     return Result(false);
 }
コード例 #27
0
ファイル: PrimitiveType.cs プロジェクト: RasterImage/Orchard
 public override EvaluationResult EqualityOperator(EvaluationResult value, EvaluationResult other) {
     return value;
 }
コード例 #28
0
ファイル: InterpreterVisitor.cs プロジェクト: anycall/Orchard
        private static EvaluationResult EvaluateArithmetic(EvaluationResult left, EvaluationResult right,
            Func<EvaluationResult, EvaluationResult, EvaluationResult> operation) {
            //TODO: Proper type conversion
            var leftValue = ConvertToInt(left);
            if (leftValue.IsError)
                return leftValue;

            var rightValue = ConvertToInt(right);
            if (rightValue.IsError)
                return rightValue;

            return operation(leftValue, rightValue);
        }
コード例 #29
0
ファイル: PrimitiveType.cs プロジェクト: RasterImage/Orchard
 public override EvaluationResult ComparisonOperator(EvaluationResult value, EvaluationResult other) {
     return value;
 }
コード例 #30
0
ファイル: InterpreterVisitor.cs プロジェクト: anycall/Orchard
        private static EvaluationResult ConvertToInt(EvaluationResult value) {
            //TODO: Proper type conversion
            if (value.IsInt32)
                return value;

            return Error(string.Format("Value '{0}' is not convertible to an integer.", value));
        }
コード例 #31
0
ファイル: PrimitiveType.cs プロジェクト: RasterImage/Orchard
 public abstract EvaluationResult EqualityOperator(EvaluationResult value, EvaluationResult other);
コード例 #32
0
ファイル: InterpreterVisitor.cs プロジェクト: anycall/Orchard
 private static EvaluationResult EvaluateEquality(EvaluationResult left, EvaluationResult right, Func<bool, bool> operation) {
     var type = PrimitiveType.InstanceFor(left.Value);
     var result = type.EqualityOperator(left, right);
     if (result.IsBool)
         return Result(operation(result.BoolValue));
     return result;
 }
コード例 #33
0
 public override EvaluationResult LogicalAnd(EvaluationResult value, EvaluationResult other)
 {
     return(other);
 }