1 /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ 2 /* This Source Code Form is subject to the terms of the Mozilla Public 3 * License, v. 2.0. If a copy of the MPL was not distributed with this 4 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ 5 6 #ifndef __TX_XPATH_SET_CONTEXT 7 #define __TX_XPATH_SET_CONTEXT 8 9 #include "txIXPathContext.h" 10 #include "txNodeSet.h" 11 12 class txNodeSetContext : public txIEvalContext { 13 public: txNodeSetContext(txNodeSet * aContextNodeSet,txIMatchContext * aContext)14 txNodeSetContext(txNodeSet* aContextNodeSet, txIMatchContext* aContext) 15 : mContextSet(aContextNodeSet), mPosition(0), mInner(aContext) {} 16 17 // Iteration over the given NodeSet hasNext()18 bool hasNext() { return mPosition < size(); } next()19 void next() { 20 NS_ASSERTION(mPosition < size(), "Out of bounds."); 21 mPosition++; 22 } setPosition(uint32_t aPosition)23 void setPosition(uint32_t aPosition) { 24 NS_ASSERTION(aPosition > 0 && aPosition <= size(), "Out of bounds."); 25 mPosition = aPosition; 26 } 27 28 TX_DECL_EVAL_CONTEXT; 29 30 protected: 31 RefPtr<txNodeSet> mContextSet; 32 uint32_t mPosition; 33 txIMatchContext* mInner; 34 }; 35 36 #endif // __TX_XPATH_SET_CONTEXT 37