source: NonGTP/Xerces/xercesc/dom/deprecated/DOM_NodeIterator.hpp @ 188

Revision 188, 8.0 KB checked in by mattausch, 19 years ago (diff)

added xercesc to support

Line 
1/*
2 * The Apache Software License, Version 1.1
3 *
4 * Copyright (c) 1999-2002 The Apache Software Foundation.  All rights
5 * reserved.
6 *
7 * Redistribution and use in source and binary forms, with or without
8 * modification, are permitted provided that the following conditions
9 * are met:
10 *
11 * 1. Redistributions of source code must retain the above copyright
12 *    notice, this list of conditions and the following disclaimer.
13 *
14 * 2. Redistributions in binary form must reproduce the above copyright
15 *    notice, this list of conditions and the following disclaimer in
16 *    the documentation and/or other materials provided with the
17 *    distribution.
18 *
19 * 3. The end-user documentation included with the redistribution,
20 *    if any, must include the following acknowledgment:
21 *       "This product includes software developed by the
22 *        Apache Software Foundation (http://www.apache.org/)."
23 *    Alternately, this acknowledgment may appear in the software itself,
24 *    if and wherever such third-party acknowledgments normally appear.
25 *
26 * 4. The names "Xerces" and "Apache Software Foundation" must
27 *    not be used to endorse or promote products derived from this
28 *    software without prior written permission. For written
29 *    permission, please contact apache\@apache.org.
30 *
31 * 5. Products derived from this software may not be called "Apache",
32 *    nor may "Apache" appear in their name, without prior written
33 *    permission of the Apache Software Foundation.
34 *
35 * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
36 * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
37 * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
38 * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
39 * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
40 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
41 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
42 * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
43 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
44 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
45 * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
46 * SUCH DAMAGE.
47 * ====================================================================
48 *
49 * This software consists of voluntary contributions made by many
50 * individuals on behalf of the Apache Software Foundation, and was
51 * originally based on software copyright (c) 1999, International
52 * Business Machines, Inc., http://www.ibm.com .  For more information
53 * on the Apache Software Foundation, please see
54 * <http://www.apache.org/>.
55 */
56
57/*
58 * $Id: DOM_NodeIterator.hpp,v 1.3 2002/11/04 15:04:44 tng Exp $
59 */
60
61#ifndef DOM_NodeIterator_HEADER_GUARD_
62#define DOM_NodeIterator_HEADER_GUARD_
63
64#include "DOM_NodeFilter.hpp"
65#include "DOM_Node.hpp"
66
67XERCES_CPP_NAMESPACE_BEGIN
68
69
70class NodeIteratorImpl;
71
72/**
73 * NodeIterators are used to step through a set of nodes
74 * e.g. the set of nodes in a NodeList, the document subtree governed by
75 * a particular node, the results of a query, or any other set of nodes.
76 * The set of nodes to be iterated is determined by the implementation
77 * of the NodeIterator. DOM Level 2 specifies a single NodeIterator
78 * implementation for document-order traversal of a document
79 * subtree. Instances of these iterators are created by calling
80 * <code>DocumentTraversal.createNodeIterator()</code>.
81 *
82 */
83class CDOM_EXPORT DOM_NodeIterator
84{
85    public:
86        /** @name Constructors and assignment operator */
87        //@{
88        /**
89          * Default constructor.
90          */
91        DOM_NodeIterator ();
92
93        /**
94          * Copy constructor.
95          *
96          * @param other The object to be copied.
97          */
98        DOM_NodeIterator(const DOM_NodeIterator &other);
99
100        /**
101          * Assignment operator.
102          *
103          * @param other The object to be copied.
104          */
105        DOM_NodeIterator & operator = (const DOM_NodeIterator &other);
106
107        /**
108          * Assignment operator.  This overloaded variant is provided for
109          *   the sole purpose of setting a DOM_NodeIterator to null.
110          *
111          * @param val   Only a value of 0, or null, is allowed.
112          */
113        DOM_NodeIterator & operator = (const DOM_NullPtr *val);
114        //@}
115
116        /** @name Destructor. */
117        //@{
118        /**
119          * Destructor for DOM_NodeIterator.
120          */
121        ~DOM_NodeIterator();
122        //@}
123
124        /** @name Equality and Inequality operators. */
125        //@{
126        /**
127         * The equality operator.
128         *
129         * @param other The object reference with which <code>this</code> object is compared
130         * @returns True if both <code>DOM_NodeIterator</code>s refer to the same
131         *  actual node, or are both null; return false otherwise.
132         */
133        bool operator == (const DOM_NodeIterator & other)const;
134
135        /**
136          *  Compare with a pointer.  Intended only to allow a convenient
137          *    comparison with null.
138          */
139        bool operator == (const DOM_NullPtr *other) const;
140
141        /**
142         * The inequality operator.  See operator ==.
143         */
144        bool operator != (const DOM_NodeIterator & other) const;
145
146         /**
147          *  Compare with a pointer.  Intended only to allow a convenient
148          *    comparison with null.
149          *
150          */
151        bool operator != (const DOM_NullPtr * other) const;
152        //@}
153
154        /** @name Get functions. */
155        //@{
156        /**
157         * The root node of the <code>NodeIterator</code>, as specified when it
158         * was created.
159         */
160        DOM_Node            getRoot();
161
162        /**
163          * Return which node types are presented via the iterator.
164          * The available set of constants is defined in the DOM_NodeFilter interface.
165          *
166          */
167        unsigned long       getWhatToShow();
168
169        /**
170          * Return The filter used to screen nodes.
171          *
172          */
173        DOM_NodeFilter*     getFilter();
174
175        /**
176          * Return the expandEntityReferences flag.
177          * The value of this flag determines whether the children of entity reference
178          * nodes are visible to the DOM_NodeFilter. If false, they will be skipped over.
179          *
180          */
181        bool getExpandEntityReferences();
182
183        /**
184          * Returns the next node in the set and advances the position of the iterator
185          * in the set. After a DOM_NodeIterator is created, the first call to nextNode()
186          * returns the first node in the set.
187          *
188          * @exception DOMException
189          *   INVALID_STATE_ERR: Raised if this method is called after the
190          *   <code>detach</code> method was invoked.
191          */
192        DOM_Node            nextNode();
193
194        /**
195          * Returns the previous node in the set and moves the position of the iterator
196          * backwards in the set.
197          *
198          * @exception DOMException
199          *   INVALID_STATE_ERR: Raised if this method is called after the
200          *   <code>detach</code> method was invoked.
201          */
202        DOM_Node            previousNode();
203        //@}
204
205        /** @name Detaching functions. */
206        //@{
207        /**
208          * Detaches the iterator from the set which it iterated over, releasing any
209          * computational resources and placing the iterator in the INVALID state. After
210          * <code>detach</code> has been invoked, calls to <code>nextNode</code> or
211          * <code>previousNode</code> will raise the exception INVALID_STATE_ERR.
212          *
213          */
214        void                            detach();
215        //@}
216
217    protected:
218        DOM_NodeIterator (NodeIteratorImpl* impl);
219
220        friend class DOM_Document;
221
222    private:
223        NodeIteratorImpl*                 fImpl;
224};
225
226XERCES_CPP_NAMESPACE_END
227
228#endif
Note: See TracBrowser for help on using the repository browser.