Line data Source code
1 : /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
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 : #include "nsAutoPtr.h"
12 :
13 0 : class txNodeSetContext : public txIEvalContext
14 : {
15 : public:
16 0 : txNodeSetContext(txNodeSet* aContextNodeSet, txIMatchContext* aContext)
17 0 : : mContextSet(aContextNodeSet), mPosition(0), mInner(aContext)
18 : {
19 0 : }
20 :
21 : // Iteration over the given NodeSet
22 0 : bool hasNext()
23 : {
24 0 : return mPosition < size();
25 : }
26 0 : void next()
27 : {
28 0 : NS_ASSERTION(mPosition < size(), "Out of bounds.");
29 0 : mPosition++;
30 0 : }
31 0 : void setPosition(uint32_t aPosition)
32 : {
33 0 : NS_ASSERTION(aPosition > 0 &&
34 : aPosition <= size(), "Out of bounds.");
35 0 : mPosition = aPosition;
36 0 : }
37 :
38 : TX_DECL_EVAL_CONTEXT;
39 :
40 : protected:
41 : RefPtr<txNodeSet> mContextSet;
42 : uint32_t mPosition;
43 : txIMatchContext* mInner;
44 : };
45 :
46 : #endif // __TX_XPATH_SET_CONTEXT
|