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

Revision 188, 7.2 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: TreeWalkerImpl.hpp,v 1.4 2003/05/15 18:25:53 knoaman Exp $
59 */
60
61//
62//  This file is part of the internal implementation of the C++ XML DOM.
63//  It should NOT be included or used directly by application programs.
64//
65//  Applications should include the file <xercesc/dom/deprecated/DOM.hpp> for the entire
66//  DOM API, or DOM_*.hpp for individual DOM classes, where the class
67//  name is substituded for the *.
68//
69
70#ifndef TreeWalkerImpl_HEADER_GUARD_
71#define TreeWalkerImpl_HEADER_GUARD_
72
73#include <xercesc/util/XMemory.hpp>
74#include "DOM_TreeWalker.hpp"
75#include "RefCountedImpl.hpp"
76
77XERCES_CPP_NAMESPACE_BEGIN
78
79class CDOM_EXPORT TreeWalkerImpl : public RefCountedImpl {
80
81        public:
82    // Implementation Note: No state is kept except the data above
83    // (fWhatToShow, fNodeFilter, fCurrentNode, fRoot) such that
84    // setters could be created for these data values and the
85    // implementation will still work.
86
87    /** Public constructor */
88    TreeWalkerImpl (
89        DOM_Node root,
90        unsigned long whatToShow,
91        DOM_NodeFilter* nodeFilter,
92        bool expandEntityRef);
93    TreeWalkerImpl (const TreeWalkerImpl& twi);
94    TreeWalkerImpl& operator= (const TreeWalkerImpl& twi);
95
96    // Return the root DOM_Node.
97    DOM_Node getRoot ();
98
99    // Return the whatToShow value.
100    unsigned long  getWhatToShow ();
101
102    // Return the NodeFilter.
103    DOM_NodeFilter* getFilter ();
104
105       
106    // Return the current DOM_Node.
107    DOM_Node getCurrentNode ();
108
109    // Return the current Node.
110    void setCurrentNode (DOM_Node node);
111
112    // Return the parent Node from the current node,
113    //  after applying filter, whatToshow.
114    //  If result is not null, set the current Node.
115    DOM_Node parentNode ();
116
117    // Return the first child Node from the current node,
118    //  after applying filter, whatToshow.
119    //  If result is not null, set the current Node.
120    DOM_Node firstChild ();
121
122    // Return the last child Node from the current node,
123    //  after applying filter, whatToshow.
124    //  If result is not null, set the current Node.
125    DOM_Node lastChild ();
126
127    // Return the previous sibling Node from the current node,
128    //  after applying filter, whatToshow.
129    //  If result is not null, set the current Node.
130    DOM_Node previousSibling ();
131
132    // Return the next sibling Node from the current node,
133    //  after applying filter, whatToshow.
134    //  If result is not null, set the current Node.
135
136    DOM_Node nextSibling ();
137    // Return the previous Node from the current node,
138    //  after applying filter, whatToshow.
139    //  If result is not null, set the current Node.
140    DOM_Node previousNode ();
141
142    // Return the next Node from the current node,
143    //  after applying filter, whatToshow.
144    //  If result is not null, set the current Node.
145    DOM_Node nextNode ();
146
147    void unreferenced ();
148
149    // Get the expandEntity reference flag.
150    bool getExpandEntityReferences();
151
152protected:
153
154    // Internal function.
155    //  Return the parent Node, from the input node
156    //  after applying filter, whatToshow.
157    //  The current node is not consulted or set.
158    DOM_Node getParentNode (DOM_Node node);
159
160    // Internal function.
161    //  Return the nextSibling Node, from the input node
162    //  after applying filter, whatToshow.
163    //  The current node is not consulted or set.
164    DOM_Node getNextSibling (DOM_Node node);
165
166    // Internal function.
167    //  Return the previous sibling Node, from the input node
168    //  after applying filter, whatToshow.
169    //  The current node is not consulted or set.
170    DOM_Node getPreviousSibling (DOM_Node node);
171
172    // Internal function.
173    //  Return the first child Node, from the input node
174    //  after applying filter, whatToshow.
175    //  The current node is not consulted or set.
176    DOM_Node getFirstChild (DOM_Node node);
177
178    // Internal function.
179    //  Return the last child Node, from the input node
180    //  after applying filter, whatToshow.
181    //  The current node is not consulted or set.
182    DOM_Node getLastChild (DOM_Node node);
183
184    // The node is accepted if it passes the whatToShow and the filter.
185    short acceptNode (DOM_Node node);
186
187               
188private:
189    // The whatToShow mask.
190    unsigned long fWhatToShow;
191
192    // The NodeFilter reference.
193    DOM_NodeFilter* fNodeFilter;
194
195    // The current Node.
196    DOM_Node fCurrentNode;
197
198    // The root Node.
199    DOM_Node fRoot;
200
201    // The expandEntity reference flag.
202    bool fExpandEntityReferences;
203};
204
205XERCES_CPP_NAMESPACE_END
206
207#endif
Note: See TracBrowser for help on using the repository browser.