Xalan-C++ API Reference
1.12.0
xalanc
DOMSupport
TreeWalker.hpp
Go to the documentation of this file.
1
/*
2
* Licensed to the Apache Software Foundation (ASF) under one
3
* or more contributor license agreements. See the NOTICE file
4
* distributed with this work for additional information
5
* regarding copyright ownership. The ASF licenses this file
6
* to you under the Apache License, Version 2.0 (the "License");
7
* you may not use this file except in compliance with the License.
8
* You may obtain a copy of the License at
9
*
10
* http://www.apache.org/licenses/LICENSE-2.0
11
*
12
* Unless required by applicable law or agreed to in writing, software
13
* distributed under the License is distributed on an "AS IS" BASIS,
14
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15
* See the License for the specific language governing permissions and
16
* limitations under the License.
17
*/
18
#if !defined(TREEWALKER_HEADER_GUARD_1357924680)
19
#define TREEWALKER_HEADER_GUARD_1357924680
20
21
22
23
// Base include file. Must be first.
24
#include <
xalanc/DOMSupport/DOMSupportDefinitions.hpp
>
25
26
27
28
namespace
XALAN_CPP_NAMESPACE
{
29
30
31
32
class
XalanNode;
33
34
35
36
class
XALAN_DOMSUPPORT_EXPORT
TreeWalker
37
{
38
public
:
39
40
/**
41
* Constructor.
42
*/
43
TreeWalker
();
44
45
virtual
46
~
TreeWalker
();
47
48
/**
49
* Perform a document-order traversal.
50
*
51
* Derived classes and stop the traversal by returning
52
* true from startNode() or endNode(). If that happens,
53
* the function will return the next node in document
54
* order. If desired, the caller can start traversing
55
* the tree again from that point. Note that terminal
56
* nodes will always have startNode() and endNode()
57
* called before the traversal terminates.
58
*
59
* @param pos The node in the tree with which to start the walk
60
*
61
* @return 0 if the traversal completes, or the next node if the traversal doesn't complete.
62
*/
63
const
XalanNode
*
64
traverse(
const
XalanNode
* pos);
65
66
/**
67
* Perform a document-order traversal.
68
*
69
* Derived classes and stop the traversal by returning
70
* true from startNode() or endNode(). If that happens,
71
* the function will return the next node in document
72
* order. If desired, the caller can start traversing
73
* the tree again from that point. Note that terminal
74
* nodes will always have startNode() and endNode()
75
* called before the traversal terminates.
76
*
77
* @param pos The node in the tree with which to start the walk
78
*
79
* @return 0 if the traversal completes, or the next node if the traversal doesn't complete.
80
*/
81
XalanNode
*
82
traverse(
XalanNode
* pos);
83
84
/**
85
* Perform a document-order traversal stopping at the
86
* provided parent node.
87
*
88
* Derived classes and stop the traversal by returning
89
* true from startNode() or endNode(). If that happens,
90
* the function will return the next node in document
91
* order. If desired, the caller can start traversing
92
* the tree again from that point. Note that terminal
93
* nodes will always have startNode() and endNode()
94
* called before the traversal terminates.
95
*
96
* @param pos The node in the tree with which to start the walk
97
* @param parent The parent of pos. Note that for multiple calls that continue the traversal, this node must remain the same.
98
*
99
* @return parent if the traversal completes, or the next node if the traversal doesn't complete.
100
*/
101
const
XalanNode
*
102
traverse(
103
const
XalanNode
* pos,
104
const
XalanNode
* parent);
105
106
/**
107
* Perform a document-order traversal stopping at the
108
* provided parent node.
109
*
110
* Derived classes and stop the traversal by returning
111
* true from startNode() or endNode(). If that happens,
112
* the function will return the next node in document
113
* order. If desired, the caller can start traversing
114
* the tree again from that point. Note that terminal
115
* nodes will always have startNode() and endNode()
116
* called before the traversal terminates.
117
*
118
* @param pos The node in the tree with which to start the walk
119
* @param parent The parent of pos. Note that for multiple calls that continue the traversal, this node must remain the same.
120
*
121
* @return parent if the traversal completes, or the next node if the traversal doesn't complete.
122
*/
123
XalanNode
*
124
traverse(
125
XalanNode
* pos,
126
XalanNode
* parent);
127
128
/**
129
* Perform a pre-order traversal.
130
*
131
* @param pos starting node
132
*/
133
virtual
void
134
traverseSubtree(
const
XalanNode
* pos);
135
136
/**
137
* Perform a pre-order traversal.
138
*
139
* @param pos starting node
140
*/
141
virtual
void
142
traverseSubtree(
XalanNode
* pos);
143
144
protected
:
145
146
/**
147
* Called when first walking a node
148
*
149
* @param node The node
150
*
151
* @return return false if the walk should continue, or true if it should not.
152
*/
153
virtual
bool
154
startNode(
const
XalanNode
* node) = 0;
155
156
/**
157
* Called when first walking a node
158
*
159
* @param node The node
160
*
161
* @return return false if the walk should continue, or true if it should not.
162
*/
163
virtual
bool
164
startNode(
XalanNode
* node) = 0;
165
166
/**
167
* Called when leaving a node
168
*
169
* @param node The node
170
*
171
* @return return false if the walk should continue, or true if it should not.
172
*/
173
virtual
bool
174
endNode(
const
XalanNode
* node) = 0;
175
176
/**
177
* Called when leaving a node
178
*
179
* @param node The node
180
*
181
* @return return false if the walk should continue, or true if it should not.
182
*/
183
virtual
bool
184
endNode(
XalanNode
* node) = 0;
185
186
private
:
187
};
188
189
190
191
}
192
193
194
195
#endif // TREEWALKER_HEADER_GUARD_1357924680
XALAN_DOMSUPPORT_EXPORT
#define XALAN_DOMSUPPORT_EXPORT
Definition:
DOMSupportDefinitions.hpp:35
XALAN_CPP_NAMESPACE
#define XALAN_CPP_NAMESPACE
Xalan-C++ namespace, including major and minor version.
Definition:
XalanVersion.hpp:76
xalanc::XalanNode
Definition:
XalanNode.hpp:38
DOMSupportDefinitions.hpp
xalanc::TreeWalker
Definition:
TreeWalker.hpp:36
Copyright © 1999-2020 The Apache Software Foundation. All Rights Reserved.
Generated on Sun May 31 2020 10:37:16 for Xalan-C++ API Reference by
1.8.17