Exemple #1
0
        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);
        }
Exemple #2
0
        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));
        }