Evaluate() public abstract method

public abstract Evaluate ( XPathNodeIterator nodeIterator ) : object
nodeIterator System.Xml.XPath.XPathNodeIterator
return object
Esempio n. 1
0
        internal bool toBoolean(XPathNodeIterator nodeIterator)
        {
            object result = _arg.Evaluate(nodeIterator);

            if (result is XPathNodeIterator)
            {
                return(_arg.Advance() != null);
            }

            string str = result as string;

            if (str != null)
            {
                return(toBoolean(str));
            }

            if (result is double)
            {
                return(toBoolean((double)result));
            }
            if (result is bool)
            {
                return((bool)result);
            }
            Debug.Assert(result is XPathNavigator, "Unknown value type");
            return(true);
        }
Esempio n. 2
0
        private double Number(XPathNodeIterator nodeIterator)
        {
            if (arg == null)
            {
                return(XmlConvertEx.ToXPathDouble(nodeIterator.Current.Value));
            }
            object argVal = arg.Evaluate(nodeIterator);

            switch (GetXPathType(argVal))
            {
            case XPathResultType.NodeSet:
                XPathNavigator value = arg.Advance();
                if (value != null)
                {
                    return(Number(value.Value));
                }
                break;

            case XPathResultType.String:
                return(Number((string)argVal));

            case XPathResultType.Boolean:
                return(Number((bool)argVal));

            case XPathResultType.Number:
                return((double)argVal);

            case XPathResultType_Navigator:
                return(Number(((XPathNavigator)argVal).Value));
            }
            return(double.NaN);
        }
Esempio n. 3
0
 private XPathNavigator EvaluateArg(XPathNodeIterator context)
 {
     if (_arg == null)
     {
         return(context.Current);
     }
     _arg.Evaluate(context);
     return(_arg.Advance());
 }
Esempio n. 4
0
 public override object Evaluate(XPathNodeIterator nodeIterator)
 {
     return(GetValue(_op,
                     XmlConvertEx.ToXPathDouble(_opnd1.Evaluate(nodeIterator)),
                     XmlConvertEx.ToXPathDouble(_opnd2.Evaluate(nodeIterator))
                     ));
 }
 public override object Evaluate(XPathNodeIterator context)
 {
     outputBuffer.Clear();
     count = 0;
     return(input.Evaluate(context)); // This is trick. IDQuery needs this value. Otherwise we would return this.
                                      // All subclasses should and would anyway override thismethod and return this.
 }
Esempio n. 6
0
 public override object Evaluate(XPathNodeIterator nodeIterator)
 {
     ResetCount();
     Reset();
     qyInput.Evaluate(nodeIterator);
     return(this);
 }
Esempio n. 7
0
        public override object Evaluate(XPathNodeIterator nodeIterator)
        {
            Operator.Op op    = _op;
            object      val1  = _opnd1.Evaluate(nodeIterator);
            object      val2  = _opnd2.Evaluate(nodeIterator);
            int         type1 = (int)GetXPathType(val1);
            int         type2 = (int)GetXPathType(val2);

            if (type1 < type2)
            {
                op = Operator.InvertOperator(op);
                object valTemp = val1;
                val1 = val2;
                val2 = valTemp;
                int typeTmp = type1;
                type1 = type2;
                type2 = typeTmp;
            }

            cmpXslt?cmp;

            if (op == Operator.Op.EQ || op == Operator.Op.NE)
            {
                cmp = s_CompXsltE[type1][type2];
            }
            else
            {
                cmp = s_CompXsltO[type1][type2];
            }

            Debug.Assert(cmp != null);
            return(cmp(op, val1, val2));
        }
Esempio n. 8
0
        public override object Evaluate(XPathNodeIterator nodeIterator)
        {
            Operator.Op op    = _op;
            object      val1  = _opnd1.Evaluate(nodeIterator);
            object      val2  = _opnd2.Evaluate(nodeIterator);
            int         type1 = (int)GetXPathType(val1);
            int         type2 = (int)GetXPathType(val2);

            if (type1 < type2)
            {
                op = Operator.InvertOperator(op);
                object valTemp = val1;
                val1 = val2;
                val2 = valTemp;
                int typeTmp = type1;
                type1 = type2;
                type2 = typeTmp;
            }

            if (op == Operator.Op.EQ || op == Operator.Op.NE)
            {
                return(s_compXsltE[type1][type2](op, val1, val2));
            }
            else
            {
                return(s_compXsltO[type1][type2](op, val1, val2));
            }
        }
Esempio n. 9
0
 public override object Evaluate(XPathNodeIterator context)
 {
     _qyInput.Evaluate(context);
     _results.Clear();
     BuildResultsList();
     count = 0;
     return(this);
 }
Esempio n. 10
0
 public override object Evaluate(XPathNodeIterator context)
 {
     qy1.Evaluate(context);
     qy2.Evaluate(context);
     _advance1 = true;
     _advance2 = true;
     _nextNode = null;
     base.ResetCount();
     return(this);
 }
Esempio n. 11
0
        public override object Evaluate(XPathNodeIterator nodeIterator)
        {
            object n1 = opnd1.Evaluate(nodeIterator);

            if (((bool)n1) == isOr)
            {
                return(n1);
            }
            return(opnd2.Evaluate(nodeIterator));
        }
Esempio n. 12
0
        internal bool EvaluatePredicate()
        {
            object value = _cond.Evaluate(qyInput);

            if (value is XPathNodeIterator)
            {
                return(_cond.Advance() != null);
            }
            if (value is string)
            {
                return(((string)value).Length != 0);
            }
            if (value is double)
            {
                return(((double)value) == qyInput.CurrentPosition);
            }
            if (value is bool)
            {
                return((bool)value);
            }
            Debug.Assert(value is XPathNavigator, "Unknown value type");
            return(true);
        }
Esempio n. 13
0
        public override object Evaluate(XPathNodeIterator nodeIterator)
        {
            base.Evaluate(nodeIterator);

            while (input.Advance() != null)
            {
                _child.Evaluate(input);
                XPathNavigator node;
                while ((node = _child.Advance()) != null)
                {
                    Insert(outputBuffer, node);
                }
            }
            return(this);
        }
 private static void EvaluateKey(XPathNavigator node, Query matchExpr, string matchStr, Query useExpr, Hashtable keyTable) {
     try {
         if (matchExpr.MatchNode(node) == null) {
             return;
         }
     } catch(XPathException) {
         throw XsltException.Create(Res.Xslt_InvalidPattern, matchStr);
     }
     object result = useExpr.Evaluate(new XPathSingletonIterator(node, /*moved:*/true));
     XPathNodeIterator it = result as XPathNodeIterator;
     if (it != null) {
         bool checkDuplicates = false;
         while (it.MoveNext()) {
             AddKeyValue(keyTable, /*key:*/it.Current.Value, /*value:*/node, checkDuplicates);
             checkDuplicates = true;
         }
     } else {
         String key = XmlConvert.ToXPathString(result);
         AddKeyValue(keyTable, key, /*value:*/node, /*checkDuplicates:*/ false);
     }
 }