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)); }