public StringLookupComparer(StringEval se) : base(se) { _value = se.StringValue; }
/** * uses the relevant flags to decode the StringEval * @param eval */ private ValueEval XlateRefStringEval(StringEval sve) { if ((flags & REF_STRING_IS_PARSED) > 0) { String s = sve.StringValue; double d = OperandResolver.ParseDouble(s); if (double.IsNaN(d)) { return ErrorEval.VALUE_INVALID; } return new NumberEval(d); } // strings are blanks return BlankEval.instance; }
/** * When the second argument is a string, many things are possible */ private static I_MatchPredicate CreateGeneralMatchPredicate(StringEval stringEval) { String value = stringEval.StringValue; CmpOp operator1 = CmpOp.GetOperator(value); value = value.Substring(operator1.Length); bool? booleanVal = ParseBoolean(value); if (booleanVal != null) { return new BooleanMatcher(booleanVal.Value, operator1); } Double doubleVal = OperandResolver.ParseDouble(value); if (!double.IsNaN(doubleVal)) { return new NumberMatcher(doubleVal, operator1); } ErrorEval ee = ParseError(value); if (ee != null) { return new ErrorMatcher(ee.ErrorCode, operator1); } //else - just a plain string with no interpretation. return new StringMatcher(value, operator1); }
/** * uses the relevant flags to decode the StringEval * @param eval */ private ValueEval XlateStringEval(StringEval eval) { if ((flags & STRING_IS_PARSED) > 0) { String s = eval.StringValue; double d = OperandResolver.ParseDouble(s); if (double.IsNaN(d)) { return ErrorEval.VALUE_INVALID; } return new NumberEval(d); } // strings are errors? if ((flags & STRING_IS_INVALID_VALUE) > 0) { return ErrorEval.VALUE_INVALID; } // ignore strings return XlateBlankEval(BLANK_IS_PARSED); }