Example #1
0
        public override object Execute(IContextProvider provider, object[] dataPool)
        {
            bool orderedSet = _isOrderedSet;
            bool special    = provider != null &&
                              provider.Context.GetType().Name == "XPathDocumentNavigator";
            XPath2NodeIterator tail;

            if (_path[0].type == XPath2ExprType.Expr)
            {
                tail = XPath2NodeIterator.Create(_path[0].node.Execute(provider, dataPool));
                if (!(_path[0].node is OrderedBinaryOperatorNode))
                {
                    orderedSet = orderedSet & tail.IsSingleIterator;
                }
            }
            else
            {
                tail = _path[0].Create(Context, dataPool,
                                       XPath2NodeIterator.Create(CoreFuncs.ContextNode(provider)), special);
            }
            for (int k = 1; k < _path.Length; k++)
            {
                tail = _path[k].Create(Context, dataPool, tail, special);
            }
            if (!orderedSet)
            {
                return(new DocumentOrderNodeIterator(tail));
            }
            return(tail);
        }
        public override object Execute(IContextProvider provider, object[] dataPool)
        {
            XPath2NodeIterator iter = XPath2NodeIterator.Create(this[0].Execute(provider, dataPool));

            for (int k = 1; k < Count; k++)
            {
                iter = new NodeIterator(CreateEnumerator(dataPool, this[k], iter));
            }
            return(iter);
        }
Example #3
0
 protected override XPathItem NextItem()
 {
     while (true)
     {
         if (iter == null)
         {
             if (!baseIter.MoveNext())
             {
                 return(null);
             }
             sequentialPosition = 0;
             iter = XPath2NodeIterator.Create(node.Execute(new NodeProvider(baseIter.Current), dataPool));
         }
         if (iter.MoveNext())
         {
             sequentialPosition++;
             return(iter.Current);
         }
         iter = null;
     }
 }
Example #4
0
 public override object Execute(IContextProvider provider, object[] dataPool)
 {
     return(new ForIterator(this, provider, dataPool,
                            XPath2NodeIterator.Create(this[0].Execute(provider, dataPool))));
 }