<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>Xalan-C++ API : Main Page</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<!-- The head section is copied from Doxygen 1.7.1 generated default output -->
<body>
<h2 align="center">Xalan-C++ API Documentation</h2>
<h3 align="center"><a href="../index.html">The Xalan C++ XSLT Processor Version 1.11</a></h3>
<hr/>
<!-- Generated by Doxygen 1.7.1 -->
<div class="navigation" id="top">
  <div class="tabs">
    <ul class="tablist">
      <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
      <li><a href="pages.html"><span>Related&nbsp;Pages</span></a></li>
      <li><a href="annotated.html"><span>Classes</span></a></li>
      <li class="current"><a href="files.html"><span>Files</span></a></li>
    </ul>
  </div>
  <div class="tabs2">
    <ul class="tablist">
      <li><a href="files.html"><span>File&nbsp;List</span></a></li>
      <li><a href="globals.html"><span>File&nbsp;Members</span></a></li>
    </ul>
  </div>
<div class="header">
  <div class="headertitle">
<h1>TreeWalker.hpp</h1>  </div>
</div>
<div class="contents">
<a href="TreeWalker_8hpp.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/*</span>
<a name="l00002"></a>00002 <span class="comment"> * Licensed to the Apache Software Foundation (ASF) under one</span>
<a name="l00003"></a>00003 <span class="comment"> * or more contributor license agreements. See the NOTICE file</span>
<a name="l00004"></a>00004 <span class="comment"> * distributed with this work for additional information</span>
<a name="l00005"></a>00005 <span class="comment"> * regarding copyright ownership. The ASF licenses this file</span>
<a name="l00006"></a>00006 <span class="comment"> * to you under the Apache License, Version 2.0 (the  &quot;License&quot;);</span>
<a name="l00007"></a>00007 <span class="comment"> * you may not use this file except in compliance with the License.</span>
<a name="l00008"></a>00008 <span class="comment"> * You may obtain a copy of the License at</span>
<a name="l00009"></a>00009 <span class="comment"> *</span>
<a name="l00010"></a>00010 <span class="comment"> *     http://www.apache.org/licenses/LICENSE-2.0</span>
<a name="l00011"></a>00011 <span class="comment"> *</span>
<a name="l00012"></a>00012 <span class="comment"> * Unless required by applicable law or agreed to in writing, software</span>
<a name="l00013"></a>00013 <span class="comment"> * distributed under the License is distributed on an &quot;AS IS&quot; BASIS,</span>
<a name="l00014"></a>00014 <span class="comment"> * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span>
<a name="l00015"></a>00015 <span class="comment"> * See the License for the specific language governing permissions and</span>
<a name="l00016"></a>00016 <span class="comment"> * limitations under the License.</span>
<a name="l00017"></a>00017 <span class="comment"> */</span>
<a name="l00018"></a>00018 <span class="preprocessor">#if !defined(TREEWALKER_HEADER_GUARD_1357924680)</span>
<a name="l00019"></a>00019 <span class="preprocessor"></span><span class="preprocessor">#define TREEWALKER_HEADER_GUARD_1357924680</span>
<a name="l00020"></a>00020 <span class="preprocessor"></span>
<a name="l00021"></a>00021 
<a name="l00022"></a>00022 
<a name="l00023"></a>00023 <span class="comment">// Base include file.  Must be first.</span>
<a name="l00024"></a>00024 <span class="preprocessor">#include &lt;<a class="code" href="DOMSupportDefinitions_8hpp.html">xalanc/DOMSupport/DOMSupportDefinitions.hpp</a>&gt;</span>
<a name="l00025"></a>00025 
<a name="l00026"></a>00026 
<a name="l00027"></a>00027 
<a name="l00028"></a>00028 XALAN_CPP_NAMESPACE_BEGIN
<a name="l00029"></a>00029 
<a name="l00030"></a>00030 
<a name="l00031"></a>00031 
<a name="l00032"></a>00032 <span class="keyword">class </span><a class="code" href="classXalanNode.html">XalanNode</a>;
<a name="l00033"></a>00033 
<a name="l00034"></a>00034 
<a name="l00035"></a>00035 
<a name="l00036"></a><a class="code" href="classTreeWalker.html">00036</a> <span class="keyword">class </span><a class="code" href="DOMSupportDefinitions_8hpp.html#a60b421f21708f404e42466af12e6f6b5">XALAN_DOMSUPPORT_EXPORT</a> <a class="code" href="classTreeWalker.html">TreeWalker</a>
<a name="l00037"></a>00037 {
<a name="l00038"></a>00038 <span class="keyword">public</span>:
<a name="l00039"></a>00039 <span class="comment"></span>
<a name="l00040"></a>00040 <span class="comment">    /**</span>
<a name="l00041"></a>00041 <span class="comment">     * Constructor.</span>
<a name="l00042"></a>00042 <span class="comment">     */</span>
<a name="l00043"></a>00043     <a class="code" href="classTreeWalker.html">TreeWalker</a>();
<a name="l00044"></a>00044 
<a name="l00045"></a>00045     <span class="keyword">virtual</span>
<a name="l00046"></a>00046     ~<a class="code" href="classTreeWalker.html">TreeWalker</a>();
<a name="l00047"></a>00047 <span class="comment"></span>
<a name="l00048"></a>00048 <span class="comment">    /**</span>
<a name="l00049"></a>00049 <span class="comment">     * Perform a document-order traversal.</span>
<a name="l00050"></a>00050 <span class="comment">     *</span>
<a name="l00051"></a>00051 <span class="comment">     * Derived classes and stop the traversal by returning</span>
<a name="l00052"></a>00052 <span class="comment">     * true from startNode() or endNode().  If that happens,</span>
<a name="l00053"></a>00053 <span class="comment">     * the function will return the next node in document</span>
<a name="l00054"></a>00054 <span class="comment">     * order.  If desired, the caller can start traversing</span>
<a name="l00055"></a>00055 <span class="comment">     * the tree again from that point.  Note that terminal</span>
<a name="l00056"></a>00056 <span class="comment">     * nodes will always have startNode() and endNode()</span>
<a name="l00057"></a>00057 <span class="comment">     * called before the traversal terminates.</span>
<a name="l00058"></a>00058 <span class="comment">     *</span>
<a name="l00059"></a>00059 <span class="comment">     * @param pos The node in the tree with which to start the walk</span>
<a name="l00060"></a>00060 <span class="comment">     *</span>
<a name="l00061"></a>00061 <span class="comment">     * @return 0 if the traversal completes, or the next node if the traversal doesn&#39;t complete.</span>
<a name="l00062"></a>00062 <span class="comment">     */</span>
<a name="l00063"></a>00063     <span class="keyword">const</span> <a class="code" href="classXalanNode.html">XalanNode</a>*
<a name="l00064"></a>00064     traverse(<span class="keyword">const</span> <a class="code" href="classXalanNode.html">XalanNode</a>*   pos);
<a name="l00065"></a>00065 <span class="comment"></span>
<a name="l00066"></a>00066 <span class="comment">    /**</span>
<a name="l00067"></a>00067 <span class="comment">     * Perform a document-order traversal.</span>
<a name="l00068"></a>00068 <span class="comment">     *</span>
<a name="l00069"></a>00069 <span class="comment">     * Derived classes and stop the traversal by returning</span>
<a name="l00070"></a>00070 <span class="comment">     * true from startNode() or endNode().  If that happens,</span>
<a name="l00071"></a>00071 <span class="comment">     * the function will return the next node in document</span>
<a name="l00072"></a>00072 <span class="comment">     * order.  If desired, the caller can start traversing</span>
<a name="l00073"></a>00073 <span class="comment">     * the tree again from that point.  Note that terminal</span>
<a name="l00074"></a>00074 <span class="comment">     * nodes will always have startNode() and endNode()</span>
<a name="l00075"></a>00075 <span class="comment">     * called before the traversal terminates.</span>
<a name="l00076"></a>00076 <span class="comment">     *</span>
<a name="l00077"></a>00077 <span class="comment">     * @param pos The node in the tree with which to start the walk</span>
<a name="l00078"></a>00078 <span class="comment">     *</span>
<a name="l00079"></a>00079 <span class="comment">     * @return 0 if the traversal completes, or the next node if the traversal doesn&#39;t complete.</span>
<a name="l00080"></a>00080 <span class="comment">     */</span>
<a name="l00081"></a>00081     <a class="code" href="classXalanNode.html">XalanNode</a>*
<a name="l00082"></a>00082     traverse(<a class="code" href="classXalanNode.html">XalanNode</a>*     pos);
<a name="l00083"></a>00083 <span class="comment"></span>
<a name="l00084"></a>00084 <span class="comment">    /**</span>
<a name="l00085"></a>00085 <span class="comment">     * Perform a document-order traversal stopping at the</span>
<a name="l00086"></a>00086 <span class="comment">     * provided parent node.</span>
<a name="l00087"></a>00087 <span class="comment">     *</span>
<a name="l00088"></a>00088 <span class="comment">     * Derived classes and stop the traversal by returning</span>
<a name="l00089"></a>00089 <span class="comment">     * true from startNode() or endNode().  If that happens,</span>
<a name="l00090"></a>00090 <span class="comment">     * the function will return the next node in document</span>
<a name="l00091"></a>00091 <span class="comment">     * order.  If desired, the caller can start traversing</span>
<a name="l00092"></a>00092 <span class="comment">     * the tree again from that point.  Note that terminal</span>
<a name="l00093"></a>00093 <span class="comment">     * nodes will always have startNode() and endNode()</span>
<a name="l00094"></a>00094 <span class="comment">     * called before the traversal terminates.</span>
<a name="l00095"></a>00095 <span class="comment">     *</span>
<a name="l00096"></a>00096 <span class="comment">     * @param pos The node in the tree with which to start the walk</span>
<a name="l00097"></a>00097 <span class="comment">     * @param parent The parent of pos.  Note that for multiple calls that continue the traversal, this node must remain the same.</span>
<a name="l00098"></a>00098 <span class="comment">     *</span>
<a name="l00099"></a>00099 <span class="comment">     * @return parent if the traversal completes, or the next node if the traversal doesn&#39;t complete.</span>
<a name="l00100"></a>00100 <span class="comment">     */</span>
<a name="l00101"></a>00101     <span class="keyword">const</span> <a class="code" href="classXalanNode.html">XalanNode</a>*
<a name="l00102"></a>00102     traverse(
<a name="l00103"></a>00103             <span class="keyword">const</span> <a class="code" href="classXalanNode.html">XalanNode</a>*    pos,
<a name="l00104"></a>00104             <span class="keyword">const</span> <a class="code" href="classXalanNode.html">XalanNode</a>*    parent);
<a name="l00105"></a>00105 <span class="comment"></span>
<a name="l00106"></a>00106 <span class="comment">    /**</span>
<a name="l00107"></a>00107 <span class="comment">     * Perform a document-order traversal stopping at the</span>
<a name="l00108"></a>00108 <span class="comment">     * provided parent node.</span>
<a name="l00109"></a>00109 <span class="comment">     *</span>
<a name="l00110"></a>00110 <span class="comment">     * Derived classes and stop the traversal by returning</span>
<a name="l00111"></a>00111 <span class="comment">     * true from startNode() or endNode().  If that happens,</span>
<a name="l00112"></a>00112 <span class="comment">     * the function will return the next node in document</span>
<a name="l00113"></a>00113 <span class="comment">     * order.  If desired, the caller can start traversing</span>
<a name="l00114"></a>00114 <span class="comment">     * the tree again from that point.  Note that terminal</span>
<a name="l00115"></a>00115 <span class="comment">     * nodes will always have startNode() and endNode()</span>
<a name="l00116"></a>00116 <span class="comment">     * called before the traversal terminates.</span>
<a name="l00117"></a>00117 <span class="comment">     *</span>
<a name="l00118"></a>00118 <span class="comment">     * @param pos The node in the tree with which to start the walk</span>
<a name="l00119"></a>00119 <span class="comment">     * @param parent The parent of pos.  Note that for multiple calls that continue the traversal, this node must remain the same.</span>
<a name="l00120"></a>00120 <span class="comment">     *</span>
<a name="l00121"></a>00121 <span class="comment">     * @return parent if the traversal completes, or the next node if the traversal doesn&#39;t complete.</span>
<a name="l00122"></a>00122 <span class="comment">     */</span>
<a name="l00123"></a>00123     <a class="code" href="classXalanNode.html">XalanNode</a>*
<a name="l00124"></a>00124     traverse(
<a name="l00125"></a>00125             <a class="code" href="classXalanNode.html">XalanNode</a>*  pos,
<a name="l00126"></a>00126             <a class="code" href="classXalanNode.html">XalanNode</a>*  parent);
<a name="l00127"></a>00127 <span class="comment"></span>
<a name="l00128"></a>00128 <span class="comment">    /**</span>
<a name="l00129"></a>00129 <span class="comment">     * Perform a pre-order traversal.</span>
<a name="l00130"></a>00130 <span class="comment">     * </span>
<a name="l00131"></a>00131 <span class="comment">     * @param pos starting node</span>
<a name="l00132"></a>00132 <span class="comment">     */</span>
<a name="l00133"></a>00133     <span class="keyword">virtual</span> <span class="keywordtype">void</span>
<a name="l00134"></a>00134     traverseSubtree(<span class="keyword">const</span> <a class="code" href="classXalanNode.html">XalanNode</a>*    pos);
<a name="l00135"></a>00135 <span class="comment"></span>
<a name="l00136"></a>00136 <span class="comment">    /**</span>
<a name="l00137"></a>00137 <span class="comment">     * Perform a pre-order traversal.</span>
<a name="l00138"></a>00138 <span class="comment">     * </span>
<a name="l00139"></a>00139 <span class="comment">     * @param pos starting node</span>
<a name="l00140"></a>00140 <span class="comment">     */</span>
<a name="l00141"></a>00141     <span class="keyword">virtual</span> <span class="keywordtype">void</span>
<a name="l00142"></a>00142     traverseSubtree(<a class="code" href="classXalanNode.html">XalanNode</a>*  pos);
<a name="l00143"></a>00143 
<a name="l00144"></a>00144 <span class="keyword">protected</span>:
<a name="l00145"></a>00145 <span class="comment"></span>
<a name="l00146"></a>00146 <span class="comment">    /**</span>
<a name="l00147"></a>00147 <span class="comment">     * Called when first walking a node</span>
<a name="l00148"></a>00148 <span class="comment">     * </span>
<a name="l00149"></a>00149 <span class="comment">     * @param node The node</span>
<a name="l00150"></a>00150 <span class="comment">     *</span>
<a name="l00151"></a>00151 <span class="comment">     * @return return false if the walk should continue, or true if it should not.</span>
<a name="l00152"></a>00152 <span class="comment">     */</span>
<a name="l00153"></a>00153     <span class="keyword">virtual</span> <span class="keywordtype">bool</span>
<a name="l00154"></a>00154     startNode(<span class="keyword">const</span> <a class="code" href="classXalanNode.html">XalanNode</a>*  node) = 0;
<a name="l00155"></a>00155 <span class="comment"></span>
<a name="l00156"></a>00156 <span class="comment">    /**</span>
<a name="l00157"></a>00157 <span class="comment">     * Called when first walking a node</span>
<a name="l00158"></a>00158 <span class="comment">     * </span>
<a name="l00159"></a>00159 <span class="comment">     * @param node The node</span>
<a name="l00160"></a>00160 <span class="comment">     *</span>
<a name="l00161"></a>00161 <span class="comment">     * @return return false if the walk should continue, or true if it should not.</span>
<a name="l00162"></a>00162 <span class="comment">     */</span>
<a name="l00163"></a>00163     <span class="keyword">virtual</span> <span class="keywordtype">bool</span>
<a name="l00164"></a>00164     startNode(<a class="code" href="classXalanNode.html">XalanNode</a>*    node) = 0;
<a name="l00165"></a>00165 <span class="comment"></span>
<a name="l00166"></a>00166 <span class="comment">    /**</span>
<a name="l00167"></a>00167 <span class="comment">     * Called when leaving a node</span>
<a name="l00168"></a>00168 <span class="comment">     * </span>
<a name="l00169"></a>00169 <span class="comment">     * @param node The node</span>
<a name="l00170"></a>00170 <span class="comment">     *</span>
<a name="l00171"></a>00171 <span class="comment">     * @return return false if the walk should continue, or true if it should not.</span>
<a name="l00172"></a>00172 <span class="comment">     */</span>
<a name="l00173"></a>00173     <span class="keyword">virtual</span> <span class="keywordtype">bool</span>
<a name="l00174"></a>00174     endNode(<span class="keyword">const</span> <a class="code" href="classXalanNode.html">XalanNode</a>*    node) = 0;
<a name="l00175"></a>00175 <span class="comment"></span>
<a name="l00176"></a>00176 <span class="comment">    /**</span>
<a name="l00177"></a>00177 <span class="comment">     * Called when leaving a node</span>
<a name="l00178"></a>00178 <span class="comment">     * </span>
<a name="l00179"></a>00179 <span class="comment">     * @param node The node</span>
<a name="l00180"></a>00180 <span class="comment">     *</span>
<a name="l00181"></a>00181 <span class="comment">     * @return return false if the walk should continue, or true if it should not.</span>
<a name="l00182"></a>00182 <span class="comment">     */</span>
<a name="l00183"></a>00183     <span class="keyword">virtual</span> <span class="keywordtype">bool</span>
<a name="l00184"></a>00184     endNode(<a class="code" href="classXalanNode.html">XalanNode</a>*  node) = 0;
<a name="l00185"></a>00185 
<a name="l00186"></a>00186 <span class="keyword">private</span>:
<a name="l00187"></a>00187 };
<a name="l00188"></a>00188 
<a name="l00189"></a>00189 
<a name="l00190"></a>00190 
<a name="l00191"></a>00191 XALAN_CPP_NAMESPACE_END
<a name="l00192"></a>00192 
<a name="l00193"></a>00193 
<a name="l00194"></a>00194 
<a name="l00195"></a>00195 <span class="preprocessor">#endif  // TREEWALKER_HEADER_GUARD_1357924680</span>
</pre></div></div>
</div>
<p align="center"><a href="graph_legend.html">Interpreting class diagrams</a></p>
<p><font color="#000000" face="arial,helvetica,sanserif" size="-1">
<i><a href="http://www.doxygen.org/">Doxygen</a> and 
<a href="http://www.graphviz.org/">GraphViz</a> are 
used to generate this API documentation from the Xalan-C header files.</i></font></p>

<table border="0" cellpadding="0" cellspacing="0" width="80%">
 <tr>
  <td width="80%" valign="top">
	<p align="center"><b>Xalan-C++ XSLT Processor Version 1.11</b><br/>
	Copyright &copy; 1999-2012 The Apache Software Foundation.<br/>
	All Rights Reserved.</p>
  </td>
 </tr>
 <tr>
  <td width="100%">
	<p align="center"><img src="asf_logo_wide.gif" width="268" height="25" align="bottom" border="0" alt="Apache Logo">
  </td>
 </tr>
</table>
</body>
</html>
