public override System.Object eval(FormInstance model, EvaluationContext evalContext) { System.Object aval = a.eval(model, evalContext); System.Object bval = b.eval(model, evalContext); bool result = false; //xpath spec says comparisons only defined for numbers (not defined for strings) aval = XPathFuncExpr.toNumeric(aval); bval = XPathFuncExpr.toNumeric(bval); double fa = ((System.Double)aval); double fb = ((System.Double)bval); switch (op) { case LT: result = fa < fb; break; case GT: result = fa > fb; break; case LTE: result = fa <= fb; break; case GTE: result = fa >= fb; break; } return(result); }
public override System.Object eval(FormInstance model, EvaluationContext evalContext) { System.Object aval = XPathFuncExpr.unpack(a.eval(model, evalContext)); System.Object bval = XPathFuncExpr.unpack(b.eval(model, evalContext)); bool eq = false; if (aval is System.Boolean || bval is System.Boolean) { if (!(aval is System.Boolean)) { aval = XPathFuncExpr.toBoolean(aval); } else if (!(bval is System.Boolean)) { bval = XPathFuncExpr.toBoolean(bval); } bool ba = ((System.Boolean)aval); bool bb = ((System.Boolean)bval); eq = (ba == bb); } else if (aval is System.Double || bval is System.Double) { if (!(aval is System.Double)) { aval = XPathFuncExpr.toNumeric(aval); } else if (!(bval is System.Double)) { bval = XPathFuncExpr.toNumeric(bval); } double fa = ((System.Double)aval); double fb = ((System.Double)bval); eq = System.Math.Abs(fa - fb) < 1.0e-12; } else { aval = XPathFuncExpr.toString(aval); bval = XPathFuncExpr.toString(bval); eq = (aval.Equals(bval)); } return(equal?eq:!eq); }
public override Object eval(FormInstance model, EvaluationContext evalContext) { Object aval = XPathFuncExpr.unpack(a.eval(model, evalContext)); Object bval = XPathFuncExpr.unpack(b.eval(model, evalContext)); Boolean eq = false; if (aval is Boolean || bval is Boolean) { if (!(aval is Boolean)) { aval = XPathFuncExpr.toBoolean(aval); } else if (!(bval is Boolean)) { bval = XPathFuncExpr.toBoolean(bval); } Boolean ba = ((Boolean)aval); Boolean bb = ((Boolean)bval); eq = (ba == bb); } else if (aval is Double || bval is Double) { if (!(aval is Double)) { aval = XPathFuncExpr.toNumeric(aval); } else if (!(bval is Double)) { bval = XPathFuncExpr.toNumeric(bval); } double fa = ((Double)aval); double fb = ((Double)bval); eq = Math.Abs(fa - fb) < 1.0e-12; } else { aval = XPathFuncExpr.ToString(aval); bval = XPathFuncExpr.ToString(bval); eq = (aval.Equals(bval)); } return((Boolean)(equal ? eq : !eq)); }
public Object eval(FormInstance model, EvaluationContext evalContext) { double aval = XPathFuncExpr.toNumeric(a.eval(model, evalContext)); double bval = XPathFuncExpr.toNumeric(b.eval(model, evalContext)); double result = 0; switch (op) { case ADD: result = aval + bval; break; case SUBTRACT: result = aval - bval; break; case MULTIPLY: result = aval * bval; break; case DIVIDE: result = aval / bval; break; case MODULO: result = aval % bval; break; } return(result); }
public override Object eval(FormInstance model, EvaluationContext evalContext) { double aval = XPathFuncExpr.toNumeric(a.eval(model, evalContext)); return(-aval); }