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) { return(CoreFuncs.ContextNode(provider)); }