aboutsummaryrefslogtreecommitdiffstats
path: root/rapidxml_8h_source.html
blob: 6911611c4207d3ef0b434848f6d880df28616925 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
<!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"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.13"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>YAGE: include/YAGE/rapidxml.h Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
  $(document).ready(initResizable);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  <td id="projectalign" style="padding-left: 0.5em;">
   <div id="projectname">YAGE
   &#160;<span id="projectnumber">v0.1.1</span>
   </div>
   <div id="projectbrief">Yet Another Game Engine</div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
$(function() {
  initMenu('',true,false,'search.php','Search');
  $(document).ready(function() { init_search(); });
});
</script>
<div id="main-nav"></div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
  <div id="nav-tree">
    <div id="nav-tree-contents">
      <div id="nav-sync" class="sync"></div>
    </div>
  </div>
  <div id="splitbar" style="-moz-user-select:none;" 
       class="ui-resizable-handle">
  </div>
</div>
<script type="text/javascript">
$(document).ready(function(){initNavTree('rapidxml_8h_source.html','');});
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
     onmouseover="return searchBox.OnSearchSelectShow()"
     onmouseout="return searchBox.OnSearchSelectHide()"
     onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>

<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0" 
        name="MSearchResults" id="MSearchResults">
</iframe>
</div>

<div class="header">
  <div class="headertitle">
<div class="title">rapidxml.h</div>  </div>
</div><!--header-->
<div class="contents">
<a href="rapidxml_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span>&#160;<span class="preprocessor">#ifndef RAPIDXML_HPP_INCLUDED</span></div><div class="line"><a name="l00002"></a><span class="lineno">    2</span>&#160;<span class="preprocessor">#define RAPIDXML_HPP_INCLUDED</span></div><div class="line"><a name="l00003"></a><span class="lineno">    3</span>&#160;</div><div class="line"><a name="l00004"></a><span class="lineno">    4</span>&#160;<span class="comment">// Copyright (C) 2006, 2009 Marcin Kalicinski</span></div><div class="line"><a name="l00005"></a><span class="lineno">    5</span>&#160;<span class="comment">// Version 1.13</span></div><div class="line"><a name="l00006"></a><span class="lineno">    6</span>&#160;<span class="comment">// Revision $DateTime: 2009/05/13 01:46:17 $</span></div><div class="line"><a name="l00008"></a><span class="lineno">    8</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00009"></a><span class="lineno">    9</span>&#160;<span class="comment">// If standard library is disabled, user must provide implementations of required functions and typedefs</span></div><div class="line"><a name="l00010"></a><span class="lineno">   10</span>&#160;<span class="preprocessor">#if !defined(RAPIDXML_NO_STDLIB)</span></div><div class="line"><a name="l00011"></a><span class="lineno">   11</span>&#160;<span class="preprocessor">    #include &lt;cstdlib&gt;</span>      <span class="comment">// For std::size_t</span></div><div class="line"><a name="l00012"></a><span class="lineno">   12</span>&#160;<span class="preprocessor">    #include &lt;cassert&gt;</span>      <span class="comment">// For assert</span></div><div class="line"><a name="l00013"></a><span class="lineno">   13</span>&#160;<span class="preprocessor">    #include &lt;new&gt;</span>          <span class="comment">// For placement new</span></div><div class="line"><a name="l00014"></a><span class="lineno">   14</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00015"></a><span class="lineno">   15</span>&#160;</div><div class="line"><a name="l00016"></a><span class="lineno">   16</span>&#160;<span class="comment">// On MSVC, disable &quot;conditional expression is constant&quot; warning (level 4). </span></div><div class="line"><a name="l00017"></a><span class="lineno">   17</span>&#160;<span class="comment">// This warning is almost impossible to avoid with certain types of templated code</span></div><div class="line"><a name="l00018"></a><span class="lineno">   18</span>&#160;<span class="preprocessor">#ifdef _MSC_VER</span></div><div class="line"><a name="l00019"></a><span class="lineno">   19</span>&#160;<span class="preprocessor">    #pragma warning(push)</span></div><div class="line"><a name="l00020"></a><span class="lineno">   20</span>&#160;<span class="preprocessor">    #pragma warning(disable:4127)   // Conditional expression is constant</span></div><div class="line"><a name="l00021"></a><span class="lineno">   21</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00022"></a><span class="lineno">   22</span>&#160;</div><div class="line"><a name="l00024"></a><span class="lineno">   24</span>&#160;<span class="comment">// RAPIDXML_PARSE_ERROR</span></div><div class="line"><a name="l00025"></a><span class="lineno">   25</span>&#160;    </div><div class="line"><a name="l00026"></a><span class="lineno">   26</span>&#160;<span class="preprocessor">#if defined(RAPIDXML_NO_EXCEPTIONS)</span></div><div class="line"><a name="l00027"></a><span class="lineno">   27</span>&#160;</div><div class="line"><a name="l00028"></a><span class="lineno">   28</span>&#160;<span class="preprocessor">#define RAPIDXML_PARSE_ERROR(what, where) { parse_error_handler(what, where); assert(0); }</span></div><div class="line"><a name="l00029"></a><span class="lineno">   29</span>&#160;</div><div class="line"><a name="l00030"></a><span class="lineno">   30</span>&#160;<span class="keyword">namespace </span><a class="code" href="namespacerapidxml.html">rapidxml</a></div><div class="line"><a name="l00031"></a><span class="lineno">   31</span>&#160;{</div><div class="line"><a name="l00048"></a><span class="lineno">   48</span>&#160;    <span class="keywordtype">void</span> parse_error_handler(<span class="keyword">const</span> <span class="keywordtype">char</span> *what, <span class="keywordtype">void</span> *where);</div><div class="line"><a name="l00049"></a><span class="lineno">   49</span>&#160;}</div><div class="line"><a name="l00050"></a><span class="lineno">   50</span>&#160;</div><div class="line"><a name="l00051"></a><span class="lineno">   51</span>&#160;<span class="preprocessor">#else</span></div><div class="line"><a name="l00052"></a><span class="lineno">   52</span>&#160;    </div><div class="line"><a name="l00053"></a><span class="lineno">   53</span>&#160;<span class="preprocessor">#include &lt;exception&gt;</span>    <span class="comment">// For std::exception</span></div><div class="line"><a name="l00054"></a><span class="lineno">   54</span>&#160;</div><div class="line"><a name="l00055"></a><span class="lineno"><a class="line" href="rapidxml_8h.html#a65f2be309896ffb841997d467c2f4fff">   55</a></span>&#160;<span class="preprocessor">#define RAPIDXML_PARSE_ERROR(what, where) throw parse_error(what, where)</span></div><div class="line"><a name="l00056"></a><span class="lineno">   56</span>&#160;</div><div class="line"><a name="l00057"></a><span class="lineno"><a class="line" href="namespacerapidxml.html">   57</a></span>&#160;<span class="keyword">namespace </span><a class="code" href="namespacerapidxml.html">rapidxml</a></div><div class="line"><a name="l00058"></a><span class="lineno">   58</span>&#160;{</div><div class="line"><a name="l00059"></a><span class="lineno">   59</span>&#160;</div><div class="line"><a name="l00071"></a><span class="lineno"><a class="line" href="classrapidxml_1_1parse__error.html">   71</a></span>&#160;    <span class="keyword">class </span><a class="code" href="classrapidxml_1_1parse__error.html">parse_error</a>: <span class="keyword">public</span> std::exception</div><div class="line"><a name="l00072"></a><span class="lineno">   72</span>&#160;    {</div><div class="line"><a name="l00073"></a><span class="lineno">   73</span>&#160;    </div><div class="line"><a name="l00074"></a><span class="lineno">   74</span>&#160;    <span class="keyword">public</span>:</div><div class="line"><a name="l00075"></a><span class="lineno">   75</span>&#160;    </div><div class="line"><a name="l00077"></a><span class="lineno"><a class="line" href="classrapidxml_1_1parse__error.html#aea12a301271c393fb627b368fb9f35c1">   77</a></span>&#160;        <a class="code" href="classrapidxml_1_1parse__error.html#aea12a301271c393fb627b368fb9f35c1">parse_error</a>(<span class="keyword">const</span> <span class="keywordtype">char</span> *<a class="code" href="classrapidxml_1_1parse__error.html#a986003116ebcb49a69a20228da306232">what</a>, <span class="keywordtype">void</span> *<a class="code" href="classrapidxml_1_1parse__error.html#ab139528f4d9e960f0ee807d22d6c032d">where</a>)</div><div class="line"><a name="l00078"></a><span class="lineno">   78</span>&#160;            : <a class="code" href="classrapidxml_1_1parse__error.html#a41bffadc72eec238cf4b7d14c10c16ca">m_what</a>(what)</div><div class="line"><a name="l00079"></a><span class="lineno">   79</span>&#160;            , <a class="code" href="classrapidxml_1_1parse__error.html#aa5a164653ac347adddf47b264620d80f">m_where</a>(where)</div><div class="line"><a name="l00080"></a><span class="lineno">   80</span>&#160;        {</div><div class="line"><a name="l00081"></a><span class="lineno">   81</span>&#160;        }</div><div class="line"><a name="l00082"></a><span class="lineno">   82</span>&#160;</div><div class="line"><a name="l00085"></a><span class="lineno"><a class="line" href="classrapidxml_1_1parse__error.html#a986003116ebcb49a69a20228da306232">   85</a></span>&#160;        <span class="keyword">virtual</span> <span class="keyword">const</span> <span class="keywordtype">char</span> *<a class="code" href="classrapidxml_1_1parse__error.html#a986003116ebcb49a69a20228da306232">what</a>() <span class="keyword">const</span> throw()</div><div class="line"><a name="l00086"></a><span class="lineno">   86</span>&#160;        {</div><div class="line"><a name="l00087"></a><span class="lineno">   87</span>&#160;            <span class="keywordflow">return</span> <a class="code" href="classrapidxml_1_1parse__error.html#a41bffadc72eec238cf4b7d14c10c16ca">m_what</a>;</div><div class="line"><a name="l00088"></a><span class="lineno">   88</span>&#160;        }</div><div class="line"><a name="l00089"></a><span class="lineno">   89</span>&#160;</div><div class="line"><a name="l00093"></a><span class="lineno">   93</span>&#160;        <span class="keyword">template</span>&lt;<span class="keyword">class</span> Ch&gt;</div><div class="line"><a name="l00094"></a><span class="lineno"><a class="line" href="classrapidxml_1_1parse__error.html#ab139528f4d9e960f0ee807d22d6c032d">   94</a></span>&#160;        Ch *<a class="code" href="classrapidxml_1_1parse__error.html#ab139528f4d9e960f0ee807d22d6c032d">where</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00095"></a><span class="lineno">   95</span>&#160;<span class="keyword">        </span>{</div><div class="line"><a name="l00096"></a><span class="lineno">   96</span>&#160;            <span class="keywordflow">return</span> <span class="keyword">reinterpret_cast&lt;</span>Ch *<span class="keyword">&gt;</span>(<a class="code" href="classrapidxml_1_1parse__error.html#aa5a164653ac347adddf47b264620d80f">m_where</a>);</div><div class="line"><a name="l00097"></a><span class="lineno">   97</span>&#160;        }</div><div class="line"><a name="l00098"></a><span class="lineno">   98</span>&#160;</div><div class="line"><a name="l00099"></a><span class="lineno">   99</span>&#160;    <span class="keyword">private</span>:  </div><div class="line"><a name="l00100"></a><span class="lineno">  100</span>&#160;</div><div class="line"><a name="l00101"></a><span class="lineno"><a class="line" href="classrapidxml_1_1parse__error.html#a41bffadc72eec238cf4b7d14c10c16ca">  101</a></span>&#160;        <span class="keyword">const</span> <span class="keywordtype">char</span> *<a class="code" href="classrapidxml_1_1parse__error.html#a41bffadc72eec238cf4b7d14c10c16ca">m_what</a>;</div><div class="line"><a name="l00102"></a><span class="lineno"><a class="line" href="classrapidxml_1_1parse__error.html#aa5a164653ac347adddf47b264620d80f">  102</a></span>&#160;        <span class="keywordtype">void</span> *<a class="code" href="classrapidxml_1_1parse__error.html#aa5a164653ac347adddf47b264620d80f">m_where</a>;</div><div class="line"><a name="l00103"></a><span class="lineno">  103</span>&#160;</div><div class="line"><a name="l00104"></a><span class="lineno">  104</span>&#160;    };</div><div class="line"><a name="l00105"></a><span class="lineno">  105</span>&#160;}</div><div class="line"><a name="l00106"></a><span class="lineno">  106</span>&#160;</div><div class="line"><a name="l00107"></a><span class="lineno">  107</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00108"></a><span class="lineno">  108</span>&#160;</div><div class="line"><a name="l00110"></a><span class="lineno">  110</span>&#160;<span class="comment">// Pool sizes</span></div><div class="line"><a name="l00111"></a><span class="lineno">  111</span>&#160;</div><div class="line"><a name="l00112"></a><span class="lineno">  112</span>&#160;<span class="preprocessor">#ifndef RAPIDXML_STATIC_POOL_SIZE</span></div><div class="line"><a name="l00113"></a><span class="lineno">  113</span>&#160;    <span class="comment">// Size of static memory block of memory_pool.</span></div><div class="line"><a name="l00114"></a><span class="lineno">  114</span>&#160;    <span class="comment">// Define RAPIDXML_STATIC_POOL_SIZE before including rapidxml.hpp if you want to override the default value.</span></div><div class="line"><a name="l00115"></a><span class="lineno">  115</span>&#160;    <span class="comment">// No dynamic memory allocations are performed by memory_pool until static memory is exhausted.</span></div><div class="line"><a name="l00116"></a><span class="lineno"><a class="line" href="rapidxml_8h.html#a001304844ab478e3b213749fc8d72ca2">  116</a></span>&#160;<span class="preprocessor">    #define RAPIDXML_STATIC_POOL_SIZE (64 * 1024)</span></div><div class="line"><a name="l00117"></a><span class="lineno">  117</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00118"></a><span class="lineno">  118</span>&#160;</div><div class="line"><a name="l00119"></a><span class="lineno">  119</span>&#160;<span class="preprocessor">#ifndef RAPIDXML_DYNAMIC_POOL_SIZE</span></div><div class="line"><a name="l00120"></a><span class="lineno">  120</span>&#160;    <span class="comment">// Size of dynamic memory block of memory_pool.</span></div><div class="line"><a name="l00121"></a><span class="lineno">  121</span>&#160;    <span class="comment">// Define RAPIDXML_DYNAMIC_POOL_SIZE before including rapidxml.hpp if you want to override the default value.</span></div><div class="line"><a name="l00122"></a><span class="lineno">  122</span>&#160;    <span class="comment">// After the static block is exhausted, dynamic blocks with approximately this size are allocated by memory_pool.</span></div><div class="line"><a name="l00123"></a><span class="lineno"><a class="line" href="rapidxml_8h.html#a68d5603b71691d9dd745e45159259aa3">  123</a></span>&#160;<span class="preprocessor">    #define RAPIDXML_DYNAMIC_POOL_SIZE (64 * 1024)</span></div><div class="line"><a name="l00124"></a><span class="lineno">  124</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00125"></a><span class="lineno">  125</span>&#160;</div><div class="line"><a name="l00126"></a><span class="lineno">  126</span>&#160;<span class="preprocessor">#ifndef RAPIDXML_ALIGNMENT</span></div><div class="line"><a name="l00127"></a><span class="lineno">  127</span>&#160;    <span class="comment">// Memory allocation alignment.</span></div><div class="line"><a name="l00128"></a><span class="lineno">  128</span>&#160;    <span class="comment">// Define RAPIDXML_ALIGNMENT before including rapidxml.hpp if you want to override the default value, which is the size of pointer.</span></div><div class="line"><a name="l00129"></a><span class="lineno">  129</span>&#160;    <span class="comment">// All memory allocations for nodes, attributes and strings will be aligned to this value.</span></div><div class="line"><a name="l00130"></a><span class="lineno">  130</span>&#160;    <span class="comment">// This must be a power of 2 and at least 1, otherwise memory_pool will not work.</span></div><div class="line"><a name="l00131"></a><span class="lineno"><a class="line" href="rapidxml_8h.html#ad3344fdba5167e17f48a8b2318731198">  131</a></span>&#160;<span class="preprocessor">    #define RAPIDXML_ALIGNMENT sizeof(void *)</span></div><div class="line"><a name="l00132"></a><span class="lineno">  132</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00133"></a><span class="lineno">  133</span>&#160;</div><div class="line"><a name="l00134"></a><span class="lineno">  134</span>&#160;<span class="keyword">namespace </span><a class="code" href="namespacerapidxml.html">rapidxml</a></div><div class="line"><a name="l00135"></a><span class="lineno">  135</span>&#160;{</div><div class="line"><a name="l00136"></a><span class="lineno">  136</span>&#160;    <span class="comment">// Forward declarations</span></div><div class="line"><a name="l00137"></a><span class="lineno"><a class="line" href="classrapidxml_1_1xml__node.html">  137</a></span>&#160;    <span class="keyword">template</span>&lt;<span class="keyword">class</span> Ch&gt; <span class="keyword">class </span><a class="code" href="classrapidxml_1_1xml__node.html">xml_node</a>;</div><div class="line"><a name="l00138"></a><span class="lineno"><a class="line" href="classrapidxml_1_1xml__attribute.html">  138</a></span>&#160;    <span class="keyword">template</span>&lt;<span class="keyword">class</span> Ch&gt; <span class="keyword">class </span><a class="code" href="classrapidxml_1_1xml__attribute.html">xml_attribute</a>;</div><div class="line"><a name="l00139"></a><span class="lineno"><a class="line" href="classrapidxml_1_1xml__document.html">  139</a></span>&#160;    <span class="keyword">template</span>&lt;<span class="keyword">class</span> Ch&gt; <span class="keyword">class </span><a class="code" href="classrapidxml_1_1xml__document.html">xml_document</a>;</div><div class="line"><a name="l00140"></a><span class="lineno">  140</span>&#160;    </div><div class="line"><a name="l00143"></a><span class="lineno"><a class="line" href="namespacerapidxml.html#abb456db38f7efb746c4330eed6072a7c">  143</a></span>&#160;    <span class="keyword">enum</span> <a class="code" href="namespacerapidxml.html#abb456db38f7efb746c4330eed6072a7c">node_type</a></div><div class="line"><a name="l00144"></a><span class="lineno">  144</span>&#160;    {</div><div class="line"><a name="l00145"></a><span class="lineno"><a class="line" href="namespacerapidxml.html#abb456db38f7efb746c4330eed6072a7ca4023b6a1c7059fd8fbec2112d5c35424">  145</a></span>&#160;        <a class="code" href="namespacerapidxml.html#abb456db38f7efb746c4330eed6072a7ca4023b6a1c7059fd8fbec2112d5c35424">node_document</a>,      </div><div class="line"><a name="l00146"></a><span class="lineno"><a class="line" href="namespacerapidxml.html#abb456db38f7efb746c4330eed6072a7ca89cbeb4d28046326e4ee953d3c4047ff">  146</a></span>&#160;        <a class="code" href="namespacerapidxml.html#abb456db38f7efb746c4330eed6072a7ca89cbeb4d28046326e4ee953d3c4047ff">node_element</a>,       </div><div class="line"><a name="l00147"></a><span class="lineno"><a class="line" href="namespacerapidxml.html#abb456db38f7efb746c4330eed6072a7ca9d669d8e1f4ba9c7eeada4c14a11ad1d">  147</a></span>&#160;        <a class="code" href="namespacerapidxml.html#abb456db38f7efb746c4330eed6072a7ca9d669d8e1f4ba9c7eeada4c14a11ad1d">node_data</a>,          </div><div class="line"><a name="l00148"></a><span class="lineno"><a class="line" href="namespacerapidxml.html#abb456db38f7efb746c4330eed6072a7caccf0b363d3876a3f83ff9b1bcdaaa536">  148</a></span>&#160;        <a class="code" href="namespacerapidxml.html#abb456db38f7efb746c4330eed6072a7caccf0b363d3876a3f83ff9b1bcdaaa536">node_cdata</a>,         </div><div class="line"><a name="l00149"></a><span class="lineno"><a class="line" href="namespacerapidxml.html#abb456db38f7efb746c4330eed6072a7ca1a695e1384ec3bd4df3eff65ec609a96">  149</a></span>&#160;        <a class="code" href="namespacerapidxml.html#abb456db38f7efb746c4330eed6072a7ca1a695e1384ec3bd4df3eff65ec609a96">node_comment</a>,       </div><div class="line"><a name="l00150"></a><span class="lineno"><a class="line" href="namespacerapidxml.html#abb456db38f7efb746c4330eed6072a7cafe4ca44261e5fbedf0eab43131751212">  150</a></span>&#160;        <a class="code" href="namespacerapidxml.html#abb456db38f7efb746c4330eed6072a7cafe4ca44261e5fbedf0eab43131751212">node_declaration</a>,   </div><div class="line"><a name="l00151"></a><span class="lineno"><a class="line" href="namespacerapidxml.html#abb456db38f7efb746c4330eed6072a7cadf5002f2efabe231bed01d16f08f832c">  151</a></span>&#160;        <a class="code" href="namespacerapidxml.html#abb456db38f7efb746c4330eed6072a7cadf5002f2efabe231bed01d16f08f832c">node_doctype</a>,       </div><div class="line"><a name="l00152"></a><span class="lineno"><a class="line" href="namespacerapidxml.html#abb456db38f7efb746c4330eed6072a7caeb73b472e77347b9aa89525f16493b87">  152</a></span>&#160;        <a class="code" href="namespacerapidxml.html#abb456db38f7efb746c4330eed6072a7caeb73b472e77347b9aa89525f16493b87">node_pi</a>             </div><div class="line"><a name="l00153"></a><span class="lineno">  153</span>&#160;    };</div><div class="line"><a name="l00154"></a><span class="lineno">  154</span>&#160;</div><div class="line"><a name="l00156"></a><span class="lineno">  156</span>&#160;    <span class="comment">// Parsing flags</span></div><div class="line"><a name="l00157"></a><span class="lineno">  157</span>&#160;</div><div class="line"><a name="l00163"></a><span class="lineno"><a class="line" href="namespacerapidxml.html#ac2d21ef14a4e8936b94aca5d38b1a74d">  163</a></span>&#160;    <span class="keyword">const</span> <span class="keywordtype">int</span> <a class="code" href="namespacerapidxml.html#ac2d21ef14a4e8936b94aca5d38b1a74d">parse_no_data_nodes</a> = 0x1;            </div><div class="line"><a name="l00164"></a><span class="lineno">  164</span>&#160;</div><div class="line"><a name="l00172"></a><span class="lineno"><a class="line" href="namespacerapidxml.html#a00e6fea134b786ea6efeed1c8bc4a668">  172</a></span>&#160;    <span class="keyword">const</span> <span class="keywordtype">int</span> <a class="code" href="namespacerapidxml.html#a00e6fea134b786ea6efeed1c8bc4a668">parse_no_element_values</a> = 0x2;</div><div class="line"><a name="l00173"></a><span class="lineno">  173</span>&#160;    </div><div class="line"><a name="l00179"></a><span class="lineno"><a class="line" href="namespacerapidxml.html#af3fc88ba6bee33482a2db81b1da36ea1">  179</a></span>&#160;    <span class="keyword">const</span> <span class="keywordtype">int</span> <a class="code" href="namespacerapidxml.html#af3fc88ba6bee33482a2db81b1da36ea1">parse_no_string_terminators</a> = 0x4;</div><div class="line"><a name="l00180"></a><span class="lineno">  180</span>&#160;    </div><div class="line"><a name="l00186"></a><span class="lineno"><a class="line" href="namespacerapidxml.html#a89113c103ffaf77615d1aa330c8dcca8">  186</a></span>&#160;    <span class="keyword">const</span> <span class="keywordtype">int</span> <a class="code" href="namespacerapidxml.html#a89113c103ffaf77615d1aa330c8dcca8">parse_no_entity_translation</a> = 0x8;</div><div class="line"><a name="l00187"></a><span class="lineno">  187</span>&#160;    </div><div class="line"><a name="l00193"></a><span class="lineno"><a class="line" href="namespacerapidxml.html#a22d4aefaceb00d7afabfef7107b108da">  193</a></span>&#160;    <span class="keyword">const</span> <span class="keywordtype">int</span> <a class="code" href="namespacerapidxml.html#a22d4aefaceb00d7afabfef7107b108da">parse_no_utf8</a> = 0x10;</div><div class="line"><a name="l00194"></a><span class="lineno">  194</span>&#160;    </div><div class="line"><a name="l00200"></a><span class="lineno"><a class="line" href="namespacerapidxml.html#a999d782659513f8015ea4236e3204c42">  200</a></span>&#160;    <span class="keyword">const</span> <span class="keywordtype">int</span> <a class="code" href="namespacerapidxml.html#a999d782659513f8015ea4236e3204c42">parse_declaration_node</a> = 0x20;</div><div class="line"><a name="l00201"></a><span class="lineno">  201</span>&#160;    </div><div class="line"><a name="l00207"></a><span class="lineno"><a class="line" href="namespacerapidxml.html#ae093dd49e2f59fa39eee95f1a6568e32">  207</a></span>&#160;    <span class="keyword">const</span> <span class="keywordtype">int</span> <a class="code" href="namespacerapidxml.html#ae093dd49e2f59fa39eee95f1a6568e32">parse_comment_nodes</a> = 0x40;</div><div class="line"><a name="l00208"></a><span class="lineno">  208</span>&#160;    </div><div class="line"><a name="l00215"></a><span class="lineno"><a class="line" href="namespacerapidxml.html#a41002b49780a90a0bbcc28ce8b895fe4">  215</a></span>&#160;    <span class="keyword">const</span> <span class="keywordtype">int</span> <a class="code" href="namespacerapidxml.html#a41002b49780a90a0bbcc28ce8b895fe4">parse_doctype_node</a> = 0x80;</div><div class="line"><a name="l00216"></a><span class="lineno">  216</span>&#160;    </div><div class="line"><a name="l00222"></a><span class="lineno"><a class="line" href="namespacerapidxml.html#a03fe68fcf5d28f38476e0fd31adecc4c">  222</a></span>&#160;    <span class="keyword">const</span> <span class="keywordtype">int</span> <a class="code" href="namespacerapidxml.html#a03fe68fcf5d28f38476e0fd31adecc4c">parse_pi_nodes</a> = 0x100;</div><div class="line"><a name="l00223"></a><span class="lineno">  223</span>&#160;    </div><div class="line"><a name="l00230"></a><span class="lineno"><a class="line" href="namespacerapidxml.html#a7ce8f40fda68338e20b56f41e48e49f3">  230</a></span>&#160;    <span class="keyword">const</span> <span class="keywordtype">int</span> <a class="code" href="namespacerapidxml.html#a7ce8f40fda68338e20b56f41e48e49f3">parse_validate_closing_tags</a> = 0x200;</div><div class="line"><a name="l00231"></a><span class="lineno">  231</span>&#160;    </div><div class="line"><a name="l00238"></a><span class="lineno"><a class="line" href="namespacerapidxml.html#a61912424b47db5038e726d4e1c22417f">  238</a></span>&#160;    <span class="keyword">const</span> <span class="keywordtype">int</span> <a class="code" href="namespacerapidxml.html#a61912424b47db5038e726d4e1c22417f">parse_trim_whitespace</a> = 0x400;</div><div class="line"><a name="l00239"></a><span class="lineno">  239</span>&#160;</div><div class="line"><a name="l00247"></a><span class="lineno"><a class="line" href="namespacerapidxml.html#a31f33885defb5176a7d99e524c35d386">  247</a></span>&#160;    <span class="keyword">const</span> <span class="keywordtype">int</span> <a class="code" href="namespacerapidxml.html#a31f33885defb5176a7d99e524c35d386">parse_normalize_whitespace</a> = 0x800;</div><div class="line"><a name="l00248"></a><span class="lineno">  248</span>&#160;</div><div class="line"><a name="l00249"></a><span class="lineno">  249</span>&#160;    <span class="comment">// Compound flags</span></div><div class="line"><a name="l00250"></a><span class="lineno">  250</span>&#160;    </div><div class="line"><a name="l00259"></a><span class="lineno"><a class="line" href="namespacerapidxml.html#acf4edf952f59eb1b6124ea37ad7da3ab">  259</a></span>&#160;    <span class="keyword">const</span> <span class="keywordtype">int</span> <a class="code" href="namespacerapidxml.html#acf4edf952f59eb1b6124ea37ad7da3ab">parse_default</a> = 0;</div><div class="line"><a name="l00260"></a><span class="lineno">  260</span>&#160;    </div><div class="line"><a name="l00269"></a><span class="lineno"><a class="line" href="namespacerapidxml.html#a45d4d8fef551beaaba23a83b847fd6a3">  269</a></span>&#160;    <span class="keyword">const</span> <span class="keywordtype">int</span> <a class="code" href="namespacerapidxml.html#a45d4d8fef551beaaba23a83b847fd6a3">parse_non_destructive</a> = parse_no_string_terminators | <a class="code" href="namespacerapidxml.html#a89113c103ffaf77615d1aa330c8dcca8">parse_no_entity_translation</a>;</div><div class="line"><a name="l00270"></a><span class="lineno">  270</span>&#160;    </div><div class="line"><a name="l00274"></a><span class="lineno"><a class="line" href="namespacerapidxml.html#a64da06dfdab7c86ca954bda4fecb978f">  274</a></span>&#160;    <span class="keyword">const</span> <span class="keywordtype">int</span> <a class="code" href="namespacerapidxml.html#a64da06dfdab7c86ca954bda4fecb978f">parse_fastest</a> = parse_non_destructive | <a class="code" href="namespacerapidxml.html#ac2d21ef14a4e8936b94aca5d38b1a74d">parse_no_data_nodes</a>;</div><div class="line"><a name="l00275"></a><span class="lineno">  275</span>&#160;    </div><div class="line"><a name="l00280"></a><span class="lineno"><a class="line" href="namespacerapidxml.html#abb48dc65db75d9e49734bc5bd2fabbfc">  280</a></span>&#160;    <span class="keyword">const</span> <span class="keywordtype">int</span> <a class="code" href="namespacerapidxml.html#abb48dc65db75d9e49734bc5bd2fabbfc">parse_full</a> = parse_declaration_node | parse_comment_nodes | parse_doctype_node | parse_pi_nodes | <a class="code" href="namespacerapidxml.html#a7ce8f40fda68338e20b56f41e48e49f3">parse_validate_closing_tags</a>;</div><div class="line"><a name="l00281"></a><span class="lineno">  281</span>&#160;</div><div class="line"><a name="l00283"></a><span class="lineno">  283</span>&#160;    <span class="comment">// Internals</span></div><div class="line"><a name="l00284"></a><span class="lineno">  284</span>&#160;</div><div class="line"><a name="l00286"></a><span class="lineno">  286</span>&#160;    <span class="keyword">namespace </span>internal</div><div class="line"><a name="l00287"></a><span class="lineno">  287</span>&#160;    {</div><div class="line"><a name="l00288"></a><span class="lineno">  288</span>&#160;</div><div class="line"><a name="l00289"></a><span class="lineno">  289</span>&#160;        <span class="comment">// Struct that contains lookup tables for the parser</span></div><div class="line"><a name="l00290"></a><span class="lineno">  290</span>&#160;        <span class="comment">// It must be a template to allow correct linking (because it has static data members, which are defined in a header file).</span></div><div class="line"><a name="l00291"></a><span class="lineno">  291</span>&#160;        <span class="keyword">template</span>&lt;<span class="keywordtype">int</span> Dummy&gt;</div><div class="line"><a name="l00292"></a><span class="lineno">  292</span>&#160;        <span class="keyword">struct </span>lookup_tables</div><div class="line"><a name="l00293"></a><span class="lineno">  293</span>&#160;        {</div><div class="line"><a name="l00294"></a><span class="lineno">  294</span>&#160;            <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> lookup_whitespace[256];              <span class="comment">// Whitespace table</span></div><div class="line"><a name="l00295"></a><span class="lineno">  295</span>&#160;            <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> lookup_node_name[256];               <span class="comment">// Node name table</span></div><div class="line"><a name="l00296"></a><span class="lineno">  296</span>&#160;            <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> lookup_text[256];                    <span class="comment">// Text table</span></div><div class="line"><a name="l00297"></a><span class="lineno">  297</span>&#160;            <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> lookup_text_pure_no_ws[256];         <span class="comment">// Text table</span></div><div class="line"><a name="l00298"></a><span class="lineno">  298</span>&#160;            <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> lookup_text_pure_with_ws[256];       <span class="comment">// Text table</span></div><div class="line"><a name="l00299"></a><span class="lineno">  299</span>&#160;            <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> lookup_attribute_name[256];          <span class="comment">// Attribute name table</span></div><div class="line"><a name="l00300"></a><span class="lineno">  300</span>&#160;            <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> lookup_attribute_data_1[256];        <span class="comment">// Attribute data table with single quote</span></div><div class="line"><a name="l00301"></a><span class="lineno">  301</span>&#160;            <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> lookup_attribute_data_1_pure[256];   <span class="comment">// Attribute data table with single quote</span></div><div class="line"><a name="l00302"></a><span class="lineno">  302</span>&#160;            <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> lookup_attribute_data_2[256];        <span class="comment">// Attribute data table with double quotes</span></div><div class="line"><a name="l00303"></a><span class="lineno">  303</span>&#160;            <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> lookup_attribute_data_2_pure[256];   <span class="comment">// Attribute data table with double quotes</span></div><div class="line"><a name="l00304"></a><span class="lineno">  304</span>&#160;            <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> lookup_digits[256];                  <span class="comment">// Digits</span></div><div class="line"><a name="l00305"></a><span class="lineno">  305</span>&#160;            <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> lookup_upcase[256];                  <span class="comment">// To uppercase conversion table for ASCII characters</span></div><div class="line"><a name="l00306"></a><span class="lineno">  306</span>&#160;        };</div><div class="line"><a name="l00307"></a><span class="lineno">  307</span>&#160;</div><div class="line"><a name="l00308"></a><span class="lineno">  308</span>&#160;        <span class="comment">// Find length of the string</span></div><div class="line"><a name="l00309"></a><span class="lineno">  309</span>&#160;        <span class="keyword">template</span>&lt;<span class="keyword">class</span> Ch&gt;</div><div class="line"><a name="l00310"></a><span class="lineno">  310</span>&#160;        <span class="keyword">inline</span> std::size_t measure(<span class="keyword">const</span> Ch *p)</div><div class="line"><a name="l00311"></a><span class="lineno">  311</span>&#160;        {</div><div class="line"><a name="l00312"></a><span class="lineno">  312</span>&#160;            <span class="keyword">const</span> Ch *tmp = p;</div><div class="line"><a name="l00313"></a><span class="lineno">  313</span>&#160;            <span class="keywordflow">while</span> (*tmp) </div><div class="line"><a name="l00314"></a><span class="lineno">  314</span>&#160;                ++tmp;</div><div class="line"><a name="l00315"></a><span class="lineno">  315</span>&#160;            <span class="keywordflow">return</span> tmp - p;</div><div class="line"><a name="l00316"></a><span class="lineno">  316</span>&#160;        }</div><div class="line"><a name="l00317"></a><span class="lineno">  317</span>&#160;</div><div class="line"><a name="l00318"></a><span class="lineno">  318</span>&#160;        <span class="comment">// Compare strings for equality</span></div><div class="line"><a name="l00319"></a><span class="lineno">  319</span>&#160;        <span class="keyword">template</span>&lt;<span class="keyword">class</span> Ch&gt;</div><div class="line"><a name="l00320"></a><span class="lineno">  320</span>&#160;        <span class="keyword">inline</span> <span class="keywordtype">bool</span> compare(<span class="keyword">const</span> Ch *p1, std::size_t size1, <span class="keyword">const</span> Ch *p2, std::size_t size2, <span class="keywordtype">bool</span> case_sensitive)</div><div class="line"><a name="l00321"></a><span class="lineno">  321</span>&#160;        {</div><div class="line"><a name="l00322"></a><span class="lineno">  322</span>&#160;            <span class="keywordflow">if</span> (size1 != size2)</div><div class="line"><a name="l00323"></a><span class="lineno">  323</span>&#160;                <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00324"></a><span class="lineno">  324</span>&#160;            <span class="keywordflow">if</span> (case_sensitive)</div><div class="line"><a name="l00325"></a><span class="lineno">  325</span>&#160;            {</div><div class="line"><a name="l00326"></a><span class="lineno">  326</span>&#160;                <span class="keywordflow">for</span> (<span class="keyword">const</span> Ch *end = p1 + size1; p1 &lt; end; ++p1, ++p2)</div><div class="line"><a name="l00327"></a><span class="lineno">  327</span>&#160;                    <span class="keywordflow">if</span> (*p1 != *p2)</div><div class="line"><a name="l00328"></a><span class="lineno">  328</span>&#160;                        <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00329"></a><span class="lineno">  329</span>&#160;            }</div><div class="line"><a name="l00330"></a><span class="lineno">  330</span>&#160;            <span class="keywordflow">else</span></div><div class="line"><a name="l00331"></a><span class="lineno">  331</span>&#160;            {</div><div class="line"><a name="l00332"></a><span class="lineno">  332</span>&#160;                <span class="keywordflow">for</span> (<span class="keyword">const</span> Ch *end = p1 + size1; p1 &lt; end; ++p1, ++p2)</div><div class="line"><a name="l00333"></a><span class="lineno">  333</span>&#160;                    <span class="keywordflow">if</span> (lookup_tables&lt;0&gt;::lookup_upcase[static_cast&lt;unsigned char&gt;(*p1)] != lookup_tables&lt;0&gt;::lookup_upcase[static_cast&lt;unsigned char&gt;(*p2)])</div><div class="line"><a name="l00334"></a><span class="lineno">  334</span>&#160;                        <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00335"></a><span class="lineno">  335</span>&#160;            }</div><div class="line"><a name="l00336"></a><span class="lineno">  336</span>&#160;            <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00337"></a><span class="lineno">  337</span>&#160;        }</div><div class="line"><a name="l00338"></a><span class="lineno">  338</span>&#160;    }</div><div class="line"><a name="l00340"></a><span class="lineno">  340</span>&#160;</div><div class="line"><a name="l00342"></a><span class="lineno">  342</span>&#160;    <span class="comment">// Memory pool</span></div><div class="line"><a name="l00343"></a><span class="lineno">  343</span>&#160;    </div><div class="line"><a name="l00378"></a><span class="lineno">  378</span>&#160;    <span class="keyword">template</span>&lt;<span class="keyword">class</span> Ch = <span class="keywordtype">char</span>&gt;</div><div class="line"><a name="l00379"></a><span class="lineno"><a class="line" href="classrapidxml_1_1memory__pool.html">  379</a></span>&#160;    <span class="keyword">class </span><a class="code" href="classrapidxml_1_1memory__pool.html">memory_pool</a></div><div class="line"><a name="l00380"></a><span class="lineno">  380</span>&#160;    {</div><div class="line"><a name="l00381"></a><span class="lineno">  381</span>&#160;        </div><div class="line"><a name="l00382"></a><span class="lineno">  382</span>&#160;    <span class="keyword">public</span>:</div><div class="line"><a name="l00383"></a><span class="lineno">  383</span>&#160;</div><div class="line"><a name="l00385"></a><span class="lineno">  385</span>&#160;        <span class="keyword">typedef</span> <span class="keywordtype">void</span> *(alloc_func)(std::size_t);       <span class="comment">// Type of user-defined function used to allocate memory</span></div><div class="line"><a name="l00386"></a><span class="lineno">  386</span>&#160;        <span class="keyword">typedef</span> void (free_func)(<span class="keywordtype">void</span> *);              <span class="comment">// Type of user-defined function used to free memory</span></div><div class="line"><a name="l00388"></a><span class="lineno">  388</span>&#160;<span class="comment"></span>        </div><div class="line"><a name="l00390"></a><span class="lineno"><a class="line" href="classrapidxml_1_1memory__pool.html#a0b609da81dff28a19ebd704400788429">  390</a></span>&#160;        <a class="code" href="classrapidxml_1_1memory__pool.html#a0b609da81dff28a19ebd704400788429">memory_pool</a>()</div><div class="line"><a name="l00391"></a><span class="lineno">  391</span>&#160;            : m_alloc_func(0)</div><div class="line"><a name="l00392"></a><span class="lineno">  392</span>&#160;            , m_free_func(0)</div><div class="line"><a name="l00393"></a><span class="lineno">  393</span>&#160;        {</div><div class="line"><a name="l00394"></a><span class="lineno">  394</span>&#160;            <a class="code" href="namespaceyage.html#a6aea783cb978923211e165efefec4a7b">init</a>();</div><div class="line"><a name="l00395"></a><span class="lineno">  395</span>&#160;        }</div><div class="line"><a name="l00396"></a><span class="lineno">  396</span>&#160;</div><div class="line"><a name="l00400"></a><span class="lineno"><a class="line" href="classrapidxml_1_1memory__pool.html#a0a3e82126e59e4077f41e933130bb5a0">  400</a></span>&#160;        <a class="code" href="classrapidxml_1_1memory__pool.html#a0a3e82126e59e4077f41e933130bb5a0">~memory_pool</a>()</div><div class="line"><a name="l00401"></a><span class="lineno">  401</span>&#160;        {</div><div class="line"><a name="l00402"></a><span class="lineno">  402</span>&#160;            clear();</div><div class="line"><a name="l00403"></a><span class="lineno">  403</span>&#160;        }</div><div class="line"><a name="l00404"></a><span class="lineno">  404</span>&#160;</div><div class="line"><a name="l00415"></a><span class="lineno"><a class="line" href="classrapidxml_1_1memory__pool.html#a4118581c29ee9a2f6b55ebf7dac185f8">  415</a></span>&#160;        <a class="code" href="classrapidxml_1_1xml__node.html">xml_node&lt;Ch&gt;</a> *<a class="code" href="classrapidxml_1_1memory__pool.html#a4118581c29ee9a2f6b55ebf7dac185f8">allocate_node</a>(<a class="code" href="namespacerapidxml.html#abb456db38f7efb746c4330eed6072a7c">node_type</a> type, </div><div class="line"><a name="l00416"></a><span class="lineno">  416</span>&#160;                                    <span class="keyword">const</span> Ch *name = 0, <span class="keyword">const</span> Ch *value = 0, </div><div class="line"><a name="l00417"></a><span class="lineno">  417</span>&#160;                                    std::size_t name_size = 0, std::size_t value_size = 0)</div><div class="line"><a name="l00418"></a><span class="lineno">  418</span>&#160;        {</div><div class="line"><a name="l00419"></a><span class="lineno">  419</span>&#160;            <span class="keywordtype">void</span> *memory = allocate_aligned(<span class="keyword">sizeof</span>(<a class="code" href="classrapidxml_1_1xml__node.html">xml_node&lt;Ch&gt;</a>));</div><div class="line"><a name="l00420"></a><span class="lineno">  420</span>&#160;            <a class="code" href="classrapidxml_1_1xml__node.html">xml_node&lt;Ch&gt;</a> *node = <span class="keyword">new</span>(memory) <a class="code" href="classrapidxml_1_1xml__node.html">xml_node&lt;Ch&gt;</a>(type);</div><div class="line"><a name="l00421"></a><span class="lineno">  421</span>&#160;            <span class="keywordflow">if</span> (name)</div><div class="line"><a name="l00422"></a><span class="lineno">  422</span>&#160;            {</div><div class="line"><a name="l00423"></a><span class="lineno">  423</span>&#160;                <span class="keywordflow">if</span> (name_size &gt; 0)</div><div class="line"><a name="l00424"></a><span class="lineno">  424</span>&#160;                    node-&gt;<a class="code" href="classrapidxml_1_1xml__base.html#aef8ae147fbee59209f714274afc80dc4">name</a>(name, name_size);</div><div class="line"><a name="l00425"></a><span class="lineno">  425</span>&#160;                <span class="keywordflow">else</span></div><div class="line"><a name="l00426"></a><span class="lineno">  426</span>&#160;                    node-&gt;<a class="code" href="classrapidxml_1_1xml__base.html#aef8ae147fbee59209f714274afc80dc4">name</a>(name);</div><div class="line"><a name="l00427"></a><span class="lineno">  427</span>&#160;            }</div><div class="line"><a name="l00428"></a><span class="lineno">  428</span>&#160;            <span class="keywordflow">if</span> (value)</div><div class="line"><a name="l00429"></a><span class="lineno">  429</span>&#160;            {</div><div class="line"><a name="l00430"></a><span class="lineno">  430</span>&#160;                <span class="keywordflow">if</span> (value_size &gt; 0)</div><div class="line"><a name="l00431"></a><span class="lineno">  431</span>&#160;                    node-&gt;<a class="code" href="classrapidxml_1_1xml__base.html#a6af65de5e59ac497cd69838f8a89d602">value</a>(value, value_size);</div><div class="line"><a name="l00432"></a><span class="lineno">  432</span>&#160;                <span class="keywordflow">else</span></div><div class="line"><a name="l00433"></a><span class="lineno">  433</span>&#160;                    node-&gt;<a class="code" href="classrapidxml_1_1xml__base.html#a6af65de5e59ac497cd69838f8a89d602">value</a>(value);</div><div class="line"><a name="l00434"></a><span class="lineno">  434</span>&#160;            }</div><div class="line"><a name="l00435"></a><span class="lineno">  435</span>&#160;            <span class="keywordflow">return</span> node;</div><div class="line"><a name="l00436"></a><span class="lineno">  436</span>&#160;        }</div><div class="line"><a name="l00437"></a><span class="lineno">  437</span>&#160;</div><div class="line"><a name="l00447"></a><span class="lineno"><a class="line" href="classrapidxml_1_1memory__pool.html#a3de2a66c983336e006ea3844e244ed30">  447</a></span>&#160;        <a class="code" href="classrapidxml_1_1xml__attribute.html">xml_attribute&lt;Ch&gt;</a> *<a class="code" href="classrapidxml_1_1memory__pool.html#a3de2a66c983336e006ea3844e244ed30">allocate_attribute</a>(<span class="keyword">const</span> Ch *name = 0, <span class="keyword">const</span> Ch *value = 0, </div><div class="line"><a name="l00448"></a><span class="lineno">  448</span>&#160;                                              std::size_t name_size = 0, std::size_t value_size = 0)</div><div class="line"><a name="l00449"></a><span class="lineno">  449</span>&#160;        {</div><div class="line"><a name="l00450"></a><span class="lineno">  450</span>&#160;            <span class="keywordtype">void</span> *memory = allocate_aligned(<span class="keyword">sizeof</span>(<a class="code" href="classrapidxml_1_1xml__attribute.html">xml_attribute&lt;Ch&gt;</a>));</div><div class="line"><a name="l00451"></a><span class="lineno">  451</span>&#160;            <a class="code" href="classrapidxml_1_1xml__attribute.html">xml_attribute&lt;Ch&gt;</a> *attribute = <span class="keyword">new</span>(memory) <a class="code" href="classrapidxml_1_1xml__attribute.html">xml_attribute&lt;Ch&gt;</a>;</div><div class="line"><a name="l00452"></a><span class="lineno">  452</span>&#160;            <span class="keywordflow">if</span> (name)</div><div class="line"><a name="l00453"></a><span class="lineno">  453</span>&#160;            {</div><div class="line"><a name="l00454"></a><span class="lineno">  454</span>&#160;                <span class="keywordflow">if</span> (name_size &gt; 0)</div><div class="line"><a name="l00455"></a><span class="lineno">  455</span>&#160;                    attribute-&gt;<a class="code" href="classrapidxml_1_1xml__base.html#aef8ae147fbee59209f714274afc80dc4">name</a>(name, name_size);</div><div class="line"><a name="l00456"></a><span class="lineno">  456</span>&#160;                <span class="keywordflow">else</span></div><div class="line"><a name="l00457"></a><span class="lineno">  457</span>&#160;                    attribute-&gt;<a class="code" href="classrapidxml_1_1xml__base.html#aef8ae147fbee59209f714274afc80dc4">name</a>(name);</div><div class="line"><a name="l00458"></a><span class="lineno">  458</span>&#160;            }</div><div class="line"><a name="l00459"></a><span class="lineno">  459</span>&#160;            <span class="keywordflow">if</span> (value)</div><div class="line"><a name="l00460"></a><span class="lineno">  460</span>&#160;            {</div><div class="line"><a name="l00461"></a><span class="lineno">  461</span>&#160;                <span class="keywordflow">if</span> (value_size &gt; 0)</div><div class="line"><a name="l00462"></a><span class="lineno">  462</span>&#160;                    attribute-&gt;<a class="code" href="classrapidxml_1_1xml__base.html#a6af65de5e59ac497cd69838f8a89d602">value</a>(value, value_size);</div><div class="line"><a name="l00463"></a><span class="lineno">  463</span>&#160;                <span class="keywordflow">else</span></div><div class="line"><a name="l00464"></a><span class="lineno">  464</span>&#160;                    attribute-&gt;<a class="code" href="classrapidxml_1_1xml__base.html#a6af65de5e59ac497cd69838f8a89d602">value</a>(value);</div><div class="line"><a name="l00465"></a><span class="lineno">  465</span>&#160;            }</div><div class="line"><a name="l00466"></a><span class="lineno">  466</span>&#160;            <span class="keywordflow">return</span> attribute;</div><div class="line"><a name="l00467"></a><span class="lineno">  467</span>&#160;        }</div><div class="line"><a name="l00468"></a><span class="lineno">  468</span>&#160;</div><div class="line"><a name="l00476"></a><span class="lineno"><a class="line" href="classrapidxml_1_1memory__pool.html#a171941b39d55b868358da97462185f58">  476</a></span>&#160;        Ch *<a class="code" href="classrapidxml_1_1memory__pool.html#a171941b39d55b868358da97462185f58">allocate_string</a>(<span class="keyword">const</span> Ch *source = 0, std::size_t size = 0)</div><div class="line"><a name="l00477"></a><span class="lineno">  477</span>&#160;        {</div><div class="line"><a name="l00478"></a><span class="lineno">  478</span>&#160;            assert(source || size);     <span class="comment">// Either source or size (or both) must be specified</span></div><div class="line"><a name="l00479"></a><span class="lineno">  479</span>&#160;            <span class="keywordflow">if</span> (size == 0)</div><div class="line"><a name="l00480"></a><span class="lineno">  480</span>&#160;                size = internal::measure(source) + 1;</div><div class="line"><a name="l00481"></a><span class="lineno">  481</span>&#160;            Ch *result = <span class="keyword">static_cast&lt;</span>Ch *<span class="keyword">&gt;</span>(allocate_aligned(size * <span class="keyword">sizeof</span>(Ch)));</div><div class="line"><a name="l00482"></a><span class="lineno">  482</span>&#160;            <span class="keywordflow">if</span> (source)</div><div class="line"><a name="l00483"></a><span class="lineno">  483</span>&#160;                <span class="keywordflow">for</span> (std::size_t i = 0; i &lt; size; ++i)</div><div class="line"><a name="l00484"></a><span class="lineno">  484</span>&#160;                    result[i] = source[i];</div><div class="line"><a name="l00485"></a><span class="lineno">  485</span>&#160;            <span class="keywordflow">return</span> result;</div><div class="line"><a name="l00486"></a><span class="lineno">  486</span>&#160;        }</div><div class="line"><a name="l00487"></a><span class="lineno">  487</span>&#160;</div><div class="line"><a name="l00497"></a><span class="lineno"><a class="line" href="classrapidxml_1_1memory__pool.html#a0a10679fc17597d339a0dc107f8a94ac">  497</a></span>&#160;        <a class="code" href="classrapidxml_1_1xml__node.html">xml_node&lt;Ch&gt;</a> *<a class="code" href="classrapidxml_1_1memory__pool.html#a0a10679fc17597d339a0dc107f8a94ac">clone_node</a>(<span class="keyword">const</span> <a class="code" href="classrapidxml_1_1xml__node.html">xml_node&lt;Ch&gt;</a> *source, <a class="code" href="classrapidxml_1_1xml__node.html">xml_node&lt;Ch&gt;</a> *result = 0)</div><div class="line"><a name="l00498"></a><span class="lineno">  498</span>&#160;        {</div><div class="line"><a name="l00499"></a><span class="lineno">  499</span>&#160;            <span class="comment">// Prepare result node</span></div><div class="line"><a name="l00500"></a><span class="lineno">  500</span>&#160;            <span class="keywordflow">if</span> (result)</div><div class="line"><a name="l00501"></a><span class="lineno">  501</span>&#160;            {</div><div class="line"><a name="l00502"></a><span class="lineno">  502</span>&#160;                result-&gt;remove_all_attributes();</div><div class="line"><a name="l00503"></a><span class="lineno">  503</span>&#160;                result-&gt;remove_all_nodes();</div><div class="line"><a name="l00504"></a><span class="lineno">  504</span>&#160;                result-&gt;type(source-&gt;<a class="code" href="classrapidxml_1_1xml__node.html#a5f91729128856b0aaab598d4364ace60">type</a>());</div><div class="line"><a name="l00505"></a><span class="lineno">  505</span>&#160;            }</div><div class="line"><a name="l00506"></a><span class="lineno">  506</span>&#160;            <span class="keywordflow">else</span></div><div class="line"><a name="l00507"></a><span class="lineno">  507</span>&#160;                result = allocate_node(source-&gt;<a class="code" href="classrapidxml_1_1xml__node.html#a5f91729128856b0aaab598d4364ace60">type</a>());</div><div class="line"><a name="l00508"></a><span class="lineno">  508</span>&#160;</div><div class="line"><a name="l00509"></a><span class="lineno">  509</span>&#160;            <span class="comment">// Clone name and value</span></div><div class="line"><a name="l00510"></a><span class="lineno">  510</span>&#160;            result-&gt;name(source-&gt;<a class="code" href="classrapidxml_1_1xml__base.html#aef8ae147fbee59209f714274afc80dc4">name</a>(), source-&gt;<a class="code" href="classrapidxml_1_1xml__base.html#a20c8ffbe0c7a0b4231681ab8b99330a4">name_size</a>());</div><div class="line"><a name="l00511"></a><span class="lineno">  511</span>&#160;            result-&gt;value(source-&gt;<a class="code" href="classrapidxml_1_1xml__base.html#a6af65de5e59ac497cd69838f8a89d602">value</a>(), source-&gt;<a class="code" href="classrapidxml_1_1xml__base.html#a2eb123d471b1567fa4832b6ee2b75493">value_size</a>());</div><div class="line"><a name="l00512"></a><span class="lineno">  512</span>&#160;</div><div class="line"><a name="l00513"></a><span class="lineno">  513</span>&#160;            <span class="comment">// Clone child nodes and attributes</span></div><div class="line"><a name="l00514"></a><span class="lineno">  514</span>&#160;            <span class="keywordflow">for</span> (<a class="code" href="classrapidxml_1_1xml__node.html">xml_node&lt;Ch&gt;</a> *child = source-&gt;<a class="code" href="classrapidxml_1_1xml__node.html#acdf3691224d683f50692616a92a75d3f">first_node</a>(); child; child = child-&gt;next_sibling())</div><div class="line"><a name="l00515"></a><span class="lineno">  515</span>&#160;                result-&gt;append_node(clone_node(child));</div><div class="line"><a name="l00516"></a><span class="lineno">  516</span>&#160;            <span class="keywordflow">for</span> (<a class="code" href="classrapidxml_1_1xml__attribute.html">xml_attribute&lt;Ch&gt;</a> *attr = source-&gt;<a class="code" href="classrapidxml_1_1xml__node.html#ab816ab6f13ee4b0588d5b76b0697511c">first_attribute</a>(); attr; attr = attr-&gt;next_attribute())</div><div class="line"><a name="l00517"></a><span class="lineno">  517</span>&#160;                result-&gt;append_attribute(allocate_attribute(attr-&gt;name(), attr-&gt;value(), attr-&gt;name_size(), attr-&gt;value_size()));</div><div class="line"><a name="l00518"></a><span class="lineno">  518</span>&#160;</div><div class="line"><a name="l00519"></a><span class="lineno">  519</span>&#160;            <span class="keywordflow">return</span> result;</div><div class="line"><a name="l00520"></a><span class="lineno">  520</span>&#160;        }</div><div class="line"><a name="l00521"></a><span class="lineno">  521</span>&#160;</div><div class="line"><a name="l00525"></a><span class="lineno"><a class="line" href="classrapidxml_1_1memory__pool.html#aad377c835fdaed1cb2cc9df194cf84e4">  525</a></span>&#160;        <span class="keywordtype">void</span> <a class="code" href="classrapidxml_1_1memory__pool.html#aad377c835fdaed1cb2cc9df194cf84e4">clear</a>()</div><div class="line"><a name="l00526"></a><span class="lineno">  526</span>&#160;        {</div><div class="line"><a name="l00527"></a><span class="lineno">  527</span>&#160;            <span class="keywordflow">while</span> (m_begin != m_static_memory)</div><div class="line"><a name="l00528"></a><span class="lineno">  528</span>&#160;            {</div><div class="line"><a name="l00529"></a><span class="lineno">  529</span>&#160;                <span class="keywordtype">char</span> *previous_begin = <span class="keyword">reinterpret_cast&lt;</span><a class="code" href="structrapidxml_1_1memory__pool_1_1header.html">header</a> *<span class="keyword">&gt;</span>(align(m_begin))-&gt;previous_begin;</div><div class="line"><a name="l00530"></a><span class="lineno">  530</span>&#160;                <span class="keywordflow">if</span> (m_free_func)</div><div class="line"><a name="l00531"></a><span class="lineno">  531</span>&#160;                    m_free_func(m_begin);</div><div class="line"><a name="l00532"></a><span class="lineno">  532</span>&#160;                <span class="keywordflow">else</span></div><div class="line"><a name="l00533"></a><span class="lineno">  533</span>&#160;                    <span class="keyword">delete</span>[] m_begin;</div><div class="line"><a name="l00534"></a><span class="lineno">  534</span>&#160;                m_begin = previous_begin;</div><div class="line"><a name="l00535"></a><span class="lineno">  535</span>&#160;            }</div><div class="line"><a name="l00536"></a><span class="lineno">  536</span>&#160;            <a class="code" href="namespaceyage.html#a6aea783cb978923211e165efefec4a7b">init</a>();</div><div class="line"><a name="l00537"></a><span class="lineno">  537</span>&#160;        }</div><div class="line"><a name="l00538"></a><span class="lineno">  538</span>&#160;</div><div class="line"><a name="l00552"></a><span class="lineno"><a class="line" href="classrapidxml_1_1memory__pool.html#a84d3d8d2cdfc00501e1dcf26d889ae03">  552</a></span>&#160;        <span class="keywordtype">void</span> <a class="code" href="classrapidxml_1_1memory__pool.html#a84d3d8d2cdfc00501e1dcf26d889ae03">set_allocator</a>(alloc_func *af, free_func *ff)</div><div class="line"><a name="l00553"></a><span class="lineno">  553</span>&#160;        {</div><div class="line"><a name="l00554"></a><span class="lineno">  554</span>&#160;            assert(m_begin == m_static_memory &amp;&amp; m_ptr == align(m_begin));    <span class="comment">// Verify that no memory is allocated yet</span></div><div class="line"><a name="l00555"></a><span class="lineno">  555</span>&#160;            m_alloc_func = af;</div><div class="line"><a name="l00556"></a><span class="lineno">  556</span>&#160;            m_free_func = ff;</div><div class="line"><a name="l00557"></a><span class="lineno">  557</span>&#160;        }</div><div class="line"><a name="l00558"></a><span class="lineno">  558</span>&#160;</div><div class="line"><a name="l00559"></a><span class="lineno">  559</span>&#160;    <span class="keyword">private</span>:</div><div class="line"><a name="l00560"></a><span class="lineno">  560</span>&#160;</div><div class="line"><a name="l00561"></a><span class="lineno"><a class="line" href="structrapidxml_1_1memory__pool_1_1header.html">  561</a></span>&#160;        <span class="keyword">struct </span><a class="code" href="structrapidxml_1_1memory__pool_1_1header.html">header</a></div><div class="line"><a name="l00562"></a><span class="lineno">  562</span>&#160;        {</div><div class="line"><a name="l00563"></a><span class="lineno"><a class="line" href="structrapidxml_1_1memory__pool_1_1header.html#a3035f6741bb38f91c7f2efd05398c23d">  563</a></span>&#160;            <span class="keywordtype">char</span> *<a class="code" href="structrapidxml_1_1memory__pool_1_1header.html#a3035f6741bb38f91c7f2efd05398c23d">previous_begin</a>;</div><div class="line"><a name="l00564"></a><span class="lineno">  564</span>&#160;        };</div><div class="line"><a name="l00565"></a><span class="lineno">  565</span>&#160;</div><div class="line"><a name="l00566"></a><span class="lineno"><a class="line" href="classrapidxml_1_1memory__pool.html#a1076043ef092e327e59dd988c1ba82fb">  566</a></span>&#160;        <span class="keywordtype">void</span> <a class="code" href="classrapidxml_1_1memory__pool.html#a1076043ef092e327e59dd988c1ba82fb">init</a>()</div><div class="line"><a name="l00567"></a><span class="lineno">  567</span>&#160;        {</div><div class="line"><a name="l00568"></a><span class="lineno">  568</span>&#160;            m_begin = m_static_memory;</div><div class="line"><a name="l00569"></a><span class="lineno">  569</span>&#160;            m_ptr = align(m_begin);</div><div class="line"><a name="l00570"></a><span class="lineno">  570</span>&#160;            m_end = m_static_memory + <span class="keyword">sizeof</span>(m_static_memory);</div><div class="line"><a name="l00571"></a><span class="lineno">  571</span>&#160;        }</div><div class="line"><a name="l00572"></a><span class="lineno">  572</span>&#160;        </div><div class="line"><a name="l00573"></a><span class="lineno"><a class="line" href="classrapidxml_1_1memory__pool.html#a317396afc1812f08b64a1dd9cde4039b">  573</a></span>&#160;        <span class="keywordtype">char</span> *<a class="code" href="classrapidxml_1_1memory__pool.html#a317396afc1812f08b64a1dd9cde4039b">align</a>(<span class="keywordtype">char</span> *ptr)</div><div class="line"><a name="l00574"></a><span class="lineno">  574</span>&#160;        {</div><div class="line"><a name="l00575"></a><span class="lineno">  575</span>&#160;            std::size_t alignment = ((<a class="code" href="rapidxml_8h.html#ad3344fdba5167e17f48a8b2318731198">RAPIDXML_ALIGNMENT</a> - (std::size_t(ptr) &amp; (<a class="code" href="rapidxml_8h.html#ad3344fdba5167e17f48a8b2318731198">RAPIDXML_ALIGNMENT</a> - 1))) &amp; (<a class="code" href="rapidxml_8h.html#ad3344fdba5167e17f48a8b2318731198">RAPIDXML_ALIGNMENT</a> - 1));</div><div class="line"><a name="l00576"></a><span class="lineno">  576</span>&#160;            <span class="keywordflow">return</span> ptr + alignment;</div><div class="line"><a name="l00577"></a><span class="lineno">  577</span>&#160;        }</div><div class="line"><a name="l00578"></a><span class="lineno">  578</span>&#160;        </div><div class="line"><a name="l00579"></a><span class="lineno"><a class="line" href="classrapidxml_1_1memory__pool.html#a1aed504a747303352e05f61c6ccbbebb">  579</a></span>&#160;        <span class="keywordtype">char</span> *<a class="code" href="classrapidxml_1_1memory__pool.html#a1aed504a747303352e05f61c6ccbbebb">allocate_raw</a>(std::size_t size)</div><div class="line"><a name="l00580"></a><span class="lineno">  580</span>&#160;        {</div><div class="line"><a name="l00581"></a><span class="lineno">  581</span>&#160;            <span class="comment">// Allocate</span></div><div class="line"><a name="l00582"></a><span class="lineno">  582</span>&#160;            <span class="keywordtype">void</span> *memory;   </div><div class="line"><a name="l00583"></a><span class="lineno">  583</span>&#160;            <span class="keywordflow">if</span> (m_alloc_func)   <span class="comment">// Allocate memory using either user-specified allocation function or global operator new[]</span></div><div class="line"><a name="l00584"></a><span class="lineno">  584</span>&#160;            {</div><div class="line"><a name="l00585"></a><span class="lineno">  585</span>&#160;                memory = m_alloc_func(size);</div><div class="line"><a name="l00586"></a><span class="lineno">  586</span>&#160;                assert(memory); <span class="comment">// Allocator is not allowed to return 0, on failure it must either throw, stop the program or use longjmp</span></div><div class="line"><a name="l00587"></a><span class="lineno">  587</span>&#160;            }</div><div class="line"><a name="l00588"></a><span class="lineno">  588</span>&#160;            <span class="keywordflow">else</span></div><div class="line"><a name="l00589"></a><span class="lineno">  589</span>&#160;            {</div><div class="line"><a name="l00590"></a><span class="lineno">  590</span>&#160;                memory = <span class="keyword">new</span> <span class="keywordtype">char</span>[size];</div><div class="line"><a name="l00591"></a><span class="lineno">  591</span>&#160;<span class="preprocessor">#ifdef RAPIDXML_NO_EXCEPTIONS</span></div><div class="line"><a name="l00592"></a><span class="lineno">  592</span>&#160;                <span class="keywordflow">if</span> (!memory)            <span class="comment">// If exceptions are disabled, verify memory allocation, because new will not be able to throw bad_alloc</span></div><div class="line"><a name="l00593"></a><span class="lineno">  593</span>&#160;                    <a class="code" href="rapidxml_8h.html#a65f2be309896ffb841997d467c2f4fff">RAPIDXML_PARSE_ERROR</a>(<span class="stringliteral">&quot;out of memory&quot;</span>, 0);</div><div class="line"><a name="l00594"></a><span class="lineno">  594</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00595"></a><span class="lineno">  595</span>&#160;            }</div><div class="line"><a name="l00596"></a><span class="lineno">  596</span>&#160;            <span class="keywordflow">return</span> <span class="keyword">static_cast&lt;</span><span class="keywordtype">char</span> *<span class="keyword">&gt;</span>(memory);</div><div class="line"><a name="l00597"></a><span class="lineno">  597</span>&#160;        }</div><div class="line"><a name="l00598"></a><span class="lineno">  598</span>&#160;        </div><div class="line"><a name="l00599"></a><span class="lineno"><a class="line" href="classrapidxml_1_1memory__pool.html#a4e9cf53fa5f9da3a8f31b754bd94b4ec">  599</a></span>&#160;        <span class="keywordtype">void</span> *<a class="code" href="classrapidxml_1_1memory__pool.html#a4e9cf53fa5f9da3a8f31b754bd94b4ec">allocate_aligned</a>(std::size_t size)</div><div class="line"><a name="l00600"></a><span class="lineno">  600</span>&#160;        {</div><div class="line"><a name="l00601"></a><span class="lineno">  601</span>&#160;            <span class="comment">// Calculate aligned pointer</span></div><div class="line"><a name="l00602"></a><span class="lineno">  602</span>&#160;            <span class="keywordtype">char</span> *result = align(m_ptr);</div><div class="line"><a name="l00603"></a><span class="lineno">  603</span>&#160;</div><div class="line"><a name="l00604"></a><span class="lineno">  604</span>&#160;            <span class="comment">// If not enough memory left in current pool, allocate a new pool</span></div><div class="line"><a name="l00605"></a><span class="lineno">  605</span>&#160;            <span class="keywordflow">if</span> (result + size &gt; m_end)</div><div class="line"><a name="l00606"></a><span class="lineno">  606</span>&#160;            {</div><div class="line"><a name="l00607"></a><span class="lineno">  607</span>&#160;                <span class="comment">// Calculate required pool size (may be bigger than RAPIDXML_DYNAMIC_POOL_SIZE)</span></div><div class="line"><a name="l00608"></a><span class="lineno">  608</span>&#160;                std::size_t pool_size = <a class="code" href="rapidxml_8h.html#a68d5603b71691d9dd745e45159259aa3">RAPIDXML_DYNAMIC_POOL_SIZE</a>;</div><div class="line"><a name="l00609"></a><span class="lineno">  609</span>&#160;                <span class="keywordflow">if</span> (pool_size &lt; size)</div><div class="line"><a name="l00610"></a><span class="lineno">  610</span>&#160;                    pool_size = size;</div><div class="line"><a name="l00611"></a><span class="lineno">  611</span>&#160;                </div><div class="line"><a name="l00612"></a><span class="lineno">  612</span>&#160;                <span class="comment">// Allocate</span></div><div class="line"><a name="l00613"></a><span class="lineno">  613</span>&#160;                std::size_t alloc_size = <span class="keyword">sizeof</span>(<a class="code" href="structrapidxml_1_1memory__pool_1_1header.html">header</a>) + (2 * <a class="code" href="rapidxml_8h.html#ad3344fdba5167e17f48a8b2318731198">RAPIDXML_ALIGNMENT</a> - 2) + pool_size;     <span class="comment">// 2 alignments required in worst case: one for header, one for actual allocation</span></div><div class="line"><a name="l00614"></a><span class="lineno">  614</span>&#160;                <span class="keywordtype">char</span> *raw_memory = allocate_raw(alloc_size);</div><div class="line"><a name="l00615"></a><span class="lineno">  615</span>&#160;                    </div><div class="line"><a name="l00616"></a><span class="lineno">  616</span>&#160;                <span class="comment">// Setup new pool in allocated memory</span></div><div class="line"><a name="l00617"></a><span class="lineno">  617</span>&#160;                <span class="keywordtype">char</span> *pool = align(raw_memory);</div><div class="line"><a name="l00618"></a><span class="lineno">  618</span>&#160;                <a class="code" href="structrapidxml_1_1memory__pool_1_1header.html">header</a> *new_header = <span class="keyword">reinterpret_cast&lt;</span><a class="code" href="structrapidxml_1_1memory__pool_1_1header.html">header</a> *<span class="keyword">&gt;</span>(pool);</div><div class="line"><a name="l00619"></a><span class="lineno">  619</span>&#160;                new_header-&gt;<a class="code" href="structrapidxml_1_1memory__pool_1_1header.html#a3035f6741bb38f91c7f2efd05398c23d">previous_begin</a> = m_begin;</div><div class="line"><a name="l00620"></a><span class="lineno">  620</span>&#160;                m_begin = raw_memory;</div><div class="line"><a name="l00621"></a><span class="lineno">  621</span>&#160;                m_ptr = pool + <span class="keyword">sizeof</span>(<a class="code" href="structrapidxml_1_1memory__pool_1_1header.html">header</a>);</div><div class="line"><a name="l00622"></a><span class="lineno">  622</span>&#160;                m_end = raw_memory + alloc_size;</div><div class="line"><a name="l00623"></a><span class="lineno">  623</span>&#160;</div><div class="line"><a name="l00624"></a><span class="lineno">  624</span>&#160;                <span class="comment">// Calculate aligned pointer again using new pool</span></div><div class="line"><a name="l00625"></a><span class="lineno">  625</span>&#160;                result = align(m_ptr);</div><div class="line"><a name="l00626"></a><span class="lineno">  626</span>&#160;            }</div><div class="line"><a name="l00627"></a><span class="lineno">  627</span>&#160;</div><div class="line"><a name="l00628"></a><span class="lineno">  628</span>&#160;            <span class="comment">// Update pool and return aligned pointer</span></div><div class="line"><a name="l00629"></a><span class="lineno">  629</span>&#160;            m_ptr = result + size;</div><div class="line"><a name="l00630"></a><span class="lineno">  630</span>&#160;            <span class="keywordflow">return</span> result;</div><div class="line"><a name="l00631"></a><span class="lineno">  631</span>&#160;        }</div><div class="line"><a name="l00632"></a><span class="lineno">  632</span>&#160;</div><div class="line"><a name="l00633"></a><span class="lineno"><a class="line" href="classrapidxml_1_1memory__pool.html#a775205c5faa60b63385c24368d26d4e1">  633</a></span>&#160;        <span class="keywordtype">char</span> *<a class="code" href="classrapidxml_1_1memory__pool.html#a775205c5faa60b63385c24368d26d4e1">m_begin</a>;                                      <span class="comment">// Start of raw memory making up current pool</span></div><div class="line"><a name="l00634"></a><span class="lineno"><a class="line" href="classrapidxml_1_1memory__pool.html#a4a89ff677c72afc163d1855cefc28013">  634</a></span>&#160;        <span class="keywordtype">char</span> *<a class="code" href="classrapidxml_1_1memory__pool.html#a4a89ff677c72afc163d1855cefc28013">m_ptr</a>;                                        <span class="comment">// First free byte in current pool</span></div><div class="line"><a name="l00635"></a><span class="lineno"><a class="line" href="classrapidxml_1_1memory__pool.html#a6c9a83514446842518c9ffb7a38b76eb">  635</a></span>&#160;        <span class="keywordtype">char</span> *<a class="code" href="classrapidxml_1_1memory__pool.html#a6c9a83514446842518c9ffb7a38b76eb">m_end</a>;                                        <span class="comment">// One past last available byte in current pool</span></div><div class="line"><a name="l00636"></a><span class="lineno"><a class="line" href="classrapidxml_1_1memory__pool.html#aacc5ca734ebfbef7f42251764eb396f4">  636</a></span>&#160;        <span class="keywordtype">char</span> m_static_memory[<a class="code" href="rapidxml_8h.html#a001304844ab478e3b213749fc8d72ca2">RAPIDXML_STATIC_POOL_SIZE</a>];    <span class="comment">// Static raw memory</span></div><div class="line"><a name="l00637"></a><span class="lineno"><a class="line" href="classrapidxml_1_1memory__pool.html#ae8964773675d24f77a808356be773c1d">  637</a></span>&#160;        alloc_func *<a class="code" href="classrapidxml_1_1memory__pool.html#ae8964773675d24f77a808356be773c1d">m_alloc_func</a>;                           <span class="comment">// Allocator function, or 0 if default is to be used</span></div><div class="line"><a name="l00638"></a><span class="lineno"><a class="line" href="classrapidxml_1_1memory__pool.html#af8f41565f4de167eb2f40ca20695f24d">  638</a></span>&#160;        free_func *<a class="code" href="classrapidxml_1_1memory__pool.html#af8f41565f4de167eb2f40ca20695f24d">m_free_func</a>;                             <span class="comment">// Free function, or 0 if default is to be used</span></div><div class="line"><a name="l00639"></a><span class="lineno">  639</span>&#160;    };</div><div class="line"><a name="l00640"></a><span class="lineno">  640</span>&#160;</div><div class="line"><a name="l00642"></a><span class="lineno">  642</span>&#160;    <span class="comment">// XML base</span></div><div class="line"><a name="l00643"></a><span class="lineno">  643</span>&#160;</div><div class="line"><a name="l00647"></a><span class="lineno">  647</span>&#160;    <span class="keyword">template</span>&lt;<span class="keyword">class</span> Ch = <span class="keywordtype">char</span>&gt;</div><div class="line"><a name="l00648"></a><span class="lineno"><a class="line" href="classrapidxml_1_1xml__base.html">  648</a></span>&#160;    <span class="keyword">class </span><a class="code" href="classrapidxml_1_1xml__base.html">xml_base</a></div><div class="line"><a name="l00649"></a><span class="lineno">  649</span>&#160;    {</div><div class="line"><a name="l00650"></a><span class="lineno">  650</span>&#160;</div><div class="line"><a name="l00651"></a><span class="lineno">  651</span>&#160;    <span class="keyword">public</span>:</div><div class="line"><a name="l00652"></a><span class="lineno">  652</span>&#160;        </div><div class="line"><a name="l00654"></a><span class="lineno">  654</span>&#160;        <span class="comment">// Construction &amp; destruction</span></div><div class="line"><a name="l00655"></a><span class="lineno">  655</span>&#160;    </div><div class="line"><a name="l00656"></a><span class="lineno">  656</span>&#160;        <span class="comment">// Construct a base with empty name, value and parent</span></div><div class="line"><a name="l00657"></a><span class="lineno"><a class="line" href="classrapidxml_1_1xml__base.html#a23e7f7aac02d17a0a01afb597e4b966b">  657</a></span>&#160;        <a class="code" href="classrapidxml_1_1xml__base.html#a23e7f7aac02d17a0a01afb597e4b966b">xml_base</a>()</div><div class="line"><a name="l00658"></a><span class="lineno">  658</span>&#160;            : m_name(0)</div><div class="line"><a name="l00659"></a><span class="lineno">  659</span>&#160;            , m_value(0)</div><div class="line"><a name="l00660"></a><span class="lineno">  660</span>&#160;            , m_parent(0)</div><div class="line"><a name="l00661"></a><span class="lineno">  661</span>&#160;        {</div><div class="line"><a name="l00662"></a><span class="lineno">  662</span>&#160;        }</div><div class="line"><a name="l00663"></a><span class="lineno">  663</span>&#160;</div><div class="line"><a name="l00665"></a><span class="lineno">  665</span>&#160;        <span class="comment">// Node data access</span></div><div class="line"><a name="l00666"></a><span class="lineno">  666</span>&#160;    </div><div class="line"><a name="l00673"></a><span class="lineno"><a class="line" href="classrapidxml_1_1xml__base.html#aef8ae147fbee59209f714274afc80dc4">  673</a></span>&#160;        Ch *<a class="code" href="classrapidxml_1_1xml__base.html#aef8ae147fbee59209f714274afc80dc4">name</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00674"></a><span class="lineno">  674</span>&#160;<span class="keyword">        </span>{</div><div class="line"><a name="l00675"></a><span class="lineno">  675</span>&#160;            <span class="keywordflow">return</span> m_name ? m_name : nullstr();</div><div class="line"><a name="l00676"></a><span class="lineno">  676</span>&#160;        }</div><div class="line"><a name="l00677"></a><span class="lineno">  677</span>&#160;</div><div class="line"><a name="l00681"></a><span class="lineno"><a class="line" href="classrapidxml_1_1xml__base.html#a20c8ffbe0c7a0b4231681ab8b99330a4">  681</a></span>&#160;        std::size_t <a class="code" href="classrapidxml_1_1xml__base.html#a20c8ffbe0c7a0b4231681ab8b99330a4">name_size</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00682"></a><span class="lineno">  682</span>&#160;<span class="keyword">        </span>{</div><div class="line"><a name="l00683"></a><span class="lineno">  683</span>&#160;            <span class="keywordflow">return</span> m_name ? m_name_size : 0;</div><div class="line"><a name="l00684"></a><span class="lineno">  684</span>&#160;        }</div><div class="line"><a name="l00685"></a><span class="lineno">  685</span>&#160;</div><div class="line"><a name="l00692"></a><span class="lineno"><a class="line" href="classrapidxml_1_1xml__base.html#a6af65de5e59ac497cd69838f8a89d602">  692</a></span>&#160;        Ch *<a class="code" href="classrapidxml_1_1xml__base.html#a6af65de5e59ac497cd69838f8a89d602">value</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00693"></a><span class="lineno">  693</span>&#160;<span class="keyword">        </span>{</div><div class="line"><a name="l00694"></a><span class="lineno">  694</span>&#160;            <span class="keywordflow">return</span> m_value ? m_value : nullstr();</div><div class="line"><a name="l00695"></a><span class="lineno">  695</span>&#160;        }</div><div class="line"><a name="l00696"></a><span class="lineno">  696</span>&#160;</div><div class="line"><a name="l00700"></a><span class="lineno"><a class="line" href="classrapidxml_1_1xml__base.html#a2eb123d471b1567fa4832b6ee2b75493">  700</a></span>&#160;        std::size_t <a class="code" href="classrapidxml_1_1xml__base.html#a2eb123d471b1567fa4832b6ee2b75493">value_size</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00701"></a><span class="lineno">  701</span>&#160;<span class="keyword">        </span>{</div><div class="line"><a name="l00702"></a><span class="lineno">  702</span>&#160;            <span class="keywordflow">return</span> m_value ? m_value_size : 0;</div><div class="line"><a name="l00703"></a><span class="lineno">  703</span>&#160;        }</div><div class="line"><a name="l00704"></a><span class="lineno">  704</span>&#160;</div><div class="line"><a name="l00706"></a><span class="lineno">  706</span>&#160;        <span class="comment">// Node modification</span></div><div class="line"><a name="l00707"></a><span class="lineno">  707</span>&#160;    </div><div class="line"><a name="l00721"></a><span class="lineno"><a class="line" href="classrapidxml_1_1xml__base.html#ae55060ae958c6e6465d6c8db852ec6ce">  721</a></span>&#160;        <span class="keywordtype">void</span> <a class="code" href="classrapidxml_1_1xml__base.html#ae55060ae958c6e6465d6c8db852ec6ce">name</a>(<span class="keyword">const</span> Ch *name, std::size_t size)</div><div class="line"><a name="l00722"></a><span class="lineno">  722</span>&#160;        {</div><div class="line"><a name="l00723"></a><span class="lineno">  723</span>&#160;            m_name = <span class="keyword">const_cast&lt;</span>Ch *<span class="keyword">&gt;</span>(name);</div><div class="line"><a name="l00724"></a><span class="lineno">  724</span>&#160;            m_name_size = size;</div><div class="line"><a name="l00725"></a><span class="lineno">  725</span>&#160;        }</div><div class="line"><a name="l00726"></a><span class="lineno">  726</span>&#160;</div><div class="line"><a name="l00730"></a><span class="lineno"><a class="line" href="classrapidxml_1_1xml__base.html#a4611ddc82ac83a527c65606600eb2a0d">  730</a></span>&#160;        <span class="keywordtype">void</span> <a class="code" href="classrapidxml_1_1xml__base.html#a4611ddc82ac83a527c65606600eb2a0d">name</a>(<span class="keyword">const</span> Ch *name)</div><div class="line"><a name="l00731"></a><span class="lineno">  731</span>&#160;        {</div><div class="line"><a name="l00732"></a><span class="lineno">  732</span>&#160;            this-&gt;name(name, internal::measure(name));</div><div class="line"><a name="l00733"></a><span class="lineno">  733</span>&#160;        }</div><div class="line"><a name="l00734"></a><span class="lineno">  734</span>&#160;</div><div class="line"><a name="l00751"></a><span class="lineno"><a class="line" href="classrapidxml_1_1xml__base.html#a3b183c2db7022a6d30494dd2f0ac11e9">  751</a></span>&#160;        <span class="keywordtype">void</span> <a class="code" href="classrapidxml_1_1xml__base.html#a3b183c2db7022a6d30494dd2f0ac11e9">value</a>(<span class="keyword">const</span> Ch *value, std::size_t size)</div><div class="line"><a name="l00752"></a><span class="lineno">  752</span>&#160;        {</div><div class="line"><a name="l00753"></a><span class="lineno">  753</span>&#160;            m_value = <span class="keyword">const_cast&lt;</span>Ch *<span class="keyword">&gt;</span>(value);</div><div class="line"><a name="l00754"></a><span class="lineno">  754</span>&#160;            m_value_size = size;</div><div class="line"><a name="l00755"></a><span class="lineno">  755</span>&#160;        }</div><div class="line"><a name="l00756"></a><span class="lineno">  756</span>&#160;</div><div class="line"><a name="l00760"></a><span class="lineno"><a class="line" href="classrapidxml_1_1xml__base.html#a81e63ec4bfd2d7ef0a6c2ed49be6e623">  760</a></span>&#160;        <span class="keywordtype">void</span> <a class="code" href="classrapidxml_1_1xml__base.html#a81e63ec4bfd2d7ef0a6c2ed49be6e623">value</a>(<span class="keyword">const</span> Ch *value)</div><div class="line"><a name="l00761"></a><span class="lineno">  761</span>&#160;        {</div><div class="line"><a name="l00762"></a><span class="lineno">  762</span>&#160;            this-&gt;value(value, internal::measure(value));</div><div class="line"><a name="l00763"></a><span class="lineno">  763</span>&#160;        }</div><div class="line"><a name="l00764"></a><span class="lineno">  764</span>&#160;</div><div class="line"><a name="l00766"></a><span class="lineno">  766</span>&#160;        <span class="comment">// Related nodes access</span></div><div class="line"><a name="l00767"></a><span class="lineno">  767</span>&#160;    </div><div class="line"><a name="l00770"></a><span class="lineno"><a class="line" href="classrapidxml_1_1xml__base.html#aa807062868d671a8c798d9d1bf016988">  770</a></span>&#160;        <a class="code" href="classrapidxml_1_1xml__node.html">xml_node&lt;Ch&gt;</a> *<a class="code" href="classrapidxml_1_1xml__base.html#aa807062868d671a8c798d9d1bf016988">parent</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00771"></a><span class="lineno">  771</span>&#160;<span class="keyword">        </span>{</div><div class="line"><a name="l00772"></a><span class="lineno">  772</span>&#160;            <span class="keywordflow">return</span> m_parent;</div><div class="line"><a name="l00773"></a><span class="lineno">  773</span>&#160;        }</div><div class="line"><a name="l00774"></a><span class="lineno">  774</span>&#160;</div><div class="line"><a name="l00775"></a><span class="lineno">  775</span>&#160;    <span class="keyword">protected</span>:</div><div class="line"><a name="l00776"></a><span class="lineno">  776</span>&#160;</div><div class="line"><a name="l00777"></a><span class="lineno">  777</span>&#160;        <span class="comment">// Return empty string</span></div><div class="line"><a name="l00778"></a><span class="lineno"><a class="line" href="classrapidxml_1_1xml__base.html#ad96ff6b1e41dab3ff60b9bc4df769a75">  778</a></span>&#160;        <span class="keyword">static</span> Ch *<a class="code" href="classrapidxml_1_1xml__base.html#ad96ff6b1e41dab3ff60b9bc4df769a75">nullstr</a>()</div><div class="line"><a name="l00779"></a><span class="lineno">  779</span>&#160;        {</div><div class="line"><a name="l00780"></a><span class="lineno">  780</span>&#160;            <span class="keyword">static</span> Ch zero = Ch(<span class="charliteral">&#39;\0&#39;</span>);</div><div class="line"><a name="l00781"></a><span class="lineno">  781</span>&#160;            <span class="keywordflow">return</span> &amp;zero;</div><div class="line"><a name="l00782"></a><span class="lineno">  782</span>&#160;        }</div><div class="line"><a name="l00783"></a><span class="lineno">  783</span>&#160;</div><div class="line"><a name="l00784"></a><span class="lineno"><a class="line" href="classrapidxml_1_1xml__base.html#afd9851ed43e14619db0d7075ef8e9e8a">  784</a></span>&#160;        Ch *<a class="code" href="classrapidxml_1_1xml__base.html#afd9851ed43e14619db0d7075ef8e9e8a">m_name</a>;                         <span class="comment">// Name of node, or 0 if no name</span></div><div class="line"><a name="l00785"></a><span class="lineno"><a class="line" href="classrapidxml_1_1xml__base.html#a278a1ea63b0b70219b946cec47fa00ea">  785</a></span>&#160;        Ch *<a class="code" href="classrapidxml_1_1xml__base.html#a278a1ea63b0b70219b946cec47fa00ea">m_value</a>;                        <span class="comment">// Value of node, or 0 if no value</span></div><div class="line"><a name="l00786"></a><span class="lineno"><a class="line" href="classrapidxml_1_1xml__base.html#a5a8c76a7274b4180213796422c4df76f">  786</a></span>&#160;        std::size_t <a class="code" href="classrapidxml_1_1xml__base.html#a5a8c76a7274b4180213796422c4df76f">m_name_size</a>;            <span class="comment">// Length of node name, or undefined of no name</span></div><div class="line"><a name="l00787"></a><span class="lineno"><a class="line" href="classrapidxml_1_1xml__base.html#aa3a49d8ceddb8a8d7edb773a2226b89c">  787</a></span>&#160;        std::size_t <a class="code" href="classrapidxml_1_1xml__base.html#aa3a49d8ceddb8a8d7edb773a2226b89c">m_value_size</a>;           <span class="comment">// Length of node value, or undefined if no value</span></div><div class="line"><a name="l00788"></a><span class="lineno"><a class="line" href="classrapidxml_1_1xml__base.html#a90d5f660f078f66563fd7b2d8387ccb0">  788</a></span>&#160;        <a class="code" href="classrapidxml_1_1xml__node.html">xml_node&lt;Ch&gt;</a> *<a class="code" href="classrapidxml_1_1xml__base.html#a90d5f660f078f66563fd7b2d8387ccb0">m_parent</a>;             <span class="comment">// Pointer to parent node, or 0 if none</span></div><div class="line"><a name="l00789"></a><span class="lineno">  789</span>&#160;</div><div class="line"><a name="l00790"></a><span class="lineno">  790</span>&#160;    };</div><div class="line"><a name="l00791"></a><span class="lineno">  791</span>&#160;</div><div class="line"><a name="l00797"></a><span class="lineno">  797</span>&#160;    <span class="keyword">template</span>&lt;<span class="keyword">class</span> Ch = <span class="keywordtype">char</span>&gt;</div><div class="line"><a name="l00798"></a><span class="lineno">  798</span>&#160;    <span class="keyword">class </span><a class="code" href="classrapidxml_1_1xml__attribute.html">xml_attribute</a>: <span class="keyword">public</span> <a class="code" href="classrapidxml_1_1xml__base.html">xml_base</a>&lt;Ch&gt;</div><div class="line"><a name="l00799"></a><span class="lineno">  799</span>&#160;    {</div><div class="line"><a name="l00800"></a><span class="lineno">  800</span>&#160;</div><div class="line"><a name="l00801"></a><span class="lineno"><a class="line" href="classrapidxml_1_1xml__attribute.html#aa7e464ce3fe512598ff8dda47291941f">  801</a></span>&#160;        <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classrapidxml_1_1xml__node.html">xml_node</a>&lt;Ch&gt;;</div><div class="line"><a name="l00802"></a><span class="lineno">  802</span>&#160;    </div><div class="line"><a name="l00803"></a><span class="lineno">  803</span>&#160;    <span class="keyword">public</span>:</div><div class="line"><a name="l00804"></a><span class="lineno">  804</span>&#160;</div><div class="line"><a name="l00806"></a><span class="lineno">  806</span>&#160;        <span class="comment">// Construction &amp; destruction</span></div><div class="line"><a name="l00807"></a><span class="lineno">  807</span>&#160;    </div><div class="line"><a name="l00810"></a><span class="lineno"><a class="line" href="classrapidxml_1_1xml__attribute.html#a26be291103917d3e8de110d46dd83816">  810</a></span>&#160;        <a class="code" href="classrapidxml_1_1xml__attribute.html#a26be291103917d3e8de110d46dd83816">xml_attribute</a>()</div><div class="line"><a name="l00811"></a><span class="lineno">  811</span>&#160;        {</div><div class="line"><a name="l00812"></a><span class="lineno">  812</span>&#160;        }</div><div class="line"><a name="l00813"></a><span class="lineno">  813</span>&#160;</div><div class="line"><a name="l00815"></a><span class="lineno">  815</span>&#160;        <span class="comment">// Related nodes access</span></div><div class="line"><a name="l00816"></a><span class="lineno">  816</span>&#160;    </div><div class="line"><a name="l00819"></a><span class="lineno"><a class="line" href="classrapidxml_1_1xml__attribute.html#ab0ff3bc7880a6969ddcf0bb1e0444077">  819</a></span>&#160;        <a class="code" href="classrapidxml_1_1xml__document.html">xml_document&lt;Ch&gt;</a> *<a class="code" href="classrapidxml_1_1xml__attribute.html#ab0ff3bc7880a6969ddcf0bb1e0444077">document</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00820"></a><span class="lineno">  820</span>&#160;<span class="keyword">        </span>{</div><div class="line"><a name="l00821"></a><span class="lineno">  821</span>&#160;            <span class="keywordflow">if</span> (<a class="code" href="classrapidxml_1_1xml__node.html">xml_node&lt;Ch&gt;</a> *node = this-&gt;parent())</div><div class="line"><a name="l00822"></a><span class="lineno">  822</span>&#160;            {</div><div class="line"><a name="l00823"></a><span class="lineno">  823</span>&#160;                <span class="keywordflow">while</span> (node-&gt;parent())</div><div class="line"><a name="l00824"></a><span class="lineno">  824</span>&#160;                    node = node-&gt;parent();</div><div class="line"><a name="l00825"></a><span class="lineno">  825</span>&#160;                <span class="keywordflow">return</span> node-&gt;type() == <a class="code" href="namespacerapidxml.html#abb456db38f7efb746c4330eed6072a7ca4023b6a1c7059fd8fbec2112d5c35424">node_document</a> ? <span class="keyword">static_cast&lt;</span><a class="code" href="classrapidxml_1_1xml__document.html">xml_document&lt;Ch&gt;</a> *<span class="keyword">&gt;</span>(node) : 0;</div><div class="line"><a name="l00826"></a><span class="lineno">  826</span>&#160;            }</div><div class="line"><a name="l00827"></a><span class="lineno">  827</span>&#160;            <span class="keywordflow">else</span></div><div class="line"><a name="l00828"></a><span class="lineno">  828</span>&#160;                <span class="keywordflow">return</span> 0;</div><div class="line"><a name="l00829"></a><span class="lineno">  829</span>&#160;        }</div><div class="line"><a name="l00830"></a><span class="lineno">  830</span>&#160;</div><div class="line"><a name="l00836"></a><span class="lineno"><a class="line" href="classrapidxml_1_1xml__attribute.html#abb0fb881f7247aefaec4b65b5eabc7ee">  836</a></span>&#160;        <a class="code" href="classrapidxml_1_1xml__attribute.html">xml_attribute&lt;Ch&gt;</a> *<a class="code" href="classrapidxml_1_1xml__attribute.html#abb0fb881f7247aefaec4b65b5eabc7ee">previous_attribute</a>(<span class="keyword">const</span> Ch *name = 0, std::size_t name_size = 0, <span class="keywordtype">bool</span> case_sensitive = <span class="keyword">true</span>)<span class="keyword"> const</span></div><div class="line"><a name="l00837"></a><span class="lineno">  837</span>&#160;<span class="keyword">        </span>{</div><div class="line"><a name="l00838"></a><span class="lineno">  838</span>&#160;            <span class="keywordflow">if</span> (name)</div><div class="line"><a name="l00839"></a><span class="lineno">  839</span>&#160;            {</div><div class="line"><a name="l00840"></a><span class="lineno">  840</span>&#160;                <span class="keywordflow">if</span> (name_size == 0)</div><div class="line"><a name="l00841"></a><span class="lineno">  841</span>&#160;                    name_size = internal::measure(name);</div><div class="line"><a name="l00842"></a><span class="lineno">  842</span>&#160;                <span class="keywordflow">for</span> (<a class="code" href="classrapidxml_1_1xml__attribute.html">xml_attribute&lt;Ch&gt;</a> *attribute = m_prev_attribute; attribute; attribute = attribute-&gt;<a class="code" href="classrapidxml_1_1xml__attribute.html#a204438287a5ad384405584726a1d8559">m_prev_attribute</a>)</div><div class="line"><a name="l00843"></a><span class="lineno">  843</span>&#160;                    <span class="keywordflow">if</span> (internal::compare(attribute-&gt;name(), attribute-&gt;name_size(), name, name_size, case_sensitive))</div><div class="line"><a name="l00844"></a><span class="lineno">  844</span>&#160;                        <span class="keywordflow">return</span> attribute;</div><div class="line"><a name="l00845"></a><span class="lineno">  845</span>&#160;                <span class="keywordflow">return</span> 0;</div><div class="line"><a name="l00846"></a><span class="lineno">  846</span>&#160;            }</div><div class="line"><a name="l00847"></a><span class="lineno">  847</span>&#160;            <span class="keywordflow">else</span></div><div class="line"><a name="l00848"></a><span class="lineno">  848</span>&#160;                <span class="keywordflow">return</span> this-&gt;m_parent ? m_prev_attribute : 0;</div><div class="line"><a name="l00849"></a><span class="lineno">  849</span>&#160;        }</div><div class="line"><a name="l00850"></a><span class="lineno">  850</span>&#160;</div><div class="line"><a name="l00856"></a><span class="lineno"><a class="line" href="classrapidxml_1_1xml__attribute.html#affd0c8d0a9020df0998c507cae5474e5">  856</a></span>&#160;        <a class="code" href="classrapidxml_1_1xml__attribute.html">xml_attribute&lt;Ch&gt;</a> *<a class="code" href="classrapidxml_1_1xml__attribute.html#affd0c8d0a9020df0998c507cae5474e5">next_attribute</a>(<span class="keyword">const</span> Ch *name = 0, std::size_t name_size = 0, <span class="keywordtype">bool</span> case_sensitive = <span class="keyword">true</span>)<span class="keyword"> const</span></div><div class="line"><a name="l00857"></a><span class="lineno">  857</span>&#160;<span class="keyword">        </span>{</div><div class="line"><a name="l00858"></a><span class="lineno">  858</span>&#160;            <span class="keywordflow">if</span> (name)</div><div class="line"><a name="l00859"></a><span class="lineno">  859</span>&#160;            {</div><div class="line"><a name="l00860"></a><span class="lineno">  860</span>&#160;                <span class="keywordflow">if</span> (name_size == 0)</div><div class="line"><a name="l00861"></a><span class="lineno">  861</span>&#160;                    name_size = internal::measure(name);</div><div class="line"><a name="l00862"></a><span class="lineno">  862</span>&#160;                <span class="keywordflow">for</span> (<a class="code" href="classrapidxml_1_1xml__attribute.html">xml_attribute&lt;Ch&gt;</a> *attribute = m_next_attribute; attribute; attribute = attribute-&gt;<a class="code" href="classrapidxml_1_1xml__attribute.html#a3254e4b040a9b71c6b6d1c27ec03352a">m_next_attribute</a>)</div><div class="line"><a name="l00863"></a><span class="lineno">  863</span>&#160;                    <span class="keywordflow">if</span> (internal::compare(attribute-&gt;name(), attribute-&gt;name_size(), name, name_size, case_sensitive))</div><div class="line"><a name="l00864"></a><span class="lineno">  864</span>&#160;                        <span class="keywordflow">return</span> attribute;</div><div class="line"><a name="l00865"></a><span class="lineno">  865</span>&#160;                <span class="keywordflow">return</span> 0;</div><div class="line"><a name="l00866"></a><span class="lineno">  866</span>&#160;            }</div><div class="line"><a name="l00867"></a><span class="lineno">  867</span>&#160;            <span class="keywordflow">else</span></div><div class="line"><a name="l00868"></a><span class="lineno">  868</span>&#160;                <span class="keywordflow">return</span> this-&gt;m_parent ? m_next_attribute : 0;</div><div class="line"><a name="l00869"></a><span class="lineno">  869</span>&#160;        }</div><div class="line"><a name="l00870"></a><span class="lineno">  870</span>&#160;</div><div class="line"><a name="l00871"></a><span class="lineno">  871</span>&#160;    <span class="keyword">private</span>:</div><div class="line"><a name="l00872"></a><span class="lineno">  872</span>&#160;</div><div class="line"><a name="l00873"></a><span class="lineno"><a class="line" href="classrapidxml_1_1xml__attribute.html#a204438287a5ad384405584726a1d8559">  873</a></span>&#160;        <a class="code" href="classrapidxml_1_1xml__attribute.html">xml_attribute&lt;Ch&gt;</a> *<a class="code" href="classrapidxml_1_1xml__attribute.html#a204438287a5ad384405584726a1d8559">m_prev_attribute</a>;        <span class="comment">// Pointer to previous sibling of attribute, or 0 if none; only valid if parent is non-zero</span></div><div class="line"><a name="l00874"></a><span class="lineno"><a class="line" href="classrapidxml_1_1xml__attribute.html#a3254e4b040a9b71c6b6d1c27ec03352a">  874</a></span>&#160;        <a class="code" href="classrapidxml_1_1xml__attribute.html">xml_attribute&lt;Ch&gt;</a> *<a class="code" href="classrapidxml_1_1xml__attribute.html#a3254e4b040a9b71c6b6d1c27ec03352a">m_next_attribute</a>;        <span class="comment">// Pointer to next sibling of attribute, or 0 if none; only valid if parent is non-zero</span></div><div class="line"><a name="l00875"></a><span class="lineno">  875</span>&#160;    </div><div class="line"><a name="l00876"></a><span class="lineno">  876</span>&#160;    };</div><div class="line"><a name="l00877"></a><span class="lineno">  877</span>&#160;</div><div class="line"><a name="l00879"></a><span class="lineno">  879</span>&#160;    <span class="comment">// XML node</span></div><div class="line"><a name="l00880"></a><span class="lineno">  880</span>&#160;</div><div class="line"><a name="l00889"></a><span class="lineno">  889</span>&#160;    <span class="keyword">template</span>&lt;<span class="keyword">class</span> Ch = <span class="keywordtype">char</span>&gt;</div><div class="line"><a name="l00890"></a><span class="lineno">  890</span>&#160;    <span class="keyword">class </span><a class="code" href="classrapidxml_1_1xml__node.html">xml_node</a>: <span class="keyword">public</span> <a class="code" href="classrapidxml_1_1xml__base.html">xml_base</a>&lt;Ch&gt;</div><div class="line"><a name="l00891"></a><span class="lineno">  891</span>&#160;    {</div><div class="line"><a name="l00892"></a><span class="lineno">  892</span>&#160;</div><div class="line"><a name="l00893"></a><span class="lineno">  893</span>&#160;    <span class="keyword">public</span>:</div><div class="line"><a name="l00894"></a><span class="lineno">  894</span>&#160;</div><div class="line"><a name="l00896"></a><span class="lineno">  896</span>&#160;        <span class="comment">// Construction &amp; destruction</span></div><div class="line"><a name="l00897"></a><span class="lineno">  897</span>&#160;    </div><div class="line"><a name="l00901"></a><span class="lineno"><a class="line" href="classrapidxml_1_1xml__node.html#a8bd9019960b90605a45998b661fb1b0e">  901</a></span>&#160;        <a class="code" href="classrapidxml_1_1xml__node.html#a8bd9019960b90605a45998b661fb1b0e">xml_node</a>(<a class="code" href="namespacerapidxml.html#abb456db38f7efb746c4330eed6072a7c">node_type</a> type)</div><div class="line"><a name="l00902"></a><span class="lineno">  902</span>&#160;            : m_type(type)</div><div class="line"><a name="l00903"></a><span class="lineno">  903</span>&#160;            , m_first_node(0)</div><div class="line"><a name="l00904"></a><span class="lineno">  904</span>&#160;            , m_first_attribute(0)</div><div class="line"><a name="l00905"></a><span class="lineno">  905</span>&#160;        {</div><div class="line"><a name="l00906"></a><span class="lineno">  906</span>&#160;        }</div><div class="line"><a name="l00907"></a><span class="lineno">  907</span>&#160;</div><div class="line"><a name="l00909"></a><span class="lineno">  909</span>&#160;        <span class="comment">// Node data access</span></div><div class="line"><a name="l00910"></a><span class="lineno">  910</span>&#160;    </div><div class="line"><a name="l00913"></a><span class="lineno"><a class="line" href="classrapidxml_1_1xml__node.html#a5f91729128856b0aaab598d4364ace60">  913</a></span>&#160;        <a class="code" href="namespacerapidxml.html#abb456db38f7efb746c4330eed6072a7c">node_type</a> <a class="code" href="classrapidxml_1_1xml__node.html#a5f91729128856b0aaab598d4364ace60">type</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00914"></a><span class="lineno">  914</span>&#160;<span class="keyword">        </span>{</div><div class="line"><a name="l00915"></a><span class="lineno">  915</span>&#160;            <span class="keywordflow">return</span> m_type;</div><div class="line"><a name="l00916"></a><span class="lineno">  916</span>&#160;        }</div><div class="line"><a name="l00917"></a><span class="lineno">  917</span>&#160;</div><div class="line"><a name="l00919"></a><span class="lineno">  919</span>&#160;        <span class="comment">// Related nodes access</span></div><div class="line"><a name="l00920"></a><span class="lineno">  920</span>&#160;    </div><div class="line"><a name="l00923"></a><span class="lineno"><a class="line" href="classrapidxml_1_1xml__node.html#af23d2d56182411e9261ca6974bfd767f">  923</a></span>&#160;        <a class="code" href="classrapidxml_1_1xml__document.html">xml_document&lt;Ch&gt;</a> *<a class="code" href="classrapidxml_1_1xml__node.html#af23d2d56182411e9261ca6974bfd767f">document</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00924"></a><span class="lineno">  924</span>&#160;<span class="keyword">        </span>{</div><div class="line"><a name="l00925"></a><span class="lineno">  925</span>&#160;            <a class="code" href="classrapidxml_1_1xml__node.html">xml_node&lt;Ch&gt;</a> *node = <span class="keyword">const_cast&lt;</span><a class="code" href="classrapidxml_1_1xml__node.html">xml_node&lt;Ch&gt;</a> *<span class="keyword">&gt;</span>(<span class="keyword">this</span>);</div><div class="line"><a name="l00926"></a><span class="lineno">  926</span>&#160;            <span class="keywordflow">while</span> (node-&gt;<a class="code" href="classrapidxml_1_1xml__base.html#aa807062868d671a8c798d9d1bf016988">parent</a>())</div><div class="line"><a name="l00927"></a><span class="lineno">  927</span>&#160;                node = node-&gt;<a class="code" href="classrapidxml_1_1xml__base.html#aa807062868d671a8c798d9d1bf016988">parent</a>();</div><div class="line"><a name="l00928"></a><span class="lineno">  928</span>&#160;            <span class="keywordflow">return</span> node-&gt;<a class="code" href="classrapidxml_1_1xml__node.html#a5f91729128856b0aaab598d4364ace60">type</a>() == <a class="code" href="namespacerapidxml.html#abb456db38f7efb746c4330eed6072a7ca4023b6a1c7059fd8fbec2112d5c35424">node_document</a> ? <span class="keyword">static_cast&lt;</span><a class="code" href="classrapidxml_1_1xml__document.html">xml_document&lt;Ch&gt;</a> *<span class="keyword">&gt;</span>(node) : 0;</div><div class="line"><a name="l00929"></a><span class="lineno">  929</span>&#160;        }</div><div class="line"><a name="l00930"></a><span class="lineno">  930</span>&#160;</div><div class="line"><a name="l00936"></a><span class="lineno"><a class="line" href="classrapidxml_1_1xml__node.html#acdf3691224d683f50692616a92a75d3f">  936</a></span>&#160;        <a class="code" href="classrapidxml_1_1xml__node.html">xml_node&lt;Ch&gt;</a> *<a class="code" href="classrapidxml_1_1xml__node.html#acdf3691224d683f50692616a92a75d3f">first_node</a>(<span class="keyword">const</span> Ch *name = 0, std::size_t name_size = 0, <span class="keywordtype">bool</span> case_sensitive = <span class="keyword">true</span>)<span class="keyword"> const</span></div><div class="line"><a name="l00937"></a><span class="lineno">  937</span>&#160;<span class="keyword">        </span>{</div><div class="line"><a name="l00938"></a><span class="lineno">  938</span>&#160;            <span class="keywordflow">if</span> (name)</div><div class="line"><a name="l00939"></a><span class="lineno">  939</span>&#160;            {</div><div class="line"><a name="l00940"></a><span class="lineno">  940</span>&#160;                <span class="keywordflow">if</span> (name_size == 0)</div><div class="line"><a name="l00941"></a><span class="lineno">  941</span>&#160;                    name_size = internal::measure(name);</div><div class="line"><a name="l00942"></a><span class="lineno">  942</span>&#160;                <span class="keywordflow">for</span> (<a class="code" href="classrapidxml_1_1xml__node.html">xml_node&lt;Ch&gt;</a> *child = m_first_node; child; child = child-&gt;<a class="code" href="classrapidxml_1_1xml__node.html#ad36aa4445ced578f93c3e06770cb3ef9">next_sibling</a>())</div><div class="line"><a name="l00943"></a><span class="lineno">  943</span>&#160;                    <span class="keywordflow">if</span> (internal::compare(child-&gt;name(), child-&gt;name_size(), name, name_size, case_sensitive))</div><div class="line"><a name="l00944"></a><span class="lineno">  944</span>&#160;                        <span class="keywordflow">return</span> child;</div><div class="line"><a name="l00945"></a><span class="lineno">  945</span>&#160;                <span class="keywordflow">return</span> 0;</div><div class="line"><a name="l00946"></a><span class="lineno">  946</span>&#160;            }</div><div class="line"><a name="l00947"></a><span class="lineno">  947</span>&#160;            <span class="keywordflow">else</span></div><div class="line"><a name="l00948"></a><span class="lineno">  948</span>&#160;                <span class="keywordflow">return</span> m_first_node;</div><div class="line"><a name="l00949"></a><span class="lineno">  949</span>&#160;        }</div><div class="line"><a name="l00950"></a><span class="lineno">  950</span>&#160;</div><div class="line"><a name="l00958"></a><span class="lineno"><a class="line" href="classrapidxml_1_1xml__node.html#a524d427e32c72fba9de1857e02e82fa7">  958</a></span>&#160;        <a class="code" href="classrapidxml_1_1xml__node.html">xml_node&lt;Ch&gt;</a> *<a class="code" href="classrapidxml_1_1xml__node.html#a524d427e32c72fba9de1857e02e82fa7">last_node</a>(<span class="keyword">const</span> Ch *name = 0, std::size_t name_size = 0, <span class="keywordtype">bool</span> case_sensitive = <span class="keyword">true</span>)<span class="keyword"> const</span></div><div class="line"><a name="l00959"></a><span class="lineno">  959</span>&#160;<span class="keyword">        </span>{</div><div class="line"><a name="l00960"></a><span class="lineno">  960</span>&#160;            assert(m_first_node);  <span class="comment">// Cannot query for last child if node has no children</span></div><div class="line"><a name="l00961"></a><span class="lineno">  961</span>&#160;            <span class="keywordflow">if</span> (name)</div><div class="line"><a name="l00962"></a><span class="lineno">  962</span>&#160;            {</div><div class="line"><a name="l00963"></a><span class="lineno">  963</span>&#160;                <span class="keywordflow">if</span> (name_size == 0)</div><div class="line"><a name="l00964"></a><span class="lineno">  964</span>&#160;                    name_size = internal::measure(name);</div><div class="line"><a name="l00965"></a><span class="lineno">  965</span>&#160;                <span class="keywordflow">for</span> (<a class="code" href="classrapidxml_1_1xml__node.html">xml_node&lt;Ch&gt;</a> *child = m_last_node; child; child = child-&gt;<a class="code" href="classrapidxml_1_1xml__node.html#aebcc42042ded78fb7020e2783f7d5426">previous_sibling</a>())</div><div class="line"><a name="l00966"></a><span class="lineno">  966</span>&#160;                    <span class="keywordflow">if</span> (internal::compare(child-&gt;name(), child-&gt;name_size(), name, name_size, case_sensitive))</div><div class="line"><a name="l00967"></a><span class="lineno">  967</span>&#160;                        <span class="keywordflow">return</span> child;</div><div class="line"><a name="l00968"></a><span class="lineno">  968</span>&#160;                <span class="keywordflow">return</span> 0;</div><div class="line"><a name="l00969"></a><span class="lineno">  969</span>&#160;            }</div><div class="line"><a name="l00970"></a><span class="lineno">  970</span>&#160;            <span class="keywordflow">else</span></div><div class="line"><a name="l00971"></a><span class="lineno">  971</span>&#160;                <span class="keywordflow">return</span> m_last_node;</div><div class="line"><a name="l00972"></a><span class="lineno">  972</span>&#160;        }</div><div class="line"><a name="l00973"></a><span class="lineno">  973</span>&#160;</div><div class="line"><a name="l00981"></a><span class="lineno"><a class="line" href="classrapidxml_1_1xml__node.html#aebcc42042ded78fb7020e2783f7d5426">  981</a></span>&#160;        <a class="code" href="classrapidxml_1_1xml__node.html">xml_node&lt;Ch&gt;</a> *<a class="code" href="classrapidxml_1_1xml__node.html#aebcc42042ded78fb7020e2783f7d5426">previous_sibling</a>(<span class="keyword">const</span> Ch *name = 0, std::size_t name_size = 0, <span class="keywordtype">bool</span> case_sensitive = <span class="keyword">true</span>)<span class="keyword"> const</span></div><div class="line"><a name="l00982"></a><span class="lineno">  982</span>&#160;<span class="keyword">        </span>{</div><div class="line"><a name="l00983"></a><span class="lineno">  983</span>&#160;            assert(this-&gt;m_parent);     <span class="comment">// Cannot query for siblings if node has no parent</span></div><div class="line"><a name="l00984"></a><span class="lineno">  984</span>&#160;            <span class="keywordflow">if</span> (name)</div><div class="line"><a name="l00985"></a><span class="lineno">  985</span>&#160;            {</div><div class="line"><a name="l00986"></a><span class="lineno">  986</span>&#160;                <span class="keywordflow">if</span> (name_size == 0)</div><div class="line"><a name="l00987"></a><span class="lineno">  987</span>&#160;                    name_size = internal::measure(name);</div><div class="line"><a name="l00988"></a><span class="lineno">  988</span>&#160;                <span class="keywordflow">for</span> (<a class="code" href="classrapidxml_1_1xml__node.html">xml_node&lt;Ch&gt;</a> *sibling = m_prev_sibling; sibling; sibling = sibling-&gt;<a class="code" href="classrapidxml_1_1xml__node.html#a571f24c86107f8442f46a514a7cc5d0d">m_prev_sibling</a>)</div><div class="line"><a name="l00989"></a><span class="lineno">  989</span>&#160;                    <span class="keywordflow">if</span> (internal::compare(sibling-&gt;name(), sibling-&gt;name_size(), name, name_size, case_sensitive))</div><div class="line"><a name="l00990"></a><span class="lineno">  990</span>&#160;                        <span class="keywordflow">return</span> sibling;</div><div class="line"><a name="l00991"></a><span class="lineno">  991</span>&#160;                <span class="keywordflow">return</span> 0;</div><div class="line"><a name="l00992"></a><span class="lineno">  992</span>&#160;            }</div><div class="line"><a name="l00993"></a><span class="lineno">  993</span>&#160;            <span class="keywordflow">else</span></div><div class="line"><a name="l00994"></a><span class="lineno">  994</span>&#160;                <span class="keywordflow">return</span> m_prev_sibling;</div><div class="line"><a name="l00995"></a><span class="lineno">  995</span>&#160;        }</div><div class="line"><a name="l00996"></a><span class="lineno">  996</span>&#160;</div><div class="line"><a name="l01004"></a><span class="lineno"><a class="line" href="classrapidxml_1_1xml__node.html#ad36aa4445ced578f93c3e06770cb3ef9"> 1004</a></span>&#160;        <a class="code" href="classrapidxml_1_1xml__node.html">xml_node&lt;Ch&gt;</a> *<a class="code" href="classrapidxml_1_1xml__node.html#ad36aa4445ced578f93c3e06770cb3ef9">next_sibling</a>(<span class="keyword">const</span> Ch *name = 0, std::size_t name_size = 0, <span class="keywordtype">bool</span> case_sensitive = <span class="keyword">true</span>)<span class="keyword"> const</span></div><div class="line"><a name="l01005"></a><span class="lineno"> 1005</span>&#160;<span class="keyword">        </span>{</div><div class="line"><a name="l01006"></a><span class="lineno"> 1006</span>&#160;            assert(this-&gt;m_parent);     <span class="comment">// Cannot query for siblings if node has no parent</span></div><div class="line"><a name="l01007"></a><span class="lineno"> 1007</span>&#160;            <span class="keywordflow">if</span> (name)</div><div class="line"><a name="l01008"></a><span class="lineno"> 1008</span>&#160;            {</div><div class="line"><a name="l01009"></a><span class="lineno"> 1009</span>&#160;                <span class="keywordflow">if</span> (name_size == 0)</div><div class="line"><a name="l01010"></a><span class="lineno"> 1010</span>&#160;                    name_size = internal::measure(name);</div><div class="line"><a name="l01011"></a><span class="lineno"> 1011</span>&#160;                <span class="keywordflow">for</span> (<a class="code" href="classrapidxml_1_1xml__node.html">xml_node&lt;Ch&gt;</a> *sibling = m_next_sibling; sibling; sibling = sibling-&gt;<a class="code" href="classrapidxml_1_1xml__node.html#a202e84dfdd34cb65557b64e31b7e205a">m_next_sibling</a>)</div><div class="line"><a name="l01012"></a><span class="lineno"> 1012</span>&#160;                    <span class="keywordflow">if</span> (internal::compare(sibling-&gt;name(), sibling-&gt;name_size(), name, name_size, case_sensitive))</div><div class="line"><a name="l01013"></a><span class="lineno"> 1013</span>&#160;                        <span class="keywordflow">return</span> sibling;</div><div class="line"><a name="l01014"></a><span class="lineno"> 1014</span>&#160;                <span class="keywordflow">return</span> 0;</div><div class="line"><a name="l01015"></a><span class="lineno"> 1015</span>&#160;            }</div><div class="line"><a name="l01016"></a><span class="lineno"> 1016</span>&#160;            <span class="keywordflow">else</span></div><div class="line"><a name="l01017"></a><span class="lineno"> 1017</span>&#160;                <span class="keywordflow">return</span> m_next_sibling;</div><div class="line"><a name="l01018"></a><span class="lineno"> 1018</span>&#160;        }</div><div class="line"><a name="l01019"></a><span class="lineno"> 1019</span>&#160;</div><div class="line"><a name="l01025"></a><span class="lineno"><a class="line" href="classrapidxml_1_1xml__node.html#ab816ab6f13ee4b0588d5b76b0697511c"> 1025</a></span>&#160;        <a class="code" href="classrapidxml_1_1xml__attribute.html">xml_attribute&lt;Ch&gt;</a> *<a class="code" href="classrapidxml_1_1xml__node.html#ab816ab6f13ee4b0588d5b76b0697511c">first_attribute</a>(<span class="keyword">const</span> Ch *name = 0, std::size_t name_size = 0, <span class="keywordtype">bool</span> case_sensitive = <span class="keyword">true</span>)<span class="keyword"> const</span></div><div class="line"><a name="l01026"></a><span class="lineno"> 1026</span>&#160;<span class="keyword">        </span>{</div><div class="line"><a name="l01027"></a><span class="lineno"> 1027</span>&#160;            <span class="keywordflow">if</span> (name)</div><div class="line"><a name="l01028"></a><span class="lineno"> 1028</span>&#160;            {</div><div class="line"><a name="l01029"></a><span class="lineno"> 1029</span>&#160;                <span class="keywordflow">if</span> (name_size == 0)</div><div class="line"><a name="l01030"></a><span class="lineno"> 1030</span>&#160;                    name_size = internal::measure(name);</div><div class="line"><a name="l01031"></a><span class="lineno"> 1031</span>&#160;                <span class="keywordflow">for</span> (<a class="code" href="classrapidxml_1_1xml__attribute.html">xml_attribute&lt;Ch&gt;</a> *attribute = m_first_attribute; attribute; attribute = attribute-&gt;<a class="code" href="classrapidxml_1_1xml__attribute.html#a3254e4b040a9b71c6b6d1c27ec03352a">m_next_attribute</a>)</div><div class="line"><a name="l01032"></a><span class="lineno"> 1032</span>&#160;                    <span class="keywordflow">if</span> (internal::compare(attribute-&gt;name(), attribute-&gt;name_size(), name, name_size, case_sensitive))</div><div class="line"><a name="l01033"></a><span class="lineno"> 1033</span>&#160;                        <span class="keywordflow">return</span> attribute;</div><div class="line"><a name="l01034"></a><span class="lineno"> 1034</span>&#160;                <span class="keywordflow">return</span> 0;</div><div class="line"><a name="l01035"></a><span class="lineno"> 1035</span>&#160;            }</div><div class="line"><a name="l01036"></a><span class="lineno"> 1036</span>&#160;            <span class="keywordflow">else</span></div><div class="line"><a name="l01037"></a><span class="lineno"> 1037</span>&#160;                <span class="keywordflow">return</span> m_first_attribute;</div><div class="line"><a name="l01038"></a><span class="lineno"> 1038</span>&#160;        }</div><div class="line"><a name="l01039"></a><span class="lineno"> 1039</span>&#160;</div><div class="line"><a name="l01045"></a><span class="lineno"><a class="line" href="classrapidxml_1_1xml__node.html#a67db03d1568dc6891573210ddba61520"> 1045</a></span>&#160;        <a class="code" href="classrapidxml_1_1xml__attribute.html">xml_attribute&lt;Ch&gt;</a> *<a class="code" href="classrapidxml_1_1xml__node.html#a67db03d1568dc6891573210ddba61520">last_attribute</a>(<span class="keyword">const</span> Ch *name = 0, std::size_t name_size = 0, <span class="keywordtype">bool</span> case_sensitive = <span class="keyword">true</span>)<span class="keyword"> const</span></div><div class="line"><a name="l01046"></a><span class="lineno"> 1046</span>&#160;<span class="keyword">        </span>{</div><div class="line"><a name="l01047"></a><span class="lineno"> 1047</span>&#160;            <span class="keywordflow">if</span> (name)</div><div class="line"><a name="l01048"></a><span class="lineno"> 1048</span>&#160;            {</div><div class="line"><a name="l01049"></a><span class="lineno"> 1049</span>&#160;                <span class="keywordflow">if</span> (name_size == 0)</div><div class="line"><a name="l01050"></a><span class="lineno"> 1050</span>&#160;                    name_size = internal::measure(name);</div><div class="line"><a name="l01051"></a><span class="lineno"> 1051</span>&#160;                <span class="keywordflow">for</span> (<a class="code" href="classrapidxml_1_1xml__attribute.html">xml_attribute&lt;Ch&gt;</a> *attribute = m_last_attribute; attribute; attribute = attribute-&gt;<a class="code" href="classrapidxml_1_1xml__attribute.html#a204438287a5ad384405584726a1d8559">m_prev_attribute</a>)</div><div class="line"><a name="l01052"></a><span class="lineno"> 1052</span>&#160;                    <span class="keywordflow">if</span> (internal::compare(attribute-&gt;name(), attribute-&gt;name_size(), name, name_size, case_sensitive))</div><div class="line"><a name="l01053"></a><span class="lineno"> 1053</span>&#160;                        <span class="keywordflow">return</span> attribute;</div><div class="line"><a name="l01054"></a><span class="lineno"> 1054</span>&#160;                <span class="keywordflow">return</span> 0;</div><div class="line"><a name="l01055"></a><span class="lineno"> 1055</span>&#160;            }</div><div class="line"><a name="l01056"></a><span class="lineno"> 1056</span>&#160;            <span class="keywordflow">else</span></div><div class="line"><a name="l01057"></a><span class="lineno"> 1057</span>&#160;                <span class="keywordflow">return</span> m_first_attribute ? m_last_attribute : 0;</div><div class="line"><a name="l01058"></a><span class="lineno"> 1058</span>&#160;        }</div><div class="line"><a name="l01059"></a><span class="lineno"> 1059</span>&#160;</div><div class="line"><a name="l01061"></a><span class="lineno"> 1061</span>&#160;        <span class="comment">// Node modification</span></div><div class="line"><a name="l01062"></a><span class="lineno"> 1062</span>&#160;    </div><div class="line"><a name="l01065"></a><span class="lineno"><a class="line" href="classrapidxml_1_1xml__node.html#a499bbc9300c1b06821d5c08b24164c68"> 1065</a></span>&#160;        <span class="keywordtype">void</span> <a class="code" href="classrapidxml_1_1xml__node.html#a499bbc9300c1b06821d5c08b24164c68">type</a>(<a class="code" href="namespacerapidxml.html#abb456db38f7efb746c4330eed6072a7c">node_type</a> type)</div><div class="line"><a name="l01066"></a><span class="lineno"> 1066</span>&#160;        {</div><div class="line"><a name="l01067"></a><span class="lineno"> 1067</span>&#160;            m_type = type;</div><div class="line"><a name="l01068"></a><span class="lineno"> 1068</span>&#160;        }</div><div class="line"><a name="l01069"></a><span class="lineno"> 1069</span>&#160;</div><div class="line"><a name="l01071"></a><span class="lineno"> 1071</span>&#160;        <span class="comment">// Node manipulation</span></div><div class="line"><a name="l01072"></a><span class="lineno"> 1072</span>&#160;</div><div class="line"><a name="l01076"></a><span class="lineno"><a class="line" href="classrapidxml_1_1xml__node.html#ae86e92908c3eab40bbed8216e4f3f3cb"> 1076</a></span>&#160;        <span class="keywordtype">void</span> <a class="code" href="classrapidxml_1_1xml__node.html#ae86e92908c3eab40bbed8216e4f3f3cb">prepend_node</a>(<a class="code" href="classrapidxml_1_1xml__node.html">xml_node&lt;Ch&gt;</a> *child)</div><div class="line"><a name="l01077"></a><span class="lineno"> 1077</span>&#160;        {</div><div class="line"><a name="l01078"></a><span class="lineno"> 1078</span>&#160;            assert(child &amp;&amp; !child-&gt;<a class="code" href="classrapidxml_1_1xml__base.html#aa807062868d671a8c798d9d1bf016988">parent</a>() &amp;&amp; child-&gt;<a class="code" href="classrapidxml_1_1xml__node.html#a5f91729128856b0aaab598d4364ace60">type</a>() != <a class="code" href="namespacerapidxml.html#abb456db38f7efb746c4330eed6072a7ca4023b6a1c7059fd8fbec2112d5c35424">node_document</a>);</div><div class="line"><a name="l01079"></a><span class="lineno"> 1079</span>&#160;            <span class="keywordflow">if</span> (first_node())</div><div class="line"><a name="l01080"></a><span class="lineno"> 1080</span>&#160;            {</div><div class="line"><a name="l01081"></a><span class="lineno"> 1081</span>&#160;                child-&gt;<a class="code" href="classrapidxml_1_1xml__node.html#a202e84dfdd34cb65557b64e31b7e205a">m_next_sibling</a> = m_first_node;</div><div class="line"><a name="l01082"></a><span class="lineno"> 1082</span>&#160;                m_first_node-&gt;m_prev_sibling = child;</div><div class="line"><a name="l01083"></a><span class="lineno"> 1083</span>&#160;            }</div><div class="line"><a name="l01084"></a><span class="lineno"> 1084</span>&#160;            <span class="keywordflow">else</span></div><div class="line"><a name="l01085"></a><span class="lineno"> 1085</span>&#160;            {</div><div class="line"><a name="l01086"></a><span class="lineno"> 1086</span>&#160;                child-&gt;<a class="code" href="classrapidxml_1_1xml__node.html#a202e84dfdd34cb65557b64e31b7e205a">m_next_sibling</a> = 0;</div><div class="line"><a name="l01087"></a><span class="lineno"> 1087</span>&#160;                m_last_node = child;</div><div class="line"><a name="l01088"></a><span class="lineno"> 1088</span>&#160;            }</div><div class="line"><a name="l01089"></a><span class="lineno"> 1089</span>&#160;            m_first_node = child;</div><div class="line"><a name="l01090"></a><span class="lineno"> 1090</span>&#160;            child-&gt;<a class="code" href="classrapidxml_1_1xml__base.html#a90d5f660f078f66563fd7b2d8387ccb0">m_parent</a> = <span class="keyword">this</span>;</div><div class="line"><a name="l01091"></a><span class="lineno"> 1091</span>&#160;            child-&gt;<a class="code" href="classrapidxml_1_1xml__node.html#a571f24c86107f8442f46a514a7cc5d0d">m_prev_sibling</a> = 0;</div><div class="line"><a name="l01092"></a><span class="lineno"> 1092</span>&#160;        }</div><div class="line"><a name="l01093"></a><span class="lineno"> 1093</span>&#160;</div><div class="line"><a name="l01097"></a><span class="lineno"><a class="line" href="classrapidxml_1_1xml__node.html#a8696d098ecc9c4d2a646b43e91d58e31"> 1097</a></span>&#160;        <span class="keywordtype">void</span> <a class="code" href="classrapidxml_1_1xml__node.html#a8696d098ecc9c4d2a646b43e91d58e31">append_node</a>(<a class="code" href="classrapidxml_1_1xml__node.html">xml_node&lt;Ch&gt;</a> *child)</div><div class="line"><a name="l01098"></a><span class="lineno"> 1098</span>&#160;        {</div><div class="line"><a name="l01099"></a><span class="lineno"> 1099</span>&#160;            assert(child &amp;&amp; !child-&gt;<a class="code" href="classrapidxml_1_1xml__base.html#aa807062868d671a8c798d9d1bf016988">parent</a>() &amp;&amp; child-&gt;<a class="code" href="classrapidxml_1_1xml__node.html#a5f91729128856b0aaab598d4364ace60">type</a>() != <a class="code" href="namespacerapidxml.html#abb456db38f7efb746c4330eed6072a7ca4023b6a1c7059fd8fbec2112d5c35424">node_document</a>);</div><div class="line"><a name="l01100"></a><span class="lineno"> 1100</span>&#160;            <span class="keywordflow">if</span> (first_node())</div><div class="line"><a name="l01101"></a><span class="lineno"> 1101</span>&#160;            {</div><div class="line"><a name="l01102"></a><span class="lineno"> 1102</span>&#160;                child-&gt;<a class="code" href="classrapidxml_1_1xml__node.html#a571f24c86107f8442f46a514a7cc5d0d">m_prev_sibling</a> = m_last_node;</div><div class="line"><a name="l01103"></a><span class="lineno"> 1103</span>&#160;                m_last_node-&gt;m_next_sibling = child;</div><div class="line"><a name="l01104"></a><span class="lineno"> 1104</span>&#160;            }</div><div class="line"><a name="l01105"></a><span class="lineno"> 1105</span>&#160;            <span class="keywordflow">else</span></div><div class="line"><a name="l01106"></a><span class="lineno"> 1106</span>&#160;            {</div><div class="line"><a name="l01107"></a><span class="lineno"> 1107</span>&#160;                child-&gt;<a class="code" href="classrapidxml_1_1xml__node.html#a571f24c86107f8442f46a514a7cc5d0d">m_prev_sibling</a> = 0;</div><div class="line"><a name="l01108"></a><span class="lineno"> 1108</span>&#160;                m_first_node = child;</div><div class="line"><a name="l01109"></a><span class="lineno"> 1109</span>&#160;            }</div><div class="line"><a name="l01110"></a><span class="lineno"> 1110</span>&#160;            m_last_node = child;</div><div class="line"><a name="l01111"></a><span class="lineno"> 1111</span>&#160;            child-&gt;<a class="code" href="classrapidxml_1_1xml__base.html#a90d5f660f078f66563fd7b2d8387ccb0">m_parent</a> = <span class="keyword">this</span>;</div><div class="line"><a name="l01112"></a><span class="lineno"> 1112</span>&#160;            child-&gt;<a class="code" href="classrapidxml_1_1xml__node.html#a202e84dfdd34cb65557b64e31b7e205a">m_next_sibling</a> = 0;</div><div class="line"><a name="l01113"></a><span class="lineno"> 1113</span>&#160;        }</div><div class="line"><a name="l01114"></a><span class="lineno"> 1114</span>&#160;</div><div class="line"><a name="l01119"></a><span class="lineno"><a class="line" href="classrapidxml_1_1xml__node.html#a666880f42a7e486d78cc45ed51c7c46d"> 1119</a></span>&#160;        <span class="keywordtype">void</span> <a class="code" href="classrapidxml_1_1xml__node.html#a666880f42a7e486d78cc45ed51c7c46d">insert_node</a>(<a class="code" href="classrapidxml_1_1xml__node.html">xml_node&lt;Ch&gt;</a> *<a class="code" href="classrapidxml_1_1parse__error.html#ab139528f4d9e960f0ee807d22d6c032d">where</a>, <a class="code" href="classrapidxml_1_1xml__node.html">xml_node&lt;Ch&gt;</a> *child)</div><div class="line"><a name="l01120"></a><span class="lineno"> 1120</span>&#160;        {</div><div class="line"><a name="l01121"></a><span class="lineno"> 1121</span>&#160;            assert(!where || where-&gt;<a class="code" href="classrapidxml_1_1xml__base.html#aa807062868d671a8c798d9d1bf016988">parent</a>() == <span class="keyword">this</span>);</div><div class="line"><a name="l01122"></a><span class="lineno"> 1122</span>&#160;            assert(child &amp;&amp; !child-&gt;<a class="code" href="classrapidxml_1_1xml__base.html#aa807062868d671a8c798d9d1bf016988">parent</a>() &amp;&amp; child-&gt;<a class="code" href="classrapidxml_1_1xml__node.html#a5f91729128856b0aaab598d4364ace60">type</a>() != <a class="code" href="namespacerapidxml.html#abb456db38f7efb746c4330eed6072a7ca4023b6a1c7059fd8fbec2112d5c35424">node_document</a>);</div><div class="line"><a name="l01123"></a><span class="lineno"> 1123</span>&#160;            <span class="keywordflow">if</span> (where == m_first_node)</div><div class="line"><a name="l01124"></a><span class="lineno"> 1124</span>&#160;                prepend_node(child);</div><div class="line"><a name="l01125"></a><span class="lineno"> 1125</span>&#160;            <span class="keywordflow">else</span> <span class="keywordflow">if</span> (where == 0)</div><div class="line"><a name="l01126"></a><span class="lineno"> 1126</span>&#160;                append_node(child);</div><div class="line"><a name="l01127"></a><span class="lineno"> 1127</span>&#160;            <span class="keywordflow">else</span></div><div class="line"><a name="l01128"></a><span class="lineno"> 1128</span>&#160;            {</div><div class="line"><a name="l01129"></a><span class="lineno"> 1129</span>&#160;                child-&gt;<a class="code" href="classrapidxml_1_1xml__node.html#a571f24c86107f8442f46a514a7cc5d0d">m_prev_sibling</a> = where-&gt;<a class="code" href="classrapidxml_1_1xml__node.html#a571f24c86107f8442f46a514a7cc5d0d">m_prev_sibling</a>;</div><div class="line"><a name="l01130"></a><span class="lineno"> 1130</span>&#160;                child-&gt;<a class="code" href="classrapidxml_1_1xml__node.html#a202e84dfdd34cb65557b64e31b7e205a">m_next_sibling</a> = <a class="code" href="classrapidxml_1_1parse__error.html#ab139528f4d9e960f0ee807d22d6c032d">where</a>;</div><div class="line"><a name="l01131"></a><span class="lineno"> 1131</span>&#160;                where-&gt;<a class="code" href="classrapidxml_1_1xml__node.html#a571f24c86107f8442f46a514a7cc5d0d">m_prev_sibling</a>-&gt;m_next_sibling = child;</div><div class="line"><a name="l01132"></a><span class="lineno"> 1132</span>&#160;                where-&gt;<a class="code" href="classrapidxml_1_1xml__node.html#a571f24c86107f8442f46a514a7cc5d0d">m_prev_sibling</a> = child;</div><div class="line"><a name="l01133"></a><span class="lineno"> 1133</span>&#160;                child-&gt;<a class="code" href="classrapidxml_1_1xml__base.html#a90d5f660f078f66563fd7b2d8387ccb0">m_parent</a> = <span class="keyword">this</span>;</div><div class="line"><a name="l01134"></a><span class="lineno"> 1134</span>&#160;            }</div><div class="line"><a name="l01135"></a><span class="lineno"> 1135</span>&#160;        }</div><div class="line"><a name="l01136"></a><span class="lineno"> 1136</span>&#160;</div><div class="line"><a name="l01140"></a><span class="lineno"><a class="line" href="classrapidxml_1_1xml__node.html#a62bf7b276cf7a651a3337f5e0a0ef6ac"> 1140</a></span>&#160;        <span class="keywordtype">void</span> <a class="code" href="classrapidxml_1_1xml__node.html#a62bf7b276cf7a651a3337f5e0a0ef6ac">remove_first_node</a>()</div><div class="line"><a name="l01141"></a><span class="lineno"> 1141</span>&#160;        {</div><div class="line"><a name="l01142"></a><span class="lineno"> 1142</span>&#160;            assert(first_node());</div><div class="line"><a name="l01143"></a><span class="lineno"> 1143</span>&#160;            <a class="code" href="classrapidxml_1_1xml__node.html">xml_node&lt;Ch&gt;</a> *child = m_first_node;</div><div class="line"><a name="l01144"></a><span class="lineno"> 1144</span>&#160;            m_first_node = child-&gt;<a class="code" href="classrapidxml_1_1xml__node.html#a202e84dfdd34cb65557b64e31b7e205a">m_next_sibling</a>;</div><div class="line"><a name="l01145"></a><span class="lineno"> 1145</span>&#160;            <span class="keywordflow">if</span> (child-&gt;<a class="code" href="classrapidxml_1_1xml__node.html#a202e84dfdd34cb65557b64e31b7e205a">m_next_sibling</a>)</div><div class="line"><a name="l01146"></a><span class="lineno"> 1146</span>&#160;                child-&gt;<a class="code" href="classrapidxml_1_1xml__node.html#a202e84dfdd34cb65557b64e31b7e205a">m_next_sibling</a>-&gt;m_prev_sibling = 0;</div><div class="line"><a name="l01147"></a><span class="lineno"> 1147</span>&#160;            <span class="keywordflow">else</span></div><div class="line"><a name="l01148"></a><span class="lineno"> 1148</span>&#160;                m_last_node = 0;</div><div class="line"><a name="l01149"></a><span class="lineno"> 1149</span>&#160;            child-&gt;<a class="code" href="classrapidxml_1_1xml__base.html#a90d5f660f078f66563fd7b2d8387ccb0">m_parent</a> = 0;</div><div class="line"><a name="l01150"></a><span class="lineno"> 1150</span>&#160;        }</div><div class="line"><a name="l01151"></a><span class="lineno"> 1151</span>&#160;</div><div class="line"><a name="l01155"></a><span class="lineno"><a class="line" href="classrapidxml_1_1xml__node.html#a9182512e948ec451a83f116cce7c7674"> 1155</a></span>&#160;        <span class="keywordtype">void</span> <a class="code" href="classrapidxml_1_1xml__node.html#a9182512e948ec451a83f116cce7c7674">remove_last_node</a>()</div><div class="line"><a name="l01156"></a><span class="lineno"> 1156</span>&#160;        {</div><div class="line"><a name="l01157"></a><span class="lineno"> 1157</span>&#160;            assert(first_node());</div><div class="line"><a name="l01158"></a><span class="lineno"> 1158</span>&#160;            <a class="code" href="classrapidxml_1_1xml__node.html">xml_node&lt;Ch&gt;</a> *child = m_last_node;</div><div class="line"><a name="l01159"></a><span class="lineno"> 1159</span>&#160;            <span class="keywordflow">if</span> (child-&gt;<a class="code" href="classrapidxml_1_1xml__node.html#a571f24c86107f8442f46a514a7cc5d0d">m_prev_sibling</a>)</div><div class="line"><a name="l01160"></a><span class="lineno"> 1160</span>&#160;            {</div><div class="line"><a name="l01161"></a><span class="lineno"> 1161</span>&#160;                m_last_node = child-&gt;<a class="code" href="classrapidxml_1_1xml__node.html#a571f24c86107f8442f46a514a7cc5d0d">m_prev_sibling</a>;</div><div class="line"><a name="l01162"></a><span class="lineno"> 1162</span>&#160;                child-&gt;<a class="code" href="classrapidxml_1_1xml__node.html#a571f24c86107f8442f46a514a7cc5d0d">m_prev_sibling</a>-&gt;m_next_sibling = 0;</div><div class="line"><a name="l01163"></a><span class="lineno"> 1163</span>&#160;            }</div><div class="line"><a name="l01164"></a><span class="lineno"> 1164</span>&#160;            <span class="keywordflow">else</span></div><div class="line"><a name="l01165"></a><span class="lineno"> 1165</span>&#160;                m_first_node = 0;</div><div class="line"><a name="l01166"></a><span class="lineno"> 1166</span>&#160;            child-&gt;<a class="code" href="classrapidxml_1_1xml__base.html#a90d5f660f078f66563fd7b2d8387ccb0">m_parent</a> = 0;</div><div class="line"><a name="l01167"></a><span class="lineno"> 1167</span>&#160;        }</div><div class="line"><a name="l01168"></a><span class="lineno"> 1168</span>&#160;</div><div class="line"><a name="l01170"></a><span class="lineno"> 1170</span>&#160;        <span class="comment">// \param where Pointer to child to be removed.</span></div><div class="line"><a name="l01171"></a><span class="lineno"><a class="line" href="classrapidxml_1_1xml__node.html#a98289923eb9e8889418a9eb0207ea35c"> 1171</a></span>&#160;        <span class="keywordtype">void</span> <a class="code" href="classrapidxml_1_1xml__node.html#a98289923eb9e8889418a9eb0207ea35c">remove_node</a>(<a class="code" href="classrapidxml_1_1xml__node.html">xml_node&lt;Ch&gt;</a> *<a class="code" href="classrapidxml_1_1parse__error.html#ab139528f4d9e960f0ee807d22d6c032d">where</a>)</div><div class="line"><a name="l01172"></a><span class="lineno"> 1172</span>&#160;        {</div><div class="line"><a name="l01173"></a><span class="lineno"> 1173</span>&#160;            assert(where &amp;&amp; where-&gt;<a class="code" href="classrapidxml_1_1xml__base.html#aa807062868d671a8c798d9d1bf016988">parent</a>() == <span class="keyword">this</span>);</div><div class="line"><a name="l01174"></a><span class="lineno"> 1174</span>&#160;            assert(first_node());</div><div class="line"><a name="l01175"></a><span class="lineno"> 1175</span>&#160;            <span class="keywordflow">if</span> (where == m_first_node)</div><div class="line"><a name="l01176"></a><span class="lineno"> 1176</span>&#160;                remove_first_node();</div><div class="line"><a name="l01177"></a><span class="lineno"> 1177</span>&#160;            <span class="keywordflow">else</span> <span class="keywordflow">if</span> (where == m_last_node)</div><div class="line"><a name="l01178"></a><span class="lineno"> 1178</span>&#160;                remove_last_node();</div><div class="line"><a name="l01179"></a><span class="lineno"> 1179</span>&#160;            <span class="keywordflow">else</span></div><div class="line"><a name="l01180"></a><span class="lineno"> 1180</span>&#160;            {</div><div class="line"><a name="l01181"></a><span class="lineno"> 1181</span>&#160;                where-&gt;<a class="code" href="classrapidxml_1_1xml__node.html#a571f24c86107f8442f46a514a7cc5d0d">m_prev_sibling</a>-&gt;m_next_sibling = where-&gt;<a class="code" href="classrapidxml_1_1xml__node.html#a202e84dfdd34cb65557b64e31b7e205a">m_next_sibling</a>;</div><div class="line"><a name="l01182"></a><span class="lineno"> 1182</span>&#160;                where-&gt;<a class="code" href="classrapidxml_1_1xml__node.html#a202e84dfdd34cb65557b64e31b7e205a">m_next_sibling</a>-&gt;m_prev_sibling = where-&gt;<a class="code" href="classrapidxml_1_1xml__node.html#a571f24c86107f8442f46a514a7cc5d0d">m_prev_sibling</a>;</div><div class="line"><a name="l01183"></a><span class="lineno"> 1183</span>&#160;                where-&gt;<a class="code" href="classrapidxml_1_1xml__base.html#a90d5f660f078f66563fd7b2d8387ccb0">m_parent</a> = 0;</div><div class="line"><a name="l01184"></a><span class="lineno"> 1184</span>&#160;            }</div><div class="line"><a name="l01185"></a><span class="lineno"> 1185</span>&#160;        }</div><div class="line"><a name="l01186"></a><span class="lineno"> 1186</span>&#160;</div><div class="line"><a name="l01188"></a><span class="lineno"><a class="line" href="classrapidxml_1_1xml__node.html#a95735358b079ae0adcfbbac69aa1fbc3"> 1188</a></span>&#160;        <span class="keywordtype">void</span> <a class="code" href="classrapidxml_1_1xml__node.html#a95735358b079ae0adcfbbac69aa1fbc3">remove_all_nodes</a>()</div><div class="line"><a name="l01189"></a><span class="lineno"> 1189</span>&#160;        {</div><div class="line"><a name="l01190"></a><span class="lineno"> 1190</span>&#160;            <span class="keywordflow">for</span> (<a class="code" href="classrapidxml_1_1xml__node.html">xml_node&lt;Ch&gt;</a> *node = first_node(); node; node = node-&gt;<a class="code" href="classrapidxml_1_1xml__node.html#a202e84dfdd34cb65557b64e31b7e205a">m_next_sibling</a>)</div><div class="line"><a name="l01191"></a><span class="lineno"> 1191</span>&#160;                node-&gt;m_parent = 0;</div><div class="line"><a name="l01192"></a><span class="lineno"> 1192</span>&#160;            m_first_node = 0;</div><div class="line"><a name="l01193"></a><span class="lineno"> 1193</span>&#160;        }</div><div class="line"><a name="l01194"></a><span class="lineno"> 1194</span>&#160;</div><div class="line"><a name="l01197"></a><span class="lineno"><a class="line" href="classrapidxml_1_1xml__node.html#a8b62ee76489faf8e2d1210869d547684"> 1197</a></span>&#160;        <span class="keywordtype">void</span> <a class="code" href="classrapidxml_1_1xml__node.html#a8b62ee76489faf8e2d1210869d547684">prepend_attribute</a>(<a class="code" href="classrapidxml_1_1xml__attribute.html">xml_attribute&lt;Ch&gt;</a> *attribute)</div><div class="line"><a name="l01198"></a><span class="lineno"> 1198</span>&#160;        {</div><div class="line"><a name="l01199"></a><span class="lineno"> 1199</span>&#160;            assert(attribute &amp;&amp; !attribute-&gt;<a class="code" href="classrapidxml_1_1xml__base.html#aa807062868d671a8c798d9d1bf016988">parent</a>());</div><div class="line"><a name="l01200"></a><span class="lineno"> 1200</span>&#160;            <span class="keywordflow">if</span> (first_attribute())</div><div class="line"><a name="l01201"></a><span class="lineno"> 1201</span>&#160;            {</div><div class="line"><a name="l01202"></a><span class="lineno"> 1202</span>&#160;                attribute-&gt;<a class="code" href="classrapidxml_1_1xml__attribute.html#a3254e4b040a9b71c6b6d1c27ec03352a">m_next_attribute</a> = m_first_attribute;</div><div class="line"><a name="l01203"></a><span class="lineno"> 1203</span>&#160;                m_first_attribute-&gt;m_prev_attribute = attribute;</div><div class="line"><a name="l01204"></a><span class="lineno"> 1204</span>&#160;            }</div><div class="line"><a name="l01205"></a><span class="lineno"> 1205</span>&#160;            <span class="keywordflow">else</span></div><div class="line"><a name="l01206"></a><span class="lineno"> 1206</span>&#160;            {</div><div class="line"><a name="l01207"></a><span class="lineno"> 1207</span>&#160;                attribute-&gt;<a class="code" href="classrapidxml_1_1xml__attribute.html#a3254e4b040a9b71c6b6d1c27ec03352a">m_next_attribute</a> = 0;</div><div class="line"><a name="l01208"></a><span class="lineno"> 1208</span>&#160;                m_last_attribute = attribute;</div><div class="line"><a name="l01209"></a><span class="lineno"> 1209</span>&#160;            }</div><div class="line"><a name="l01210"></a><span class="lineno"> 1210</span>&#160;            m_first_attribute = attribute;</div><div class="line"><a name="l01211"></a><span class="lineno"> 1211</span>&#160;            attribute-&gt;<a class="code" href="classrapidxml_1_1xml__base.html#a90d5f660f078f66563fd7b2d8387ccb0">m_parent</a> = <span class="keyword">this</span>;</div><div class="line"><a name="l01212"></a><span class="lineno"> 1212</span>&#160;            attribute-&gt;<a class="code" href="classrapidxml_1_1xml__attribute.html#a204438287a5ad384405584726a1d8559">m_prev_attribute</a> = 0;</div><div class="line"><a name="l01213"></a><span class="lineno"> 1213</span>&#160;        }</div><div class="line"><a name="l01214"></a><span class="lineno"> 1214</span>&#160;</div><div class="line"><a name="l01217"></a><span class="lineno"><a class="line" href="classrapidxml_1_1xml__node.html#a33ce3386f8c42dd4db658b75cbb6e6c4"> 1217</a></span>&#160;        <span class="keywordtype">void</span> <a class="code" href="classrapidxml_1_1xml__node.html#a33ce3386f8c42dd4db658b75cbb6e6c4">append_attribute</a>(<a class="code" href="classrapidxml_1_1xml__attribute.html">xml_attribute&lt;Ch&gt;</a> *attribute)</div><div class="line"><a name="l01218"></a><span class="lineno"> 1218</span>&#160;        {</div><div class="line"><a name="l01219"></a><span class="lineno"> 1219</span>&#160;            assert(attribute &amp;&amp; !attribute-&gt;<a class="code" href="classrapidxml_1_1xml__base.html#aa807062868d671a8c798d9d1bf016988">parent</a>());</div><div class="line"><a name="l01220"></a><span class="lineno"> 1220</span>&#160;            <span class="keywordflow">if</span> (first_attribute())</div><div class="line"><a name="l01221"></a><span class="lineno"> 1221</span>&#160;            {</div><div class="line"><a name="l01222"></a><span class="lineno"> 1222</span>&#160;                attribute-&gt;<a class="code" href="classrapidxml_1_1xml__attribute.html#a204438287a5ad384405584726a1d8559">m_prev_attribute</a> = m_last_attribute;</div><div class="line"><a name="l01223"></a><span class="lineno"> 1223</span>&#160;                m_last_attribute-&gt;m_next_attribute = attribute;</div><div class="line"><a name="l01224"></a><span class="lineno"> 1224</span>&#160;            }</div><div class="line"><a name="l01225"></a><span class="lineno"> 1225</span>&#160;            <span class="keywordflow">else</span></div><div class="line"><a name="l01226"></a><span class="lineno"> 1226</span>&#160;            {</div><div class="line"><a name="l01227"></a><span class="lineno"> 1227</span>&#160;                attribute-&gt;<a class="code" href="classrapidxml_1_1xml__attribute.html#a204438287a5ad384405584726a1d8559">m_prev_attribute</a> = 0;</div><div class="line"><a name="l01228"></a><span class="lineno"> 1228</span>&#160;                m_first_attribute = attribute;</div><div class="line"><a name="l01229"></a><span class="lineno"> 1229</span>&#160;            }</div><div class="line"><a name="l01230"></a><span class="lineno"> 1230</span>&#160;            m_last_attribute = attribute;</div><div class="line"><a name="l01231"></a><span class="lineno"> 1231</span>&#160;            attribute-&gt;<a class="code" href="classrapidxml_1_1xml__base.html#a90d5f660f078f66563fd7b2d8387ccb0">m_parent</a> = <span class="keyword">this</span>;</div><div class="line"><a name="l01232"></a><span class="lineno"> 1232</span>&#160;            attribute-&gt;<a class="code" href="classrapidxml_1_1xml__attribute.html#a3254e4b040a9b71c6b6d1c27ec03352a">m_next_attribute</a> = 0;</div><div class="line"><a name="l01233"></a><span class="lineno"> 1233</span>&#160;        }</div><div class="line"><a name="l01234"></a><span class="lineno"> 1234</span>&#160;</div><div class="line"><a name="l01239"></a><span class="lineno"><a class="line" href="classrapidxml_1_1xml__node.html#a9fe659cdf4a5b3bbf5e8ffc98db5a84f"> 1239</a></span>&#160;        <span class="keywordtype">void</span> <a class="code" href="classrapidxml_1_1xml__node.html#a9fe659cdf4a5b3bbf5e8ffc98db5a84f">insert_attribute</a>(<a class="code" href="classrapidxml_1_1xml__attribute.html">xml_attribute&lt;Ch&gt;</a> *<a class="code" href="classrapidxml_1_1parse__error.html#ab139528f4d9e960f0ee807d22d6c032d">where</a>, <a class="code" href="classrapidxml_1_1xml__attribute.html">xml_attribute&lt;Ch&gt;</a> *attribute)</div><div class="line"><a name="l01240"></a><span class="lineno"> 1240</span>&#160;        {</div><div class="line"><a name="l01241"></a><span class="lineno"> 1241</span>&#160;            assert(!where || where-&gt;<a class="code" href="classrapidxml_1_1xml__base.html#aa807062868d671a8c798d9d1bf016988">parent</a>() == <span class="keyword">this</span>);</div><div class="line"><a name="l01242"></a><span class="lineno"> 1242</span>&#160;            assert(attribute &amp;&amp; !attribute-&gt;<a class="code" href="classrapidxml_1_1xml__base.html#aa807062868d671a8c798d9d1bf016988">parent</a>());</div><div class="line"><a name="l01243"></a><span class="lineno"> 1243</span>&#160;            <span class="keywordflow">if</span> (where == m_first_attribute)</div><div class="line"><a name="l01244"></a><span class="lineno"> 1244</span>&#160;                prepend_attribute(attribute);</div><div class="line"><a name="l01245"></a><span class="lineno"> 1245</span>&#160;            <span class="keywordflow">else</span> <span class="keywordflow">if</span> (where == 0)</div><div class="line"><a name="l01246"></a><span class="lineno"> 1246</span>&#160;                append_attribute(attribute);</div><div class="line"><a name="l01247"></a><span class="lineno"> 1247</span>&#160;            <span class="keywordflow">else</span></div><div class="line"><a name="l01248"></a><span class="lineno"> 1248</span>&#160;            {</div><div class="line"><a name="l01249"></a><span class="lineno"> 1249</span>&#160;                attribute-&gt;<a class="code" href="classrapidxml_1_1xml__attribute.html#a204438287a5ad384405584726a1d8559">m_prev_attribute</a> = where-&gt;<a class="code" href="classrapidxml_1_1xml__attribute.html#a204438287a5ad384405584726a1d8559">m_prev_attribute</a>;</div><div class="line"><a name="l01250"></a><span class="lineno"> 1250</span>&#160;                attribute-&gt;<a class="code" href="classrapidxml_1_1xml__attribute.html#a3254e4b040a9b71c6b6d1c27ec03352a">m_next_attribute</a> = <a class="code" href="classrapidxml_1_1parse__error.html#ab139528f4d9e960f0ee807d22d6c032d">where</a>;</div><div class="line"><a name="l01251"></a><span class="lineno"> 1251</span>&#160;                where-&gt;<a class="code" href="classrapidxml_1_1xml__attribute.html#a204438287a5ad384405584726a1d8559">m_prev_attribute</a>-&gt;m_next_attribute = attribute;</div><div class="line"><a name="l01252"></a><span class="lineno"> 1252</span>&#160;                where-&gt;<a class="code" href="classrapidxml_1_1xml__attribute.html#a204438287a5ad384405584726a1d8559">m_prev_attribute</a> = attribute;</div><div class="line"><a name="l01253"></a><span class="lineno"> 1253</span>&#160;                attribute-&gt;<a class="code" href="classrapidxml_1_1xml__base.html#a90d5f660f078f66563fd7b2d8387ccb0">m_parent</a> = <span class="keyword">this</span>;</div><div class="line"><a name="l01254"></a><span class="lineno"> 1254</span>&#160;            }</div><div class="line"><a name="l01255"></a><span class="lineno"> 1255</span>&#160;        }</div><div class="line"><a name="l01256"></a><span class="lineno"> 1256</span>&#160;</div><div class="line"><a name="l01260"></a><span class="lineno"><a class="line" href="classrapidxml_1_1xml__node.html#aa95192d2a165cca16c551ed2a2a06aec"> 1260</a></span>&#160;        <span class="keywordtype">void</span> <a class="code" href="classrapidxml_1_1xml__node.html#aa95192d2a165cca16c551ed2a2a06aec">remove_first_attribute</a>()</div><div class="line"><a name="l01261"></a><span class="lineno"> 1261</span>&#160;        {</div><div class="line"><a name="l01262"></a><span class="lineno"> 1262</span>&#160;            assert(first_attribute());</div><div class="line"><a name="l01263"></a><span class="lineno"> 1263</span>&#160;            <a class="code" href="classrapidxml_1_1xml__attribute.html">xml_attribute&lt;Ch&gt;</a> *attribute = m_first_attribute;</div><div class="line"><a name="l01264"></a><span class="lineno"> 1264</span>&#160;            <span class="keywordflow">if</span> (attribute-&gt;<a class="code" href="classrapidxml_1_1xml__attribute.html#a3254e4b040a9b71c6b6d1c27ec03352a">m_next_attribute</a>)</div><div class="line"><a name="l01265"></a><span class="lineno"> 1265</span>&#160;            {</div><div class="line"><a name="l01266"></a><span class="lineno"> 1266</span>&#160;                attribute-&gt;<a class="code" href="classrapidxml_1_1xml__attribute.html#a3254e4b040a9b71c6b6d1c27ec03352a">m_next_attribute</a>-&gt;m_prev_attribute = 0;</div><div class="line"><a name="l01267"></a><span class="lineno"> 1267</span>&#160;            }</div><div class="line"><a name="l01268"></a><span class="lineno"> 1268</span>&#160;            <span class="keywordflow">else</span></div><div class="line"><a name="l01269"></a><span class="lineno"> 1269</span>&#160;                m_last_attribute = 0;</div><div class="line"><a name="l01270"></a><span class="lineno"> 1270</span>&#160;            attribute-&gt;<a class="code" href="classrapidxml_1_1xml__base.html#a90d5f660f078f66563fd7b2d8387ccb0">m_parent</a> = 0;</div><div class="line"><a name="l01271"></a><span class="lineno"> 1271</span>&#160;            m_first_attribute = attribute-&gt;<a class="code" href="classrapidxml_1_1xml__attribute.html#a3254e4b040a9b71c6b6d1c27ec03352a">m_next_attribute</a>;</div><div class="line"><a name="l01272"></a><span class="lineno"> 1272</span>&#160;        }</div><div class="line"><a name="l01273"></a><span class="lineno"> 1273</span>&#160;</div><div class="line"><a name="l01277"></a><span class="lineno"><a class="line" href="classrapidxml_1_1xml__node.html#a1781a2cbedc9a51d609ad5b528125635"> 1277</a></span>&#160;        <span class="keywordtype">void</span> <a class="code" href="classrapidxml_1_1xml__node.html#a1781a2cbedc9a51d609ad5b528125635">remove_last_attribute</a>()</div><div class="line"><a name="l01278"></a><span class="lineno"> 1278</span>&#160;        {</div><div class="line"><a name="l01279"></a><span class="lineno"> 1279</span>&#160;            assert(first_attribute());</div><div class="line"><a name="l01280"></a><span class="lineno"> 1280</span>&#160;            <a class="code" href="classrapidxml_1_1xml__attribute.html">xml_attribute&lt;Ch&gt;</a> *attribute = m_last_attribute;</div><div class="line"><a name="l01281"></a><span class="lineno"> 1281</span>&#160;            <span class="keywordflow">if</span> (attribute-&gt;<a class="code" href="classrapidxml_1_1xml__attribute.html#a204438287a5ad384405584726a1d8559">m_prev_attribute</a>)</div><div class="line"><a name="l01282"></a><span class="lineno"> 1282</span>&#160;            {</div><div class="line"><a name="l01283"></a><span class="lineno"> 1283</span>&#160;                attribute-&gt;<a class="code" href="classrapidxml_1_1xml__attribute.html#a204438287a5ad384405584726a1d8559">m_prev_attribute</a>-&gt;m_next_attribute = 0;</div><div class="line"><a name="l01284"></a><span class="lineno"> 1284</span>&#160;                m_last_attribute = attribute-&gt;<a class="code" href="classrapidxml_1_1xml__attribute.html#a204438287a5ad384405584726a1d8559">m_prev_attribute</a>;</div><div class="line"><a name="l01285"></a><span class="lineno"> 1285</span>&#160;            }</div><div class="line"><a name="l01286"></a><span class="lineno"> 1286</span>&#160;            <span class="keywordflow">else</span></div><div class="line"><a name="l01287"></a><span class="lineno"> 1287</span>&#160;                m_first_attribute = 0;</div><div class="line"><a name="l01288"></a><span class="lineno"> 1288</span>&#160;            attribute-&gt;<a class="code" href="classrapidxml_1_1xml__base.html#a90d5f660f078f66563fd7b2d8387ccb0">m_parent</a> = 0;</div><div class="line"><a name="l01289"></a><span class="lineno"> 1289</span>&#160;        }</div><div class="line"><a name="l01290"></a><span class="lineno"> 1290</span>&#160;</div><div class="line"><a name="l01293"></a><span class="lineno"><a class="line" href="classrapidxml_1_1xml__node.html#a6f97b1b4f46a94a4587915df3c0c6b57"> 1293</a></span>&#160;        <span class="keywordtype">void</span> <a class="code" href="classrapidxml_1_1xml__node.html#a6f97b1b4f46a94a4587915df3c0c6b57">remove_attribute</a>(<a class="code" href="classrapidxml_1_1xml__attribute.html">xml_attribute&lt;Ch&gt;</a> *<a class="code" href="classrapidxml_1_1parse__error.html#ab139528f4d9e960f0ee807d22d6c032d">where</a>)</div><div class="line"><a name="l01294"></a><span class="lineno"> 1294</span>&#160;        {</div><div class="line"><a name="l01295"></a><span class="lineno"> 1295</span>&#160;            assert(first_attribute() &amp;&amp; where-&gt;<a class="code" href="classrapidxml_1_1xml__base.html#aa807062868d671a8c798d9d1bf016988">parent</a>() == <span class="keyword">this</span>);</div><div class="line"><a name="l01296"></a><span class="lineno"> 1296</span>&#160;            <span class="keywordflow">if</span> (where == m_first_attribute)</div><div class="line"><a name="l01297"></a><span class="lineno"> 1297</span>&#160;                remove_first_attribute();</div><div class="line"><a name="l01298"></a><span class="lineno"> 1298</span>&#160;            <span class="keywordflow">else</span> <span class="keywordflow">if</span> (where == m_last_attribute)</div><div class="line"><a name="l01299"></a><span class="lineno"> 1299</span>&#160;                remove_last_attribute();</div><div class="line"><a name="l01300"></a><span class="lineno"> 1300</span>&#160;            <span class="keywordflow">else</span></div><div class="line"><a name="l01301"></a><span class="lineno"> 1301</span>&#160;            {</div><div class="line"><a name="l01302"></a><span class="lineno"> 1302</span>&#160;                where-&gt;<a class="code" href="classrapidxml_1_1xml__attribute.html#a204438287a5ad384405584726a1d8559">m_prev_attribute</a>-&gt;m_next_attribute = where-&gt;<a class="code" href="classrapidxml_1_1xml__attribute.html#a3254e4b040a9b71c6b6d1c27ec03352a">m_next_attribute</a>;</div><div class="line"><a name="l01303"></a><span class="lineno"> 1303</span>&#160;                where-&gt;<a class="code" href="classrapidxml_1_1xml__attribute.html#a3254e4b040a9b71c6b6d1c27ec03352a">m_next_attribute</a>-&gt;m_prev_attribute = where-&gt;<a class="code" href="classrapidxml_1_1xml__attribute.html#a204438287a5ad384405584726a1d8559">m_prev_attribute</a>;</div><div class="line"><a name="l01304"></a><span class="lineno"> 1304</span>&#160;                where-&gt;<a class="code" href="classrapidxml_1_1xml__base.html#a90d5f660f078f66563fd7b2d8387ccb0">m_parent</a> = 0;</div><div class="line"><a name="l01305"></a><span class="lineno"> 1305</span>&#160;            }</div><div class="line"><a name="l01306"></a><span class="lineno"> 1306</span>&#160;        }</div><div class="line"><a name="l01307"></a><span class="lineno"> 1307</span>&#160;</div><div class="line"><a name="l01309"></a><span class="lineno"><a class="line" href="classrapidxml_1_1xml__node.html#aa8d5d9484aa1eb5ff1841a073c84c1aa"> 1309</a></span>&#160;        <span class="keywordtype">void</span> <a class="code" href="classrapidxml_1_1xml__node.html#aa8d5d9484aa1eb5ff1841a073c84c1aa">remove_all_attributes</a>()</div><div class="line"><a name="l01310"></a><span class="lineno"> 1310</span>&#160;        {</div><div class="line"><a name="l01311"></a><span class="lineno"> 1311</span>&#160;            <span class="keywordflow">for</span> (<a class="code" href="classrapidxml_1_1xml__attribute.html">xml_attribute&lt;Ch&gt;</a> *attribute = first_attribute(); attribute; attribute = attribute-&gt;<a class="code" href="classrapidxml_1_1xml__attribute.html#a3254e4b040a9b71c6b6d1c27ec03352a">m_next_attribute</a>)</div><div class="line"><a name="l01312"></a><span class="lineno"> 1312</span>&#160;                attribute-&gt;m_parent = 0;</div><div class="line"><a name="l01313"></a><span class="lineno"> 1313</span>&#160;            m_first_attribute = 0;</div><div class="line"><a name="l01314"></a><span class="lineno"> 1314</span>&#160;        }</div><div class="line"><a name="l01315"></a><span class="lineno"> 1315</span>&#160;        </div><div class="line"><a name="l01316"></a><span class="lineno"> 1316</span>&#160;    <span class="keyword">private</span>:</div><div class="line"><a name="l01317"></a><span class="lineno"> 1317</span>&#160;</div><div class="line"><a name="l01319"></a><span class="lineno"> 1319</span>&#160;        <span class="comment">// Restrictions</span></div><div class="line"><a name="l01320"></a><span class="lineno"> 1320</span>&#160;</div><div class="line"><a name="l01321"></a><span class="lineno"> 1321</span>&#160;        <span class="comment">// No copying</span></div><div class="line"><a name="l01322"></a><span class="lineno"> 1322</span>&#160;        <a class="code" href="classrapidxml_1_1xml__node.html">xml_node</a>(<span class="keyword">const</span> <a class="code" href="classrapidxml_1_1xml__node.html">xml_node</a> &amp;);</div><div class="line"><a name="l01323"></a><span class="lineno"> 1323</span>&#160;        <span class="keywordtype">void</span> operator =(<span class="keyword">const</span> <a class="code" href="classrapidxml_1_1xml__node.html">xml_node</a> &amp;);</div><div class="line"><a name="l01324"></a><span class="lineno"> 1324</span>&#160;    </div><div class="line"><a name="l01326"></a><span class="lineno"> 1326</span>&#160;        <span class="comment">// Data members</span></div><div class="line"><a name="l01327"></a><span class="lineno"> 1327</span>&#160;    </div><div class="line"><a name="l01328"></a><span class="lineno"> 1328</span>&#160;        <span class="comment">// Note that some of the pointers below have UNDEFINED values if certain other pointers are 0.</span></div><div class="line"><a name="l01329"></a><span class="lineno"> 1329</span>&#160;        <span class="comment">// This is required for maximum performance, as it allows the parser to omit initialization of </span></div><div class="line"><a name="l01330"></a><span class="lineno"> 1330</span>&#160;        <span class="comment">// unneded/redundant values.</span></div><div class="line"><a name="l01331"></a><span class="lineno"> 1331</span>&#160;        <span class="comment">//</span></div><div class="line"><a name="l01332"></a><span class="lineno"> 1332</span>&#160;        <span class="comment">// The rules are as follows:</span></div><div class="line"><a name="l01333"></a><span class="lineno"> 1333</span>&#160;        <span class="comment">// 1. first_node and first_attribute contain valid pointers, or 0 if node has no children/attributes respectively</span></div><div class="line"><a name="l01334"></a><span class="lineno"> 1334</span>&#160;        <span class="comment">// 2. last_node and last_attribute are valid only if node has at least one child/attribute respectively, otherwise they contain garbage</span></div><div class="line"><a name="l01335"></a><span class="lineno"> 1335</span>&#160;        <span class="comment">// 3. prev_sibling and next_sibling are valid only if node has a parent, otherwise they contain garbage</span></div><div class="line"><a name="l01336"></a><span class="lineno"> 1336</span>&#160;</div><div class="line"><a name="l01337"></a><span class="lineno"><a class="line" href="classrapidxml_1_1xml__node.html#a33912a5ceef221d662bbac67c70e1397"> 1337</a></span>&#160;        <a class="code" href="namespacerapidxml.html#abb456db38f7efb746c4330eed6072a7c">node_type</a> <a class="code" href="classrapidxml_1_1xml__node.html#a33912a5ceef221d662bbac67c70e1397">m_type</a>;                       <span class="comment">// Type of node; always valid</span></div><div class="line"><a name="l01338"></a><span class="lineno"><a class="line" href="classrapidxml_1_1xml__node.html#a3c2a0b286724865b5c000e3333f60d4a"> 1338</a></span>&#160;        <a class="code" href="classrapidxml_1_1xml__node.html">xml_node&lt;Ch&gt;</a> *<a class="code" href="classrapidxml_1_1xml__node.html#a3c2a0b286724865b5c000e3333f60d4a">m_first_node</a>;             <span class="comment">// Pointer to first child node, or 0 if none; always valid</span></div><div class="line"><a name="l01339"></a><span class="lineno"><a class="line" href="classrapidxml_1_1xml__node.html#adc211d26cfea2ba6fb51adb27694ff09"> 1339</a></span>&#160;        <a class="code" href="classrapidxml_1_1xml__node.html">xml_node&lt;Ch&gt;</a> *<a class="code" href="classrapidxml_1_1xml__node.html#adc211d26cfea2ba6fb51adb27694ff09">m_last_node</a>;              <span class="comment">// Pointer to last child node, or 0 if none; this value is only valid if m_first_node is non-zero</span></div><div class="line"><a name="l01340"></a><span class="lineno"><a class="line" href="classrapidxml_1_1xml__node.html#a5f7caf8d72d8fae634be6eb744ad8538"> 1340</a></span>&#160;        <a class="code" href="classrapidxml_1_1xml__attribute.html">xml_attribute&lt;Ch&gt;</a> *<a class="code" href="classrapidxml_1_1xml__node.html#a5f7caf8d72d8fae634be6eb744ad8538">m_first_attribute</a>;   <span class="comment">// Pointer to first attribute of node, or 0 if none; always valid</span></div><div class="line"><a name="l01341"></a><span class="lineno"><a class="line" href="classrapidxml_1_1xml__node.html#ad82c1bdd1a5c94927cf8a627f18953b9"> 1341</a></span>&#160;        <a class="code" href="classrapidxml_1_1xml__attribute.html">xml_attribute&lt;Ch&gt;</a> *<a class="code" href="classrapidxml_1_1xml__node.html#ad82c1bdd1a5c94927cf8a627f18953b9">m_last_attribute</a>;    <span class="comment">// Pointer to last attribute of node, or 0 if none; this value is only valid if m_first_attribute is non-zero</span></div><div class="line"><a name="l01342"></a><span class="lineno"><a class="line" href="classrapidxml_1_1xml__node.html#a571f24c86107f8442f46a514a7cc5d0d"> 1342</a></span>&#160;        <a class="code" href="classrapidxml_1_1xml__node.html">xml_node&lt;Ch&gt;</a> *<a class="code" href="classrapidxml_1_1xml__node.html#a571f24c86107f8442f46a514a7cc5d0d">m_prev_sibling</a>;           <span class="comment">// Pointer to previous sibling of node, or 0 if none; this value is only valid if m_parent is non-zero</span></div><div class="line"><a name="l01343"></a><span class="lineno"><a class="line" href="classrapidxml_1_1xml__node.html#a202e84dfdd34cb65557b64e31b7e205a"> 1343</a></span>&#160;        <a class="code" href="classrapidxml_1_1xml__node.html">xml_node&lt;Ch&gt;</a> *<a class="code" href="classrapidxml_1_1xml__node.html#a202e84dfdd34cb65557b64e31b7e205a">m_next_sibling</a>;           <span class="comment">// Pointer to next sibling of node, or 0 if none; this value is only valid if m_parent is non-zero</span></div><div class="line"><a name="l01344"></a><span class="lineno"> 1344</span>&#160;</div><div class="line"><a name="l01345"></a><span class="lineno"> 1345</span>&#160;    };</div><div class="line"><a name="l01346"></a><span class="lineno"> 1346</span>&#160;</div><div class="line"><a name="l01348"></a><span class="lineno"> 1348</span>&#160;    <span class="comment">// XML document</span></div><div class="line"><a name="l01349"></a><span class="lineno"> 1349</span>&#160;    </div><div class="line"><a name="l01357"></a><span class="lineno"> 1357</span>&#160;    <span class="keyword">template</span>&lt;<span class="keyword">class</span> Ch = <span class="keywordtype">char</span>&gt;</div><div class="line"><a name="l01358"></a><span class="lineno"> 1358</span>&#160;    <span class="keyword">class </span><a class="code" href="classrapidxml_1_1xml__document.html">xml_document</a>: <span class="keyword">public</span> <a class="code" href="classrapidxml_1_1xml__node.html">xml_node</a>&lt;Ch&gt;, <span class="keyword">public</span> <a class="code" href="classrapidxml_1_1memory__pool.html">memory_pool</a>&lt;Ch&gt;</div><div class="line"><a name="l01359"></a><span class="lineno"> 1359</span>&#160;    {</div><div class="line"><a name="l01360"></a><span class="lineno"> 1360</span>&#160;    </div><div class="line"><a name="l01361"></a><span class="lineno"> 1361</span>&#160;    <span class="keyword">public</span>:</div><div class="line"><a name="l01362"></a><span class="lineno"> 1362</span>&#160;</div><div class="line"><a name="l01364"></a><span class="lineno"><a class="line" href="classrapidxml_1_1xml__document.html#aae8841b15085ba8f32ff46587ace28f5"> 1364</a></span>&#160;        <a class="code" href="classrapidxml_1_1xml__document.html#aae8841b15085ba8f32ff46587ace28f5">xml_document</a>()</div><div class="line"><a name="l01365"></a><span class="lineno"> 1365</span>&#160;            : <a class="code" href="classrapidxml_1_1xml__node.html">xml_node</a>&lt;Ch&gt;(<a class="code" href="namespacerapidxml.html#abb456db38f7efb746c4330eed6072a7ca4023b6a1c7059fd8fbec2112d5c35424">node_document</a>)</div><div class="line"><a name="l01366"></a><span class="lineno"> 1366</span>&#160;        {</div><div class="line"><a name="l01367"></a><span class="lineno"> 1367</span>&#160;        }</div><div class="line"><a name="l01368"></a><span class="lineno"> 1368</span>&#160;</div><div class="line"><a name="l01380"></a><span class="lineno"> 1380</span>&#160;        <span class="keyword">template</span>&lt;<span class="keywordtype">int</span> Flags&gt;</div><div class="line"><a name="l01381"></a><span class="lineno"><a class="line" href="classrapidxml_1_1xml__document.html#ac6e73ff9ac323bf5a370c38feb03a6b1"> 1381</a></span>&#160;        <span class="keywordtype">void</span> <a class="code" href="classrapidxml_1_1xml__document.html#ac6e73ff9ac323bf5a370c38feb03a6b1">parse</a>(Ch *text)</div><div class="line"><a name="l01382"></a><span class="lineno"> 1382</span>&#160;        {</div><div class="line"><a name="l01383"></a><span class="lineno"> 1383</span>&#160;            assert(text);</div><div class="line"><a name="l01384"></a><span class="lineno"> 1384</span>&#160;            </div><div class="line"><a name="l01385"></a><span class="lineno"> 1385</span>&#160;            <span class="comment">// Remove current contents</span></div><div class="line"><a name="l01386"></a><span class="lineno"> 1386</span>&#160;            this-&gt;remove_all_nodes();</div><div class="line"><a name="l01387"></a><span class="lineno"> 1387</span>&#160;            this-&gt;remove_all_attributes();</div><div class="line"><a name="l01388"></a><span class="lineno"> 1388</span>&#160;            </div><div class="line"><a name="l01389"></a><span class="lineno"> 1389</span>&#160;            <span class="comment">// Parse BOM, if any</span></div><div class="line"><a name="l01390"></a><span class="lineno"> 1390</span>&#160;            parse_bom&lt;Flags&gt;(text);</div><div class="line"><a name="l01391"></a><span class="lineno"> 1391</span>&#160;            </div><div class="line"><a name="l01392"></a><span class="lineno"> 1392</span>&#160;            <span class="comment">// Parse children</span></div><div class="line"><a name="l01393"></a><span class="lineno"> 1393</span>&#160;            <span class="keywordflow">while</span> (1)</div><div class="line"><a name="l01394"></a><span class="lineno"> 1394</span>&#160;            {</div><div class="line"><a name="l01395"></a><span class="lineno"> 1395</span>&#160;                <span class="comment">// Skip whitespace before node</span></div><div class="line"><a name="l01396"></a><span class="lineno"> 1396</span>&#160;                skip&lt;whitespace_pred, Flags&gt;(text);</div><div class="line"><a name="l01397"></a><span class="lineno"> 1397</span>&#160;                <span class="keywordflow">if</span> (*text == 0)</div><div class="line"><a name="l01398"></a><span class="lineno"> 1398</span>&#160;                    <span class="keywordflow">break</span>;</div><div class="line"><a name="l01399"></a><span class="lineno"> 1399</span>&#160;</div><div class="line"><a name="l01400"></a><span class="lineno"> 1400</span>&#160;                <span class="comment">// Parse and append new child</span></div><div class="line"><a name="l01401"></a><span class="lineno"> 1401</span>&#160;                <span class="keywordflow">if</span> (*text == Ch(<span class="charliteral">&#39;&lt;&#39;</span>))</div><div class="line"><a name="l01402"></a><span class="lineno"> 1402</span>&#160;                {</div><div class="line"><a name="l01403"></a><span class="lineno"> 1403</span>&#160;                    ++text;     <span class="comment">// Skip &#39;&lt;&#39;</span></div><div class="line"><a name="l01404"></a><span class="lineno"> 1404</span>&#160;                    <span class="keywordflow">if</span> (<a class="code" href="classrapidxml_1_1xml__node.html">xml_node&lt;Ch&gt;</a> *node = parse_node&lt;Flags&gt;(text))</div><div class="line"><a name="l01405"></a><span class="lineno"> 1405</span>&#160;                        this-&gt;append_node(node);</div><div class="line"><a name="l01406"></a><span class="lineno"> 1406</span>&#160;                }</div><div class="line"><a name="l01407"></a><span class="lineno"> 1407</span>&#160;                <span class="keywordflow">else</span></div><div class="line"><a name="l01408"></a><span class="lineno"> 1408</span>&#160;                    <a class="code" href="rapidxml_8h.html#a65f2be309896ffb841997d467c2f4fff">RAPIDXML_PARSE_ERROR</a>(<span class="stringliteral">&quot;expected &lt;&quot;</span>, text);</div><div class="line"><a name="l01409"></a><span class="lineno"> 1409</span>&#160;            }</div><div class="line"><a name="l01410"></a><span class="lineno"> 1410</span>&#160;</div><div class="line"><a name="l01411"></a><span class="lineno"> 1411</span>&#160;        }</div><div class="line"><a name="l01412"></a><span class="lineno"> 1412</span>&#160;</div><div class="line"><a name="l01415"></a><span class="lineno"><a class="line" href="classrapidxml_1_1xml__document.html#a826929ff54242532198701f19ff5f83f"> 1415</a></span>&#160;        <span class="keywordtype">void</span> <a class="code" href="classrapidxml_1_1xml__document.html#a826929ff54242532198701f19ff5f83f">clear</a>()</div><div class="line"><a name="l01416"></a><span class="lineno"> 1416</span>&#160;        {</div><div class="line"><a name="l01417"></a><span class="lineno"> 1417</span>&#160;            this-&gt;remove_all_nodes();</div><div class="line"><a name="l01418"></a><span class="lineno"> 1418</span>&#160;            this-&gt;remove_all_attributes();</div><div class="line"><a name="l01419"></a><span class="lineno"> 1419</span>&#160;            <a class="code" href="classrapidxml_1_1memory__pool.html#aad377c835fdaed1cb2cc9df194cf84e4">memory_pool&lt;Ch&gt;::clear</a>();</div><div class="line"><a name="l01420"></a><span class="lineno"> 1420</span>&#160;        }</div><div class="line"><a name="l01421"></a><span class="lineno"> 1421</span>&#160;        </div><div class="line"><a name="l01422"></a><span class="lineno"> 1422</span>&#160;    <span class="keyword">private</span>:</div><div class="line"><a name="l01423"></a><span class="lineno"> 1423</span>&#160;</div><div class="line"><a name="l01425"></a><span class="lineno"> 1425</span>&#160;        <span class="comment">// Internal character utility functions</span></div><div class="line"><a name="l01426"></a><span class="lineno"> 1426</span>&#160;        </div><div class="line"><a name="l01427"></a><span class="lineno"> 1427</span>&#160;        <span class="comment">// Detect whitespace character</span></div><div class="line"><a name="l01428"></a><span class="lineno"><a class="line" href="structrapidxml_1_1xml__document_1_1whitespace__pred.html"> 1428</a></span>&#160;        <span class="keyword">struct </span><a class="code" href="structrapidxml_1_1xml__document_1_1whitespace__pred.html">whitespace_pred</a></div><div class="line"><a name="l01429"></a><span class="lineno"> 1429</span>&#160;        {</div><div class="line"><a name="l01430"></a><span class="lineno"><a class="line" href="structrapidxml_1_1xml__document_1_1whitespace__pred.html#a1dca1a175c784b2ef0b83f3957e820eb"> 1430</a></span>&#160;            <span class="keyword">static</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> <a class="code" href="structrapidxml_1_1xml__document_1_1whitespace__pred.html#a1dca1a175c784b2ef0b83f3957e820eb">test</a>(Ch ch)</div><div class="line"><a name="l01431"></a><span class="lineno"> 1431</span>&#160;            {</div><div class="line"><a name="l01432"></a><span class="lineno"> 1432</span>&#160;                <span class="keywordflow">return</span> internal::lookup_tables&lt;0&gt;::lookup_whitespace[<span class="keyword">static_cast&lt;</span><span class="keywordtype">unsigned</span> <span class="keywordtype">char</span><span class="keyword">&gt;</span>(ch)];</div><div class="line"><a name="l01433"></a><span class="lineno"> 1433</span>&#160;            }</div><div class="line"><a name="l01434"></a><span class="lineno"> 1434</span>&#160;        };</div><div class="line"><a name="l01435"></a><span class="lineno"> 1435</span>&#160;</div><div class="line"><a name="l01436"></a><span class="lineno"> 1436</span>&#160;        <span class="comment">// Detect node name character</span></div><div class="line"><a name="l01437"></a><span class="lineno"><a class="line" href="structrapidxml_1_1xml__document_1_1node__name__pred.html"> 1437</a></span>&#160;        <span class="keyword">struct </span><a class="code" href="structrapidxml_1_1xml__document_1_1node__name__pred.html">node_name_pred</a></div><div class="line"><a name="l01438"></a><span class="lineno"> 1438</span>&#160;        {</div><div class="line"><a name="l01439"></a><span class="lineno"><a class="line" href="structrapidxml_1_1xml__document_1_1node__name__pred.html#a4eb7916489a3d057a340ce84e9135aec"> 1439</a></span>&#160;            <span class="keyword">static</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> <a class="code" href="structrapidxml_1_1xml__document_1_1node__name__pred.html#a4eb7916489a3d057a340ce84e9135aec">test</a>(Ch ch)</div><div class="line"><a name="l01440"></a><span class="lineno"> 1440</span>&#160;            {</div><div class="line"><a name="l01441"></a><span class="lineno"> 1441</span>&#160;                <span class="keywordflow">return</span> internal::lookup_tables&lt;0&gt;::lookup_node_name[<span class="keyword">static_cast&lt;</span><span class="keywordtype">unsigned</span> <span class="keywordtype">char</span><span class="keyword">&gt;</span>(ch)];</div><div class="line"><a name="l01442"></a><span class="lineno"> 1442</span>&#160;            }</div><div class="line"><a name="l01443"></a><span class="lineno"> 1443</span>&#160;        };</div><div class="line"><a name="l01444"></a><span class="lineno"> 1444</span>&#160;</div><div class="line"><a name="l01445"></a><span class="lineno"> 1445</span>&#160;        <span class="comment">// Detect attribute name character</span></div><div class="line"><a name="l01446"></a><span class="lineno"><a class="line" href="structrapidxml_1_1xml__document_1_1attribute__name__pred.html"> 1446</a></span>&#160;        <span class="keyword">struct </span><a class="code" href="structrapidxml_1_1xml__document_1_1attribute__name__pred.html">attribute_name_pred</a></div><div class="line"><a name="l01447"></a><span class="lineno"> 1447</span>&#160;        {</div><div class="line"><a name="l01448"></a><span class="lineno"><a class="line" href="structrapidxml_1_1xml__document_1_1attribute__name__pred.html#a2cf003483847dfabcf0c83877818a4c5"> 1448</a></span>&#160;            <span class="keyword">static</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> <a class="code" href="structrapidxml_1_1xml__document_1_1attribute__name__pred.html#a2cf003483847dfabcf0c83877818a4c5">test</a>(Ch ch)</div><div class="line"><a name="l01449"></a><span class="lineno"> 1449</span>&#160;            {</div><div class="line"><a name="l01450"></a><span class="lineno"> 1450</span>&#160;                <span class="keywordflow">return</span> internal::lookup_tables&lt;0&gt;::lookup_attribute_name[<span class="keyword">static_cast&lt;</span><span class="keywordtype">unsigned</span> <span class="keywordtype">char</span><span class="keyword">&gt;</span>(ch)];</div><div class="line"><a name="l01451"></a><span class="lineno"> 1451</span>&#160;            }</div><div class="line"><a name="l01452"></a><span class="lineno"> 1452</span>&#160;        };</div><div class="line"><a name="l01453"></a><span class="lineno"> 1453</span>&#160;</div><div class="line"><a name="l01454"></a><span class="lineno"> 1454</span>&#160;        <span class="comment">// Detect text character (PCDATA)</span></div><div class="line"><a name="l01455"></a><span class="lineno"><a class="line" href="structrapidxml_1_1xml__document_1_1text__pred.html"> 1455</a></span>&#160;        <span class="keyword">struct </span><a class="code" href="structrapidxml_1_1xml__document_1_1text__pred.html">text_pred</a></div><div class="line"><a name="l01456"></a><span class="lineno"> 1456</span>&#160;        {</div><div class="line"><a name="l01457"></a><span class="lineno"><a class="line" href="structrapidxml_1_1xml__document_1_1text__pred.html#a9822ef3cd730dc35179aef52026287ca"> 1457</a></span>&#160;            <span class="keyword">static</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> <a class="code" href="structrapidxml_1_1xml__document_1_1text__pred.html#a9822ef3cd730dc35179aef52026287ca">test</a>(Ch ch)</div><div class="line"><a name="l01458"></a><span class="lineno"> 1458</span>&#160;            {</div><div class="line"><a name="l01459"></a><span class="lineno"> 1459</span>&#160;                <span class="keywordflow">return</span> internal::lookup_tables&lt;0&gt;::lookup_text[<span class="keyword">static_cast&lt;</span><span class="keywordtype">unsigned</span> <span class="keywordtype">char</span><span class="keyword">&gt;</span>(ch)];</div><div class="line"><a name="l01460"></a><span class="lineno"> 1460</span>&#160;            }</div><div class="line"><a name="l01461"></a><span class="lineno"> 1461</span>&#160;        };</div><div class="line"><a name="l01462"></a><span class="lineno"> 1462</span>&#160;</div><div class="line"><a name="l01463"></a><span class="lineno"> 1463</span>&#160;        <span class="comment">// Detect text character (PCDATA) that does not require processing</span></div><div class="line"><a name="l01464"></a><span class="lineno"><a class="line" href="structrapidxml_1_1xml__document_1_1text__pure__no__ws__pred.html"> 1464</a></span>&#160;        <span class="keyword">struct </span><a class="code" href="structrapidxml_1_1xml__document_1_1text__pure__no__ws__pred.html">text_pure_no_ws_pred</a></div><div class="line"><a name="l01465"></a><span class="lineno"> 1465</span>&#160;        {</div><div class="line"><a name="l01466"></a><span class="lineno"><a class="line" href="structrapidxml_1_1xml__document_1_1text__pure__no__ws__pred.html#ac06cdc0ea5db47462d2cb6b8a0334513"> 1466</a></span>&#160;            <span class="keyword">static</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> <a class="code" href="structrapidxml_1_1xml__document_1_1text__pure__no__ws__pred.html#ac06cdc0ea5db47462d2cb6b8a0334513">test</a>(Ch ch)</div><div class="line"><a name="l01467"></a><span class="lineno"> 1467</span>&#160;            {</div><div class="line"><a name="l01468"></a><span class="lineno"> 1468</span>&#160;                <span class="keywordflow">return</span> internal::lookup_tables&lt;0&gt;::lookup_text_pure_no_ws[<span class="keyword">static_cast&lt;</span><span class="keywordtype">unsigned</span> <span class="keywordtype">char</span><span class="keyword">&gt;</span>(ch)];</div><div class="line"><a name="l01469"></a><span class="lineno"> 1469</span>&#160;            }</div><div class="line"><a name="l01470"></a><span class="lineno"> 1470</span>&#160;        };</div><div class="line"><a name="l01471"></a><span class="lineno"> 1471</span>&#160;</div><div class="line"><a name="l01472"></a><span class="lineno"> 1472</span>&#160;        <span class="comment">// Detect text character (PCDATA) that does not require processing</span></div><div class="line"><a name="l01473"></a><span class="lineno"><a class="line" href="structrapidxml_1_1xml__document_1_1text__pure__with__ws__pred.html"> 1473</a></span>&#160;        <span class="keyword">struct </span><a class="code" href="structrapidxml_1_1xml__document_1_1text__pure__with__ws__pred.html">text_pure_with_ws_pred</a></div><div class="line"><a name="l01474"></a><span class="lineno"> 1474</span>&#160;        {</div><div class="line"><a name="l01475"></a><span class="lineno"><a class="line" href="structrapidxml_1_1xml__document_1_1text__pure__with__ws__pred.html#a8f8d13fe0128d11626434ee4b95f5085"> 1475</a></span>&#160;            <span class="keyword">static</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> <a class="code" href="structrapidxml_1_1xml__document_1_1text__pure__with__ws__pred.html#a8f8d13fe0128d11626434ee4b95f5085">test</a>(Ch ch)</div><div class="line"><a name="l01476"></a><span class="lineno"> 1476</span>&#160;            {</div><div class="line"><a name="l01477"></a><span class="lineno"> 1477</span>&#160;                <span class="keywordflow">return</span> internal::lookup_tables&lt;0&gt;::lookup_text_pure_with_ws[<span class="keyword">static_cast&lt;</span><span class="keywordtype">unsigned</span> <span class="keywordtype">char</span><span class="keyword">&gt;</span>(ch)];</div><div class="line"><a name="l01478"></a><span class="lineno"> 1478</span>&#160;            }</div><div class="line"><a name="l01479"></a><span class="lineno"> 1479</span>&#160;        };</div><div class="line"><a name="l01480"></a><span class="lineno"> 1480</span>&#160;</div><div class="line"><a name="l01481"></a><span class="lineno"> 1481</span>&#160;        <span class="comment">// Detect attribute value character</span></div><div class="line"><a name="l01482"></a><span class="lineno"> 1482</span>&#160;        <span class="keyword">template</span>&lt;Ch Quote&gt;</div><div class="line"><a name="l01483"></a><span class="lineno"><a class="line" href="structrapidxml_1_1xml__document_1_1attribute__value__pred.html"> 1483</a></span>&#160;        <span class="keyword">struct </span><a class="code" href="structrapidxml_1_1xml__document_1_1attribute__value__pred.html">attribute_value_pred</a></div><div class="line"><a name="l01484"></a><span class="lineno"> 1484</span>&#160;        {</div><div class="line"><a name="l01485"></a><span class="lineno"><a class="line" href="structrapidxml_1_1xml__document_1_1attribute__value__pred.html#a1c81901177c96057b2808747fc62f9c5"> 1485</a></span>&#160;            <span class="keyword">static</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> <a class="code" href="structrapidxml_1_1xml__document_1_1attribute__value__pred.html#a1c81901177c96057b2808747fc62f9c5">test</a>(Ch ch)</div><div class="line"><a name="l01486"></a><span class="lineno"> 1486</span>&#160;            {</div><div class="line"><a name="l01487"></a><span class="lineno"> 1487</span>&#160;                <span class="keywordflow">if</span> (Quote == Ch(<span class="charliteral">&#39;\&#39;&#39;</span>))</div><div class="line"><a name="l01488"></a><span class="lineno"> 1488</span>&#160;                    <span class="keywordflow">return</span> internal::lookup_tables&lt;0&gt;::lookup_attribute_data_1[<span class="keyword">static_cast&lt;</span><span class="keywordtype">unsigned</span> <span class="keywordtype">char</span><span class="keyword">&gt;</span>(ch)];</div><div class="line"><a name="l01489"></a><span class="lineno"> 1489</span>&#160;                <span class="keywordflow">if</span> (Quote == Ch(<span class="charliteral">&#39;\&quot;&#39;</span>))</div><div class="line"><a name="l01490"></a><span class="lineno"> 1490</span>&#160;                    <span class="keywordflow">return</span> internal::lookup_tables&lt;0&gt;::lookup_attribute_data_2[static_cast&lt;unsigned char&gt;(ch)];</div><div class="line"><a name="l01491"></a><span class="lineno"> 1491</span>&#160;                <span class="keywordflow">return</span> 0;       <span class="comment">// Should never be executed, to avoid warnings on Comeau</span></div><div class="line"><a name="l01492"></a><span class="lineno"> 1492</span>&#160;            }</div><div class="line"><a name="l01493"></a><span class="lineno"> 1493</span>&#160;        };</div><div class="line"><a name="l01494"></a><span class="lineno"> 1494</span>&#160;</div><div class="line"><a name="l01495"></a><span class="lineno"> 1495</span>&#160;        <span class="comment">// Detect attribute value character</span></div><div class="line"><a name="l01496"></a><span class="lineno"> 1496</span>&#160;        <span class="keyword">template</span>&lt;Ch Quote&gt;</div><div class="line"><a name="l01497"></a><span class="lineno"><a class="line" href="structrapidxml_1_1xml__document_1_1attribute__value__pure__pred.html"> 1497</a></span>&#160;        <span class="keyword">struct </span><a class="code" href="structrapidxml_1_1xml__document_1_1attribute__value__pure__pred.html">attribute_value_pure_pred</a></div><div class="line"><a name="l01498"></a><span class="lineno"> 1498</span>&#160;        {</div><div class="line"><a name="l01499"></a><span class="lineno"><a class="line" href="structrapidxml_1_1xml__document_1_1attribute__value__pure__pred.html#a3add4f66f917381562355d5f8b8917c1"> 1499</a></span>&#160;            <span class="keyword">static</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> <a class="code" href="structrapidxml_1_1xml__document_1_1attribute__value__pure__pred.html#a3add4f66f917381562355d5f8b8917c1">test</a>(Ch ch)</div><div class="line"><a name="l01500"></a><span class="lineno"> 1500</span>&#160;            {</div><div class="line"><a name="l01501"></a><span class="lineno"> 1501</span>&#160;                <span class="keywordflow">if</span> (Quote == Ch(<span class="charliteral">&#39;\&#39;&#39;</span>))</div><div class="line"><a name="l01502"></a><span class="lineno"> 1502</span>&#160;                    <span class="keywordflow">return</span> internal::lookup_tables&lt;0&gt;::lookup_attribute_data_1_pure[<span class="keyword">static_cast&lt;</span><span class="keywordtype">unsigned</span> <span class="keywordtype">char</span><span class="keyword">&gt;</span>(ch)];</div><div class="line"><a name="l01503"></a><span class="lineno"> 1503</span>&#160;                <span class="keywordflow">if</span> (Quote == Ch(<span class="charliteral">&#39;\&quot;&#39;</span>))</div><div class="line"><a name="l01504"></a><span class="lineno"> 1504</span>&#160;                    <span class="keywordflow">return</span> internal::lookup_tables&lt;0&gt;::lookup_attribute_data_2_pure[static_cast&lt;unsigned char&gt;(ch)];</div><div class="line"><a name="l01505"></a><span class="lineno"> 1505</span>&#160;                <span class="keywordflow">return</span> 0;       <span class="comment">// Should never be executed, to avoid warnings on Comeau</span></div><div class="line"><a name="l01506"></a><span class="lineno"> 1506</span>&#160;            }</div><div class="line"><a name="l01507"></a><span class="lineno"> 1507</span>&#160;        };</div><div class="line"><a name="l01508"></a><span class="lineno"> 1508</span>&#160;</div><div class="line"><a name="l01509"></a><span class="lineno"> 1509</span>&#160;        <span class="comment">// Insert coded character, using UTF8 or 8-bit ASCII</span></div><div class="line"><a name="l01510"></a><span class="lineno"> 1510</span>&#160;        <span class="keyword">template</span>&lt;<span class="keywordtype">int</span> Flags&gt;</div><div class="line"><a name="l01511"></a><span class="lineno"><a class="line" href="classrapidxml_1_1xml__document.html#ae33040bcfa8e5a29dc6f6f130984a981"> 1511</a></span>&#160;        <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="classrapidxml_1_1xml__document.html#ae33040bcfa8e5a29dc6f6f130984a981">insert_coded_character</a>(Ch *&amp;text, <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> code)</div><div class="line"><a name="l01512"></a><span class="lineno"> 1512</span>&#160;        {</div><div class="line"><a name="l01513"></a><span class="lineno"> 1513</span>&#160;            <span class="keywordflow">if</span> (Flags &amp; parse_no_utf8)</div><div class="line"><a name="l01514"></a><span class="lineno"> 1514</span>&#160;            {</div><div class="line"><a name="l01515"></a><span class="lineno"> 1515</span>&#160;                <span class="comment">// Insert 8-bit ASCII character</span></div><div class="line"><a name="l01516"></a><span class="lineno"> 1516</span>&#160;                <span class="comment">// Todo: possibly verify that code is less than 256 and use replacement char otherwise?</span></div><div class="line"><a name="l01517"></a><span class="lineno"> 1517</span>&#160;                text[0] = <span class="keyword">static_cast&lt;</span><span class="keywordtype">unsigned</span> <span class="keywordtype">char</span><span class="keyword">&gt;</span>(code);</div><div class="line"><a name="l01518"></a><span class="lineno"> 1518</span>&#160;                text += 1;</div><div class="line"><a name="l01519"></a><span class="lineno"> 1519</span>&#160;            }</div><div class="line"><a name="l01520"></a><span class="lineno"> 1520</span>&#160;            <span class="keywordflow">else</span></div><div class="line"><a name="l01521"></a><span class="lineno"> 1521</span>&#160;            {</div><div class="line"><a name="l01522"></a><span class="lineno"> 1522</span>&#160;                <span class="comment">// Insert UTF8 sequence</span></div><div class="line"><a name="l01523"></a><span class="lineno"> 1523</span>&#160;                <span class="keywordflow">if</span> (code &lt; 0x80)    <span class="comment">// 1 byte sequence</span></div><div class="line"><a name="l01524"></a><span class="lineno"> 1524</span>&#160;                {</div><div class="line"><a name="l01525"></a><span class="lineno"> 1525</span>&#160;                    text[0] = <span class="keyword">static_cast&lt;</span><span class="keywordtype">unsigned</span> <span class="keywordtype">char</span><span class="keyword">&gt;</span>(code);</div><div class="line"><a name="l01526"></a><span class="lineno"> 1526</span>&#160;                    text += 1;</div><div class="line"><a name="l01527"></a><span class="lineno"> 1527</span>&#160;                }</div><div class="line"><a name="l01528"></a><span class="lineno"> 1528</span>&#160;                <span class="keywordflow">else</span> <span class="keywordflow">if</span> (code &lt; 0x800)  <span class="comment">// 2 byte sequence</span></div><div class="line"><a name="l01529"></a><span class="lineno"> 1529</span>&#160;                {</div><div class="line"><a name="l01530"></a><span class="lineno"> 1530</span>&#160;                    text[1] = <span class="keyword">static_cast&lt;</span><span class="keywordtype">unsigned</span> <span class="keywordtype">char</span><span class="keyword">&gt;</span>((code | 0x80) &amp; 0xBF); code &gt;&gt;= 6;</div><div class="line"><a name="l01531"></a><span class="lineno"> 1531</span>&#160;                    text[0] = <span class="keyword">static_cast&lt;</span><span class="keywordtype">unsigned</span> <span class="keywordtype">char</span><span class="keyword">&gt;</span>(code | 0xC0);</div><div class="line"><a name="l01532"></a><span class="lineno"> 1532</span>&#160;                    text += 2;</div><div class="line"><a name="l01533"></a><span class="lineno"> 1533</span>&#160;                }</div><div class="line"><a name="l01534"></a><span class="lineno"> 1534</span>&#160;                <span class="keywordflow">else</span> <span class="keywordflow">if</span> (code &lt; 0x10000)    <span class="comment">// 3 byte sequence</span></div><div class="line"><a name="l01535"></a><span class="lineno"> 1535</span>&#160;                {</div><div class="line"><a name="l01536"></a><span class="lineno"> 1536</span>&#160;                    text[2] = <span class="keyword">static_cast&lt;</span><span class="keywordtype">unsigned</span> <span class="keywordtype">char</span><span class="keyword">&gt;</span>((code | 0x80) &amp; 0xBF); code &gt;&gt;= 6;</div><div class="line"><a name="l01537"></a><span class="lineno"> 1537</span>&#160;                    text[1] = <span class="keyword">static_cast&lt;</span><span class="keywordtype">unsigned</span> <span class="keywordtype">char</span><span class="keyword">&gt;</span>((code | 0x80) &amp; 0xBF); code &gt;&gt;= 6;</div><div class="line"><a name="l01538"></a><span class="lineno"> 1538</span>&#160;                    text[0] = <span class="keyword">static_cast&lt;</span><span class="keywordtype">unsigned</span> <span class="keywordtype">char</span><span class="keyword">&gt;</span>(code | 0xE0);</div><div class="line"><a name="l01539"></a><span class="lineno"> 1539</span>&#160;                    text += 3;</div><div class="line"><a name="l01540"></a><span class="lineno"> 1540</span>&#160;                }</div><div class="line"><a name="l01541"></a><span class="lineno"> 1541</span>&#160;                <span class="keywordflow">else</span> <span class="keywordflow">if</span> (code &lt; 0x110000)   <span class="comment">// 4 byte sequence</span></div><div class="line"><a name="l01542"></a><span class="lineno"> 1542</span>&#160;                {</div><div class="line"><a name="l01543"></a><span class="lineno"> 1543</span>&#160;                    text[3] = <span class="keyword">static_cast&lt;</span><span class="keywordtype">unsigned</span> <span class="keywordtype">char</span><span class="keyword">&gt;</span>((code | 0x80) &amp; 0xBF); code &gt;&gt;= 6;</div><div class="line"><a name="l01544"></a><span class="lineno"> 1544</span>&#160;                    text[2] = <span class="keyword">static_cast&lt;</span><span class="keywordtype">unsigned</span> <span class="keywordtype">char</span><span class="keyword">&gt;</span>((code | 0x80) &amp; 0xBF); code &gt;&gt;= 6;</div><div class="line"><a name="l01545"></a><span class="lineno"> 1545</span>&#160;                    text[1] = <span class="keyword">static_cast&lt;</span><span class="keywordtype">unsigned</span> <span class="keywordtype">char</span><span class="keyword">&gt;</span>((code | 0x80) &amp; 0xBF); code &gt;&gt;= 6;</div><div class="line"><a name="l01546"></a><span class="lineno"> 1546</span>&#160;                    text[0] = <span class="keyword">static_cast&lt;</span><span class="keywordtype">unsigned</span> <span class="keywordtype">char</span><span class="keyword">&gt;</span>(code | 0xF0);</div><div class="line"><a name="l01547"></a><span class="lineno"> 1547</span>&#160;                    text += 4;</div><div class="line"><a name="l01548"></a><span class="lineno"> 1548</span>&#160;                }</div><div class="line"><a name="l01549"></a><span class="lineno"> 1549</span>&#160;                <span class="keywordflow">else</span>    <span class="comment">// Invalid, only codes up to 0x10FFFF are allowed in Unicode</span></div><div class="line"><a name="l01550"></a><span class="lineno"> 1550</span>&#160;                {</div><div class="line"><a name="l01551"></a><span class="lineno"> 1551</span>&#160;                    <a class="code" href="rapidxml_8h.html#a65f2be309896ffb841997d467c2f4fff">RAPIDXML_PARSE_ERROR</a>(<span class="stringliteral">&quot;invalid numeric character entity&quot;</span>, text);</div><div class="line"><a name="l01552"></a><span class="lineno"> 1552</span>&#160;                }</div><div class="line"><a name="l01553"></a><span class="lineno"> 1553</span>&#160;            }</div><div class="line"><a name="l01554"></a><span class="lineno"> 1554</span>&#160;        }</div><div class="line"><a name="l01555"></a><span class="lineno"> 1555</span>&#160;</div><div class="line"><a name="l01556"></a><span class="lineno"> 1556</span>&#160;        <span class="comment">// Skip characters until predicate evaluates to true</span></div><div class="line"><a name="l01557"></a><span class="lineno"> 1557</span>&#160;        <span class="keyword">template</span>&lt;<span class="keyword">class</span> StopPred, <span class="keywordtype">int</span> Flags&gt;</div><div class="line"><a name="l01558"></a><span class="lineno"><a class="line" href="classrapidxml_1_1xml__document.html#a27aca5bdcb3bfa899f61b17d7f1d3a0d"> 1558</a></span>&#160;        <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="classrapidxml_1_1xml__document.html#a27aca5bdcb3bfa899f61b17d7f1d3a0d">skip</a>(Ch *&amp;text)</div><div class="line"><a name="l01559"></a><span class="lineno"> 1559</span>&#160;        {</div><div class="line"><a name="l01560"></a><span class="lineno"> 1560</span>&#160;            Ch *tmp = text;</div><div class="line"><a name="l01561"></a><span class="lineno"> 1561</span>&#160;            <span class="keywordflow">while</span> (StopPred::test(*tmp))</div><div class="line"><a name="l01562"></a><span class="lineno"> 1562</span>&#160;                ++tmp;</div><div class="line"><a name="l01563"></a><span class="lineno"> 1563</span>&#160;            text = tmp;</div><div class="line"><a name="l01564"></a><span class="lineno"> 1564</span>&#160;        }</div><div class="line"><a name="l01565"></a><span class="lineno"> 1565</span>&#160;</div><div class="line"><a name="l01566"></a><span class="lineno"> 1566</span>&#160;        <span class="comment">// Skip characters until predicate evaluates to true while doing the following:</span></div><div class="line"><a name="l01567"></a><span class="lineno"> 1567</span>&#160;        <span class="comment">// - replacing XML character entity references with proper characters (&amp;apos; &amp;amp; &amp;quot; &amp;lt; &amp;gt; &amp;#...;)</span></div><div class="line"><a name="l01568"></a><span class="lineno"> 1568</span>&#160;        <span class="comment">// - condensing whitespace sequences to single space character</span></div><div class="line"><a name="l01569"></a><span class="lineno"> 1569</span>&#160;        <span class="keyword">template</span>&lt;<span class="keyword">class</span> StopPred, <span class="keyword">class</span> StopPredPure, <span class="keywordtype">int</span> Flags&gt;</div><div class="line"><a name="l01570"></a><span class="lineno"><a class="line" href="classrapidxml_1_1xml__document.html#af86781975cdfff2105fa8c0b49ab4507"> 1570</a></span>&#160;        <span class="keyword">static</span> Ch *<a class="code" href="classrapidxml_1_1xml__document.html#af86781975cdfff2105fa8c0b49ab4507">skip_and_expand_character_refs</a>(Ch *&amp;text)</div><div class="line"><a name="l01571"></a><span class="lineno"> 1571</span>&#160;        {</div><div class="line"><a name="l01572"></a><span class="lineno"> 1572</span>&#160;            <span class="comment">// If entity translation, whitespace condense and whitespace trimming is disabled, use plain skip</span></div><div class="line"><a name="l01573"></a><span class="lineno"> 1573</span>&#160;            <span class="keywordflow">if</span> (Flags &amp; parse_no_entity_translation &amp;&amp; </div><div class="line"><a name="l01574"></a><span class="lineno"> 1574</span>&#160;                !(Flags &amp; parse_normalize_whitespace) &amp;&amp;</div><div class="line"><a name="l01575"></a><span class="lineno"> 1575</span>&#160;                !(Flags &amp; parse_trim_whitespace))</div><div class="line"><a name="l01576"></a><span class="lineno"> 1576</span>&#160;            {</div><div class="line"><a name="l01577"></a><span class="lineno"> 1577</span>&#160;                skip&lt;StopPred, Flags&gt;(text);</div><div class="line"><a name="l01578"></a><span class="lineno"> 1578</span>&#160;                <span class="keywordflow">return</span> text;</div><div class="line"><a name="l01579"></a><span class="lineno"> 1579</span>&#160;            }</div><div class="line"><a name="l01580"></a><span class="lineno"> 1580</span>&#160;            </div><div class="line"><a name="l01581"></a><span class="lineno"> 1581</span>&#160;            <span class="comment">// Use simple skip until first modification is detected</span></div><div class="line"><a name="l01582"></a><span class="lineno"> 1582</span>&#160;            skip&lt;StopPredPure, Flags&gt;(text);</div><div class="line"><a name="l01583"></a><span class="lineno"> 1583</span>&#160;</div><div class="line"><a name="l01584"></a><span class="lineno"> 1584</span>&#160;            <span class="comment">// Use translation skip</span></div><div class="line"><a name="l01585"></a><span class="lineno"> 1585</span>&#160;            Ch *src = text;</div><div class="line"><a name="l01586"></a><span class="lineno"> 1586</span>&#160;            Ch *dest = src;</div><div class="line"><a name="l01587"></a><span class="lineno"> 1587</span>&#160;            <span class="keywordflow">while</span> (StopPred::test(*src))</div><div class="line"><a name="l01588"></a><span class="lineno"> 1588</span>&#160;            {</div><div class="line"><a name="l01589"></a><span class="lineno"> 1589</span>&#160;                <span class="comment">// If entity translation is enabled    </span></div><div class="line"><a name="l01590"></a><span class="lineno"> 1590</span>&#160;                <span class="keywordflow">if</span> (!(Flags &amp; parse_no_entity_translation))</div><div class="line"><a name="l01591"></a><span class="lineno"> 1591</span>&#160;                {</div><div class="line"><a name="l01592"></a><span class="lineno"> 1592</span>&#160;                    <span class="comment">// Test if replacement is needed</span></div><div class="line"><a name="l01593"></a><span class="lineno"> 1593</span>&#160;                    <span class="keywordflow">if</span> (src[0] == Ch(<span class="charliteral">&#39;&amp;&#39;</span>))</div><div class="line"><a name="l01594"></a><span class="lineno"> 1594</span>&#160;                    {</div><div class="line"><a name="l01595"></a><span class="lineno"> 1595</span>&#160;                        <span class="keywordflow">switch</span> (src[1])</div><div class="line"><a name="l01596"></a><span class="lineno"> 1596</span>&#160;                        {</div><div class="line"><a name="l01597"></a><span class="lineno"> 1597</span>&#160;</div><div class="line"><a name="l01598"></a><span class="lineno"> 1598</span>&#160;                        <span class="comment">// &amp;amp; &amp;apos;</span></div><div class="line"><a name="l01599"></a><span class="lineno"> 1599</span>&#160;                        <span class="keywordflow">case</span> Ch(<span class="charliteral">&#39;a&#39;</span>): </div><div class="line"><a name="l01600"></a><span class="lineno"> 1600</span>&#160;                            <span class="keywordflow">if</span> (src[2] == Ch(<span class="charliteral">&#39;m&#39;</span>) &amp;&amp; src[3] == Ch(<span class="charliteral">&#39;p&#39;</span>) &amp;&amp; src[4] == Ch(<span class="charliteral">&#39;;&#39;</span>))</div><div class="line"><a name="l01601"></a><span class="lineno"> 1601</span>&#160;                            {</div><div class="line"><a name="l01602"></a><span class="lineno"> 1602</span>&#160;                                *dest = Ch(<span class="charliteral">&#39;&amp;&#39;</span>);</div><div class="line"><a name="l01603"></a><span class="lineno"> 1603</span>&#160;                                ++dest;</div><div class="line"><a name="l01604"></a><span class="lineno"> 1604</span>&#160;                                src += 5;</div><div class="line"><a name="l01605"></a><span class="lineno"> 1605</span>&#160;                                <span class="keywordflow">continue</span>;</div><div class="line"><a name="l01606"></a><span class="lineno"> 1606</span>&#160;                            }</div><div class="line"><a name="l01607"></a><span class="lineno"> 1607</span>&#160;                            <span class="keywordflow">if</span> (src[2] == Ch(<span class="charliteral">&#39;p&#39;</span>) &amp;&amp; src[3] == Ch(<span class="charliteral">&#39;o&#39;</span>) &amp;&amp; src[4] == Ch(<span class="charliteral">&#39;s&#39;</span>) &amp;&amp; src[5] == Ch(<span class="charliteral">&#39;;&#39;</span>))</div><div class="line"><a name="l01608"></a><span class="lineno"> 1608</span>&#160;                            {</div><div class="line"><a name="l01609"></a><span class="lineno"> 1609</span>&#160;                                *dest = Ch(<span class="charliteral">&#39;\&#39;&#39;</span>);</div><div class="line"><a name="l01610"></a><span class="lineno"> 1610</span>&#160;                                ++dest;</div><div class="line"><a name="l01611"></a><span class="lineno"> 1611</span>&#160;                                src += 6;</div><div class="line"><a name="l01612"></a><span class="lineno"> 1612</span>&#160;                                <span class="keywordflow">continue</span>;</div><div class="line"><a name="l01613"></a><span class="lineno"> 1613</span>&#160;                            }</div><div class="line"><a name="l01614"></a><span class="lineno"> 1614</span>&#160;                            <span class="keywordflow">break</span>;</div><div class="line"><a name="l01615"></a><span class="lineno"> 1615</span>&#160;</div><div class="line"><a name="l01616"></a><span class="lineno"> 1616</span>&#160;                        <span class="comment">// &amp;quot;</span></div><div class="line"><a name="l01617"></a><span class="lineno"> 1617</span>&#160;                        <span class="keywordflow">case</span> Ch(<span class="charliteral">&#39;q&#39;</span>): </div><div class="line"><a name="l01618"></a><span class="lineno"> 1618</span>&#160;                            <span class="keywordflow">if</span> (src[2] == Ch(<span class="charliteral">&#39;u&#39;</span>) &amp;&amp; src[3] == Ch(<span class="charliteral">&#39;o&#39;</span>) &amp;&amp; src[4] == Ch(<span class="charliteral">&#39;t&#39;</span>) &amp;&amp; src[5] == Ch(<span class="charliteral">&#39;;&#39;</span>))</div><div class="line"><a name="l01619"></a><span class="lineno"> 1619</span>&#160;                            {</div><div class="line"><a name="l01620"></a><span class="lineno"> 1620</span>&#160;                                *dest = Ch(<span class="charliteral">&#39;&quot;&#39;</span>);</div><div class="line"><a name="l01621"></a><span class="lineno"> 1621</span>&#160;                                ++dest;</div><div class="line"><a name="l01622"></a><span class="lineno"> 1622</span>&#160;                                src += 6;</div><div class="line"><a name="l01623"></a><span class="lineno"> 1623</span>&#160;                                <span class="keywordflow">continue</span>;</div><div class="line"><a name="l01624"></a><span class="lineno"> 1624</span>&#160;                            }</div><div class="line"><a name="l01625"></a><span class="lineno"> 1625</span>&#160;                            <span class="keywordflow">break</span>;</div><div class="line"><a name="l01626"></a><span class="lineno"> 1626</span>&#160;</div><div class="line"><a name="l01627"></a><span class="lineno"> 1627</span>&#160;                        <span class="comment">// &amp;gt;</span></div><div class="line"><a name="l01628"></a><span class="lineno"> 1628</span>&#160;                        <span class="keywordflow">case</span> Ch(<span class="charliteral">&#39;g&#39;</span>): </div><div class="line"><a name="l01629"></a><span class="lineno"> 1629</span>&#160;                            <span class="keywordflow">if</span> (src[2] == Ch(<span class="charliteral">&#39;t&#39;</span>) &amp;&amp; src[3] == Ch(<span class="charliteral">&#39;;&#39;</span>))</div><div class="line"><a name="l01630"></a><span class="lineno"> 1630</span>&#160;                            {</div><div class="line"><a name="l01631"></a><span class="lineno"> 1631</span>&#160;                                *dest = Ch(<span class="charliteral">&#39;&gt;&#39;</span>);</div><div class="line"><a name="l01632"></a><span class="lineno"> 1632</span>&#160;                                ++dest;</div><div class="line"><a name="l01633"></a><span class="lineno"> 1633</span>&#160;                                src += 4;</div><div class="line"><a name="l01634"></a><span class="lineno"> 1634</span>&#160;                                <span class="keywordflow">continue</span>;</div><div class="line"><a name="l01635"></a><span class="lineno"> 1635</span>&#160;                            }</div><div class="line"><a name="l01636"></a><span class="lineno"> 1636</span>&#160;                            <span class="keywordflow">break</span>;</div><div class="line"><a name="l01637"></a><span class="lineno"> 1637</span>&#160;</div><div class="line"><a name="l01638"></a><span class="lineno"> 1638</span>&#160;                        <span class="comment">// &amp;lt;</span></div><div class="line"><a name="l01639"></a><span class="lineno"> 1639</span>&#160;                        <span class="keywordflow">case</span> Ch(<span class="charliteral">&#39;l&#39;</span>): </div><div class="line"><a name="l01640"></a><span class="lineno"> 1640</span>&#160;                            <span class="keywordflow">if</span> (src[2] == Ch(<span class="charliteral">&#39;t&#39;</span>) &amp;&amp; src[3] == Ch(<span class="charliteral">&#39;;&#39;</span>))</div><div class="line"><a name="l01641"></a><span class="lineno"> 1641</span>&#160;                            {</div><div class="line"><a name="l01642"></a><span class="lineno"> 1642</span>&#160;                                *dest = Ch(<span class="charliteral">&#39;&lt;&#39;</span>);</div><div class="line"><a name="l01643"></a><span class="lineno"> 1643</span>&#160;                                ++dest;</div><div class="line"><a name="l01644"></a><span class="lineno"> 1644</span>&#160;                                src += 4;</div><div class="line"><a name="l01645"></a><span class="lineno"> 1645</span>&#160;                                <span class="keywordflow">continue</span>;</div><div class="line"><a name="l01646"></a><span class="lineno"> 1646</span>&#160;                            }</div><div class="line"><a name="l01647"></a><span class="lineno"> 1647</span>&#160;                            <span class="keywordflow">break</span>;</div><div class="line"><a name="l01648"></a><span class="lineno"> 1648</span>&#160;</div><div class="line"><a name="l01649"></a><span class="lineno"> 1649</span>&#160;                        <span class="comment">// &amp;#...; - assumes ASCII</span></div><div class="line"><a name="l01650"></a><span class="lineno"> 1650</span>&#160;                        <span class="keywordflow">case</span> Ch(<span class="charliteral">&#39;#&#39;</span>): </div><div class="line"><a name="l01651"></a><span class="lineno"> 1651</span>&#160;                            <span class="keywordflow">if</span> (src[2] == Ch(<span class="charliteral">&#39;x&#39;</span>))</div><div class="line"><a name="l01652"></a><span class="lineno"> 1652</span>&#160;                            {</div><div class="line"><a name="l01653"></a><span class="lineno"> 1653</span>&#160;                                <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> code = 0;</div><div class="line"><a name="l01654"></a><span class="lineno"> 1654</span>&#160;                                src += 3;   <span class="comment">// Skip &amp;#x</span></div><div class="line"><a name="l01655"></a><span class="lineno"> 1655</span>&#160;                                <span class="keywordflow">while</span> (1)</div><div class="line"><a name="l01656"></a><span class="lineno"> 1656</span>&#160;                                {</div><div class="line"><a name="l01657"></a><span class="lineno"> 1657</span>&#160;                                    <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> digit = internal::lookup_tables&lt;0&gt;::lookup_digits[<span class="keyword">static_cast&lt;</span><span class="keywordtype">unsigned</span> <span class="keywordtype">char</span><span class="keyword">&gt;</span>(*src)];</div><div class="line"><a name="l01658"></a><span class="lineno"> 1658</span>&#160;                                    <span class="keywordflow">if</span> (digit == 0xFF)</div><div class="line"><a name="l01659"></a><span class="lineno"> 1659</span>&#160;                                        <span class="keywordflow">break</span>;</div><div class="line"><a name="l01660"></a><span class="lineno"> 1660</span>&#160;                                    code = code * 16 + digit;</div><div class="line"><a name="l01661"></a><span class="lineno"> 1661</span>&#160;                                    ++src;</div><div class="line"><a name="l01662"></a><span class="lineno"> 1662</span>&#160;                                }</div><div class="line"><a name="l01663"></a><span class="lineno"> 1663</span>&#160;                                insert_coded_character&lt;Flags&gt;(dest, code);    <span class="comment">// Put character in output</span></div><div class="line"><a name="l01664"></a><span class="lineno"> 1664</span>&#160;                            }</div><div class="line"><a name="l01665"></a><span class="lineno"> 1665</span>&#160;                            <span class="keywordflow">else</span></div><div class="line"><a name="l01666"></a><span class="lineno"> 1666</span>&#160;                            {</div><div class="line"><a name="l01667"></a><span class="lineno"> 1667</span>&#160;                                <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> code = 0;</div><div class="line"><a name="l01668"></a><span class="lineno"> 1668</span>&#160;                                src += 2;   <span class="comment">// Skip &amp;#</span></div><div class="line"><a name="l01669"></a><span class="lineno"> 1669</span>&#160;                                <span class="keywordflow">while</span> (1)</div><div class="line"><a name="l01670"></a><span class="lineno"> 1670</span>&#160;                                {</div><div class="line"><a name="l01671"></a><span class="lineno"> 1671</span>&#160;                                    <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> digit = internal::lookup_tables&lt;0&gt;::lookup_digits[<span class="keyword">static_cast&lt;</span><span class="keywordtype">unsigned</span> <span class="keywordtype">char</span><span class="keyword">&gt;</span>(*src)];</div><div class="line"><a name="l01672"></a><span class="lineno"> 1672</span>&#160;                                    <span class="keywordflow">if</span> (digit == 0xFF)</div><div class="line"><a name="l01673"></a><span class="lineno"> 1673</span>&#160;                                        <span class="keywordflow">break</span>;</div><div class="line"><a name="l01674"></a><span class="lineno"> 1674</span>&#160;                                    code = code * 10 + digit;</div><div class="line"><a name="l01675"></a><span class="lineno"> 1675</span>&#160;                                    ++src;</div><div class="line"><a name="l01676"></a><span class="lineno"> 1676</span>&#160;                                }</div><div class="line"><a name="l01677"></a><span class="lineno"> 1677</span>&#160;                                insert_coded_character&lt;Flags&gt;(dest, code);    <span class="comment">// Put character in output</span></div><div class="line"><a name="l01678"></a><span class="lineno"> 1678</span>&#160;                            }</div><div class="line"><a name="l01679"></a><span class="lineno"> 1679</span>&#160;                            <span class="keywordflow">if</span> (*src == Ch(<span class="charliteral">&#39;;&#39;</span>))</div><div class="line"><a name="l01680"></a><span class="lineno"> 1680</span>&#160;                                ++src;</div><div class="line"><a name="l01681"></a><span class="lineno"> 1681</span>&#160;                            <span class="keywordflow">else</span></div><div class="line"><a name="l01682"></a><span class="lineno"> 1682</span>&#160;                                <a class="code" href="rapidxml_8h.html#a65f2be309896ffb841997d467c2f4fff">RAPIDXML_PARSE_ERROR</a>(<span class="stringliteral">&quot;expected ;&quot;</span>, src);</div><div class="line"><a name="l01683"></a><span class="lineno"> 1683</span>&#160;                            <span class="keywordflow">continue</span>;</div><div class="line"><a name="l01684"></a><span class="lineno"> 1684</span>&#160;</div><div class="line"><a name="l01685"></a><span class="lineno"> 1685</span>&#160;                        <span class="comment">// Something else</span></div><div class="line"><a name="l01686"></a><span class="lineno"> 1686</span>&#160;                        <span class="keywordflow">default</span>:</div><div class="line"><a name="l01687"></a><span class="lineno"> 1687</span>&#160;                            <span class="comment">// Ignore, just copy &#39;&amp;&#39; verbatim</span></div><div class="line"><a name="l01688"></a><span class="lineno"> 1688</span>&#160;                            <span class="keywordflow">break</span>;</div><div class="line"><a name="l01689"></a><span class="lineno"> 1689</span>&#160;</div><div class="line"><a name="l01690"></a><span class="lineno"> 1690</span>&#160;                        }</div><div class="line"><a name="l01691"></a><span class="lineno"> 1691</span>&#160;                    }</div><div class="line"><a name="l01692"></a><span class="lineno"> 1692</span>&#160;                }</div><div class="line"><a name="l01693"></a><span class="lineno"> 1693</span>&#160;                </div><div class="line"><a name="l01694"></a><span class="lineno"> 1694</span>&#160;                <span class="comment">// If whitespace condensing is enabled</span></div><div class="line"><a name="l01695"></a><span class="lineno"> 1695</span>&#160;                <span class="keywordflow">if</span> (Flags &amp; parse_normalize_whitespace)</div><div class="line"><a name="l01696"></a><span class="lineno"> 1696</span>&#160;                {</div><div class="line"><a name="l01697"></a><span class="lineno"> 1697</span>&#160;                    <span class="comment">// Test if condensing is needed                 </span></div><div class="line"><a name="l01698"></a><span class="lineno"> 1698</span>&#160;                    <span class="keywordflow">if</span> (whitespace_pred::test(*src))</div><div class="line"><a name="l01699"></a><span class="lineno"> 1699</span>&#160;                    {</div><div class="line"><a name="l01700"></a><span class="lineno"> 1700</span>&#160;                        *dest = Ch(<span class="charliteral">&#39; &#39;</span>); ++dest;    <span class="comment">// Put single space in dest</span></div><div class="line"><a name="l01701"></a><span class="lineno"> 1701</span>&#160;                        ++src;                      <span class="comment">// Skip first whitespace char</span></div><div class="line"><a name="l01702"></a><span class="lineno"> 1702</span>&#160;                        <span class="comment">// Skip remaining whitespace chars</span></div><div class="line"><a name="l01703"></a><span class="lineno"> 1703</span>&#160;                        <span class="keywordflow">while</span> (whitespace_pred::test(*src))</div><div class="line"><a name="l01704"></a><span class="lineno"> 1704</span>&#160;                            ++src;</div><div class="line"><a name="l01705"></a><span class="lineno"> 1705</span>&#160;                        <span class="keywordflow">continue</span>;</div><div class="line"><a name="l01706"></a><span class="lineno"> 1706</span>&#160;                    }</div><div class="line"><a name="l01707"></a><span class="lineno"> 1707</span>&#160;                }</div><div class="line"><a name="l01708"></a><span class="lineno"> 1708</span>&#160;</div><div class="line"><a name="l01709"></a><span class="lineno"> 1709</span>&#160;                <span class="comment">// No replacement, only copy character</span></div><div class="line"><a name="l01710"></a><span class="lineno"> 1710</span>&#160;                *dest++ = *src++;</div><div class="line"><a name="l01711"></a><span class="lineno"> 1711</span>&#160;</div><div class="line"><a name="l01712"></a><span class="lineno"> 1712</span>&#160;            }</div><div class="line"><a name="l01713"></a><span class="lineno"> 1713</span>&#160;</div><div class="line"><a name="l01714"></a><span class="lineno"> 1714</span>&#160;            <span class="comment">// Return new end</span></div><div class="line"><a name="l01715"></a><span class="lineno"> 1715</span>&#160;            text = src;</div><div class="line"><a name="l01716"></a><span class="lineno"> 1716</span>&#160;            <span class="keywordflow">return</span> dest;</div><div class="line"><a name="l01717"></a><span class="lineno"> 1717</span>&#160;</div><div class="line"><a name="l01718"></a><span class="lineno"> 1718</span>&#160;        }</div><div class="line"><a name="l01719"></a><span class="lineno"> 1719</span>&#160;</div><div class="line"><a name="l01721"></a><span class="lineno"> 1721</span>&#160;        <span class="comment">// Internal parsing functions</span></div><div class="line"><a name="l01722"></a><span class="lineno"> 1722</span>&#160;        </div><div class="line"><a name="l01723"></a><span class="lineno"> 1723</span>&#160;        <span class="comment">// Parse BOM, if any</span></div><div class="line"><a name="l01724"></a><span class="lineno"> 1724</span>&#160;        <span class="keyword">template</span>&lt;<span class="keywordtype">int</span> Flags&gt;</div><div class="line"><a name="l01725"></a><span class="lineno"><a class="line" href="classrapidxml_1_1xml__document.html#aaa63a0c7b57ab8fce63d4aebe4da123d"> 1725</a></span>&#160;        <span class="keywordtype">void</span> <a class="code" href="classrapidxml_1_1xml__document.html#aaa63a0c7b57ab8fce63d4aebe4da123d">parse_bom</a>(Ch *&amp;text)</div><div class="line"><a name="l01726"></a><span class="lineno"> 1726</span>&#160;        {</div><div class="line"><a name="l01727"></a><span class="lineno"> 1727</span>&#160;            <span class="comment">// UTF-8?</span></div><div class="line"><a name="l01728"></a><span class="lineno"> 1728</span>&#160;            <span class="keywordflow">if</span> (static_cast&lt;unsigned char&gt;(text[0]) == 0xEF &amp;&amp; </div><div class="line"><a name="l01729"></a><span class="lineno"> 1729</span>&#160;                static_cast&lt;unsigned char&gt;(text[1]) == 0xBB &amp;&amp; </div><div class="line"><a name="l01730"></a><span class="lineno"> 1730</span>&#160;                static_cast&lt;unsigned char&gt;(text[2]) == 0xBF)</div><div class="line"><a name="l01731"></a><span class="lineno"> 1731</span>&#160;            {</div><div class="line"><a name="l01732"></a><span class="lineno"> 1732</span>&#160;                text += 3;      <span class="comment">// Skup utf-8 bom</span></div><div class="line"><a name="l01733"></a><span class="lineno"> 1733</span>&#160;            }</div><div class="line"><a name="l01734"></a><span class="lineno"> 1734</span>&#160;        }</div><div class="line"><a name="l01735"></a><span class="lineno"> 1735</span>&#160;</div><div class="line"><a name="l01736"></a><span class="lineno"> 1736</span>&#160;        <span class="comment">// Parse XML declaration (&lt;?xml...)</span></div><div class="line"><a name="l01737"></a><span class="lineno"> 1737</span>&#160;        <span class="keyword">template</span>&lt;<span class="keywordtype">int</span> Flags&gt;</div><div class="line"><a name="l01738"></a><span class="lineno"><a class="line" href="classrapidxml_1_1xml__document.html#a0151c52c82ba79ea0605c2facf39c534"> 1738</a></span>&#160;        <a class="code" href="classrapidxml_1_1xml__node.html">xml_node&lt;Ch&gt;</a> *<a class="code" href="classrapidxml_1_1xml__document.html#a0151c52c82ba79ea0605c2facf39c534">parse_xml_declaration</a>(Ch *&amp;text)</div><div class="line"><a name="l01739"></a><span class="lineno"> 1739</span>&#160;        {</div><div class="line"><a name="l01740"></a><span class="lineno"> 1740</span>&#160;            <span class="comment">// If parsing of declaration is disabled</span></div><div class="line"><a name="l01741"></a><span class="lineno"> 1741</span>&#160;            <span class="keywordflow">if</span> (!(Flags &amp; parse_declaration_node))</div><div class="line"><a name="l01742"></a><span class="lineno"> 1742</span>&#160;            {</div><div class="line"><a name="l01743"></a><span class="lineno"> 1743</span>&#160;                <span class="comment">// Skip until end of declaration</span></div><div class="line"><a name="l01744"></a><span class="lineno"> 1744</span>&#160;                <span class="keywordflow">while</span> (text[0] != Ch(<span class="charliteral">&#39;?&#39;</span>) || text[1] != Ch(<span class="charliteral">&#39;&gt;&#39;</span>))</div><div class="line"><a name="l01745"></a><span class="lineno"> 1745</span>&#160;                {</div><div class="line"><a name="l01746"></a><span class="lineno"> 1746</span>&#160;                    <span class="keywordflow">if</span> (!text[0])</div><div class="line"><a name="l01747"></a><span class="lineno"> 1747</span>&#160;                        <a class="code" href="rapidxml_8h.html#a65f2be309896ffb841997d467c2f4fff">RAPIDXML_PARSE_ERROR</a>(<span class="stringliteral">&quot;unexpected end of data&quot;</span>, text);</div><div class="line"><a name="l01748"></a><span class="lineno"> 1748</span>&#160;                    ++text;</div><div class="line"><a name="l01749"></a><span class="lineno"> 1749</span>&#160;                }</div><div class="line"><a name="l01750"></a><span class="lineno"> 1750</span>&#160;                text += 2;    <span class="comment">// Skip &#39;?&gt;&#39;</span></div><div class="line"><a name="l01751"></a><span class="lineno"> 1751</span>&#160;                <span class="keywordflow">return</span> 0;</div><div class="line"><a name="l01752"></a><span class="lineno"> 1752</span>&#160;            }</div><div class="line"><a name="l01753"></a><span class="lineno"> 1753</span>&#160;</div><div class="line"><a name="l01754"></a><span class="lineno"> 1754</span>&#160;            <span class="comment">// Create declaration</span></div><div class="line"><a name="l01755"></a><span class="lineno"> 1755</span>&#160;            <a class="code" href="classrapidxml_1_1xml__node.html">xml_node&lt;Ch&gt;</a> *declaration = this-&gt;allocate_node(<a class="code" href="namespacerapidxml.html#abb456db38f7efb746c4330eed6072a7cafe4ca44261e5fbedf0eab43131751212">node_declaration</a>);</div><div class="line"><a name="l01756"></a><span class="lineno"> 1756</span>&#160;</div><div class="line"><a name="l01757"></a><span class="lineno"> 1757</span>&#160;            <span class="comment">// Skip whitespace before attributes or ?&gt;</span></div><div class="line"><a name="l01758"></a><span class="lineno"> 1758</span>&#160;            skip&lt;whitespace_pred, Flags&gt;(text);</div><div class="line"><a name="l01759"></a><span class="lineno"> 1759</span>&#160;</div><div class="line"><a name="l01760"></a><span class="lineno"> 1760</span>&#160;            <span class="comment">// Parse declaration attributes</span></div><div class="line"><a name="l01761"></a><span class="lineno"> 1761</span>&#160;            parse_node_attributes&lt;Flags&gt;(text, declaration);</div><div class="line"><a name="l01762"></a><span class="lineno"> 1762</span>&#160;            </div><div class="line"><a name="l01763"></a><span class="lineno"> 1763</span>&#160;            <span class="comment">// Skip ?&gt;</span></div><div class="line"><a name="l01764"></a><span class="lineno"> 1764</span>&#160;            <span class="keywordflow">if</span> (text[0] != Ch(<span class="charliteral">&#39;?&#39;</span>) || text[1] != Ch(<span class="charliteral">&#39;&gt;&#39;</span>))</div><div class="line"><a name="l01765"></a><span class="lineno"> 1765</span>&#160;                <a class="code" href="rapidxml_8h.html#a65f2be309896ffb841997d467c2f4fff">RAPIDXML_PARSE_ERROR</a>(<span class="stringliteral">&quot;expected ?&gt;&quot;</span>, text);</div><div class="line"><a name="l01766"></a><span class="lineno"> 1766</span>&#160;            text += 2;</div><div class="line"><a name="l01767"></a><span class="lineno"> 1767</span>&#160;            </div><div class="line"><a name="l01768"></a><span class="lineno"> 1768</span>&#160;            <span class="keywordflow">return</span> declaration;</div><div class="line"><a name="l01769"></a><span class="lineno"> 1769</span>&#160;        }</div><div class="line"><a name="l01770"></a><span class="lineno"> 1770</span>&#160;</div><div class="line"><a name="l01771"></a><span class="lineno"> 1771</span>&#160;        <span class="comment">// Parse XML comment (&lt;!--...)</span></div><div class="line"><a name="l01772"></a><span class="lineno"> 1772</span>&#160;        <span class="keyword">template</span>&lt;<span class="keywordtype">int</span> Flags&gt;</div><div class="line"><a name="l01773"></a><span class="lineno"><a class="line" href="classrapidxml_1_1xml__document.html#abc287ce83bcb2dc8519e300236004591"> 1773</a></span>&#160;        <a class="code" href="classrapidxml_1_1xml__node.html">xml_node&lt;Ch&gt;</a> *<a class="code" href="classrapidxml_1_1xml__document.html#abc287ce83bcb2dc8519e300236004591">parse_comment</a>(Ch *&amp;text)</div><div class="line"><a name="l01774"></a><span class="lineno"> 1774</span>&#160;        {</div><div class="line"><a name="l01775"></a><span class="lineno"> 1775</span>&#160;            <span class="comment">// If parsing of comments is disabled</span></div><div class="line"><a name="l01776"></a><span class="lineno"> 1776</span>&#160;            <span class="keywordflow">if</span> (!(Flags &amp; parse_comment_nodes))</div><div class="line"><a name="l01777"></a><span class="lineno"> 1777</span>&#160;            {</div><div class="line"><a name="l01778"></a><span class="lineno"> 1778</span>&#160;                <span class="comment">// Skip until end of comment</span></div><div class="line"><a name="l01779"></a><span class="lineno"> 1779</span>&#160;                <span class="keywordflow">while</span> (text[0] != Ch(<span class="charliteral">&#39;-&#39;</span>) || text[1] != Ch(<span class="charliteral">&#39;-&#39;</span>) || text[2] != Ch(<span class="charliteral">&#39;&gt;&#39;</span>))</div><div class="line"><a name="l01780"></a><span class="lineno"> 1780</span>&#160;                {</div><div class="line"><a name="l01781"></a><span class="lineno"> 1781</span>&#160;                    <span class="keywordflow">if</span> (!text[0])</div><div class="line"><a name="l01782"></a><span class="lineno"> 1782</span>&#160;                        <a class="code" href="rapidxml_8h.html#a65f2be309896ffb841997d467c2f4fff">RAPIDXML_PARSE_ERROR</a>(<span class="stringliteral">&quot;unexpected end of data&quot;</span>, text);</div><div class="line"><a name="l01783"></a><span class="lineno"> 1783</span>&#160;                    ++text;</div><div class="line"><a name="l01784"></a><span class="lineno"> 1784</span>&#160;                }</div><div class="line"><a name="l01785"></a><span class="lineno"> 1785</span>&#160;                text += 3;     <span class="comment">// Skip &#39;--&gt;&#39;</span></div><div class="line"><a name="l01786"></a><span class="lineno"> 1786</span>&#160;                <span class="keywordflow">return</span> 0;      <span class="comment">// Do not produce comment node</span></div><div class="line"><a name="l01787"></a><span class="lineno"> 1787</span>&#160;            }</div><div class="line"><a name="l01788"></a><span class="lineno"> 1788</span>&#160;</div><div class="line"><a name="l01789"></a><span class="lineno"> 1789</span>&#160;            <span class="comment">// Remember value start</span></div><div class="line"><a name="l01790"></a><span class="lineno"> 1790</span>&#160;            Ch *value = text;</div><div class="line"><a name="l01791"></a><span class="lineno"> 1791</span>&#160;</div><div class="line"><a name="l01792"></a><span class="lineno"> 1792</span>&#160;            <span class="comment">// Skip until end of comment</span></div><div class="line"><a name="l01793"></a><span class="lineno"> 1793</span>&#160;            <span class="keywordflow">while</span> (text[0] != Ch(<span class="charliteral">&#39;-&#39;</span>) || text[1] != Ch(<span class="charliteral">&#39;-&#39;</span>) || text[2] != Ch(<span class="charliteral">&#39;&gt;&#39;</span>))</div><div class="line"><a name="l01794"></a><span class="lineno"> 1794</span>&#160;            {</div><div class="line"><a name="l01795"></a><span class="lineno"> 1795</span>&#160;                <span class="keywordflow">if</span> (!text[0])</div><div class="line"><a name="l01796"></a><span class="lineno"> 1796</span>&#160;                    <a class="code" href="rapidxml_8h.html#a65f2be309896ffb841997d467c2f4fff">RAPIDXML_PARSE_ERROR</a>(<span class="stringliteral">&quot;unexpected end of data&quot;</span>, text);</div><div class="line"><a name="l01797"></a><span class="lineno"> 1797</span>&#160;                ++text;</div><div class="line"><a name="l01798"></a><span class="lineno"> 1798</span>&#160;            }</div><div class="line"><a name="l01799"></a><span class="lineno"> 1799</span>&#160;</div><div class="line"><a name="l01800"></a><span class="lineno"> 1800</span>&#160;            <span class="comment">// Create comment node</span></div><div class="line"><a name="l01801"></a><span class="lineno"> 1801</span>&#160;            <a class="code" href="classrapidxml_1_1xml__node.html">xml_node&lt;Ch&gt;</a> *comment = this-&gt;allocate_node(<a class="code" href="namespacerapidxml.html#abb456db38f7efb746c4330eed6072a7ca1a695e1384ec3bd4df3eff65ec609a96">node_comment</a>);</div><div class="line"><a name="l01802"></a><span class="lineno"> 1802</span>&#160;            comment-&gt;<a class="code" href="classrapidxml_1_1xml__base.html#a6af65de5e59ac497cd69838f8a89d602">value</a>(value, text - value);</div><div class="line"><a name="l01803"></a><span class="lineno"> 1803</span>&#160;            </div><div class="line"><a name="l01804"></a><span class="lineno"> 1804</span>&#160;            <span class="comment">// Place zero terminator after comment value</span></div><div class="line"><a name="l01805"></a><span class="lineno"> 1805</span>&#160;            <span class="keywordflow">if</span> (!(Flags &amp; parse_no_string_terminators))</div><div class="line"><a name="l01806"></a><span class="lineno"> 1806</span>&#160;                *text = Ch(<span class="charliteral">&#39;\0&#39;</span>);</div><div class="line"><a name="l01807"></a><span class="lineno"> 1807</span>&#160;            </div><div class="line"><a name="l01808"></a><span class="lineno"> 1808</span>&#160;            text += 3;     <span class="comment">// Skip &#39;--&gt;&#39;</span></div><div class="line"><a name="l01809"></a><span class="lineno"> 1809</span>&#160;            <span class="keywordflow">return</span> comment;</div><div class="line"><a name="l01810"></a><span class="lineno"> 1810</span>&#160;        }</div><div class="line"><a name="l01811"></a><span class="lineno"> 1811</span>&#160;</div><div class="line"><a name="l01812"></a><span class="lineno"> 1812</span>&#160;        <span class="comment">// Parse DOCTYPE</span></div><div class="line"><a name="l01813"></a><span class="lineno"> 1813</span>&#160;        <span class="keyword">template</span>&lt;<span class="keywordtype">int</span> Flags&gt;</div><div class="line"><a name="l01814"></a><span class="lineno"><a class="line" href="classrapidxml_1_1xml__document.html#a4c613f3a928f763b4c788422edda5860"> 1814</a></span>&#160;        <a class="code" href="classrapidxml_1_1xml__node.html">xml_node&lt;Ch&gt;</a> *<a class="code" href="classrapidxml_1_1xml__document.html#a4c613f3a928f763b4c788422edda5860">parse_doctype</a>(Ch *&amp;text)</div><div class="line"><a name="l01815"></a><span class="lineno"> 1815</span>&#160;        {</div><div class="line"><a name="l01816"></a><span class="lineno"> 1816</span>&#160;            <span class="comment">// Remember value start</span></div><div class="line"><a name="l01817"></a><span class="lineno"> 1817</span>&#160;            Ch *value = text;</div><div class="line"><a name="l01818"></a><span class="lineno"> 1818</span>&#160;</div><div class="line"><a name="l01819"></a><span class="lineno"> 1819</span>&#160;            <span class="comment">// Skip to &gt;</span></div><div class="line"><a name="l01820"></a><span class="lineno"> 1820</span>&#160;            <span class="keywordflow">while</span> (*text != Ch(<span class="charliteral">&#39;&gt;&#39;</span>))</div><div class="line"><a name="l01821"></a><span class="lineno"> 1821</span>&#160;            {</div><div class="line"><a name="l01822"></a><span class="lineno"> 1822</span>&#160;                <span class="comment">// Determine character type</span></div><div class="line"><a name="l01823"></a><span class="lineno"> 1823</span>&#160;                <span class="keywordflow">switch</span> (*text)</div><div class="line"><a name="l01824"></a><span class="lineno"> 1824</span>&#160;                {</div><div class="line"><a name="l01825"></a><span class="lineno"> 1825</span>&#160;                </div><div class="line"><a name="l01826"></a><span class="lineno"> 1826</span>&#160;                <span class="comment">// If &#39;[&#39; encountered, scan for matching ending &#39;]&#39; using naive algorithm with depth</span></div><div class="line"><a name="l01827"></a><span class="lineno"> 1827</span>&#160;                <span class="comment">// This works for all W3C test files except for 2 most wicked</span></div><div class="line"><a name="l01828"></a><span class="lineno"> 1828</span>&#160;                <span class="keywordflow">case</span> Ch(<span class="charliteral">&#39;[&#39;</span>):</div><div class="line"><a name="l01829"></a><span class="lineno"> 1829</span>&#160;                {</div><div class="line"><a name="l01830"></a><span class="lineno"> 1830</span>&#160;                    ++text;     <span class="comment">// Skip &#39;[&#39;</span></div><div class="line"><a name="l01831"></a><span class="lineno"> 1831</span>&#160;                    <span class="keywordtype">int</span> depth = 1;</div><div class="line"><a name="l01832"></a><span class="lineno"> 1832</span>&#160;                    <span class="keywordflow">while</span> (depth &gt; 0)</div><div class="line"><a name="l01833"></a><span class="lineno"> 1833</span>&#160;                    {</div><div class="line"><a name="l01834"></a><span class="lineno"> 1834</span>&#160;                        <span class="keywordflow">switch</span> (*text)</div><div class="line"><a name="l01835"></a><span class="lineno"> 1835</span>&#160;                        {</div><div class="line"><a name="l01836"></a><span class="lineno"> 1836</span>&#160;                            <span class="keywordflow">case</span> Ch(<span class="charliteral">&#39;[&#39;</span>): ++depth; <span class="keywordflow">break</span>;</div><div class="line"><a name="l01837"></a><span class="lineno"> 1837</span>&#160;                            <span class="keywordflow">case</span> Ch(<span class="charliteral">&#39;]&#39;</span>): --depth; <span class="keywordflow">break</span>;</div><div class="line"><a name="l01838"></a><span class="lineno"> 1838</span>&#160;                            <span class="keywordflow">case</span> 0: <a class="code" href="rapidxml_8h.html#a65f2be309896ffb841997d467c2f4fff">RAPIDXML_PARSE_ERROR</a>(<span class="stringliteral">&quot;unexpected end of data&quot;</span>, text);</div><div class="line"><a name="l01839"></a><span class="lineno"> 1839</span>&#160;                        }</div><div class="line"><a name="l01840"></a><span class="lineno"> 1840</span>&#160;                        ++text;</div><div class="line"><a name="l01841"></a><span class="lineno"> 1841</span>&#160;                    }</div><div class="line"><a name="l01842"></a><span class="lineno"> 1842</span>&#160;                    <span class="keywordflow">break</span>;</div><div class="line"><a name="l01843"></a><span class="lineno"> 1843</span>&#160;                }</div><div class="line"><a name="l01844"></a><span class="lineno"> 1844</span>&#160;                </div><div class="line"><a name="l01845"></a><span class="lineno"> 1845</span>&#160;                <span class="comment">// Error on end of text</span></div><div class="line"><a name="l01846"></a><span class="lineno"> 1846</span>&#160;                <span class="keywordflow">case</span> Ch(<span class="charliteral">&#39;\0&#39;</span>):</div><div class="line"><a name="l01847"></a><span class="lineno"> 1847</span>&#160;                    <a class="code" href="rapidxml_8h.html#a65f2be309896ffb841997d467c2f4fff">RAPIDXML_PARSE_ERROR</a>(<span class="stringliteral">&quot;unexpected end of data&quot;</span>, text);</div><div class="line"><a name="l01848"></a><span class="lineno"> 1848</span>&#160;                </div><div class="line"><a name="l01849"></a><span class="lineno"> 1849</span>&#160;                <span class="comment">// Other character, skip it</span></div><div class="line"><a name="l01850"></a><span class="lineno"> 1850</span>&#160;                <span class="keywordflow">default</span>:</div><div class="line"><a name="l01851"></a><span class="lineno"> 1851</span>&#160;                    ++text;</div><div class="line"><a name="l01852"></a><span class="lineno"> 1852</span>&#160;</div><div class="line"><a name="l01853"></a><span class="lineno"> 1853</span>&#160;                }</div><div class="line"><a name="l01854"></a><span class="lineno"> 1854</span>&#160;            }</div><div class="line"><a name="l01855"></a><span class="lineno"> 1855</span>&#160;            </div><div class="line"><a name="l01856"></a><span class="lineno"> 1856</span>&#160;            <span class="comment">// If DOCTYPE nodes enabled</span></div><div class="line"><a name="l01857"></a><span class="lineno"> 1857</span>&#160;            <span class="keywordflow">if</span> (Flags &amp; parse_doctype_node)</div><div class="line"><a name="l01858"></a><span class="lineno"> 1858</span>&#160;            {</div><div class="line"><a name="l01859"></a><span class="lineno"> 1859</span>&#160;                <span class="comment">// Create a new doctype node</span></div><div class="line"><a name="l01860"></a><span class="lineno"> 1860</span>&#160;                <a class="code" href="classrapidxml_1_1xml__node.html">xml_node&lt;Ch&gt;</a> *doctype = this-&gt;allocate_node(<a class="code" href="namespacerapidxml.html#abb456db38f7efb746c4330eed6072a7cadf5002f2efabe231bed01d16f08f832c">node_doctype</a>);</div><div class="line"><a name="l01861"></a><span class="lineno"> 1861</span>&#160;                doctype-&gt;<a class="code" href="classrapidxml_1_1xml__base.html#a6af65de5e59ac497cd69838f8a89d602">value</a>(value, text - value);</div><div class="line"><a name="l01862"></a><span class="lineno"> 1862</span>&#160;                </div><div class="line"><a name="l01863"></a><span class="lineno"> 1863</span>&#160;                <span class="comment">// Place zero terminator after value</span></div><div class="line"><a name="l01864"></a><span class="lineno"> 1864</span>&#160;                <span class="keywordflow">if</span> (!(Flags &amp; parse_no_string_terminators))</div><div class="line"><a name="l01865"></a><span class="lineno"> 1865</span>&#160;                    *text = Ch(<span class="charliteral">&#39;\0&#39;</span>);</div><div class="line"><a name="l01866"></a><span class="lineno"> 1866</span>&#160;</div><div class="line"><a name="l01867"></a><span class="lineno"> 1867</span>&#160;                text += 1;      <span class="comment">// skip &#39;&gt;&#39;</span></div><div class="line"><a name="l01868"></a><span class="lineno"> 1868</span>&#160;                <span class="keywordflow">return</span> doctype;</div><div class="line"><a name="l01869"></a><span class="lineno"> 1869</span>&#160;            }</div><div class="line"><a name="l01870"></a><span class="lineno"> 1870</span>&#160;            <span class="keywordflow">else</span></div><div class="line"><a name="l01871"></a><span class="lineno"> 1871</span>&#160;            {</div><div class="line"><a name="l01872"></a><span class="lineno"> 1872</span>&#160;                text += 1;      <span class="comment">// skip &#39;&gt;&#39;</span></div><div class="line"><a name="l01873"></a><span class="lineno"> 1873</span>&#160;                <span class="keywordflow">return</span> 0;</div><div class="line"><a name="l01874"></a><span class="lineno"> 1874</span>&#160;            }</div><div class="line"><a name="l01875"></a><span class="lineno"> 1875</span>&#160;</div><div class="line"><a name="l01876"></a><span class="lineno"> 1876</span>&#160;        }</div><div class="line"><a name="l01877"></a><span class="lineno"> 1877</span>&#160;</div><div class="line"><a name="l01878"></a><span class="lineno"> 1878</span>&#160;        <span class="comment">// Parse PI</span></div><div class="line"><a name="l01879"></a><span class="lineno"> 1879</span>&#160;        <span class="keyword">template</span>&lt;<span class="keywordtype">int</span> Flags&gt;</div><div class="line"><a name="l01880"></a><span class="lineno"><a class="line" href="classrapidxml_1_1xml__document.html#a09e12a4233a07387d4b5a5ad239388aa"> 1880</a></span>&#160;        <a class="code" href="classrapidxml_1_1xml__node.html">xml_node&lt;Ch&gt;</a> *<a class="code" href="classrapidxml_1_1xml__document.html#a09e12a4233a07387d4b5a5ad239388aa">parse_pi</a>(Ch *&amp;text)</div><div class="line"><a name="l01881"></a><span class="lineno"> 1881</span>&#160;        {</div><div class="line"><a name="l01882"></a><span class="lineno"> 1882</span>&#160;            <span class="comment">// If creation of PI nodes is enabled</span></div><div class="line"><a name="l01883"></a><span class="lineno"> 1883</span>&#160;            <span class="keywordflow">if</span> (Flags &amp; parse_pi_nodes)</div><div class="line"><a name="l01884"></a><span class="lineno"> 1884</span>&#160;            {</div><div class="line"><a name="l01885"></a><span class="lineno"> 1885</span>&#160;                <span class="comment">// Create pi node</span></div><div class="line"><a name="l01886"></a><span class="lineno"> 1886</span>&#160;                <a class="code" href="classrapidxml_1_1xml__node.html">xml_node&lt;Ch&gt;</a> *pi = this-&gt;allocate_node(<a class="code" href="namespacerapidxml.html#abb456db38f7efb746c4330eed6072a7caeb73b472e77347b9aa89525f16493b87">node_pi</a>);</div><div class="line"><a name="l01887"></a><span class="lineno"> 1887</span>&#160;</div><div class="line"><a name="l01888"></a><span class="lineno"> 1888</span>&#160;                <span class="comment">// Extract PI target name</span></div><div class="line"><a name="l01889"></a><span class="lineno"> 1889</span>&#160;                Ch *name = text;</div><div class="line"><a name="l01890"></a><span class="lineno"> 1890</span>&#160;                skip&lt;node_name_pred, Flags&gt;(text);</div><div class="line"><a name="l01891"></a><span class="lineno"> 1891</span>&#160;                <span class="keywordflow">if</span> (text == name)</div><div class="line"><a name="l01892"></a><span class="lineno"> 1892</span>&#160;                    <a class="code" href="rapidxml_8h.html#a65f2be309896ffb841997d467c2f4fff">RAPIDXML_PARSE_ERROR</a>(<span class="stringliteral">&quot;expected PI target&quot;</span>, text);</div><div class="line"><a name="l01893"></a><span class="lineno"> 1893</span>&#160;                pi-&gt;<a class="code" href="classrapidxml_1_1xml__base.html#aef8ae147fbee59209f714274afc80dc4">name</a>(name, text - name);</div><div class="line"><a name="l01894"></a><span class="lineno"> 1894</span>&#160;                </div><div class="line"><a name="l01895"></a><span class="lineno"> 1895</span>&#160;                <span class="comment">// Skip whitespace between pi target and pi</span></div><div class="line"><a name="l01896"></a><span class="lineno"> 1896</span>&#160;                skip&lt;whitespace_pred, Flags&gt;(text);</div><div class="line"><a name="l01897"></a><span class="lineno"> 1897</span>&#160;</div><div class="line"><a name="l01898"></a><span class="lineno"> 1898</span>&#160;                <span class="comment">// Remember start of pi</span></div><div class="line"><a name="l01899"></a><span class="lineno"> 1899</span>&#160;                Ch *value = text;</div><div class="line"><a name="l01900"></a><span class="lineno"> 1900</span>&#160;                </div><div class="line"><a name="l01901"></a><span class="lineno"> 1901</span>&#160;                <span class="comment">// Skip to &#39;?&gt;&#39;</span></div><div class="line"><a name="l01902"></a><span class="lineno"> 1902</span>&#160;                <span class="keywordflow">while</span> (text[0] != Ch(<span class="charliteral">&#39;?&#39;</span>) || text[1] != Ch(<span class="charliteral">&#39;&gt;&#39;</span>))</div><div class="line"><a name="l01903"></a><span class="lineno"> 1903</span>&#160;                {</div><div class="line"><a name="l01904"></a><span class="lineno"> 1904</span>&#160;                    <span class="keywordflow">if</span> (*text == Ch(<span class="charliteral">&#39;\0&#39;</span>))</div><div class="line"><a name="l01905"></a><span class="lineno"> 1905</span>&#160;                        <a class="code" href="rapidxml_8h.html#a65f2be309896ffb841997d467c2f4fff">RAPIDXML_PARSE_ERROR</a>(<span class="stringliteral">&quot;unexpected end of data&quot;</span>, text);</div><div class="line"><a name="l01906"></a><span class="lineno"> 1906</span>&#160;                    ++text;</div><div class="line"><a name="l01907"></a><span class="lineno"> 1907</span>&#160;                }</div><div class="line"><a name="l01908"></a><span class="lineno"> 1908</span>&#160;</div><div class="line"><a name="l01909"></a><span class="lineno"> 1909</span>&#160;                <span class="comment">// Set pi value (verbatim, no entity expansion or whitespace normalization)</span></div><div class="line"><a name="l01910"></a><span class="lineno"> 1910</span>&#160;                pi-&gt;<a class="code" href="classrapidxml_1_1xml__base.html#a6af65de5e59ac497cd69838f8a89d602">value</a>(value, text - value);     </div><div class="line"><a name="l01911"></a><span class="lineno"> 1911</span>&#160;                </div><div class="line"><a name="l01912"></a><span class="lineno"> 1912</span>&#160;                <span class="comment">// Place zero terminator after name and value</span></div><div class="line"><a name="l01913"></a><span class="lineno"> 1913</span>&#160;                <span class="keywordflow">if</span> (!(Flags &amp; parse_no_string_terminators))</div><div class="line"><a name="l01914"></a><span class="lineno"> 1914</span>&#160;                {</div><div class="line"><a name="l01915"></a><span class="lineno"> 1915</span>&#160;                    pi-&gt;<a class="code" href="classrapidxml_1_1xml__base.html#aef8ae147fbee59209f714274afc80dc4">name</a>()[pi-&gt;<a class="code" href="classrapidxml_1_1xml__base.html#a20c8ffbe0c7a0b4231681ab8b99330a4">name_size</a>()] = Ch(<span class="charliteral">&#39;\0&#39;</span>);</div><div class="line"><a name="l01916"></a><span class="lineno"> 1916</span>&#160;                    pi-&gt;<a class="code" href="classrapidxml_1_1xml__base.html#a6af65de5e59ac497cd69838f8a89d602">value</a>()[pi-&gt;<a class="code" href="classrapidxml_1_1xml__base.html#a2eb123d471b1567fa4832b6ee2b75493">value_size</a>()] = Ch(<span class="charliteral">&#39;\0&#39;</span>);</div><div class="line"><a name="l01917"></a><span class="lineno"> 1917</span>&#160;                }</div><div class="line"><a name="l01918"></a><span class="lineno"> 1918</span>&#160;                </div><div class="line"><a name="l01919"></a><span class="lineno"> 1919</span>&#160;                text += 2;                          <span class="comment">// Skip &#39;?&gt;&#39;</span></div><div class="line"><a name="l01920"></a><span class="lineno"> 1920</span>&#160;                <span class="keywordflow">return</span> pi;</div><div class="line"><a name="l01921"></a><span class="lineno"> 1921</span>&#160;            }</div><div class="line"><a name="l01922"></a><span class="lineno"> 1922</span>&#160;            <span class="keywordflow">else</span></div><div class="line"><a name="l01923"></a><span class="lineno"> 1923</span>&#160;            {</div><div class="line"><a name="l01924"></a><span class="lineno"> 1924</span>&#160;                <span class="comment">// Skip to &#39;?&gt;&#39;</span></div><div class="line"><a name="l01925"></a><span class="lineno"> 1925</span>&#160;                <span class="keywordflow">while</span> (text[0] != Ch(<span class="charliteral">&#39;?&#39;</span>) || text[1] != Ch(<span class="charliteral">&#39;&gt;&#39;</span>))</div><div class="line"><a name="l01926"></a><span class="lineno"> 1926</span>&#160;                {</div><div class="line"><a name="l01927"></a><span class="lineno"> 1927</span>&#160;                    <span class="keywordflow">if</span> (*text == Ch(<span class="charliteral">&#39;\0&#39;</span>))</div><div class="line"><a name="l01928"></a><span class="lineno"> 1928</span>&#160;                        <a class="code" href="rapidxml_8h.html#a65f2be309896ffb841997d467c2f4fff">RAPIDXML_PARSE_ERROR</a>(<span class="stringliteral">&quot;unexpected end of data&quot;</span>, text);</div><div class="line"><a name="l01929"></a><span class="lineno"> 1929</span>&#160;                    ++text;</div><div class="line"><a name="l01930"></a><span class="lineno"> 1930</span>&#160;                }</div><div class="line"><a name="l01931"></a><span class="lineno"> 1931</span>&#160;                text += 2;    <span class="comment">// Skip &#39;?&gt;&#39;</span></div><div class="line"><a name="l01932"></a><span class="lineno"> 1932</span>&#160;                <span class="keywordflow">return</span> 0;</div><div class="line"><a name="l01933"></a><span class="lineno"> 1933</span>&#160;            }</div><div class="line"><a name="l01934"></a><span class="lineno"> 1934</span>&#160;        }</div><div class="line"><a name="l01935"></a><span class="lineno"> 1935</span>&#160;</div><div class="line"><a name="l01936"></a><span class="lineno"> 1936</span>&#160;        <span class="comment">// Parse and append data</span></div><div class="line"><a name="l01937"></a><span class="lineno"> 1937</span>&#160;        <span class="comment">// Return character that ends data.</span></div><div class="line"><a name="l01938"></a><span class="lineno"> 1938</span>&#160;        <span class="comment">// This is necessary because this character might have been overwritten by a terminating 0</span></div><div class="line"><a name="l01939"></a><span class="lineno"> 1939</span>&#160;        <span class="keyword">template</span>&lt;<span class="keywordtype">int</span> Flags&gt;</div><div class="line"><a name="l01940"></a><span class="lineno"><a class="line" href="classrapidxml_1_1xml__document.html#aec6cedf45179b6378c670bc3ea509e61"> 1940</a></span>&#160;        Ch <a class="code" href="classrapidxml_1_1xml__document.html#aec6cedf45179b6378c670bc3ea509e61">parse_and_append_data</a>(<a class="code" href="classrapidxml_1_1xml__node.html">xml_node&lt;Ch&gt;</a> *node, Ch *&amp;text, Ch *contents_start)</div><div class="line"><a name="l01941"></a><span class="lineno"> 1941</span>&#160;        {</div><div class="line"><a name="l01942"></a><span class="lineno"> 1942</span>&#160;            <span class="comment">// Backup to contents start if whitespace trimming is disabled</span></div><div class="line"><a name="l01943"></a><span class="lineno"> 1943</span>&#160;            <span class="keywordflow">if</span> (!(Flags &amp; parse_trim_whitespace))</div><div class="line"><a name="l01944"></a><span class="lineno"> 1944</span>&#160;                text = contents_start;     </div><div class="line"><a name="l01945"></a><span class="lineno"> 1945</span>&#160;            </div><div class="line"><a name="l01946"></a><span class="lineno"> 1946</span>&#160;            <span class="comment">// Skip until end of data</span></div><div class="line"><a name="l01947"></a><span class="lineno"> 1947</span>&#160;            Ch *value = text, *end;</div><div class="line"><a name="l01948"></a><span class="lineno"> 1948</span>&#160;            <span class="keywordflow">if</span> (Flags &amp; parse_normalize_whitespace)</div><div class="line"><a name="l01949"></a><span class="lineno"> 1949</span>&#160;                end = skip_and_expand_character_refs&lt;text_pred, text_pure_with_ws_pred, Flags&gt;(text);   </div><div class="line"><a name="l01950"></a><span class="lineno"> 1950</span>&#160;            <span class="keywordflow">else</span></div><div class="line"><a name="l01951"></a><span class="lineno"> 1951</span>&#160;                end = skip_and_expand_character_refs&lt;text_pred, text_pure_no_ws_pred, Flags&gt;(text);</div><div class="line"><a name="l01952"></a><span class="lineno"> 1952</span>&#160;</div><div class="line"><a name="l01953"></a><span class="lineno"> 1953</span>&#160;            <span class="comment">// Trim trailing whitespace if flag is set; leading was already trimmed by whitespace skip after &gt;</span></div><div class="line"><a name="l01954"></a><span class="lineno"> 1954</span>&#160;            <span class="keywordflow">if</span> (Flags &amp; parse_trim_whitespace)</div><div class="line"><a name="l01955"></a><span class="lineno"> 1955</span>&#160;            {</div><div class="line"><a name="l01956"></a><span class="lineno"> 1956</span>&#160;                <span class="keywordflow">if</span> (Flags &amp; parse_normalize_whitespace)</div><div class="line"><a name="l01957"></a><span class="lineno"> 1957</span>&#160;                {</div><div class="line"><a name="l01958"></a><span class="lineno"> 1958</span>&#160;                    <span class="comment">// Whitespace is already condensed to single space characters by skipping function, so just trim 1 char off the end</span></div><div class="line"><a name="l01959"></a><span class="lineno"> 1959</span>&#160;                    <span class="keywordflow">if</span> (*(end - 1) == Ch(<span class="charliteral">&#39; &#39;</span>))</div><div class="line"><a name="l01960"></a><span class="lineno"> 1960</span>&#160;                        --end;</div><div class="line"><a name="l01961"></a><span class="lineno"> 1961</span>&#160;                }</div><div class="line"><a name="l01962"></a><span class="lineno"> 1962</span>&#160;                <span class="keywordflow">else</span></div><div class="line"><a name="l01963"></a><span class="lineno"> 1963</span>&#160;                {</div><div class="line"><a name="l01964"></a><span class="lineno"> 1964</span>&#160;                    <span class="comment">// Backup until non-whitespace character is found</span></div><div class="line"><a name="l01965"></a><span class="lineno"> 1965</span>&#160;                    <span class="keywordflow">while</span> (whitespace_pred::test(*(end - 1)))</div><div class="line"><a name="l01966"></a><span class="lineno"> 1966</span>&#160;                        --end;</div><div class="line"><a name="l01967"></a><span class="lineno"> 1967</span>&#160;                }</div><div class="line"><a name="l01968"></a><span class="lineno"> 1968</span>&#160;            }</div><div class="line"><a name="l01969"></a><span class="lineno"> 1969</span>&#160;            </div><div class="line"><a name="l01970"></a><span class="lineno"> 1970</span>&#160;            <span class="comment">// If characters are still left between end and value (this test is only necessary if normalization is enabled)</span></div><div class="line"><a name="l01971"></a><span class="lineno"> 1971</span>&#160;            <span class="comment">// Create new data node</span></div><div class="line"><a name="l01972"></a><span class="lineno"> 1972</span>&#160;            <span class="keywordflow">if</span> (!(Flags &amp; parse_no_data_nodes))</div><div class="line"><a name="l01973"></a><span class="lineno"> 1973</span>&#160;            {</div><div class="line"><a name="l01974"></a><span class="lineno"> 1974</span>&#160;                <a class="code" href="classrapidxml_1_1xml__node.html">xml_node&lt;Ch&gt;</a> *data = this-&gt;allocate_node(<a class="code" href="namespacerapidxml.html#abb456db38f7efb746c4330eed6072a7ca9d669d8e1f4ba9c7eeada4c14a11ad1d">node_data</a>);</div><div class="line"><a name="l01975"></a><span class="lineno"> 1975</span>&#160;                data-&gt;<a class="code" href="classrapidxml_1_1xml__base.html#a6af65de5e59ac497cd69838f8a89d602">value</a>(value, end - value);</div><div class="line"><a name="l01976"></a><span class="lineno"> 1976</span>&#160;                node-&gt;<a class="code" href="classrapidxml_1_1xml__node.html#a8696d098ecc9c4d2a646b43e91d58e31">append_node</a>(data);</div><div class="line"><a name="l01977"></a><span class="lineno"> 1977</span>&#160;            }</div><div class="line"><a name="l01978"></a><span class="lineno"> 1978</span>&#160;</div><div class="line"><a name="l01979"></a><span class="lineno"> 1979</span>&#160;            <span class="comment">// Add data to parent node if no data exists yet</span></div><div class="line"><a name="l01980"></a><span class="lineno"> 1980</span>&#160;            <span class="keywordflow">if</span> (!(Flags &amp; parse_no_element_values)) </div><div class="line"><a name="l01981"></a><span class="lineno"> 1981</span>&#160;                <span class="keywordflow">if</span> (*node-&gt;<a class="code" href="classrapidxml_1_1xml__base.html#a6af65de5e59ac497cd69838f8a89d602">value</a>() == Ch(<span class="charliteral">&#39;\0&#39;</span>))</div><div class="line"><a name="l01982"></a><span class="lineno"> 1982</span>&#160;                    node-&gt;<a class="code" href="classrapidxml_1_1xml__base.html#a6af65de5e59ac497cd69838f8a89d602">value</a>(value, end - value);</div><div class="line"><a name="l01983"></a><span class="lineno"> 1983</span>&#160;</div><div class="line"><a name="l01984"></a><span class="lineno"> 1984</span>&#160;            <span class="comment">// Place zero terminator after value</span></div><div class="line"><a name="l01985"></a><span class="lineno"> 1985</span>&#160;            <span class="keywordflow">if</span> (!(Flags &amp; parse_no_string_terminators))</div><div class="line"><a name="l01986"></a><span class="lineno"> 1986</span>&#160;            {</div><div class="line"><a name="l01987"></a><span class="lineno"> 1987</span>&#160;                Ch ch = *text;</div><div class="line"><a name="l01988"></a><span class="lineno"> 1988</span>&#160;                *end = Ch(<span class="charliteral">&#39;\0&#39;</span>);</div><div class="line"><a name="l01989"></a><span class="lineno"> 1989</span>&#160;                <span class="keywordflow">return</span> ch;      <span class="comment">// Return character that ends data; this is required because zero terminator overwritten it</span></div><div class="line"><a name="l01990"></a><span class="lineno"> 1990</span>&#160;            }</div><div class="line"><a name="l01991"></a><span class="lineno"> 1991</span>&#160;</div><div class="line"><a name="l01992"></a><span class="lineno"> 1992</span>&#160;            <span class="comment">// Return character that ends data</span></div><div class="line"><a name="l01993"></a><span class="lineno"> 1993</span>&#160;            <span class="keywordflow">return</span> *text;</div><div class="line"><a name="l01994"></a><span class="lineno"> 1994</span>&#160;        }</div><div class="line"><a name="l01995"></a><span class="lineno"> 1995</span>&#160;</div><div class="line"><a name="l01996"></a><span class="lineno"> 1996</span>&#160;        <span class="comment">// Parse CDATA</span></div><div class="line"><a name="l01997"></a><span class="lineno"> 1997</span>&#160;        <span class="keyword">template</span>&lt;<span class="keywordtype">int</span> Flags&gt;</div><div class="line"><a name="l01998"></a><span class="lineno"><a class="line" href="classrapidxml_1_1xml__document.html#ab94daeb25e8a1609e31210a45b2afa6c"> 1998</a></span>&#160;        <a class="code" href="classrapidxml_1_1xml__node.html">xml_node&lt;Ch&gt;</a> *<a class="code" href="classrapidxml_1_1xml__document.html#ab94daeb25e8a1609e31210a45b2afa6c">parse_cdata</a>(Ch *&amp;text)</div><div class="line"><a name="l01999"></a><span class="lineno"> 1999</span>&#160;        {</div><div class="line"><a name="l02000"></a><span class="lineno"> 2000</span>&#160;            <span class="comment">// If CDATA is disabled</span></div><div class="line"><a name="l02001"></a><span class="lineno"> 2001</span>&#160;            <span class="keywordflow">if</span> (Flags &amp; parse_no_data_nodes)</div><div class="line"><a name="l02002"></a><span class="lineno"> 2002</span>&#160;            {</div><div class="line"><a name="l02003"></a><span class="lineno"> 2003</span>&#160;                <span class="comment">// Skip until end of cdata</span></div><div class="line"><a name="l02004"></a><span class="lineno"> 2004</span>&#160;                <span class="keywordflow">while</span> (text[0] != Ch(<span class="charliteral">&#39;]&#39;</span>) || text[1] != Ch(<span class="charliteral">&#39;]&#39;</span>) || text[2] != Ch(<span class="charliteral">&#39;&gt;&#39;</span>))</div><div class="line"><a name="l02005"></a><span class="lineno"> 2005</span>&#160;                {</div><div class="line"><a name="l02006"></a><span class="lineno"> 2006</span>&#160;                    <span class="keywordflow">if</span> (!text[0])</div><div class="line"><a name="l02007"></a><span class="lineno"> 2007</span>&#160;                        <a class="code" href="rapidxml_8h.html#a65f2be309896ffb841997d467c2f4fff">RAPIDXML_PARSE_ERROR</a>(<span class="stringliteral">&quot;unexpected end of data&quot;</span>, text);</div><div class="line"><a name="l02008"></a><span class="lineno"> 2008</span>&#160;                    ++text;</div><div class="line"><a name="l02009"></a><span class="lineno"> 2009</span>&#160;                }</div><div class="line"><a name="l02010"></a><span class="lineno"> 2010</span>&#160;                text += 3;      <span class="comment">// Skip ]]&gt;</span></div><div class="line"><a name="l02011"></a><span class="lineno"> 2011</span>&#160;                <span class="keywordflow">return</span> 0;       <span class="comment">// Do not produce CDATA node</span></div><div class="line"><a name="l02012"></a><span class="lineno"> 2012</span>&#160;            }</div><div class="line"><a name="l02013"></a><span class="lineno"> 2013</span>&#160;</div><div class="line"><a name="l02014"></a><span class="lineno"> 2014</span>&#160;            <span class="comment">// Skip until end of cdata</span></div><div class="line"><a name="l02015"></a><span class="lineno"> 2015</span>&#160;            Ch *value = text;</div><div class="line"><a name="l02016"></a><span class="lineno"> 2016</span>&#160;            <span class="keywordflow">while</span> (text[0] != Ch(<span class="charliteral">&#39;]&#39;</span>) || text[1] != Ch(<span class="charliteral">&#39;]&#39;</span>) || text[2] != Ch(<span class="charliteral">&#39;&gt;&#39;</span>))</div><div class="line"><a name="l02017"></a><span class="lineno"> 2017</span>&#160;            {</div><div class="line"><a name="l02018"></a><span class="lineno"> 2018</span>&#160;                <span class="keywordflow">if</span> (!text[0])</div><div class="line"><a name="l02019"></a><span class="lineno"> 2019</span>&#160;                    <a class="code" href="rapidxml_8h.html#a65f2be309896ffb841997d467c2f4fff">RAPIDXML_PARSE_ERROR</a>(<span class="stringliteral">&quot;unexpected end of data&quot;</span>, text);</div><div class="line"><a name="l02020"></a><span class="lineno"> 2020</span>&#160;                ++text;</div><div class="line"><a name="l02021"></a><span class="lineno"> 2021</span>&#160;            }</div><div class="line"><a name="l02022"></a><span class="lineno"> 2022</span>&#160;</div><div class="line"><a name="l02023"></a><span class="lineno"> 2023</span>&#160;            <span class="comment">// Create new cdata node</span></div><div class="line"><a name="l02024"></a><span class="lineno"> 2024</span>&#160;            <a class="code" href="classrapidxml_1_1xml__node.html">xml_node&lt;Ch&gt;</a> *cdata = this-&gt;allocate_node(<a class="code" href="namespacerapidxml.html#abb456db38f7efb746c4330eed6072a7caccf0b363d3876a3f83ff9b1bcdaaa536">node_cdata</a>);</div><div class="line"><a name="l02025"></a><span class="lineno"> 2025</span>&#160;            cdata-&gt;<a class="code" href="classrapidxml_1_1xml__base.html#a6af65de5e59ac497cd69838f8a89d602">value</a>(value, text - value);</div><div class="line"><a name="l02026"></a><span class="lineno"> 2026</span>&#160;</div><div class="line"><a name="l02027"></a><span class="lineno"> 2027</span>&#160;            <span class="comment">// Place zero terminator after value</span></div><div class="line"><a name="l02028"></a><span class="lineno"> 2028</span>&#160;            <span class="keywordflow">if</span> (!(Flags &amp; parse_no_string_terminators))</div><div class="line"><a name="l02029"></a><span class="lineno"> 2029</span>&#160;                *text = Ch(<span class="charliteral">&#39;\0&#39;</span>);</div><div class="line"><a name="l02030"></a><span class="lineno"> 2030</span>&#160;</div><div class="line"><a name="l02031"></a><span class="lineno"> 2031</span>&#160;            text += 3;      <span class="comment">// Skip ]]&gt;</span></div><div class="line"><a name="l02032"></a><span class="lineno"> 2032</span>&#160;            <span class="keywordflow">return</span> cdata;</div><div class="line"><a name="l02033"></a><span class="lineno"> 2033</span>&#160;        }</div><div class="line"><a name="l02034"></a><span class="lineno"> 2034</span>&#160;        </div><div class="line"><a name="l02035"></a><span class="lineno"> 2035</span>&#160;        <span class="comment">// Parse element node</span></div><div class="line"><a name="l02036"></a><span class="lineno"> 2036</span>&#160;        <span class="keyword">template</span>&lt;<span class="keywordtype">int</span> Flags&gt;</div><div class="line"><a name="l02037"></a><span class="lineno"><a class="line" href="classrapidxml_1_1xml__document.html#aea385acd096ab200d63a777d53435ada"> 2037</a></span>&#160;        <a class="code" href="classrapidxml_1_1xml__node.html">xml_node&lt;Ch&gt;</a> *<a class="code" href="classrapidxml_1_1xml__document.html#aea385acd096ab200d63a777d53435ada">parse_element</a>(Ch *&amp;text)</div><div class="line"><a name="l02038"></a><span class="lineno"> 2038</span>&#160;        {</div><div class="line"><a name="l02039"></a><span class="lineno"> 2039</span>&#160;            <span class="comment">// Create element node</span></div><div class="line"><a name="l02040"></a><span class="lineno"> 2040</span>&#160;            <a class="code" href="classrapidxml_1_1xml__node.html">xml_node&lt;Ch&gt;</a> *element = this-&gt;allocate_node(<a class="code" href="namespacerapidxml.html#abb456db38f7efb746c4330eed6072a7ca89cbeb4d28046326e4ee953d3c4047ff">node_element</a>);</div><div class="line"><a name="l02041"></a><span class="lineno"> 2041</span>&#160;</div><div class="line"><a name="l02042"></a><span class="lineno"> 2042</span>&#160;            <span class="comment">// Extract element name</span></div><div class="line"><a name="l02043"></a><span class="lineno"> 2043</span>&#160;            Ch *name = text;</div><div class="line"><a name="l02044"></a><span class="lineno"> 2044</span>&#160;            skip&lt;node_name_pred, Flags&gt;(text);</div><div class="line"><a name="l02045"></a><span class="lineno"> 2045</span>&#160;            <span class="keywordflow">if</span> (text == name)</div><div class="line"><a name="l02046"></a><span class="lineno"> 2046</span>&#160;                <a class="code" href="rapidxml_8h.html#a65f2be309896ffb841997d467c2f4fff">RAPIDXML_PARSE_ERROR</a>(<span class="stringliteral">&quot;expected element name&quot;</span>, text);</div><div class="line"><a name="l02047"></a><span class="lineno"> 2047</span>&#160;            element-&gt;<a class="code" href="classrapidxml_1_1xml__base.html#aef8ae147fbee59209f714274afc80dc4">name</a>(name, text - name);</div><div class="line"><a name="l02048"></a><span class="lineno"> 2048</span>&#160;            </div><div class="line"><a name="l02049"></a><span class="lineno"> 2049</span>&#160;            <span class="comment">// Skip whitespace between element name and attributes or &gt;</span></div><div class="line"><a name="l02050"></a><span class="lineno"> 2050</span>&#160;            skip&lt;whitespace_pred, Flags&gt;(text);</div><div class="line"><a name="l02051"></a><span class="lineno"> 2051</span>&#160;</div><div class="line"><a name="l02052"></a><span class="lineno"> 2052</span>&#160;            <span class="comment">// Parse attributes, if any</span></div><div class="line"><a name="l02053"></a><span class="lineno"> 2053</span>&#160;            parse_node_attributes&lt;Flags&gt;(text, element);</div><div class="line"><a name="l02054"></a><span class="lineno"> 2054</span>&#160;</div><div class="line"><a name="l02055"></a><span class="lineno"> 2055</span>&#160;            <span class="comment">// Determine ending type</span></div><div class="line"><a name="l02056"></a><span class="lineno"> 2056</span>&#160;            <span class="keywordflow">if</span> (*text == Ch(<span class="charliteral">&#39;&gt;&#39;</span>))</div><div class="line"><a name="l02057"></a><span class="lineno"> 2057</span>&#160;            {</div><div class="line"><a name="l02058"></a><span class="lineno"> 2058</span>&#160;                ++text;</div><div class="line"><a name="l02059"></a><span class="lineno"> 2059</span>&#160;                parse_node_contents&lt;Flags&gt;(text, element);</div><div class="line"><a name="l02060"></a><span class="lineno"> 2060</span>&#160;            }</div><div class="line"><a name="l02061"></a><span class="lineno"> 2061</span>&#160;            <span class="keywordflow">else</span> <span class="keywordflow">if</span> (*text == Ch(<span class="charliteral">&#39;/&#39;</span>))</div><div class="line"><a name="l02062"></a><span class="lineno"> 2062</span>&#160;            {</div><div class="line"><a name="l02063"></a><span class="lineno"> 2063</span>&#160;                ++text;</div><div class="line"><a name="l02064"></a><span class="lineno"> 2064</span>&#160;                <span class="keywordflow">if</span> (*text != Ch(<span class="charliteral">&#39;&gt;&#39;</span>))</div><div class="line"><a name="l02065"></a><span class="lineno"> 2065</span>&#160;                    <a class="code" href="rapidxml_8h.html#a65f2be309896ffb841997d467c2f4fff">RAPIDXML_PARSE_ERROR</a>(<span class="stringliteral">&quot;expected &gt;&quot;</span>, text);</div><div class="line"><a name="l02066"></a><span class="lineno"> 2066</span>&#160;                ++text;</div><div class="line"><a name="l02067"></a><span class="lineno"> 2067</span>&#160;            }</div><div class="line"><a name="l02068"></a><span class="lineno"> 2068</span>&#160;            <span class="keywordflow">else</span></div><div class="line"><a name="l02069"></a><span class="lineno"> 2069</span>&#160;                <a class="code" href="rapidxml_8h.html#a65f2be309896ffb841997d467c2f4fff">RAPIDXML_PARSE_ERROR</a>(<span class="stringliteral">&quot;expected &gt;&quot;</span>, text);</div><div class="line"><a name="l02070"></a><span class="lineno"> 2070</span>&#160;</div><div class="line"><a name="l02071"></a><span class="lineno"> 2071</span>&#160;            <span class="comment">// Place zero terminator after name</span></div><div class="line"><a name="l02072"></a><span class="lineno"> 2072</span>&#160;            <span class="keywordflow">if</span> (!(Flags &amp; parse_no_string_terminators))</div><div class="line"><a name="l02073"></a><span class="lineno"> 2073</span>&#160;                element-&gt;<a class="code" href="classrapidxml_1_1xml__base.html#aef8ae147fbee59209f714274afc80dc4">name</a>()[element-&gt;<a class="code" href="classrapidxml_1_1xml__base.html#a20c8ffbe0c7a0b4231681ab8b99330a4">name_size</a>()] = Ch(<span class="charliteral">&#39;\0&#39;</span>);</div><div class="line"><a name="l02074"></a><span class="lineno"> 2074</span>&#160;</div><div class="line"><a name="l02075"></a><span class="lineno"> 2075</span>&#160;            <span class="comment">// Return parsed element</span></div><div class="line"><a name="l02076"></a><span class="lineno"> 2076</span>&#160;            <span class="keywordflow">return</span> element;</div><div class="line"><a name="l02077"></a><span class="lineno"> 2077</span>&#160;        }</div><div class="line"><a name="l02078"></a><span class="lineno"> 2078</span>&#160;</div><div class="line"><a name="l02079"></a><span class="lineno"> 2079</span>&#160;        <span class="comment">// Determine node type, and parse it</span></div><div class="line"><a name="l02080"></a><span class="lineno"> 2080</span>&#160;        <span class="keyword">template</span>&lt;<span class="keywordtype">int</span> Flags&gt;</div><div class="line"><a name="l02081"></a><span class="lineno"><a class="line" href="classrapidxml_1_1xml__document.html#a5e94cbc9b02e864cb80961ddb8cc63a7"> 2081</a></span>&#160;        <a class="code" href="classrapidxml_1_1xml__node.html">xml_node&lt;Ch&gt;</a> *<a class="code" href="classrapidxml_1_1xml__document.html#a5e94cbc9b02e864cb80961ddb8cc63a7">parse_node</a>(Ch *&amp;text)</div><div class="line"><a name="l02082"></a><span class="lineno"> 2082</span>&#160;        {</div><div class="line"><a name="l02083"></a><span class="lineno"> 2083</span>&#160;            <span class="comment">// Parse proper node type</span></div><div class="line"><a name="l02084"></a><span class="lineno"> 2084</span>&#160;            <span class="keywordflow">switch</span> (text[0])</div><div class="line"><a name="l02085"></a><span class="lineno"> 2085</span>&#160;            {</div><div class="line"><a name="l02086"></a><span class="lineno"> 2086</span>&#160;</div><div class="line"><a name="l02087"></a><span class="lineno"> 2087</span>&#160;            <span class="comment">// &lt;...</span></div><div class="line"><a name="l02088"></a><span class="lineno"> 2088</span>&#160;            <span class="keywordflow">default</span>: </div><div class="line"><a name="l02089"></a><span class="lineno"> 2089</span>&#160;                <span class="comment">// Parse and append element node</span></div><div class="line"><a name="l02090"></a><span class="lineno"> 2090</span>&#160;                <span class="keywordflow">return</span> parse_element&lt;Flags&gt;(text);</div><div class="line"><a name="l02091"></a><span class="lineno"> 2091</span>&#160;</div><div class="line"><a name="l02092"></a><span class="lineno"> 2092</span>&#160;            <span class="comment">// &lt;?...</span></div><div class="line"><a name="l02093"></a><span class="lineno"> 2093</span>&#160;            <span class="keywordflow">case</span> Ch(<span class="charliteral">&#39;?&#39;</span>): </div><div class="line"><a name="l02094"></a><span class="lineno"> 2094</span>&#160;                ++text;     <span class="comment">// Skip ?</span></div><div class="line"><a name="l02095"></a><span class="lineno"> 2095</span>&#160;                <span class="keywordflow">if</span> ((text[0] == Ch(<span class="charliteral">&#39;x&#39;</span>) || text[0] == Ch(<span class="charliteral">&#39;X&#39;</span>)) &amp;&amp;</div><div class="line"><a name="l02096"></a><span class="lineno"> 2096</span>&#160;                    (text[1] == Ch(<span class="charliteral">&#39;m&#39;</span>) || text[1] == Ch(<span class="charliteral">&#39;M&#39;</span>)) &amp;&amp; </div><div class="line"><a name="l02097"></a><span class="lineno"> 2097</span>&#160;                    (text[2] == Ch(<span class="charliteral">&#39;l&#39;</span>) || text[2] == Ch(<span class="charliteral">&#39;L&#39;</span>)) &amp;&amp;</div><div class="line"><a name="l02098"></a><span class="lineno"> 2098</span>&#160;                    whitespace_pred::test(text[3]))</div><div class="line"><a name="l02099"></a><span class="lineno"> 2099</span>&#160;                {</div><div class="line"><a name="l02100"></a><span class="lineno"> 2100</span>&#160;                    <span class="comment">// &#39;&lt;?xml &#39; - xml declaration</span></div><div class="line"><a name="l02101"></a><span class="lineno"> 2101</span>&#160;                    text += 4;      <span class="comment">// Skip &#39;xml &#39;</span></div><div class="line"><a name="l02102"></a><span class="lineno"> 2102</span>&#160;                    <span class="keywordflow">return</span> parse_xml_declaration&lt;Flags&gt;(text);</div><div class="line"><a name="l02103"></a><span class="lineno"> 2103</span>&#160;                }</div><div class="line"><a name="l02104"></a><span class="lineno"> 2104</span>&#160;                <span class="keywordflow">else</span></div><div class="line"><a name="l02105"></a><span class="lineno"> 2105</span>&#160;                {</div><div class="line"><a name="l02106"></a><span class="lineno"> 2106</span>&#160;                    <span class="comment">// Parse PI</span></div><div class="line"><a name="l02107"></a><span class="lineno"> 2107</span>&#160;                    <span class="keywordflow">return</span> parse_pi&lt;Flags&gt;(text);</div><div class="line"><a name="l02108"></a><span class="lineno"> 2108</span>&#160;                }</div><div class="line"><a name="l02109"></a><span class="lineno"> 2109</span>&#160;            </div><div class="line"><a name="l02110"></a><span class="lineno"> 2110</span>&#160;            <span class="comment">// &lt;!...</span></div><div class="line"><a name="l02111"></a><span class="lineno"> 2111</span>&#160;            <span class="keywordflow">case</span> Ch(<span class="charliteral">&#39;!&#39;</span>): </div><div class="line"><a name="l02112"></a><span class="lineno"> 2112</span>&#160;</div><div class="line"><a name="l02113"></a><span class="lineno"> 2113</span>&#160;                <span class="comment">// Parse proper subset of &lt;! node</span></div><div class="line"><a name="l02114"></a><span class="lineno"> 2114</span>&#160;                <span class="keywordflow">switch</span> (text[1])    </div><div class="line"><a name="l02115"></a><span class="lineno"> 2115</span>&#160;                {</div><div class="line"><a name="l02116"></a><span class="lineno"> 2116</span>&#160;                </div><div class="line"><a name="l02117"></a><span class="lineno"> 2117</span>&#160;                <span class="comment">// &lt;!-</span></div><div class="line"><a name="l02118"></a><span class="lineno"> 2118</span>&#160;                <span class="keywordflow">case</span> Ch(<span class="charliteral">&#39;-&#39;</span>):</div><div class="line"><a name="l02119"></a><span class="lineno"> 2119</span>&#160;                    <span class="keywordflow">if</span> (text[2] == Ch(<span class="charliteral">&#39;-&#39;</span>))</div><div class="line"><a name="l02120"></a><span class="lineno"> 2120</span>&#160;                    {</div><div class="line"><a name="l02121"></a><span class="lineno"> 2121</span>&#160;                        <span class="comment">// &#39;&lt;!--&#39; - xml comment</span></div><div class="line"><a name="l02122"></a><span class="lineno"> 2122</span>&#160;                        text += 3;     <span class="comment">// Skip &#39;!--&#39;</span></div><div class="line"><a name="l02123"></a><span class="lineno"> 2123</span>&#160;                        <span class="keywordflow">return</span> parse_comment&lt;Flags&gt;(text);</div><div class="line"><a name="l02124"></a><span class="lineno"> 2124</span>&#160;                    }</div><div class="line"><a name="l02125"></a><span class="lineno"> 2125</span>&#160;                    <span class="keywordflow">break</span>;</div><div class="line"><a name="l02126"></a><span class="lineno"> 2126</span>&#160;</div><div class="line"><a name="l02127"></a><span class="lineno"> 2127</span>&#160;                <span class="comment">// &lt;![</span></div><div class="line"><a name="l02128"></a><span class="lineno"> 2128</span>&#160;                <span class="keywordflow">case</span> Ch(<span class="charliteral">&#39;[&#39;</span>):</div><div class="line"><a name="l02129"></a><span class="lineno"> 2129</span>&#160;                    <span class="keywordflow">if</span> (text[2] == Ch(<span class="charliteral">&#39;C&#39;</span>) &amp;&amp; text[3] == Ch(<span class="charliteral">&#39;D&#39;</span>) &amp;&amp; text[4] == Ch(<span class="charliteral">&#39;A&#39;</span>) &amp;&amp; </div><div class="line"><a name="l02130"></a><span class="lineno"> 2130</span>&#160;                        text[5] == Ch(<span class="charliteral">&#39;T&#39;</span>) &amp;&amp; text[6] == Ch(<span class="charliteral">&#39;A&#39;</span>) &amp;&amp; text[7] == Ch(<span class="charliteral">&#39;[&#39;</span>))</div><div class="line"><a name="l02131"></a><span class="lineno"> 2131</span>&#160;                    {</div><div class="line"><a name="l02132"></a><span class="lineno"> 2132</span>&#160;                        <span class="comment">// &#39;&lt;![CDATA[&#39; - cdata</span></div><div class="line"><a name="l02133"></a><span class="lineno"> 2133</span>&#160;                        text += 8;     <span class="comment">// Skip &#39;![CDATA[&#39;</span></div><div class="line"><a name="l02134"></a><span class="lineno"> 2134</span>&#160;                        <span class="keywordflow">return</span> parse_cdata&lt;Flags&gt;(text);</div><div class="line"><a name="l02135"></a><span class="lineno"> 2135</span>&#160;                    }</div><div class="line"><a name="l02136"></a><span class="lineno"> 2136</span>&#160;                    <span class="keywordflow">break</span>;</div><div class="line"><a name="l02137"></a><span class="lineno"> 2137</span>&#160;</div><div class="line"><a name="l02138"></a><span class="lineno"> 2138</span>&#160;                <span class="comment">// &lt;!D</span></div><div class="line"><a name="l02139"></a><span class="lineno"> 2139</span>&#160;                <span class="keywordflow">case</span> Ch(<span class="charliteral">&#39;D&#39;</span>):</div><div class="line"><a name="l02140"></a><span class="lineno"> 2140</span>&#160;                    <span class="keywordflow">if</span> (text[2] == Ch(<span class="charliteral">&#39;O&#39;</span>) &amp;&amp; text[3] == Ch(<span class="charliteral">&#39;C&#39;</span>) &amp;&amp; text[4] == Ch(<span class="charliteral">&#39;T&#39;</span>) &amp;&amp; </div><div class="line"><a name="l02141"></a><span class="lineno"> 2141</span>&#160;                        text[5] == Ch(<span class="charliteral">&#39;Y&#39;</span>) &amp;&amp; text[6] == Ch(<span class="charliteral">&#39;P&#39;</span>) &amp;&amp; text[7] == Ch(<span class="charliteral">&#39;E&#39;</span>) &amp;&amp; </div><div class="line"><a name="l02142"></a><span class="lineno"> 2142</span>&#160;                        whitespace_pred::test(text[8]))</div><div class="line"><a name="l02143"></a><span class="lineno"> 2143</span>&#160;                    {</div><div class="line"><a name="l02144"></a><span class="lineno"> 2144</span>&#160;                        <span class="comment">// &#39;&lt;!DOCTYPE &#39; - doctype</span></div><div class="line"><a name="l02145"></a><span class="lineno"> 2145</span>&#160;                        text += 9;      <span class="comment">// skip &#39;!DOCTYPE &#39;</span></div><div class="line"><a name="l02146"></a><span class="lineno"> 2146</span>&#160;                        <span class="keywordflow">return</span> parse_doctype&lt;Flags&gt;(text);</div><div class="line"><a name="l02147"></a><span class="lineno"> 2147</span>&#160;                    }</div><div class="line"><a name="l02148"></a><span class="lineno"> 2148</span>&#160;</div><div class="line"><a name="l02149"></a><span class="lineno"> 2149</span>&#160;                }   <span class="comment">// switch</span></div><div class="line"><a name="l02150"></a><span class="lineno"> 2150</span>&#160;</div><div class="line"><a name="l02151"></a><span class="lineno"> 2151</span>&#160;                <span class="comment">// Attempt to skip other, unrecognized node types starting with &lt;!</span></div><div class="line"><a name="l02152"></a><span class="lineno"> 2152</span>&#160;                ++text;     <span class="comment">// Skip !</span></div><div class="line"><a name="l02153"></a><span class="lineno"> 2153</span>&#160;                <span class="keywordflow">while</span> (*text != Ch(<span class="charliteral">&#39;&gt;&#39;</span>))</div><div class="line"><a name="l02154"></a><span class="lineno"> 2154</span>&#160;                {</div><div class="line"><a name="l02155"></a><span class="lineno"> 2155</span>&#160;                    <span class="keywordflow">if</span> (*text == 0)</div><div class="line"><a name="l02156"></a><span class="lineno"> 2156</span>&#160;                        <a class="code" href="rapidxml_8h.html#a65f2be309896ffb841997d467c2f4fff">RAPIDXML_PARSE_ERROR</a>(<span class="stringliteral">&quot;unexpected end of data&quot;</span>, text);</div><div class="line"><a name="l02157"></a><span class="lineno"> 2157</span>&#160;                    ++text;</div><div class="line"><a name="l02158"></a><span class="lineno"> 2158</span>&#160;                }</div><div class="line"><a name="l02159"></a><span class="lineno"> 2159</span>&#160;                ++text;     <span class="comment">// Skip &#39;&gt;&#39;</span></div><div class="line"><a name="l02160"></a><span class="lineno"> 2160</span>&#160;                <span class="keywordflow">return</span> 0;   <span class="comment">// No node recognized</span></div><div class="line"><a name="l02161"></a><span class="lineno"> 2161</span>&#160;</div><div class="line"><a name="l02162"></a><span class="lineno"> 2162</span>&#160;            }</div><div class="line"><a name="l02163"></a><span class="lineno"> 2163</span>&#160;        }</div><div class="line"><a name="l02164"></a><span class="lineno"> 2164</span>&#160;</div><div class="line"><a name="l02165"></a><span class="lineno"> 2165</span>&#160;        <span class="comment">// Parse contents of the node - children, data etc.</span></div><div class="line"><a name="l02166"></a><span class="lineno"> 2166</span>&#160;        <span class="keyword">template</span>&lt;<span class="keywordtype">int</span> Flags&gt;</div><div class="line"><a name="l02167"></a><span class="lineno"><a class="line" href="classrapidxml_1_1xml__document.html#aae0a4c2e1972ab9a9e0ce91cf1166ac9"> 2167</a></span>&#160;        <span class="keywordtype">void</span> <a class="code" href="classrapidxml_1_1xml__document.html#aae0a4c2e1972ab9a9e0ce91cf1166ac9">parse_node_contents</a>(Ch *&amp;text, <a class="code" href="classrapidxml_1_1xml__node.html">xml_node&lt;Ch&gt;</a> *node)</div><div class="line"><a name="l02168"></a><span class="lineno"> 2168</span>&#160;        {</div><div class="line"><a name="l02169"></a><span class="lineno"> 2169</span>&#160;            <span class="comment">// For all children and text</span></div><div class="line"><a name="l02170"></a><span class="lineno"> 2170</span>&#160;            <span class="keywordflow">while</span> (1)</div><div class="line"><a name="l02171"></a><span class="lineno"> 2171</span>&#160;            {</div><div class="line"><a name="l02172"></a><span class="lineno"> 2172</span>&#160;                <span class="comment">// Skip whitespace between &gt; and node contents</span></div><div class="line"><a name="l02173"></a><span class="lineno"> 2173</span>&#160;                Ch *contents_start = text;      <span class="comment">// Store start of node contents before whitespace is skipped</span></div><div class="line"><a name="l02174"></a><span class="lineno"> 2174</span>&#160;                skip&lt;whitespace_pred, Flags&gt;(text);</div><div class="line"><a name="l02175"></a><span class="lineno"> 2175</span>&#160;                Ch next_char = *text;</div><div class="line"><a name="l02176"></a><span class="lineno"> 2176</span>&#160;</div><div class="line"><a name="l02177"></a><span class="lineno"> 2177</span>&#160;            <span class="comment">// After data nodes, instead of continuing the loop, control jumps here.</span></div><div class="line"><a name="l02178"></a><span class="lineno"> 2178</span>&#160;            <span class="comment">// This is because zero termination inside parse_and_append_data() function</span></div><div class="line"><a name="l02179"></a><span class="lineno"> 2179</span>&#160;            <span class="comment">// would wreak havoc with the above code.</span></div><div class="line"><a name="l02180"></a><span class="lineno"> 2180</span>&#160;            <span class="comment">// Also, skipping whitespace after data nodes is unnecessary.</span></div><div class="line"><a name="l02181"></a><span class="lineno"> 2181</span>&#160;            after_data_node:    </div><div class="line"><a name="l02182"></a><span class="lineno"> 2182</span>&#160;                </div><div class="line"><a name="l02183"></a><span class="lineno"> 2183</span>&#160;                <span class="comment">// Determine what comes next: node closing, child node, data node, or 0?</span></div><div class="line"><a name="l02184"></a><span class="lineno"> 2184</span>&#160;                <span class="keywordflow">switch</span> (next_char)</div><div class="line"><a name="l02185"></a><span class="lineno"> 2185</span>&#160;                {</div><div class="line"><a name="l02186"></a><span class="lineno"> 2186</span>&#160;                </div><div class="line"><a name="l02187"></a><span class="lineno"> 2187</span>&#160;                <span class="comment">// Node closing or child node</span></div><div class="line"><a name="l02188"></a><span class="lineno"> 2188</span>&#160;                <span class="keywordflow">case</span> Ch(<span class="charliteral">&#39;&lt;&#39;</span>):</div><div class="line"><a name="l02189"></a><span class="lineno"> 2189</span>&#160;                    <span class="keywordflow">if</span> (text[1] == Ch(<span class="charliteral">&#39;/&#39;</span>))</div><div class="line"><a name="l02190"></a><span class="lineno"> 2190</span>&#160;                    {</div><div class="line"><a name="l02191"></a><span class="lineno"> 2191</span>&#160;                        <span class="comment">// Node closing</span></div><div class="line"><a name="l02192"></a><span class="lineno"> 2192</span>&#160;                        text += 2;      <span class="comment">// Skip &#39;&lt;/&#39;</span></div><div class="line"><a name="l02193"></a><span class="lineno"> 2193</span>&#160;                        <span class="keywordflow">if</span> (Flags &amp; parse_validate_closing_tags)</div><div class="line"><a name="l02194"></a><span class="lineno"> 2194</span>&#160;                        {</div><div class="line"><a name="l02195"></a><span class="lineno"> 2195</span>&#160;                            <span class="comment">// Skip and validate closing tag name</span></div><div class="line"><a name="l02196"></a><span class="lineno"> 2196</span>&#160;                            Ch *closing_name = text;</div><div class="line"><a name="l02197"></a><span class="lineno"> 2197</span>&#160;                            skip&lt;node_name_pred, Flags&gt;(text);</div><div class="line"><a name="l02198"></a><span class="lineno"> 2198</span>&#160;                            <span class="keywordflow">if</span> (!internal::compare(node-&gt;<a class="code" href="classrapidxml_1_1xml__base.html#aef8ae147fbee59209f714274afc80dc4">name</a>(), node-&gt;<a class="code" href="classrapidxml_1_1xml__base.html#a20c8ffbe0c7a0b4231681ab8b99330a4">name_size</a>(), closing_name, text - closing_name, <span class="keyword">true</span>))</div><div class="line"><a name="l02199"></a><span class="lineno"> 2199</span>&#160;                                <a class="code" href="rapidxml_8h.html#a65f2be309896ffb841997d467c2f4fff">RAPIDXML_PARSE_ERROR</a>(<span class="stringliteral">&quot;invalid closing tag name&quot;</span>, text);</div><div class="line"><a name="l02200"></a><span class="lineno"> 2200</span>&#160;                        }</div><div class="line"><a name="l02201"></a><span class="lineno"> 2201</span>&#160;                        <span class="keywordflow">else</span></div><div class="line"><a name="l02202"></a><span class="lineno"> 2202</span>&#160;                        {</div><div class="line"><a name="l02203"></a><span class="lineno"> 2203</span>&#160;                            <span class="comment">// No validation, just skip name</span></div><div class="line"><a name="l02204"></a><span class="lineno"> 2204</span>&#160;                            skip&lt;node_name_pred, Flags&gt;(text);</div><div class="line"><a name="l02205"></a><span class="lineno"> 2205</span>&#160;                        }</div><div class="line"><a name="l02206"></a><span class="lineno"> 2206</span>&#160;                        <span class="comment">// Skip remaining whitespace after node name</span></div><div class="line"><a name="l02207"></a><span class="lineno"> 2207</span>&#160;                        skip&lt;whitespace_pred, Flags&gt;(text);</div><div class="line"><a name="l02208"></a><span class="lineno"> 2208</span>&#160;                        <span class="keywordflow">if</span> (*text != Ch(<span class="charliteral">&#39;&gt;&#39;</span>))</div><div class="line"><a name="l02209"></a><span class="lineno"> 2209</span>&#160;                            <a class="code" href="rapidxml_8h.html#a65f2be309896ffb841997d467c2f4fff">RAPIDXML_PARSE_ERROR</a>(<span class="stringliteral">&quot;expected &gt;&quot;</span>, text);</div><div class="line"><a name="l02210"></a><span class="lineno"> 2210</span>&#160;                        ++text;     <span class="comment">// Skip &#39;&gt;&#39;</span></div><div class="line"><a name="l02211"></a><span class="lineno"> 2211</span>&#160;                        <span class="keywordflow">return</span>;     <span class="comment">// Node closed, finished parsing contents</span></div><div class="line"><a name="l02212"></a><span class="lineno"> 2212</span>&#160;                    }</div><div class="line"><a name="l02213"></a><span class="lineno"> 2213</span>&#160;                    <span class="keywordflow">else</span></div><div class="line"><a name="l02214"></a><span class="lineno"> 2214</span>&#160;                    {</div><div class="line"><a name="l02215"></a><span class="lineno"> 2215</span>&#160;                        <span class="comment">// Child node</span></div><div class="line"><a name="l02216"></a><span class="lineno"> 2216</span>&#160;                        ++text;     <span class="comment">// Skip &#39;&lt;&#39;</span></div><div class="line"><a name="l02217"></a><span class="lineno"> 2217</span>&#160;                        <span class="keywordflow">if</span> (<a class="code" href="classrapidxml_1_1xml__node.html">xml_node&lt;Ch&gt;</a> *child = parse_node&lt;Flags&gt;(text))</div><div class="line"><a name="l02218"></a><span class="lineno"> 2218</span>&#160;                            node-&gt;<a class="code" href="classrapidxml_1_1xml__node.html#a8696d098ecc9c4d2a646b43e91d58e31">append_node</a>(child);</div><div class="line"><a name="l02219"></a><span class="lineno"> 2219</span>&#160;                    }</div><div class="line"><a name="l02220"></a><span class="lineno"> 2220</span>&#160;                    <span class="keywordflow">break</span>;</div><div class="line"><a name="l02221"></a><span class="lineno"> 2221</span>&#160;</div><div class="line"><a name="l02222"></a><span class="lineno"> 2222</span>&#160;                <span class="comment">// End of data - error</span></div><div class="line"><a name="l02223"></a><span class="lineno"> 2223</span>&#160;                <span class="keywordflow">case</span> Ch(<span class="charliteral">&#39;\0&#39;</span>):</div><div class="line"><a name="l02224"></a><span class="lineno"> 2224</span>&#160;                    <a class="code" href="rapidxml_8h.html#a65f2be309896ffb841997d467c2f4fff">RAPIDXML_PARSE_ERROR</a>(<span class="stringliteral">&quot;unexpected end of data&quot;</span>, text);</div><div class="line"><a name="l02225"></a><span class="lineno"> 2225</span>&#160;</div><div class="line"><a name="l02226"></a><span class="lineno"> 2226</span>&#160;                <span class="comment">// Data node</span></div><div class="line"><a name="l02227"></a><span class="lineno"> 2227</span>&#160;                <span class="keywordflow">default</span>:</div><div class="line"><a name="l02228"></a><span class="lineno"> 2228</span>&#160;                    next_char = parse_and_append_data&lt;Flags&gt;(node, text, contents_start);</div><div class="line"><a name="l02229"></a><span class="lineno"> 2229</span>&#160;                    <span class="keywordflow">goto</span> after_data_node;   <span class="comment">// Bypass regular processing after data nodes</span></div><div class="line"><a name="l02230"></a><span class="lineno"> 2230</span>&#160;</div><div class="line"><a name="l02231"></a><span class="lineno"> 2231</span>&#160;                }</div><div class="line"><a name="l02232"></a><span class="lineno"> 2232</span>&#160;            }</div><div class="line"><a name="l02233"></a><span class="lineno"> 2233</span>&#160;        }</div><div class="line"><a name="l02234"></a><span class="lineno"> 2234</span>&#160;        </div><div class="line"><a name="l02235"></a><span class="lineno"> 2235</span>&#160;        <span class="comment">// Parse XML attributes of the node</span></div><div class="line"><a name="l02236"></a><span class="lineno"> 2236</span>&#160;        <span class="keyword">template</span>&lt;<span class="keywordtype">int</span> Flags&gt;</div><div class="line"><a name="l02237"></a><span class="lineno"><a class="line" href="classrapidxml_1_1xml__document.html#ac0b3cd07b3d5cbaa83762a196c681519"> 2237</a></span>&#160;        <span class="keywordtype">void</span> <a class="code" href="classrapidxml_1_1xml__document.html#ac0b3cd07b3d5cbaa83762a196c681519">parse_node_attributes</a>(Ch *&amp;text, <a class="code" href="classrapidxml_1_1xml__node.html">xml_node&lt;Ch&gt;</a> *node)</div><div class="line"><a name="l02238"></a><span class="lineno"> 2238</span>&#160;        {</div><div class="line"><a name="l02239"></a><span class="lineno"> 2239</span>&#160;            <span class="comment">// For all attributes </span></div><div class="line"><a name="l02240"></a><span class="lineno"> 2240</span>&#160;            <span class="keywordflow">while</span> (attribute_name_pred::test(*text))</div><div class="line"><a name="l02241"></a><span class="lineno"> 2241</span>&#160;            {</div><div class="line"><a name="l02242"></a><span class="lineno"> 2242</span>&#160;                <span class="comment">// Extract attribute name</span></div><div class="line"><a name="l02243"></a><span class="lineno"> 2243</span>&#160;                Ch *name = text;</div><div class="line"><a name="l02244"></a><span class="lineno"> 2244</span>&#160;                ++text;     <span class="comment">// Skip first character of attribute name</span></div><div class="line"><a name="l02245"></a><span class="lineno"> 2245</span>&#160;                skip&lt;attribute_name_pred, Flags&gt;(text);</div><div class="line"><a name="l02246"></a><span class="lineno"> 2246</span>&#160;                <span class="keywordflow">if</span> (text == name)</div><div class="line"><a name="l02247"></a><span class="lineno"> 2247</span>&#160;                    <a class="code" href="rapidxml_8h.html#a65f2be309896ffb841997d467c2f4fff">RAPIDXML_PARSE_ERROR</a>(<span class="stringliteral">&quot;expected attribute name&quot;</span>, name);</div><div class="line"><a name="l02248"></a><span class="lineno"> 2248</span>&#160;</div><div class="line"><a name="l02249"></a><span class="lineno"> 2249</span>&#160;                <span class="comment">// Create new attribute</span></div><div class="line"><a name="l02250"></a><span class="lineno"> 2250</span>&#160;                <a class="code" href="classrapidxml_1_1xml__attribute.html">xml_attribute&lt;Ch&gt;</a> *attribute = this-&gt;allocate_attribute();</div><div class="line"><a name="l02251"></a><span class="lineno"> 2251</span>&#160;                attribute-&gt;<a class="code" href="classrapidxml_1_1xml__base.html#aef8ae147fbee59209f714274afc80dc4">name</a>(name, text - name);</div><div class="line"><a name="l02252"></a><span class="lineno"> 2252</span>&#160;                node-&gt;<a class="code" href="classrapidxml_1_1xml__node.html#a33ce3386f8c42dd4db658b75cbb6e6c4">append_attribute</a>(attribute);</div><div class="line"><a name="l02253"></a><span class="lineno"> 2253</span>&#160;</div><div class="line"><a name="l02254"></a><span class="lineno"> 2254</span>&#160;                <span class="comment">// Skip whitespace after attribute name</span></div><div class="line"><a name="l02255"></a><span class="lineno"> 2255</span>&#160;                skip&lt;whitespace_pred, Flags&gt;(text);</div><div class="line"><a name="l02256"></a><span class="lineno"> 2256</span>&#160;</div><div class="line"><a name="l02257"></a><span class="lineno"> 2257</span>&#160;                <span class="comment">// Skip =</span></div><div class="line"><a name="l02258"></a><span class="lineno"> 2258</span>&#160;                <span class="keywordflow">if</span> (*text != Ch(<span class="charliteral">&#39;=&#39;</span>))</div><div class="line"><a name="l02259"></a><span class="lineno"> 2259</span>&#160;                    <a class="code" href="rapidxml_8h.html#a65f2be309896ffb841997d467c2f4fff">RAPIDXML_PARSE_ERROR</a>(<span class="stringliteral">&quot;expected =&quot;</span>, text);</div><div class="line"><a name="l02260"></a><span class="lineno"> 2260</span>&#160;                ++text;</div><div class="line"><a name="l02261"></a><span class="lineno"> 2261</span>&#160;</div><div class="line"><a name="l02262"></a><span class="lineno"> 2262</span>&#160;                <span class="comment">// Add terminating zero after name</span></div><div class="line"><a name="l02263"></a><span class="lineno"> 2263</span>&#160;                <span class="keywordflow">if</span> (!(Flags &amp; parse_no_string_terminators))</div><div class="line"><a name="l02264"></a><span class="lineno"> 2264</span>&#160;                    attribute-&gt;<a class="code" href="classrapidxml_1_1xml__base.html#aef8ae147fbee59209f714274afc80dc4">name</a>()[attribute-&gt;<a class="code" href="classrapidxml_1_1xml__base.html#a20c8ffbe0c7a0b4231681ab8b99330a4">name_size</a>()] = 0;</div><div class="line"><a name="l02265"></a><span class="lineno"> 2265</span>&#160;</div><div class="line"><a name="l02266"></a><span class="lineno"> 2266</span>&#160;                <span class="comment">// Skip whitespace after =</span></div><div class="line"><a name="l02267"></a><span class="lineno"> 2267</span>&#160;                skip&lt;whitespace_pred, Flags&gt;(text);</div><div class="line"><a name="l02268"></a><span class="lineno"> 2268</span>&#160;</div><div class="line"><a name="l02269"></a><span class="lineno"> 2269</span>&#160;                <span class="comment">// Skip quote and remember if it was &#39; or &quot;</span></div><div class="line"><a name="l02270"></a><span class="lineno"> 2270</span>&#160;                Ch quote = *text;</div><div class="line"><a name="l02271"></a><span class="lineno"> 2271</span>&#160;                <span class="keywordflow">if</span> (quote != Ch(<span class="charliteral">&#39;\&#39;&#39;</span>) &amp;&amp; quote != Ch(<span class="charliteral">&#39;&quot;&#39;</span>))</div><div class="line"><a name="l02272"></a><span class="lineno"> 2272</span>&#160;                    <a class="code" href="rapidxml_8h.html#a65f2be309896ffb841997d467c2f4fff">RAPIDXML_PARSE_ERROR</a>(<span class="stringliteral">&quot;expected &#39; or \&quot;&quot;</span>, text);</div><div class="line"><a name="l02273"></a><span class="lineno"> 2273</span>&#160;                ++text;</div><div class="line"><a name="l02274"></a><span class="lineno"> 2274</span>&#160;</div><div class="line"><a name="l02275"></a><span class="lineno"> 2275</span>&#160;                <span class="comment">// Extract attribute value and expand char refs in it</span></div><div class="line"><a name="l02276"></a><span class="lineno"> 2276</span>&#160;                Ch *value = text, *end;</div><div class="line"><a name="l02277"></a><span class="lineno"> 2277</span>&#160;                <span class="keyword">const</span> <span class="keywordtype">int</span> AttFlags = Flags &amp; ~parse_normalize_whitespace;   <span class="comment">// No whitespace normalization in attributes</span></div><div class="line"><a name="l02278"></a><span class="lineno"> 2278</span>&#160;                <span class="keywordflow">if</span> (quote == Ch(<span class="charliteral">&#39;\&#39;&#39;</span>))</div><div class="line"><a name="l02279"></a><span class="lineno"> 2279</span>&#160;                    end = skip_and_expand_character_refs&lt;<a class="code" href="structrapidxml_1_1xml__document_1_1attribute__value__pred.html">attribute_value_pred</a>&lt;Ch(<span class="charliteral">&#39;\&#39;&#39;</span>)&gt;, <a class="code" href="structrapidxml_1_1xml__document_1_1attribute__value__pure__pred.html">attribute_value_pure_pred&lt;Ch('\'')&gt;</a>, AttFlags&gt;(text);</div><div class="line"><a name="l02280"></a><span class="lineno"> 2280</span>&#160;                <span class="keywordflow">else</span></div><div class="line"><a name="l02281"></a><span class="lineno"> 2281</span>&#160;                    end = skip_and_expand_character_refs&lt;<a class="code" href="structrapidxml_1_1xml__document_1_1attribute__value__pred.html">attribute_value_pred</a>&lt;Ch(<span class="charliteral">&#39;&quot;&#39;</span>)&gt;, <a class="code" href="structrapidxml_1_1xml__document_1_1attribute__value__pure__pred.html">attribute_value_pure_pred</a>&lt;Ch(<span class="charliteral">&#39;&quot;&#39;</span>)&gt;, AttFlags&gt;(text);</div><div class="line"><a name="l02282"></a><span class="lineno"> 2282</span>&#160;                </div><div class="line"><a name="l02283"></a><span class="lineno"> 2283</span>&#160;                <span class="comment">// Set attribute value</span></div><div class="line"><a name="l02284"></a><span class="lineno"> 2284</span>&#160;                attribute-&gt;<a class="code" href="classrapidxml_1_1xml__base.html#a6af65de5e59ac497cd69838f8a89d602">value</a>(value, end - value);</div><div class="line"><a name="l02285"></a><span class="lineno"> 2285</span>&#160;                </div><div class="line"><a name="l02286"></a><span class="lineno"> 2286</span>&#160;                <span class="comment">// Make sure that end quote is present</span></div><div class="line"><a name="l02287"></a><span class="lineno"> 2287</span>&#160;                <span class="keywordflow">if</span> (*text != quote)</div><div class="line"><a name="l02288"></a><span class="lineno"> 2288</span>&#160;                    <a class="code" href="rapidxml_8h.html#a65f2be309896ffb841997d467c2f4fff">RAPIDXML_PARSE_ERROR</a>(<span class="stringliteral">&quot;expected &#39; or \&quot;&quot;</span>, text);</div><div class="line"><a name="l02289"></a><span class="lineno"> 2289</span>&#160;                ++text;     <span class="comment">// Skip quote</span></div><div class="line"><a name="l02290"></a><span class="lineno"> 2290</span>&#160;</div><div class="line"><a name="l02291"></a><span class="lineno"> 2291</span>&#160;                <span class="comment">// Add terminating zero after value</span></div><div class="line"><a name="l02292"></a><span class="lineno"> 2292</span>&#160;                <span class="keywordflow">if</span> (!(Flags &amp; parse_no_string_terminators))</div><div class="line"><a name="l02293"></a><span class="lineno"> 2293</span>&#160;                    attribute-&gt;<a class="code" href="classrapidxml_1_1xml__base.html#a6af65de5e59ac497cd69838f8a89d602">value</a>()[attribute-&gt;<a class="code" href="classrapidxml_1_1xml__base.html#a2eb123d471b1567fa4832b6ee2b75493">value_size</a>()] = 0;</div><div class="line"><a name="l02294"></a><span class="lineno"> 2294</span>&#160;</div><div class="line"><a name="l02295"></a><span class="lineno"> 2295</span>&#160;                <span class="comment">// Skip whitespace after attribute value</span></div><div class="line"><a name="l02296"></a><span class="lineno"> 2296</span>&#160;                skip&lt;whitespace_pred, Flags&gt;(text);</div><div class="line"><a name="l02297"></a><span class="lineno"> 2297</span>&#160;            }</div><div class="line"><a name="l02298"></a><span class="lineno"> 2298</span>&#160;        }</div><div class="line"><a name="l02299"></a><span class="lineno"> 2299</span>&#160;</div><div class="line"><a name="l02300"></a><span class="lineno"> 2300</span>&#160;    };</div><div class="line"><a name="l02301"></a><span class="lineno"> 2301</span>&#160;</div><div class="line"><a name="l02303"></a><span class="lineno"> 2303</span>&#160;    <span class="keyword">namespace </span>internal</div><div class="line"><a name="l02304"></a><span class="lineno"> 2304</span>&#160;    {</div><div class="line"><a name="l02305"></a><span class="lineno"> 2305</span>&#160;</div><div class="line"><a name="l02306"></a><span class="lineno"> 2306</span>&#160;        <span class="comment">// Whitespace (space \n \r \t)</span></div><div class="line"><a name="l02307"></a><span class="lineno"> 2307</span>&#160;        <span class="keyword">template</span>&lt;<span class="keywordtype">int</span> Dummy&gt;</div><div class="line"><a name="l02308"></a><span class="lineno"> 2308</span>&#160;        <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> lookup_tables&lt;Dummy&gt;::lookup_whitespace[256] = </div><div class="line"><a name="l02309"></a><span class="lineno"> 2309</span>&#160;        {</div><div class="line"><a name="l02310"></a><span class="lineno"> 2310</span>&#160;          <span class="comment">// 0   1   2   3   4   5   6   7   8   9   A   B   C   D   E   F</span></div><div class="line"><a name="l02311"></a><span class="lineno"> 2311</span>&#160;             0,  0,  0,  0,  0,  0,  0,  0,  0,  1,  1,  0,  0,  1,  0,  0,  <span class="comment">// 0</span></div><div class="line"><a name="l02312"></a><span class="lineno"> 2312</span>&#160;             0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  <span class="comment">// 1</span></div><div class="line"><a name="l02313"></a><span class="lineno"> 2313</span>&#160;             1,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  <span class="comment">// 2</span></div><div class="line"><a name="l02314"></a><span class="lineno"> 2314</span>&#160;             0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  <span class="comment">// 3</span></div><div class="line"><a name="l02315"></a><span class="lineno"> 2315</span>&#160;             0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  <span class="comment">// 4</span></div><div class="line"><a name="l02316"></a><span class="lineno"> 2316</span>&#160;             0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  <span class="comment">// 5</span></div><div class="line"><a name="l02317"></a><span class="lineno"> 2317</span>&#160;             0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  <span class="comment">// 6</span></div><div class="line"><a name="l02318"></a><span class="lineno"> 2318</span>&#160;             0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  <span class="comment">// 7</span></div><div class="line"><a name="l02319"></a><span class="lineno"> 2319</span>&#160;             0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  <span class="comment">// 8</span></div><div class="line"><a name="l02320"></a><span class="lineno"> 2320</span>&#160;             0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  <span class="comment">// 9</span></div><div class="line"><a name="l02321"></a><span class="lineno"> 2321</span>&#160;             0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  <span class="comment">// A</span></div><div class="line"><a name="l02322"></a><span class="lineno"> 2322</span>&#160;             0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  <span class="comment">// B</span></div><div class="line"><a name="l02323"></a><span class="lineno"> 2323</span>&#160;             0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  <span class="comment">// C</span></div><div class="line"><a name="l02324"></a><span class="lineno"> 2324</span>&#160;             0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  <span class="comment">// D</span></div><div class="line"><a name="l02325"></a><span class="lineno"> 2325</span>&#160;             0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  <span class="comment">// E</span></div><div class="line"><a name="l02326"></a><span class="lineno"> 2326</span>&#160;             0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0   <span class="comment">// F</span></div><div class="line"><a name="l02327"></a><span class="lineno"> 2327</span>&#160;        };</div><div class="line"><a name="l02328"></a><span class="lineno"> 2328</span>&#160;</div><div class="line"><a name="l02329"></a><span class="lineno"> 2329</span>&#160;        <span class="comment">// Node name (anything but space \n \r \t / &gt; ? \0)</span></div><div class="line"><a name="l02330"></a><span class="lineno"> 2330</span>&#160;        <span class="keyword">template</span>&lt;<span class="keywordtype">int</span> Dummy&gt;</div><div class="line"><a name="l02331"></a><span class="lineno"> 2331</span>&#160;        <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> lookup_tables&lt;Dummy&gt;::lookup_node_name[256] = </div><div class="line"><a name="l02332"></a><span class="lineno"> 2332</span>&#160;        {</div><div class="line"><a name="l02333"></a><span class="lineno"> 2333</span>&#160;          <span class="comment">// 0   1   2   3   4   5   6   7   8   9   A   B   C   D   E   F</span></div><div class="line"><a name="l02334"></a><span class="lineno"> 2334</span>&#160;             0,  1,  1,  1,  1,  1,  1,  1,  1,  0,  0,  1,  1,  0,  1,  1,  <span class="comment">// 0</span></div><div class="line"><a name="l02335"></a><span class="lineno"> 2335</span>&#160;             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  <span class="comment">// 1</span></div><div class="line"><a name="l02336"></a><span class="lineno"> 2336</span>&#160;             0,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  0,  <span class="comment">// 2</span></div><div class="line"><a name="l02337"></a><span class="lineno"> 2337</span>&#160;             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  0,  0,  <span class="comment">// 3</span></div><div class="line"><a name="l02338"></a><span class="lineno"> 2338</span>&#160;             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  <span class="comment">// 4</span></div><div class="line"><a name="l02339"></a><span class="lineno"> 2339</span>&#160;             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  <span class="comment">// 5</span></div><div class="line"><a name="l02340"></a><span class="lineno"> 2340</span>&#160;             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  <span class="comment">// 6</span></div><div class="line"><a name="l02341"></a><span class="lineno"> 2341</span>&#160;             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  <span class="comment">// 7</span></div><div class="line"><a name="l02342"></a><span class="lineno"> 2342</span>&#160;             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  <span class="comment">// 8</span></div><div class="line"><a name="l02343"></a><span class="lineno"> 2343</span>&#160;             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  <span class="comment">// 9</span></div><div class="line"><a name="l02344"></a><span class="lineno"> 2344</span>&#160;             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  <span class="comment">// A</span></div><div class="line"><a name="l02345"></a><span class="lineno"> 2345</span>&#160;             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  <span class="comment">// B</span></div><div class="line"><a name="l02346"></a><span class="lineno"> 2346</span>&#160;             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  <span class="comment">// C</span></div><div class="line"><a name="l02347"></a><span class="lineno"> 2347</span>&#160;             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  <span class="comment">// D</span></div><div class="line"><a name="l02348"></a><span class="lineno"> 2348</span>&#160;             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  <span class="comment">// E</span></div><div class="line"><a name="l02349"></a><span class="lineno"> 2349</span>&#160;             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1   <span class="comment">// F</span></div><div class="line"><a name="l02350"></a><span class="lineno"> 2350</span>&#160;        };</div><div class="line"><a name="l02351"></a><span class="lineno"> 2351</span>&#160;</div><div class="line"><a name="l02352"></a><span class="lineno"> 2352</span>&#160;        <span class="comment">// Text (i.e. PCDATA) (anything but &lt; \0)</span></div><div class="line"><a name="l02353"></a><span class="lineno"> 2353</span>&#160;        <span class="keyword">template</span>&lt;<span class="keywordtype">int</span> Dummy&gt;</div><div class="line"><a name="l02354"></a><span class="lineno"> 2354</span>&#160;        <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> lookup_tables&lt;Dummy&gt;::lookup_text[256] = </div><div class="line"><a name="l02355"></a><span class="lineno"> 2355</span>&#160;        {</div><div class="line"><a name="l02356"></a><span class="lineno"> 2356</span>&#160;          <span class="comment">// 0   1   2   3   4   5   6   7   8   9   A   B   C   D   E   F</span></div><div class="line"><a name="l02357"></a><span class="lineno"> 2357</span>&#160;             0,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  <span class="comment">// 0</span></div><div class="line"><a name="l02358"></a><span class="lineno"> 2358</span>&#160;             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  <span class="comment">// 1</span></div><div class="line"><a name="l02359"></a><span class="lineno"> 2359</span>&#160;             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  <span class="comment">// 2</span></div><div class="line"><a name="l02360"></a><span class="lineno"> 2360</span>&#160;             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  0,  1,  1,  1,  <span class="comment">// 3</span></div><div class="line"><a name="l02361"></a><span class="lineno"> 2361</span>&#160;             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  <span class="comment">// 4</span></div><div class="line"><a name="l02362"></a><span class="lineno"> 2362</span>&#160;             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  <span class="comment">// 5</span></div><div class="line"><a name="l02363"></a><span class="lineno"> 2363</span>&#160;             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  <span class="comment">// 6</span></div><div class="line"><a name="l02364"></a><span class="lineno"> 2364</span>&#160;             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  <span class="comment">// 7</span></div><div class="line"><a name="l02365"></a><span class="lineno"> 2365</span>&#160;             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  <span class="comment">// 8</span></div><div class="line"><a name="l02366"></a><span class="lineno"> 2366</span>&#160;             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  <span class="comment">// 9</span></div><div class="line"><a name="l02367"></a><span class="lineno"> 2367</span>&#160;             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  <span class="comment">// A</span></div><div class="line"><a name="l02368"></a><span class="lineno"> 2368</span>&#160;             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  <span class="comment">// B</span></div><div class="line"><a name="l02369"></a><span class="lineno"> 2369</span>&#160;             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  <span class="comment">// C</span></div><div class="line"><a name="l02370"></a><span class="lineno"> 2370</span>&#160;             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  <span class="comment">// D</span></div><div class="line"><a name="l02371"></a><span class="lineno"> 2371</span>&#160;             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  <span class="comment">// E</span></div><div class="line"><a name="l02372"></a><span class="lineno"> 2372</span>&#160;             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1   <span class="comment">// F</span></div><div class="line"><a name="l02373"></a><span class="lineno"> 2373</span>&#160;        };</div><div class="line"><a name="l02374"></a><span class="lineno"> 2374</span>&#160;</div><div class="line"><a name="l02375"></a><span class="lineno"> 2375</span>&#160;        <span class="comment">// Text (i.e. PCDATA) that does not require processing when ws normalization is disabled </span></div><div class="line"><a name="l02376"></a><span class="lineno"> 2376</span>&#160;        <span class="comment">// (anything but &lt; \0 &amp;)</span></div><div class="line"><a name="l02377"></a><span class="lineno"> 2377</span>&#160;        <span class="keyword">template</span>&lt;<span class="keywordtype">int</span> Dummy&gt;</div><div class="line"><a name="l02378"></a><span class="lineno"> 2378</span>&#160;        <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> lookup_tables&lt;Dummy&gt;::lookup_text_pure_no_ws[256] = </div><div class="line"><a name="l02379"></a><span class="lineno"> 2379</span>&#160;        {</div><div class="line"><a name="l02380"></a><span class="lineno"> 2380</span>&#160;          <span class="comment">// 0   1   2   3   4   5   6   7   8   9   A   B   C   D   E   F</span></div><div class="line"><a name="l02381"></a><span class="lineno"> 2381</span>&#160;             0,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  <span class="comment">// 0</span></div><div class="line"><a name="l02382"></a><span class="lineno"> 2382</span>&#160;             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  <span class="comment">// 1</span></div><div class="line"><a name="l02383"></a><span class="lineno"> 2383</span>&#160;             1,  1,  1,  1,  1,  1,  0,  1,  1,  1,  1,  1,  1,  1,  1,  1,  <span class="comment">// 2</span></div><div class="line"><a name="l02384"></a><span class="lineno"> 2384</span>&#160;             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  0,  1,  1,  1,  <span class="comment">// 3</span></div><div class="line"><a name="l02385"></a><span class="lineno"> 2385</span>&#160;             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  <span class="comment">// 4</span></div><div class="line"><a name="l02386"></a><span class="lineno"> 2386</span>&#160;             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  <span class="comment">// 5</span></div><div class="line"><a name="l02387"></a><span class="lineno"> 2387</span>&#160;             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  <span class="comment">// 6</span></div><div class="line"><a name="l02388"></a><span class="lineno"> 2388</span>&#160;             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  <span class="comment">// 7</span></div><div class="line"><a name="l02389"></a><span class="lineno"> 2389</span>&#160;             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  <span class="comment">// 8</span></div><div class="line"><a name="l02390"></a><span class="lineno"> 2390</span>&#160;             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  <span class="comment">// 9</span></div><div class="line"><a name="l02391"></a><span class="lineno"> 2391</span>&#160;             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  <span class="comment">// A</span></div><div class="line"><a name="l02392"></a><span class="lineno"> 2392</span>&#160;             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  <span class="comment">// B</span></div><div class="line"><a name="l02393"></a><span class="lineno"> 2393</span>&#160;             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  <span class="comment">// C</span></div><div class="line"><a name="l02394"></a><span class="lineno"> 2394</span>&#160;             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  <span class="comment">// D</span></div><div class="line"><a name="l02395"></a><span class="lineno"> 2395</span>&#160;             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  <span class="comment">// E</span></div><div class="line"><a name="l02396"></a><span class="lineno"> 2396</span>&#160;             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1   <span class="comment">// F</span></div><div class="line"><a name="l02397"></a><span class="lineno"> 2397</span>&#160;        };</div><div class="line"><a name="l02398"></a><span class="lineno"> 2398</span>&#160;</div><div class="line"><a name="l02399"></a><span class="lineno"> 2399</span>&#160;        <span class="comment">// Text (i.e. PCDATA) that does not require processing when ws normalizationis is enabled</span></div><div class="line"><a name="l02400"></a><span class="lineno"> 2400</span>&#160;        <span class="comment">// (anything but &lt; \0 &amp; space \n \r \t)</span></div><div class="line"><a name="l02401"></a><span class="lineno"> 2401</span>&#160;        <span class="keyword">template</span>&lt;<span class="keywordtype">int</span> Dummy&gt;</div><div class="line"><a name="l02402"></a><span class="lineno"> 2402</span>&#160;        <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> lookup_tables&lt;Dummy&gt;::lookup_text_pure_with_ws[256] = </div><div class="line"><a name="l02403"></a><span class="lineno"> 2403</span>&#160;        {</div><div class="line"><a name="l02404"></a><span class="lineno"> 2404</span>&#160;          <span class="comment">// 0   1   2   3   4   5   6   7   8   9   A   B   C   D   E   F</span></div><div class="line"><a name="l02405"></a><span class="lineno"> 2405</span>&#160;             0,  1,  1,  1,  1,  1,  1,  1,  1,  0,  0,  1,  1,  0,  1,  1,  <span class="comment">// 0</span></div><div class="line"><a name="l02406"></a><span class="lineno"> 2406</span>&#160;             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  <span class="comment">// 1</span></div><div class="line"><a name="l02407"></a><span class="lineno"> 2407</span>&#160;             0,  1,  1,  1,  1,  1,  0,  1,  1,  1,  1,  1,  1,  1,  1,  1,  <span class="comment">// 2</span></div><div class="line"><a name="l02408"></a><span class="lineno"> 2408</span>&#160;             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  0,  1,  1,  1,  <span class="comment">// 3</span></div><div class="line"><a name="l02409"></a><span class="lineno"> 2409</span>&#160;             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  <span class="comment">// 4</span></div><div class="line"><a name="l02410"></a><span class="lineno"> 2410</span>&#160;             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  <span class="comment">// 5</span></div><div class="line"><a name="l02411"></a><span class="lineno"> 2411</span>&#160;             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  <span class="comment">// 6</span></div><div class="line"><a name="l02412"></a><span class="lineno"> 2412</span>&#160;             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  <span class="comment">// 7</span></div><div class="line"><a name="l02413"></a><span class="lineno"> 2413</span>&#160;             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  <span class="comment">// 8</span></div><div class="line"><a name="l02414"></a><span class="lineno"> 2414</span>&#160;             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  <span class="comment">// 9</span></div><div class="line"><a name="l02415"></a><span class="lineno"> 2415</span>&#160;             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  <span class="comment">// A</span></div><div class="line"><a name="l02416"></a><span class="lineno"> 2416</span>&#160;             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  <span class="comment">// B</span></div><div class="line"><a name="l02417"></a><span class="lineno"> 2417</span>&#160;             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  <span class="comment">// C</span></div><div class="line"><a name="l02418"></a><span class="lineno"> 2418</span>&#160;             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  <span class="comment">// D</span></div><div class="line"><a name="l02419"></a><span class="lineno"> 2419</span>&#160;             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  <span class="comment">// E</span></div><div class="line"><a name="l02420"></a><span class="lineno"> 2420</span>&#160;             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1   <span class="comment">// F</span></div><div class="line"><a name="l02421"></a><span class="lineno"> 2421</span>&#160;        };</div><div class="line"><a name="l02422"></a><span class="lineno"> 2422</span>&#160;</div><div class="line"><a name="l02423"></a><span class="lineno"> 2423</span>&#160;        <span class="comment">// Attribute name (anything but space \n \r \t / &lt; &gt; = ? ! \0)</span></div><div class="line"><a name="l02424"></a><span class="lineno"> 2424</span>&#160;        <span class="keyword">template</span>&lt;<span class="keywordtype">int</span> Dummy&gt;</div><div class="line"><a name="l02425"></a><span class="lineno"> 2425</span>&#160;        <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> lookup_tables&lt;Dummy&gt;::lookup_attribute_name[256] = </div><div class="line"><a name="l02426"></a><span class="lineno"> 2426</span>&#160;        {</div><div class="line"><a name="l02427"></a><span class="lineno"> 2427</span>&#160;          <span class="comment">// 0   1   2   3   4   5   6   7   8   9   A   B   C   D   E   F</span></div><div class="line"><a name="l02428"></a><span class="lineno"> 2428</span>&#160;             0,  1,  1,  1,  1,  1,  1,  1,  1,  0,  0,  1,  1,  0,  1,  1,  <span class="comment">// 0</span></div><div class="line"><a name="l02429"></a><span class="lineno"> 2429</span>&#160;             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  <span class="comment">// 1</span></div><div class="line"><a name="l02430"></a><span class="lineno"> 2430</span>&#160;             0,  0,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  0,  <span class="comment">// 2</span></div><div class="line"><a name="l02431"></a><span class="lineno"> 2431</span>&#160;             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  0,  0,  0,  0,  <span class="comment">// 3</span></div><div class="line"><a name="l02432"></a><span class="lineno"> 2432</span>&#160;             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  <span class="comment">// 4</span></div><div class="line"><a name="l02433"></a><span class="lineno"> 2433</span>&#160;             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  <span class="comment">// 5</span></div><div class="line"><a name="l02434"></a><span class="lineno"> 2434</span>&#160;             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  <span class="comment">// 6</span></div><div class="line"><a name="l02435"></a><span class="lineno"> 2435</span>&#160;             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  <span class="comment">// 7</span></div><div class="line"><a name="l02436"></a><span class="lineno"> 2436</span>&#160;             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  <span class="comment">// 8</span></div><div class="line"><a name="l02437"></a><span class="lineno"> 2437</span>&#160;             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  <span class="comment">// 9</span></div><div class="line"><a name="l02438"></a><span class="lineno"> 2438</span>&#160;             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  <span class="comment">// A</span></div><div class="line"><a name="l02439"></a><span class="lineno"> 2439</span>&#160;             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  <span class="comment">// B</span></div><div class="line"><a name="l02440"></a><span class="lineno"> 2440</span>&#160;             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  <span class="comment">// C</span></div><div class="line"><a name="l02441"></a><span class="lineno"> 2441</span>&#160;             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  <span class="comment">// D</span></div><div class="line"><a name="l02442"></a><span class="lineno"> 2442</span>&#160;             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  <span class="comment">// E</span></div><div class="line"><a name="l02443"></a><span class="lineno"> 2443</span>&#160;             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1   <span class="comment">// F</span></div><div class="line"><a name="l02444"></a><span class="lineno"> 2444</span>&#160;        };</div><div class="line"><a name="l02445"></a><span class="lineno"> 2445</span>&#160;</div><div class="line"><a name="l02446"></a><span class="lineno"> 2446</span>&#160;        <span class="comment">// Attribute data with single quote (anything but &#39; \0)</span></div><div class="line"><a name="l02447"></a><span class="lineno"> 2447</span>&#160;        <span class="keyword">template</span>&lt;<span class="keywordtype">int</span> Dummy&gt;</div><div class="line"><a name="l02448"></a><span class="lineno"> 2448</span>&#160;        <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> lookup_tables&lt;Dummy&gt;::lookup_attribute_data_1[256] = </div><div class="line"><a name="l02449"></a><span class="lineno"> 2449</span>&#160;        {</div><div class="line"><a name="l02450"></a><span class="lineno"> 2450</span>&#160;          <span class="comment">// 0   1   2   3   4   5   6   7   8   9   A   B   C   D   E   F</span></div><div class="line"><a name="l02451"></a><span class="lineno"> 2451</span>&#160;             0,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  <span class="comment">// 0</span></div><div class="line"><a name="l02452"></a><span class="lineno"> 2452</span>&#160;             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  <span class="comment">// 1</span></div><div class="line"><a name="l02453"></a><span class="lineno"> 2453</span>&#160;             1,  1,  1,  1,  1,  1,  1,  0,  1,  1,  1,  1,  1,  1,  1,  1,  <span class="comment">// 2</span></div><div class="line"><a name="l02454"></a><span class="lineno"> 2454</span>&#160;             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  <span class="comment">// 3</span></div><div class="line"><a name="l02455"></a><span class="lineno"> 2455</span>&#160;             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  <span class="comment">// 4</span></div><div class="line"><a name="l02456"></a><span class="lineno"> 2456</span>&#160;             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  <span class="comment">// 5</span></div><div class="line"><a name="l02457"></a><span class="lineno"> 2457</span>&#160;             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  <span class="comment">// 6</span></div><div class="line"><a name="l02458"></a><span class="lineno"> 2458</span>&#160;             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  <span class="comment">// 7</span></div><div class="line"><a name="l02459"></a><span class="lineno"> 2459</span>&#160;             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  <span class="comment">// 8</span></div><div class="line"><a name="l02460"></a><span class="lineno"> 2460</span>&#160;             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  <span class="comment">// 9</span></div><div class="line"><a name="l02461"></a><span class="lineno"> 2461</span>&#160;             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  <span class="comment">// A</span></div><div class="line"><a name="l02462"></a><span class="lineno"> 2462</span>&#160;             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  <span class="comment">// B</span></div><div class="line"><a name="l02463"></a><span class="lineno"> 2463</span>&#160;             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  <span class="comment">// C</span></div><div class="line"><a name="l02464"></a><span class="lineno"> 2464</span>&#160;             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  <span class="comment">// D</span></div><div class="line"><a name="l02465"></a><span class="lineno"> 2465</span>&#160;             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  <span class="comment">// E</span></div><div class="line"><a name="l02466"></a><span class="lineno"> 2466</span>&#160;             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1   <span class="comment">// F</span></div><div class="line"><a name="l02467"></a><span class="lineno"> 2467</span>&#160;        };</div><div class="line"><a name="l02468"></a><span class="lineno"> 2468</span>&#160;</div><div class="line"><a name="l02469"></a><span class="lineno"> 2469</span>&#160;        <span class="comment">// Attribute data with single quote that does not require processing (anything but &#39; \0 &amp;)</span></div><div class="line"><a name="l02470"></a><span class="lineno"> 2470</span>&#160;        <span class="keyword">template</span>&lt;<span class="keywordtype">int</span> Dummy&gt;</div><div class="line"><a name="l02471"></a><span class="lineno"> 2471</span>&#160;        <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> lookup_tables&lt;Dummy&gt;::lookup_attribute_data_1_pure[256] = </div><div class="line"><a name="l02472"></a><span class="lineno"> 2472</span>&#160;        {</div><div class="line"><a name="l02473"></a><span class="lineno"> 2473</span>&#160;          <span class="comment">// 0   1   2   3   4   5   6   7   8   9   A   B   C   D   E   F</span></div><div class="line"><a name="l02474"></a><span class="lineno"> 2474</span>&#160;             0,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  <span class="comment">// 0</span></div><div class="line"><a name="l02475"></a><span class="lineno"> 2475</span>&#160;             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  <span class="comment">// 1</span></div><div class="line"><a name="l02476"></a><span class="lineno"> 2476</span>&#160;             1,  1,  1,  1,  1,  1,  0,  0,  1,  1,  1,  1,  1,  1,  1,  1,  <span class="comment">// 2</span></div><div class="line"><a name="l02477"></a><span class="lineno"> 2477</span>&#160;             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  <span class="comment">// 3</span></div><div class="line"><a name="l02478"></a><span class="lineno"> 2478</span>&#160;             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  <span class="comment">// 4</span></div><div class="line"><a name="l02479"></a><span class="lineno"> 2479</span>&#160;             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  <span class="comment">// 5</span></div><div class="line"><a name="l02480"></a><span class="lineno"> 2480</span>&#160;             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  <span class="comment">// 6</span></div><div class="line"><a name="l02481"></a><span class="lineno"> 2481</span>&#160;             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  <span class="comment">// 7</span></div><div class="line"><a name="l02482"></a><span class="lineno"> 2482</span>&#160;             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  <span class="comment">// 8</span></div><div class="line"><a name="l02483"></a><span class="lineno"> 2483</span>&#160;             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  <span class="comment">// 9</span></div><div class="line"><a name="l02484"></a><span class="lineno"> 2484</span>&#160;             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  <span class="comment">// A</span></div><div class="line"><a name="l02485"></a><span class="lineno"> 2485</span>&#160;             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  <span class="comment">// B</span></div><div class="line"><a name="l02486"></a><span class="lineno"> 2486</span>&#160;             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  <span class="comment">// C</span></div><div class="line"><a name="l02487"></a><span class="lineno"> 2487</span>&#160;             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  <span class="comment">// D</span></div><div class="line"><a name="l02488"></a><span class="lineno"> 2488</span>&#160;             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  <span class="comment">// E</span></div><div class="line"><a name="l02489"></a><span class="lineno"> 2489</span>&#160;             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1   <span class="comment">// F</span></div><div class="line"><a name="l02490"></a><span class="lineno"> 2490</span>&#160;        };</div><div class="line"><a name="l02491"></a><span class="lineno"> 2491</span>&#160;</div><div class="line"><a name="l02492"></a><span class="lineno"> 2492</span>&#160;        <span class="comment">// Attribute data with double quote (anything but &quot; \0)</span></div><div class="line"><a name="l02493"></a><span class="lineno"> 2493</span>&#160;        <span class="keyword">template</span>&lt;<span class="keywordtype">int</span> Dummy&gt;</div><div class="line"><a name="l02494"></a><span class="lineno"> 2494</span>&#160;        <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> lookup_tables&lt;Dummy&gt;::lookup_attribute_data_2[256] = </div><div class="line"><a name="l02495"></a><span class="lineno"> 2495</span>&#160;        {</div><div class="line"><a name="l02496"></a><span class="lineno"> 2496</span>&#160;          <span class="comment">// 0   1   2   3   4   5   6   7   8   9   A   B   C   D   E   F</span></div><div class="line"><a name="l02497"></a><span class="lineno"> 2497</span>&#160;             0,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  <span class="comment">// 0</span></div><div class="line"><a name="l02498"></a><span class="lineno"> 2498</span>&#160;             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  <span class="comment">// 1</span></div><div class="line"><a name="l02499"></a><span class="lineno"> 2499</span>&#160;             1,  1,  0,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  <span class="comment">// 2</span></div><div class="line"><a name="l02500"></a><span class="lineno"> 2500</span>&#160;             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  <span class="comment">// 3</span></div><div class="line"><a name="l02501"></a><span class="lineno"> 2501</span>&#160;             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  <span class="comment">// 4</span></div><div class="line"><a name="l02502"></a><span class="lineno"> 2502</span>&#160;             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  <span class="comment">// 5</span></div><div class="line"><a name="l02503"></a><span class="lineno"> 2503</span>&#160;             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  <span class="comment">// 6</span></div><div class="line"><a name="l02504"></a><span class="lineno"> 2504</span>&#160;             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  <span class="comment">// 7</span></div><div class="line"><a name="l02505"></a><span class="lineno"> 2505</span>&#160;             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  <span class="comment">// 8</span></div><div class="line"><a name="l02506"></a><span class="lineno"> 2506</span>&#160;             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  <span class="comment">// 9</span></div><div class="line"><a name="l02507"></a><span class="lineno"> 2507</span>&#160;             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  <span class="comment">// A</span></div><div class="line"><a name="l02508"></a><span class="lineno"> 2508</span>&#160;             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  <span class="comment">// B</span></div><div class="line"><a name="l02509"></a><span class="lineno"> 2509</span>&#160;             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  <span class="comment">// C</span></div><div class="line"><a name="l02510"></a><span class="lineno"> 2510</span>&#160;             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  <span class="comment">// D</span></div><div class="line"><a name="l02511"></a><span class="lineno"> 2511</span>&#160;             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  <span class="comment">// E</span></div><div class="line"><a name="l02512"></a><span class="lineno"> 2512</span>&#160;             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1   <span class="comment">// F</span></div><div class="line"><a name="l02513"></a><span class="lineno"> 2513</span>&#160;        };</div><div class="line"><a name="l02514"></a><span class="lineno"> 2514</span>&#160;</div><div class="line"><a name="l02515"></a><span class="lineno"> 2515</span>&#160;        <span class="comment">// Attribute data with double quote that does not require processing (anything but &quot; \0 &amp;)</span></div><div class="line"><a name="l02516"></a><span class="lineno"> 2516</span>&#160;        <span class="keyword">template</span>&lt;<span class="keywordtype">int</span> Dummy&gt;</div><div class="line"><a name="l02517"></a><span class="lineno"> 2517</span>&#160;        <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> lookup_tables&lt;Dummy&gt;::lookup_attribute_data_2_pure[256] = </div><div class="line"><a name="l02518"></a><span class="lineno"> 2518</span>&#160;        {</div><div class="line"><a name="l02519"></a><span class="lineno"> 2519</span>&#160;          <span class="comment">// 0   1   2   3   4   5   6   7   8   9   A   B   C   D   E   F</span></div><div class="line"><a name="l02520"></a><span class="lineno"> 2520</span>&#160;             0,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  <span class="comment">// 0</span></div><div class="line"><a name="l02521"></a><span class="lineno"> 2521</span>&#160;             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  <span class="comment">// 1</span></div><div class="line"><a name="l02522"></a><span class="lineno"> 2522</span>&#160;             1,  1,  0,  1,  1,  1,  0,  1,  1,  1,  1,  1,  1,  1,  1,  1,  <span class="comment">// 2</span></div><div class="line"><a name="l02523"></a><span class="lineno"> 2523</span>&#160;             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  <span class="comment">// 3</span></div><div class="line"><a name="l02524"></a><span class="lineno"> 2524</span>&#160;             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  <span class="comment">// 4</span></div><div class="line"><a name="l02525"></a><span class="lineno"> 2525</span>&#160;             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  <span class="comment">// 5</span></div><div class="line"><a name="l02526"></a><span class="lineno"> 2526</span>&#160;             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  <span class="comment">// 6</span></div><div class="line"><a name="l02527"></a><span class="lineno"> 2527</span>&#160;             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  <span class="comment">// 7</span></div><div class="line"><a name="l02528"></a><span class="lineno"> 2528</span>&#160;             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  <span class="comment">// 8</span></div><div class="line"><a name="l02529"></a><span class="lineno"> 2529</span>&#160;             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  <span class="comment">// 9</span></div><div class="line"><a name="l02530"></a><span class="lineno"> 2530</span>&#160;             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  <span class="comment">// A</span></div><div class="line"><a name="l02531"></a><span class="lineno"> 2531</span>&#160;             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  <span class="comment">// B</span></div><div class="line"><a name="l02532"></a><span class="lineno"> 2532</span>&#160;             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  <span class="comment">// C</span></div><div class="line"><a name="l02533"></a><span class="lineno"> 2533</span>&#160;             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  <span class="comment">// D</span></div><div class="line"><a name="l02534"></a><span class="lineno"> 2534</span>&#160;             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  <span class="comment">// E</span></div><div class="line"><a name="l02535"></a><span class="lineno"> 2535</span>&#160;             1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1   <span class="comment">// F</span></div><div class="line"><a name="l02536"></a><span class="lineno"> 2536</span>&#160;        };</div><div class="line"><a name="l02537"></a><span class="lineno"> 2537</span>&#160;</div><div class="line"><a name="l02538"></a><span class="lineno"> 2538</span>&#160;        <span class="comment">// Digits (dec and hex, 255 denotes end of numeric character reference)</span></div><div class="line"><a name="l02539"></a><span class="lineno"> 2539</span>&#160;        <span class="keyword">template</span>&lt;<span class="keywordtype">int</span> Dummy&gt;</div><div class="line"><a name="l02540"></a><span class="lineno"> 2540</span>&#160;        <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> lookup_tables&lt;Dummy&gt;::lookup_digits[256] = </div><div class="line"><a name="l02541"></a><span class="lineno"> 2541</span>&#160;        {</div><div class="line"><a name="l02542"></a><span class="lineno"> 2542</span>&#160;          <span class="comment">// 0   1   2   3   4   5   6   7   8   9   A   B   C   D   E   F</span></div><div class="line"><a name="l02543"></a><span class="lineno"> 2543</span>&#160;           255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,  <span class="comment">// 0</span></div><div class="line"><a name="l02544"></a><span class="lineno"> 2544</span>&#160;           255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,  <span class="comment">// 1</span></div><div class="line"><a name="l02545"></a><span class="lineno"> 2545</span>&#160;           255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,  <span class="comment">// 2</span></div><div class="line"><a name="l02546"></a><span class="lineno"> 2546</span>&#160;             0,  1,  2,  3,  4,  5,  6,  7,  8,  9,255,255,255,255,255,255,  <span class="comment">// 3</span></div><div class="line"><a name="l02547"></a><span class="lineno"> 2547</span>&#160;           255, 10, 11, 12, 13, 14, 15,255,255,255,255,255,255,255,255,255,  <span class="comment">// 4</span></div><div class="line"><a name="l02548"></a><span class="lineno"> 2548</span>&#160;           255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,  <span class="comment">// 5</span></div><div class="line"><a name="l02549"></a><span class="lineno"> 2549</span>&#160;           255, 10, 11, 12, 13, 14, 15,255,255,255,255,255,255,255,255,255,  <span class="comment">// 6</span></div><div class="line"><a name="l02550"></a><span class="lineno"> 2550</span>&#160;           255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,  <span class="comment">// 7</span></div><div class="line"><a name="l02551"></a><span class="lineno"> 2551</span>&#160;           255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,  <span class="comment">// 8</span></div><div class="line"><a name="l02552"></a><span class="lineno"> 2552</span>&#160;           255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,  <span class="comment">// 9</span></div><div class="line"><a name="l02553"></a><span class="lineno"> 2553</span>&#160;           255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,  <span class="comment">// A</span></div><div class="line"><a name="l02554"></a><span class="lineno"> 2554</span>&#160;           255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,  <span class="comment">// B</span></div><div class="line"><a name="l02555"></a><span class="lineno"> 2555</span>&#160;           255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,  <span class="comment">// C</span></div><div class="line"><a name="l02556"></a><span class="lineno"> 2556</span>&#160;           255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,  <span class="comment">// D</span></div><div class="line"><a name="l02557"></a><span class="lineno"> 2557</span>&#160;           255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,  <span class="comment">// E</span></div><div class="line"><a name="l02558"></a><span class="lineno"> 2558</span>&#160;           255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255   <span class="comment">// F</span></div><div class="line"><a name="l02559"></a><span class="lineno"> 2559</span>&#160;        };</div><div class="line"><a name="l02560"></a><span class="lineno"> 2560</span>&#160;    </div><div class="line"><a name="l02561"></a><span class="lineno"> 2561</span>&#160;        <span class="comment">// Upper case conversion</span></div><div class="line"><a name="l02562"></a><span class="lineno"> 2562</span>&#160;        <span class="keyword">template</span>&lt;<span class="keywordtype">int</span> Dummy&gt;</div><div class="line"><a name="l02563"></a><span class="lineno"> 2563</span>&#160;        <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> lookup_tables&lt;Dummy&gt;::lookup_upcase[256] = </div><div class="line"><a name="l02564"></a><span class="lineno"> 2564</span>&#160;        {</div><div class="line"><a name="l02565"></a><span class="lineno"> 2565</span>&#160;          <span class="comment">// 0,  1,  2,  3,  4,  5,  6,  7,  8,  9,  A   B   C   D   E   F</span></div><div class="line"><a name="l02566"></a><span class="lineno"> 2566</span>&#160;           0,  1,  2,  3,  4,  5,  6,  7,  8,  9,  10, 11, 12, 13, 14, 15,   <span class="comment">// 0</span></div><div class="line"><a name="l02567"></a><span class="lineno"> 2567</span>&#160;           16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,   <span class="comment">// 1</span></div><div class="line"><a name="l02568"></a><span class="lineno"> 2568</span>&#160;           32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,   <span class="comment">// 2</span></div><div class="line"><a name="l02569"></a><span class="lineno"> 2569</span>&#160;           48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,   <span class="comment">// 3</span></div><div class="line"><a name="l02570"></a><span class="lineno"> 2570</span>&#160;           64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79,   <span class="comment">// 4</span></div><div class="line"><a name="l02571"></a><span class="lineno"> 2571</span>&#160;           80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95,   <span class="comment">// 5</span></div><div class="line"><a name="l02572"></a><span class="lineno"> 2572</span>&#160;           96, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79,   <span class="comment">// 6</span></div><div class="line"><a name="l02573"></a><span class="lineno"> 2573</span>&#160;           80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 123,124,125,126,127,  <span class="comment">// 7</span></div><div class="line"><a name="l02574"></a><span class="lineno"> 2574</span>&#160;           128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,  <span class="comment">// 8</span></div><div class="line"><a name="l02575"></a><span class="lineno"> 2575</span>&#160;           144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,  <span class="comment">// 9</span></div><div class="line"><a name="l02576"></a><span class="lineno"> 2576</span>&#160;           160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,  <span class="comment">// A</span></div><div class="line"><a name="l02577"></a><span class="lineno"> 2577</span>&#160;           176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,  <span class="comment">// B</span></div><div class="line"><a name="l02578"></a><span class="lineno"> 2578</span>&#160;           192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,  <span class="comment">// C</span></div><div class="line"><a name="l02579"></a><span class="lineno"> 2579</span>&#160;           208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,  <span class="comment">// D</span></div><div class="line"><a name="l02580"></a><span class="lineno"> 2580</span>&#160;           224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,  <span class="comment">// E</span></div><div class="line"><a name="l02581"></a><span class="lineno"> 2581</span>&#160;           240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255   <span class="comment">// F</span></div><div class="line"><a name="l02582"></a><span class="lineno"> 2582</span>&#160;        };</div><div class="line"><a name="l02583"></a><span class="lineno"> 2583</span>&#160;    }</div><div class="line"><a name="l02585"></a><span class="lineno"> 2585</span>&#160;</div><div class="line"><a name="l02586"></a><span class="lineno"> 2586</span>&#160;}</div><div class="line"><a name="l02587"></a><span class="lineno"> 2587</span>&#160;</div><div class="line"><a name="l02588"></a><span class="lineno"> 2588</span>&#160;<span class="comment">// Undefine internal macros</span></div><div class="line"><a name="l02589"></a><span class="lineno"> 2589</span>&#160;<span class="preprocessor">#undef RAPIDXML_PARSE_ERROR</span></div><div class="line"><a name="l02590"></a><span class="lineno"> 2590</span>&#160;</div><div class="line"><a name="l02591"></a><span class="lineno"> 2591</span>&#160;<span class="comment">// On MSVC, restore warnings state</span></div><div class="line"><a name="l02592"></a><span class="lineno"> 2592</span>&#160;<span class="preprocessor">#ifdef _MSC_VER</span></div><div class="line"><a name="l02593"></a><span class="lineno"> 2593</span>&#160;<span class="preprocessor">    #pragma warning(pop)</span></div><div class="line"><a name="l02594"></a><span class="lineno"> 2594</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l02595"></a><span class="lineno"> 2595</span>&#160;</div><div class="line"><a name="l02596"></a><span class="lineno"> 2596</span>&#160;<span class="preprocessor">#endif</span></div><div class="ttc" id="classrapidxml_1_1xml__base_html_aa807062868d671a8c798d9d1bf016988"><div class="ttname"><a href="classrapidxml_1_1xml__base.html#aa807062868d671a8c798d9d1bf016988">rapidxml::xml_base::parent</a></div><div class="ttdeci">xml_node&lt; Ch &gt; * parent() const</div><div class="ttdoc">Gets node parent. </div><div class="ttdef"><b>Definition:</b> rapidxml.h:770</div></div>
<div class="ttc" id="structrapidxml_1_1xml__document_1_1node__name__pred_html"><div class="ttname"><a href="structrapidxml_1_1xml__document_1_1node__name__pred.html">rapidxml::xml_document::node_name_pred</a></div><div class="ttdef"><b>Definition:</b> rapidxml.h:1437</div></div>
<div class="ttc" id="classrapidxml_1_1xml__node_html_a33912a5ceef221d662bbac67c70e1397"><div class="ttname"><a href="classrapidxml_1_1xml__node.html#a33912a5ceef221d662bbac67c70e1397">rapidxml::xml_node::m_type</a></div><div class="ttdeci">node_type m_type</div><div class="ttdef"><b>Definition:</b> rapidxml.h:1337</div></div>
<div class="ttc" id="namespacerapidxml_html_abb456db38f7efb746c4330eed6072a7c"><div class="ttname"><a href="namespacerapidxml.html#abb456db38f7efb746c4330eed6072a7c">rapidxml::node_type</a></div><div class="ttdeci">node_type</div><div class="ttdoc">Enumeration listing all node types produced by the parser. Use xml_node::type() function to query nod...</div><div class="ttdef"><b>Definition:</b> rapidxml.h:143</div></div>
<div class="ttc" id="classrapidxml_1_1memory__pool_html_a0a10679fc17597d339a0dc107f8a94ac"><div class="ttname"><a href="classrapidxml_1_1memory__pool.html#a0a10679fc17597d339a0dc107f8a94ac">rapidxml::memory_pool::clone_node</a></div><div class="ttdeci">xml_node&lt; Ch &gt; * clone_node(const xml_node&lt; Ch &gt; *source, xml_node&lt; Ch &gt; *result=0)</div><div class="ttdoc">Clones an xml_node and its hierarchy of child nodes and attributes. Nodes and attributes are allocate...</div><div class="ttdef"><b>Definition:</b> rapidxml.h:497</div></div>
<div class="ttc" id="namespaceyage_html_a6aea783cb978923211e165efefec4a7b"><div class="ttname"><a href="namespaceyage.html#a6aea783cb978923211e165efefec4a7b">yage::init</a></div><div class="ttdeci">bool init()</div><div class="ttdoc">Initializes YAGE. </div><div class="ttdef"><b>Definition:</b> yage.h:47</div></div>
<div class="ttc" id="structrapidxml_1_1xml__document_1_1text__pure__no__ws__pred_html"><div class="ttname"><a href="structrapidxml_1_1xml__document_1_1text__pure__no__ws__pred.html">rapidxml::xml_document::text_pure_no_ws_pred</a></div><div class="ttdef"><b>Definition:</b> rapidxml.h:1464</div></div>
<div class="ttc" id="classrapidxml_1_1memory__pool_html_aad377c835fdaed1cb2cc9df194cf84e4"><div class="ttname"><a href="classrapidxml_1_1memory__pool.html#aad377c835fdaed1cb2cc9df194cf84e4">rapidxml::memory_pool::clear</a></div><div class="ttdeci">void clear()</div><div class="ttdoc">Clears the pool. This causes memory occupied by nodes allocated by the pool to be freed...</div><div class="ttdef"><b>Definition:</b> rapidxml.h:525</div></div>
<div class="ttc" id="structrapidxml_1_1xml__document_1_1text__pred_html"><div class="ttname"><a href="structrapidxml_1_1xml__document_1_1text__pred.html">rapidxml::xml_document::text_pred</a></div><div class="ttdef"><b>Definition:</b> rapidxml.h:1455</div></div>
<div class="ttc" id="classrapidxml_1_1xml__base_html_a5a8c76a7274b4180213796422c4df76f"><div class="ttname"><a href="classrapidxml_1_1xml__base.html#a5a8c76a7274b4180213796422c4df76f">rapidxml::xml_base::m_name_size</a></div><div class="ttdeci">std::size_t m_name_size</div><div class="ttdef"><b>Definition:</b> rapidxml.h:786</div></div>
<div class="ttc" id="classrapidxml_1_1xml__node_html_a8bd9019960b90605a45998b661fb1b0e"><div class="ttname"><a href="classrapidxml_1_1xml__node.html#a8bd9019960b90605a45998b661fb1b0e">rapidxml::xml_node::xml_node</a></div><div class="ttdeci">xml_node(node_type type)</div><div class="ttdoc">Constructs an empty node with the specified type. Consider using memory_pool of appropriate document ...</div><div class="ttdef"><b>Definition:</b> rapidxml.h:901</div></div>
<div class="ttc" id="classrapidxml_1_1parse__error_html_a41bffadc72eec238cf4b7d14c10c16ca"><div class="ttname"><a href="classrapidxml_1_1parse__error.html#a41bffadc72eec238cf4b7d14c10c16ca">rapidxml::parse_error::m_what</a></div><div class="ttdeci">const char * m_what</div><div class="ttdef"><b>Definition:</b> rapidxml.h:101</div></div>
<div class="ttc" id="namespacerapidxml_html_abb456db38f7efb746c4330eed6072a7ca1a695e1384ec3bd4df3eff65ec609a96"><div class="ttname"><a href="namespacerapidxml.html#abb456db38f7efb746c4330eed6072a7ca1a695e1384ec3bd4df3eff65ec609a96">rapidxml::node_comment</a></div><div class="ttdoc">A comment node. </div><div class="ttdef"><b>Definition:</b> rapidxml.h:149</div></div>
<div class="ttc" id="classrapidxml_1_1xml__document_html_a826929ff54242532198701f19ff5f83f"><div class="ttname"><a href="classrapidxml_1_1xml__document.html#a826929ff54242532198701f19ff5f83f">rapidxml::xml_document::clear</a></div><div class="ttdeci">void clear()</div><div class="ttdoc">Clears the document by deleting all nodes and clearing the memory pool. All nodes owned by document p...</div><div class="ttdef"><b>Definition:</b> rapidxml.h:1415</div></div>
<div class="ttc" id="structrapidxml_1_1xml__document_1_1attribute__value__pred_html_a1c81901177c96057b2808747fc62f9c5"><div class="ttname"><a href="structrapidxml_1_1xml__document_1_1attribute__value__pred.html#a1c81901177c96057b2808747fc62f9c5">rapidxml::xml_document::attribute_value_pred::test</a></div><div class="ttdeci">static unsigned char test(Ch ch)</div><div class="ttdef"><b>Definition:</b> rapidxml.h:1485</div></div>
<div class="ttc" id="rapidxml_8h_html_ad3344fdba5167e17f48a8b2318731198"><div class="ttname"><a href="rapidxml_8h.html#ad3344fdba5167e17f48a8b2318731198">RAPIDXML_ALIGNMENT</a></div><div class="ttdeci">#define RAPIDXML_ALIGNMENT</div><div class="ttdef"><b>Definition:</b> rapidxml.h:131</div></div>
<div class="ttc" id="classrapidxml_1_1xml__base_html_ae55060ae958c6e6465d6c8db852ec6ce"><div class="ttname"><a href="classrapidxml_1_1xml__base.html#ae55060ae958c6e6465d6c8db852ec6ce">rapidxml::xml_base::name</a></div><div class="ttdeci">void name(const Ch *name, std::size_t size)</div><div class="ttdoc">Sets name of node to a non zero-terminated string. See ownership_of_strings.    Note that node does n...</div><div class="ttdef"><b>Definition:</b> rapidxml.h:721</div></div>
<div class="ttc" id="namespacerapidxml_html_abb48dc65db75d9e49734bc5bd2fabbfc"><div class="ttname"><a href="namespacerapidxml.html#abb48dc65db75d9e49734bc5bd2fabbfc">rapidxml::parse_full</a></div><div class="ttdeci">const int parse_full</div><div class="ttdoc">A combination of parse flags resulting in largest amount of data being extracted. This usually result...</div><div class="ttdef"><b>Definition:</b> rapidxml.h:280</div></div>
<div class="ttc" id="classrapidxml_1_1xml__base_html_a20c8ffbe0c7a0b4231681ab8b99330a4"><div class="ttname"><a href="classrapidxml_1_1xml__base.html#a20c8ffbe0c7a0b4231681ab8b99330a4">rapidxml::xml_base::name_size</a></div><div class="ttdeci">std::size_t name_size() const</div><div class="ttdoc">Gets size of node name, not including terminator character. This function works correctly irrespectiv...</div><div class="ttdef"><b>Definition:</b> rapidxml.h:681</div></div>
<div class="ttc" id="structrapidxml_1_1xml__document_1_1text__pure__with__ws__pred_html"><div class="ttname"><a href="structrapidxml_1_1xml__document_1_1text__pure__with__ws__pred.html">rapidxml::xml_document::text_pure_with_ws_pred</a></div><div class="ttdef"><b>Definition:</b> rapidxml.h:1473</div></div>
<div class="ttc" id="classrapidxml_1_1memory__pool_html_a775205c5faa60b63385c24368d26d4e1"><div class="ttname"><a href="classrapidxml_1_1memory__pool.html#a775205c5faa60b63385c24368d26d4e1">rapidxml::memory_pool::m_begin</a></div><div class="ttdeci">char * m_begin</div><div class="ttdef"><b>Definition:</b> rapidxml.h:633</div></div>
<div class="ttc" id="classrapidxml_1_1xml__node_html_a202e84dfdd34cb65557b64e31b7e205a"><div class="ttname"><a href="classrapidxml_1_1xml__node.html#a202e84dfdd34cb65557b64e31b7e205a">rapidxml::xml_node::m_next_sibling</a></div><div class="ttdeci">xml_node&lt; Ch &gt; * m_next_sibling</div><div class="ttdef"><b>Definition:</b> rapidxml.h:1343</div></div>
<div class="ttc" id="classrapidxml_1_1xml__base_html"><div class="ttname"><a href="classrapidxml_1_1xml__base.html">rapidxml::xml_base</a></div><div class="ttdoc">Base class for xml_node and xml_attribute implementing common functions: name(), name_size(), value(), value_size() and parent(). </div><div class="ttdef"><b>Definition:</b> rapidxml.h:648</div></div>
<div class="ttc" id="classrapidxml_1_1xml__node_html_a8b62ee76489faf8e2d1210869d547684"><div class="ttname"><a href="classrapidxml_1_1xml__node.html#a8b62ee76489faf8e2d1210869d547684">rapidxml::xml_node::prepend_attribute</a></div><div class="ttdeci">void prepend_attribute(xml_attribute&lt; Ch &gt; *attribute)</div><div class="ttdoc">Prepends a new attribute to the node. </div><div class="ttdef"><b>Definition:</b> rapidxml.h:1197</div></div>
<div class="ttc" id="namespacerapidxml_html_a00e6fea134b786ea6efeed1c8bc4a668"><div class="ttname"><a href="namespacerapidxml.html#a00e6fea134b786ea6efeed1c8bc4a668">rapidxml::parse_no_element_values</a></div><div class="ttdeci">const int parse_no_element_values</div><div class="ttdoc">Parse flag instructing the parser to not use text of first data node as a value of parent element...</div><div class="ttdef"><b>Definition:</b> rapidxml.h:172</div></div>
<div class="ttc" id="namespacerapidxml_html_a89113c103ffaf77615d1aa330c8dcca8"><div class="ttname"><a href="namespacerapidxml.html#a89113c103ffaf77615d1aa330c8dcca8">rapidxml::parse_no_entity_translation</a></div><div class="ttdeci">const int parse_no_entity_translation</div><div class="ttdoc">Parse flag instructing the parser to not translate entities in the source text. By default entities a...</div><div class="ttdef"><b>Definition:</b> rapidxml.h:186</div></div>
<div class="ttc" id="classrapidxml_1_1xml__document_html_a09e12a4233a07387d4b5a5ad239388aa"><div class="ttname"><a href="classrapidxml_1_1xml__document.html#a09e12a4233a07387d4b5a5ad239388aa">rapidxml::xml_document::parse_pi</a></div><div class="ttdeci">xml_node&lt; Ch &gt; * parse_pi(Ch *&amp;text)</div><div class="ttdef"><b>Definition:</b> rapidxml.h:1880</div></div>
<div class="ttc" id="classrapidxml_1_1xml__node_html_af23d2d56182411e9261ca6974bfd767f"><div class="ttname"><a href="classrapidxml_1_1xml__node.html#af23d2d56182411e9261ca6974bfd767f">rapidxml::xml_node::document</a></div><div class="ttdeci">xml_document&lt; Ch &gt; * document() const</div><div class="ttdoc">Gets document of which node is a child. </div><div class="ttdef"><b>Definition:</b> rapidxml.h:923</div></div>
<div class="ttc" id="classrapidxml_1_1parse__error_html_a986003116ebcb49a69a20228da306232"><div class="ttname"><a href="classrapidxml_1_1parse__error.html#a986003116ebcb49a69a20228da306232">rapidxml::parse_error::what</a></div><div class="ttdeci">virtual const char * what() const</div><div class="ttdoc">Gets human readable description of error. </div><div class="ttdef"><b>Definition:</b> rapidxml.h:85</div></div>
<div class="ttc" id="classrapidxml_1_1xml__base_html_a3b183c2db7022a6d30494dd2f0ac11e9"><div class="ttname"><a href="classrapidxml_1_1xml__base.html#a3b183c2db7022a6d30494dd2f0ac11e9">rapidxml::xml_base::value</a></div><div class="ttdeci">void value(const Ch *value, std::size_t size)</div><div class="ttdoc">Sets value of node to a non zero-terminated string. See ownership_of_strings.    Note that node does ...</div><div class="ttdef"><b>Definition:</b> rapidxml.h:751</div></div>
<div class="ttc" id="namespacerapidxml_html_ac2d21ef14a4e8936b94aca5d38b1a74d"><div class="ttname"><a href="namespacerapidxml.html#ac2d21ef14a4e8936b94aca5d38b1a74d">rapidxml::parse_no_data_nodes</a></div><div class="ttdeci">const int parse_no_data_nodes</div><div class="ttdoc">Parse flag instructing the parser to not create data nodes. Text of first data node will still be pla...</div><div class="ttdef"><b>Definition:</b> rapidxml.h:163</div></div>
<div class="ttc" id="classrapidxml_1_1xml__base_html_a23e7f7aac02d17a0a01afb597e4b966b"><div class="ttname"><a href="classrapidxml_1_1xml__base.html#a23e7f7aac02d17a0a01afb597e4b966b">rapidxml::xml_base::xml_base</a></div><div class="ttdeci">xml_base()</div><div class="ttdef"><b>Definition:</b> rapidxml.h:657</div></div>
<div class="ttc" id="structrapidxml_1_1xml__document_1_1attribute__value__pure__pred_html_a3add4f66f917381562355d5f8b8917c1"><div class="ttname"><a href="structrapidxml_1_1xml__document_1_1attribute__value__pure__pred.html#a3add4f66f917381562355d5f8b8917c1">rapidxml::xml_document::attribute_value_pure_pred::test</a></div><div class="ttdeci">static unsigned char test(Ch ch)</div><div class="ttdef"><b>Definition:</b> rapidxml.h:1499</div></div>
<div class="ttc" id="classrapidxml_1_1xml__document_html_aae0a4c2e1972ab9a9e0ce91cf1166ac9"><div class="ttname"><a href="classrapidxml_1_1xml__document.html#aae0a4c2e1972ab9a9e0ce91cf1166ac9">rapidxml::xml_document::parse_node_contents</a></div><div class="ttdeci">void parse_node_contents(Ch *&amp;text, xml_node&lt; Ch &gt; *node)</div><div class="ttdef"><b>Definition:</b> rapidxml.h:2167</div></div>
<div class="ttc" id="classrapidxml_1_1memory__pool_html_a171941b39d55b868358da97462185f58"><div class="ttname"><a href="classrapidxml_1_1memory__pool.html#a171941b39d55b868358da97462185f58">rapidxml::memory_pool::allocate_string</a></div><div class="ttdeci">Ch * allocate_string(const Ch *source=0, std::size_t size=0)</div><div class="ttdoc">Allocates a char array of given size from the pool, and optionally copies a given string to it...</div><div class="ttdef"><b>Definition:</b> rapidxml.h:476</div></div>
<div class="ttc" id="classrapidxml_1_1xml__document_html_af86781975cdfff2105fa8c0b49ab4507"><div class="ttname"><a href="classrapidxml_1_1xml__document.html#af86781975cdfff2105fa8c0b49ab4507">rapidxml::xml_document::skip_and_expand_character_refs</a></div><div class="ttdeci">static Ch * skip_and_expand_character_refs(Ch *&amp;text)</div><div class="ttdef"><b>Definition:</b> rapidxml.h:1570</div></div>
<div class="ttc" id="classrapidxml_1_1xml__base_html_aa3a49d8ceddb8a8d7edb773a2226b89c"><div class="ttname"><a href="classrapidxml_1_1xml__base.html#aa3a49d8ceddb8a8d7edb773a2226b89c">rapidxml::xml_base::m_value_size</a></div><div class="ttdeci">std::size_t m_value_size</div><div class="ttdef"><b>Definition:</b> rapidxml.h:787</div></div>
<div class="ttc" id="classrapidxml_1_1xml__base_html_a2eb123d471b1567fa4832b6ee2b75493"><div class="ttname"><a href="classrapidxml_1_1xml__base.html#a2eb123d471b1567fa4832b6ee2b75493">rapidxml::xml_base::value_size</a></div><div class="ttdeci">std::size_t value_size() const</div><div class="ttdoc">Gets size of node value, not including terminator character. This function works correctly irrespecti...</div><div class="ttdef"><b>Definition:</b> rapidxml.h:700</div></div>
<div class="ttc" id="namespacerapidxml_html_acf4edf952f59eb1b6124ea37ad7da3ab"><div class="ttname"><a href="namespacerapidxml.html#acf4edf952f59eb1b6124ea37ad7da3ab">rapidxml::parse_default</a></div><div class="ttdeci">const int parse_default</div><div class="ttdoc">Parse flags which represent default behaviour of the parser. This is always equal to 0...</div><div class="ttdef"><b>Definition:</b> rapidxml.h:259</div></div>
<div class="ttc" id="namespacerapidxml_html_abb456db38f7efb746c4330eed6072a7caccf0b363d3876a3f83ff9b1bcdaaa536"><div class="ttname"><a href="namespacerapidxml.html#abb456db38f7efb746c4330eed6072a7caccf0b363d3876a3f83ff9b1bcdaaa536">rapidxml::node_cdata</a></div><div class="ttdoc">A CDATA node. </div><div class="ttdef"><b>Definition:</b> rapidxml.h:148</div></div>
<div class="ttc" id="classrapidxml_1_1xml__document_html_aaa63a0c7b57ab8fce63d4aebe4da123d"><div class="ttname"><a href="classrapidxml_1_1xml__document.html#aaa63a0c7b57ab8fce63d4aebe4da123d">rapidxml::xml_document::parse_bom</a></div><div class="ttdeci">void parse_bom(Ch *&amp;text)</div><div class="ttdef"><b>Definition:</b> rapidxml.h:1725</div></div>
<div class="ttc" id="classrapidxml_1_1memory__pool_html_a84d3d8d2cdfc00501e1dcf26d889ae03"><div class="ttname"><a href="classrapidxml_1_1memory__pool.html#a84d3d8d2cdfc00501e1dcf26d889ae03">rapidxml::memory_pool::set_allocator</a></div><div class="ttdeci">void set_allocator(alloc_func *af, free_func *ff)</div><div class="ttdoc">Sets or resets the user-defined memory allocation functions for the pool. This can only be called whe...</div><div class="ttdef"><b>Definition:</b> rapidxml.h:552</div></div>
<div class="ttc" id="classrapidxml_1_1xml__document_html_aae8841b15085ba8f32ff46587ace28f5"><div class="ttname"><a href="classrapidxml_1_1xml__document.html#aae8841b15085ba8f32ff46587ace28f5">rapidxml::xml_document::xml_document</a></div><div class="ttdeci">xml_document()</div><div class="ttdoc">Constructs empty XML document. </div><div class="ttdef"><b>Definition:</b> rapidxml.h:1364</div></div>
<div class="ttc" id="namespacerapidxml_html_abb456db38f7efb746c4330eed6072a7ca89cbeb4d28046326e4ee953d3c4047ff"><div class="ttname"><a href="namespacerapidxml.html#abb456db38f7efb746c4330eed6072a7ca89cbeb4d28046326e4ee953d3c4047ff">rapidxml::node_element</a></div><div class="ttdoc">An element node. </div><div class="ttdef"><b>Definition:</b> rapidxml.h:146</div></div>
<div class="ttc" id="classrapidxml_1_1memory__pool_html"><div class="ttname"><a href="classrapidxml_1_1memory__pool.html">rapidxml::memory_pool</a></div><div class="ttdoc">This class is used by the parser to create new nodes and attributes, without overheads of dynamic mem...</div><div class="ttdef"><b>Definition:</b> rapidxml.h:379</div></div>
<div class="ttc" id="namespacerapidxml_html_a7ce8f40fda68338e20b56f41e48e49f3"><div class="ttname"><a href="namespacerapidxml.html#a7ce8f40fda68338e20b56f41e48e49f3">rapidxml::parse_validate_closing_tags</a></div><div class="ttdeci">const int parse_validate_closing_tags</div><div class="ttdoc">Parse flag instructing the parser to validate closing tag names. If not set, name inside closing tag ...</div><div class="ttdef"><b>Definition:</b> rapidxml.h:230</div></div>
<div class="ttc" id="classrapidxml_1_1xml__node_html_a33ce3386f8c42dd4db658b75cbb6e6c4"><div class="ttname"><a href="classrapidxml_1_1xml__node.html#a33ce3386f8c42dd4db658b75cbb6e6c4">rapidxml::xml_node::append_attribute</a></div><div class="ttdeci">void append_attribute(xml_attribute&lt; Ch &gt; *attribute)</div><div class="ttdoc">Appends a new attribute to the node. </div><div class="ttdef"><b>Definition:</b> rapidxml.h:1217</div></div>
<div class="ttc" id="classrapidxml_1_1parse__error_html_aa5a164653ac347adddf47b264620d80f"><div class="ttname"><a href="classrapidxml_1_1parse__error.html#aa5a164653ac347adddf47b264620d80f">rapidxml::parse_error::m_where</a></div><div class="ttdeci">void * m_where</div><div class="ttdef"><b>Definition:</b> rapidxml.h:102</div></div>
<div class="ttc" id="namespacerapidxml_html_a22d4aefaceb00d7afabfef7107b108da"><div class="ttname"><a href="namespacerapidxml.html#a22d4aefaceb00d7afabfef7107b108da">rapidxml::parse_no_utf8</a></div><div class="ttdeci">const int parse_no_utf8</div><div class="ttdoc">Parse flag instructing the parser to disable UTF-8 handling and assume plain 8 bit characters...</div><div class="ttdef"><b>Definition:</b> rapidxml.h:193</div></div>
<div class="ttc" id="classrapidxml_1_1xml__document_html_a4c613f3a928f763b4c788422edda5860"><div class="ttname"><a href="classrapidxml_1_1xml__document.html#a4c613f3a928f763b4c788422edda5860">rapidxml::xml_document::parse_doctype</a></div><div class="ttdeci">xml_node&lt; Ch &gt; * parse_doctype(Ch *&amp;text)</div><div class="ttdef"><b>Definition:</b> rapidxml.h:1814</div></div>
<div class="ttc" id="classrapidxml_1_1xml__document_html_ac6e73ff9ac323bf5a370c38feb03a6b1"><div class="ttname"><a href="classrapidxml_1_1xml__document.html#ac6e73ff9ac323bf5a370c38feb03a6b1">rapidxml::xml_document::parse</a></div><div class="ttdeci">void parse(Ch *text)</div><div class="ttdoc">Parses zero-terminated XML string according to given flags. Passed string will be modified by the par...</div><div class="ttdef"><b>Definition:</b> rapidxml.h:1381</div></div>
<div class="ttc" id="namespacerapidxml_html_abb456db38f7efb746c4330eed6072a7ca4023b6a1c7059fd8fbec2112d5c35424"><div class="ttname"><a href="namespacerapidxml.html#abb456db38f7efb746c4330eed6072a7ca4023b6a1c7059fd8fbec2112d5c35424">rapidxml::node_document</a></div><div class="ttdoc">A document node. </div><div class="ttdef"><b>Definition:</b> rapidxml.h:145</div></div>
<div class="ttc" id="classrapidxml_1_1memory__pool_html_a1076043ef092e327e59dd988c1ba82fb"><div class="ttname"><a href="classrapidxml_1_1memory__pool.html#a1076043ef092e327e59dd988c1ba82fb">rapidxml::memory_pool::init</a></div><div class="ttdeci">void init()</div><div class="ttdef"><b>Definition:</b> rapidxml.h:566</div></div>
<div class="ttc" id="classrapidxml_1_1xml__node_html_adc211d26cfea2ba6fb51adb27694ff09"><div class="ttname"><a href="classrapidxml_1_1xml__node.html#adc211d26cfea2ba6fb51adb27694ff09">rapidxml::xml_node::m_last_node</a></div><div class="ttdeci">xml_node&lt; Ch &gt; * m_last_node</div><div class="ttdef"><b>Definition:</b> rapidxml.h:1339</div></div>
<div class="ttc" id="classrapidxml_1_1memory__pool_html_a0b609da81dff28a19ebd704400788429"><div class="ttname"><a href="classrapidxml_1_1memory__pool.html#a0b609da81dff28a19ebd704400788429">rapidxml::memory_pool::memory_pool</a></div><div class="ttdeci">memory_pool()</div><div class="ttdoc">Constructs empty pool with default allocator functions. </div><div class="ttdef"><b>Definition:</b> rapidxml.h:390</div></div>
<div class="ttc" id="structrapidxml_1_1xml__document_1_1whitespace__pred_html_a1dca1a175c784b2ef0b83f3957e820eb"><div class="ttname"><a href="structrapidxml_1_1xml__document_1_1whitespace__pred.html#a1dca1a175c784b2ef0b83f3957e820eb">rapidxml::xml_document::whitespace_pred::test</a></div><div class="ttdeci">static unsigned char test(Ch ch)</div><div class="ttdef"><b>Definition:</b> rapidxml.h:1430</div></div>
<div class="ttc" id="classrapidxml_1_1xml__base_html_aef8ae147fbee59209f714274afc80dc4"><div class="ttname"><a href="classrapidxml_1_1xml__base.html#aef8ae147fbee59209f714274afc80dc4">rapidxml::xml_base::name</a></div><div class="ttdeci">Ch * name() const</div><div class="ttdoc">Gets name of the node. Interpretation of name depends on type of node. Note that name will not be zer...</div><div class="ttdef"><b>Definition:</b> rapidxml.h:673</div></div>
<div class="ttc" id="classrapidxml_1_1xml__document_html_ac0b3cd07b3d5cbaa83762a196c681519"><div class="ttname"><a href="classrapidxml_1_1xml__document.html#ac0b3cd07b3d5cbaa83762a196c681519">rapidxml::xml_document::parse_node_attributes</a></div><div class="ttdeci">void parse_node_attributes(Ch *&amp;text, xml_node&lt; Ch &gt; *node)</div><div class="ttdef"><b>Definition:</b> rapidxml.h:2237</div></div>
<div class="ttc" id="structrapidxml_1_1xml__document_1_1node__name__pred_html_a4eb7916489a3d057a340ce84e9135aec"><div class="ttname"><a href="structrapidxml_1_1xml__document_1_1node__name__pred.html#a4eb7916489a3d057a340ce84e9135aec">rapidxml::xml_document::node_name_pred::test</a></div><div class="ttdeci">static unsigned char test(Ch ch)</div><div class="ttdef"><b>Definition:</b> rapidxml.h:1439</div></div>
<div class="ttc" id="classrapidxml_1_1xml__node_html_a95735358b079ae0adcfbbac69aa1fbc3"><div class="ttname"><a href="classrapidxml_1_1xml__node.html#a95735358b079ae0adcfbbac69aa1fbc3">rapidxml::xml_node::remove_all_nodes</a></div><div class="ttdeci">void remove_all_nodes()</div><div class="ttdoc">Removes all child nodes (but not attributes). </div><div class="ttdef"><b>Definition:</b> rapidxml.h:1188</div></div>
<div class="ttc" id="classrapidxml_1_1xml__node_html_a1781a2cbedc9a51d609ad5b528125635"><div class="ttname"><a href="classrapidxml_1_1xml__node.html#a1781a2cbedc9a51d609ad5b528125635">rapidxml::xml_node::remove_last_attribute</a></div><div class="ttdeci">void remove_last_attribute()</div><div class="ttdoc">Removes last attribute of the node. If node has no attributes, behaviour is undefined. Use first_attribute() to test if node has attributes. </div><div class="ttdef"><b>Definition:</b> rapidxml.h:1277</div></div>
<div class="ttc" id="classrapidxml_1_1xml__node_html_acdf3691224d683f50692616a92a75d3f"><div class="ttname"><a href="classrapidxml_1_1xml__node.html#acdf3691224d683f50692616a92a75d3f">rapidxml::xml_node::first_node</a></div><div class="ttdeci">xml_node&lt; Ch &gt; * first_node(const Ch *name=0, std::size_t name_size=0, bool case_sensitive=true) const</div><div class="ttdoc">Gets first child node, optionally matching node name. </div><div class="ttdef"><b>Definition:</b> rapidxml.h:936</div></div>
<div class="ttc" id="classrapidxml_1_1xml__node_html_aa95192d2a165cca16c551ed2a2a06aec"><div class="ttname"><a href="classrapidxml_1_1xml__node.html#aa95192d2a165cca16c551ed2a2a06aec">rapidxml::xml_node::remove_first_attribute</a></div><div class="ttdeci">void remove_first_attribute()</div><div class="ttdoc">Removes first attribute of the node. If node has no attributes, behaviour is undefined. Use first_attribute() to test if node has attributes. </div><div class="ttdef"><b>Definition:</b> rapidxml.h:1260</div></div>
<div class="ttc" id="structrapidxml_1_1xml__document_1_1text__pure__no__ws__pred_html_ac06cdc0ea5db47462d2cb6b8a0334513"><div class="ttname"><a href="structrapidxml_1_1xml__document_1_1text__pure__no__ws__pred.html#ac06cdc0ea5db47462d2cb6b8a0334513">rapidxml::xml_document::text_pure_no_ws_pred::test</a></div><div class="ttdeci">static unsigned char test(Ch ch)</div><div class="ttdef"><b>Definition:</b> rapidxml.h:1466</div></div>
<div class="ttc" id="classrapidxml_1_1xml__base_html_afd9851ed43e14619db0d7075ef8e9e8a"><div class="ttname"><a href="classrapidxml_1_1xml__base.html#afd9851ed43e14619db0d7075ef8e9e8a">rapidxml::xml_base::m_name</a></div><div class="ttdeci">Ch * m_name</div><div class="ttdef"><b>Definition:</b> rapidxml.h:784</div></div>
<div class="ttc" id="classrapidxml_1_1memory__pool_html_a1aed504a747303352e05f61c6ccbbebb"><div class="ttname"><a href="classrapidxml_1_1memory__pool.html#a1aed504a747303352e05f61c6ccbbebb">rapidxml::memory_pool::allocate_raw</a></div><div class="ttdeci">char * allocate_raw(std::size_t size)</div><div class="ttdef"><b>Definition:</b> rapidxml.h:579</div></div>
<div class="ttc" id="classrapidxml_1_1xml__node_html_a666880f42a7e486d78cc45ed51c7c46d"><div class="ttname"><a href="classrapidxml_1_1xml__node.html#a666880f42a7e486d78cc45ed51c7c46d">rapidxml::xml_node::insert_node</a></div><div class="ttdeci">void insert_node(xml_node&lt; Ch &gt; *where, xml_node&lt; Ch &gt; *child)</div><div class="ttdoc">Inserts a new child node at specified place inside the node. All children after and including the spe...</div><div class="ttdef"><b>Definition:</b> rapidxml.h:1119</div></div>
<div class="ttc" id="classrapidxml_1_1xml__node_html_a6f97b1b4f46a94a4587915df3c0c6b57"><div class="ttname"><a href="classrapidxml_1_1xml__node.html#a6f97b1b4f46a94a4587915df3c0c6b57">rapidxml::xml_node::remove_attribute</a></div><div class="ttdeci">void remove_attribute(xml_attribute&lt; Ch &gt; *where)</div><div class="ttdoc">Removes specified attribute from node. </div><div class="ttdef"><b>Definition:</b> rapidxml.h:1293</div></div>
<div class="ttc" id="classrapidxml_1_1memory__pool_html_af8f41565f4de167eb2f40ca20695f24d"><div class="ttname"><a href="classrapidxml_1_1memory__pool.html#af8f41565f4de167eb2f40ca20695f24d">rapidxml::memory_pool::m_free_func</a></div><div class="ttdeci">free_func * m_free_func</div><div class="ttdef"><b>Definition:</b> rapidxml.h:638</div></div>
<div class="ttc" id="classrapidxml_1_1xml__document_html_a0151c52c82ba79ea0605c2facf39c534"><div class="ttname"><a href="classrapidxml_1_1xml__document.html#a0151c52c82ba79ea0605c2facf39c534">rapidxml::xml_document::parse_xml_declaration</a></div><div class="ttdeci">xml_node&lt; Ch &gt; * parse_xml_declaration(Ch *&amp;text)</div><div class="ttdef"><b>Definition:</b> rapidxml.h:1738</div></div>
<div class="ttc" id="namespacerapidxml_html_ae093dd49e2f59fa39eee95f1a6568e32"><div class="ttname"><a href="namespacerapidxml.html#ae093dd49e2f59fa39eee95f1a6568e32">rapidxml::parse_comment_nodes</a></div><div class="ttdeci">const int parse_comment_nodes</div><div class="ttdoc">Parse flag instructing the parser to create comments nodes. By default, comment nodes are not created...</div><div class="ttdef"><b>Definition:</b> rapidxml.h:207</div></div>
<div class="ttc" id="namespacerapidxml_html_a03fe68fcf5d28f38476e0fd31adecc4c"><div class="ttname"><a href="namespacerapidxml.html#a03fe68fcf5d28f38476e0fd31adecc4c">rapidxml::parse_pi_nodes</a></div><div class="ttdeci">const int parse_pi_nodes</div><div class="ttdoc">Parse flag instructing the parser to create PI nodes. By default, PI nodes are not created...</div><div class="ttdef"><b>Definition:</b> rapidxml.h:222</div></div>
<div class="ttc" id="classrapidxml_1_1xml__document_html_a27aca5bdcb3bfa899f61b17d7f1d3a0d"><div class="ttname"><a href="classrapidxml_1_1xml__document.html#a27aca5bdcb3bfa899f61b17d7f1d3a0d">rapidxml::xml_document::skip</a></div><div class="ttdeci">static void skip(Ch *&amp;text)</div><div class="ttdef"><b>Definition:</b> rapidxml.h:1558</div></div>
<div class="ttc" id="classrapidxml_1_1parse__error_html"><div class="ttname"><a href="classrapidxml_1_1parse__error.html">rapidxml::parse_error</a></div><div class="ttdoc">Parse error exception. This exception is thrown by the parser when an error occurs. Use what() function to get human-readable error message. Use where() function to get a pointer to position within source text where error was detected.    If throwing exceptions by the parser is undesirable, it can be disabled by defining RAPIDXML_NO_EXCEPTIONS macro before rapidxml.hpp is included. This will cause the parser to call rapidxml::parse_error_handler() function instead of throwing an exception. This function must be defined by the user.    This class derives from std::exception class. </div><div class="ttdef"><b>Definition:</b> rapidxml.h:71</div></div>
<div class="ttc" id="classrapidxml_1_1xml__document_html_aec6cedf45179b6378c670bc3ea509e61"><div class="ttname"><a href="classrapidxml_1_1xml__document.html#aec6cedf45179b6378c670bc3ea509e61">rapidxml::xml_document::parse_and_append_data</a></div><div class="ttdeci">Ch parse_and_append_data(xml_node&lt; Ch &gt; *node, Ch *&amp;text, Ch *contents_start)</div><div class="ttdef"><b>Definition:</b> rapidxml.h:1940</div></div>
<div class="ttc" id="structrapidxml_1_1xml__document_1_1text__pure__with__ws__pred_html_a8f8d13fe0128d11626434ee4b95f5085"><div class="ttname"><a href="structrapidxml_1_1xml__document_1_1text__pure__with__ws__pred.html#a8f8d13fe0128d11626434ee4b95f5085">rapidxml::xml_document::text_pure_with_ws_pred::test</a></div><div class="ttdeci">static unsigned char test(Ch ch)</div><div class="ttdef"><b>Definition:</b> rapidxml.h:1475</div></div>
<div class="ttc" id="classrapidxml_1_1xml__node_html_a524d427e32c72fba9de1857e02e82fa7"><div class="ttname"><a href="classrapidxml_1_1xml__node.html#a524d427e32c72fba9de1857e02e82fa7">rapidxml::xml_node::last_node</a></div><div class="ttdeci">xml_node&lt; Ch &gt; * last_node(const Ch *name=0, std::size_t name_size=0, bool case_sensitive=true) const</div><div class="ttdoc">Gets last child node, optionally matching node name. Behaviour is undefined if node has no children...</div><div class="ttdef"><b>Definition:</b> rapidxml.h:958</div></div>
<div class="ttc" id="classrapidxml_1_1xml__base_html_a4611ddc82ac83a527c65606600eb2a0d"><div class="ttname"><a href="classrapidxml_1_1xml__base.html#a4611ddc82ac83a527c65606600eb2a0d">rapidxml::xml_base::name</a></div><div class="ttdeci">void name(const Ch *name)</div><div class="ttdoc">Sets name of node to a zero-terminated string. See also ownership_of_strings and xml_node::name(const...</div><div class="ttdef"><b>Definition:</b> rapidxml.h:730</div></div>
<div class="ttc" id="classrapidxml_1_1xml__node_html_aebcc42042ded78fb7020e2783f7d5426"><div class="ttname"><a href="classrapidxml_1_1xml__node.html#aebcc42042ded78fb7020e2783f7d5426">rapidxml::xml_node::previous_sibling</a></div><div class="ttdeci">xml_node&lt; Ch &gt; * previous_sibling(const Ch *name=0, std::size_t name_size=0, bool case_sensitive=true) const</div><div class="ttdoc">Gets previous sibling node, optionally matching node name. Behaviour is undefined if node has no pare...</div><div class="ttdef"><b>Definition:</b> rapidxml.h:981</div></div>
<div class="ttc" id="namespacerapidxml_html_a45d4d8fef551beaaba23a83b847fd6a3"><div class="ttname"><a href="namespacerapidxml.html#a45d4d8fef551beaaba23a83b847fd6a3">rapidxml::parse_non_destructive</a></div><div class="ttdeci">const int parse_non_destructive</div><div class="ttdoc">A combination of parse flags that forbids any modifications of the source text. This also results in ...</div><div class="ttdef"><b>Definition:</b> rapidxml.h:269</div></div>
<div class="ttc" id="classrapidxml_1_1xml__document_html_aea385acd096ab200d63a777d53435ada"><div class="ttname"><a href="classrapidxml_1_1xml__document.html#aea385acd096ab200d63a777d53435ada">rapidxml::xml_document::parse_element</a></div><div class="ttdeci">xml_node&lt; Ch &gt; * parse_element(Ch *&amp;text)</div><div class="ttdef"><b>Definition:</b> rapidxml.h:2037</div></div>
<div class="ttc" id="structrapidxml_1_1memory__pool_1_1header_html_a3035f6741bb38f91c7f2efd05398c23d"><div class="ttname"><a href="structrapidxml_1_1memory__pool_1_1header.html#a3035f6741bb38f91c7f2efd05398c23d">rapidxml::memory_pool::header::previous_begin</a></div><div class="ttdeci">char * previous_begin</div><div class="ttdef"><b>Definition:</b> rapidxml.h:563</div></div>
<div class="ttc" id="classrapidxml_1_1xml__node_html_a9182512e948ec451a83f116cce7c7674"><div class="ttname"><a href="classrapidxml_1_1xml__node.html#a9182512e948ec451a83f116cce7c7674">rapidxml::xml_node::remove_last_node</a></div><div class="ttdeci">void remove_last_node()</div><div class="ttdoc">Removes last child of the node. If node has no children, behaviour is undefined. Use first_node() to ...</div><div class="ttdef"><b>Definition:</b> rapidxml.h:1155</div></div>
<div class="ttc" id="rapidxml_8h_html_a68d5603b71691d9dd745e45159259aa3"><div class="ttname"><a href="rapidxml_8h.html#a68d5603b71691d9dd745e45159259aa3">RAPIDXML_DYNAMIC_POOL_SIZE</a></div><div class="ttdeci">#define RAPIDXML_DYNAMIC_POOL_SIZE</div><div class="ttdef"><b>Definition:</b> rapidxml.h:123</div></div>
<div class="ttc" id="namespacerapidxml_html_a999d782659513f8015ea4236e3204c42"><div class="ttname"><a href="namespacerapidxml.html#a999d782659513f8015ea4236e3204c42">rapidxml::parse_declaration_node</a></div><div class="ttdeci">const int parse_declaration_node</div><div class="ttdoc">Parse flag instructing the parser to create XML declaration node. By default, declaration node is not...</div><div class="ttdef"><b>Definition:</b> rapidxml.h:200</div></div>
<div class="ttc" id="structrapidxml_1_1xml__document_1_1attribute__name__pred_html"><div class="ttname"><a href="structrapidxml_1_1xml__document_1_1attribute__name__pred.html">rapidxml::xml_document::attribute_name_pred</a></div><div class="ttdef"><b>Definition:</b> rapidxml.h:1446</div></div>
<div class="ttc" id="rapidxml_8h_html_a65f2be309896ffb841997d467c2f4fff"><div class="ttname"><a href="rapidxml_8h.html#a65f2be309896ffb841997d467c2f4fff">RAPIDXML_PARSE_ERROR</a></div><div class="ttdeci">#define RAPIDXML_PARSE_ERROR(what, where)</div><div class="ttdef"><b>Definition:</b> rapidxml.h:55</div></div>
<div class="ttc" id="classrapidxml_1_1memory__pool_html_a4a89ff677c72afc163d1855cefc28013"><div class="ttname"><a href="classrapidxml_1_1memory__pool.html#a4a89ff677c72afc163d1855cefc28013">rapidxml::memory_pool::m_ptr</a></div><div class="ttdeci">char * m_ptr</div><div class="ttdef"><b>Definition:</b> rapidxml.h:634</div></div>
<div class="ttc" id="structrapidxml_1_1xml__document_1_1whitespace__pred_html"><div class="ttname"><a href="structrapidxml_1_1xml__document_1_1whitespace__pred.html">rapidxml::xml_document::whitespace_pred</a></div><div class="ttdef"><b>Definition:</b> rapidxml.h:1428</div></div>
<div class="ttc" id="classrapidxml_1_1xml__node_html_a98289923eb9e8889418a9eb0207ea35c"><div class="ttname"><a href="classrapidxml_1_1xml__node.html#a98289923eb9e8889418a9eb0207ea35c">rapidxml::xml_node::remove_node</a></div><div class="ttdeci">void remove_node(xml_node&lt; Ch &gt; *where)</div><div class="ttdoc">Removes specified child from the node. </div><div class="ttdef"><b>Definition:</b> rapidxml.h:1171</div></div>
<div class="ttc" id="namespacerapidxml_html_a61912424b47db5038e726d4e1c22417f"><div class="ttname"><a href="namespacerapidxml.html#a61912424b47db5038e726d4e1c22417f">rapidxml::parse_trim_whitespace</a></div><div class="ttdeci">const int parse_trim_whitespace</div><div class="ttdoc">Parse flag instructing the parser to trim all leading and trailing whitespace of data nodes...</div><div class="ttdef"><b>Definition:</b> rapidxml.h:238</div></div>
<div class="ttc" id="structrapidxml_1_1xml__document_1_1text__pred_html_a9822ef3cd730dc35179aef52026287ca"><div class="ttname"><a href="structrapidxml_1_1xml__document_1_1text__pred.html#a9822ef3cd730dc35179aef52026287ca">rapidxml::xml_document::text_pred::test</a></div><div class="ttdeci">static unsigned char test(Ch ch)</div><div class="ttdef"><b>Definition:</b> rapidxml.h:1457</div></div>
<div class="ttc" id="classrapidxml_1_1xml__attribute_html"><div class="ttname"><a href="classrapidxml_1_1xml__attribute.html">rapidxml::xml_attribute</a></div><div class="ttdoc">Class representing attribute node of XML document. Each attribute has name and value strings...</div><div class="ttdef"><b>Definition:</b> rapidxml.h:138</div></div>
<div class="ttc" id="classrapidxml_1_1xml__attribute_html_abb0fb881f7247aefaec4b65b5eabc7ee"><div class="ttname"><a href="classrapidxml_1_1xml__attribute.html#abb0fb881f7247aefaec4b65b5eabc7ee">rapidxml::xml_attribute::previous_attribute</a></div><div class="ttdeci">xml_attribute&lt; Ch &gt; * previous_attribute(const Ch *name=0, std::size_t name_size=0, bool case_sensitive=true) const</div><div class="ttdoc">Gets previous attribute, optionally matching attribute name. </div><div class="ttdef"><b>Definition:</b> rapidxml.h:836</div></div>
<div class="ttc" id="namespacerapidxml_html_abb456db38f7efb746c4330eed6072a7ca9d669d8e1f4ba9c7eeada4c14a11ad1d"><div class="ttname"><a href="namespacerapidxml.html#abb456db38f7efb746c4330eed6072a7ca9d669d8e1f4ba9c7eeada4c14a11ad1d">rapidxml::node_data</a></div><div class="ttdoc">A data node. </div><div class="ttdef"><b>Definition:</b> rapidxml.h:147</div></div>
<div class="ttc" id="namespacerapidxml_html_abb456db38f7efb746c4330eed6072a7cadf5002f2efabe231bed01d16f08f832c"><div class="ttname"><a href="namespacerapidxml.html#abb456db38f7efb746c4330eed6072a7cadf5002f2efabe231bed01d16f08f832c">rapidxml::node_doctype</a></div><div class="ttdoc">A DOCTYPE node. </div><div class="ttdef"><b>Definition:</b> rapidxml.h:151</div></div>
<div class="ttc" id="classrapidxml_1_1xml__document_html_a5e94cbc9b02e864cb80961ddb8cc63a7"><div class="ttname"><a href="classrapidxml_1_1xml__document.html#a5e94cbc9b02e864cb80961ddb8cc63a7">rapidxml::xml_document::parse_node</a></div><div class="ttdeci">xml_node&lt; Ch &gt; * parse_node(Ch *&amp;text)</div><div class="ttdef"><b>Definition:</b> rapidxml.h:2081</div></div>
<div class="ttc" id="classrapidxml_1_1xml__base_html_a90d5f660f078f66563fd7b2d8387ccb0"><div class="ttname"><a href="classrapidxml_1_1xml__base.html#a90d5f660f078f66563fd7b2d8387ccb0">rapidxml::xml_base::m_parent</a></div><div class="ttdeci">xml_node&lt; Ch &gt; * m_parent</div><div class="ttdef"><b>Definition:</b> rapidxml.h:788</div></div>
<div class="ttc" id="classrapidxml_1_1xml__node_html_a62bf7b276cf7a651a3337f5e0a0ef6ac"><div class="ttname"><a href="classrapidxml_1_1xml__node.html#a62bf7b276cf7a651a3337f5e0a0ef6ac">rapidxml::xml_node::remove_first_node</a></div><div class="ttdeci">void remove_first_node()</div><div class="ttdoc">Removes first child node. If node has no children, behaviour is undefined. Use first_node() to test i...</div><div class="ttdef"><b>Definition:</b> rapidxml.h:1140</div></div>
<div class="ttc" id="namespacerapidxml_html_abb456db38f7efb746c4330eed6072a7caeb73b472e77347b9aa89525f16493b87"><div class="ttname"><a href="namespacerapidxml.html#abb456db38f7efb746c4330eed6072a7caeb73b472e77347b9aa89525f16493b87">rapidxml::node_pi</a></div><div class="ttdoc">A PI node. </div><div class="ttdef"><b>Definition:</b> rapidxml.h:152</div></div>
<div class="ttc" id="namespacerapidxml_html_abb456db38f7efb746c4330eed6072a7cafe4ca44261e5fbedf0eab43131751212"><div class="ttname"><a href="namespacerapidxml.html#abb456db38f7efb746c4330eed6072a7cafe4ca44261e5fbedf0eab43131751212">rapidxml::node_declaration</a></div><div class="ttdoc">A declaration node. </div><div class="ttdef"><b>Definition:</b> rapidxml.h:150</div></div>
<div class="ttc" id="classrapidxml_1_1xml__base_html_ad96ff6b1e41dab3ff60b9bc4df769a75"><div class="ttname"><a href="classrapidxml_1_1xml__base.html#ad96ff6b1e41dab3ff60b9bc4df769a75">rapidxml::xml_base::nullstr</a></div><div class="ttdeci">static Ch * nullstr()</div><div class="ttdef"><b>Definition:</b> rapidxml.h:778</div></div>
<div class="ttc" id="classrapidxml_1_1xml__base_html_a6af65de5e59ac497cd69838f8a89d602"><div class="ttname"><a href="classrapidxml_1_1xml__base.html#a6af65de5e59ac497cd69838f8a89d602">rapidxml::xml_base::value</a></div><div class="ttdeci">Ch * value() const</div><div class="ttdoc">Gets value of node. Interpretation of value depends on type of node. Note that value will not be zero...</div><div class="ttdef"><b>Definition:</b> rapidxml.h:692</div></div>
<div class="ttc" id="classrapidxml_1_1xml__node_html_a8696d098ecc9c4d2a646b43e91d58e31"><div class="ttname"><a href="classrapidxml_1_1xml__node.html#a8696d098ecc9c4d2a646b43e91d58e31">rapidxml::xml_node::append_node</a></div><div class="ttdeci">void append_node(xml_node&lt; Ch &gt; *child)</div><div class="ttdoc">Appends a new child node. The appended child becomes the last child. </div><div class="ttdef"><b>Definition:</b> rapidxml.h:1097</div></div>
<div class="ttc" id="classrapidxml_1_1xml__node_html_ad82c1bdd1a5c94927cf8a627f18953b9"><div class="ttname"><a href="classrapidxml_1_1xml__node.html#ad82c1bdd1a5c94927cf8a627f18953b9">rapidxml::xml_node::m_last_attribute</a></div><div class="ttdeci">xml_attribute&lt; Ch &gt; * m_last_attribute</div><div class="ttdef"><b>Definition:</b> rapidxml.h:1341</div></div>
<div class="ttc" id="classrapidxml_1_1memory__pool_html_a0a3e82126e59e4077f41e933130bb5a0"><div class="ttname"><a href="classrapidxml_1_1memory__pool.html#a0a3e82126e59e4077f41e933130bb5a0">rapidxml::memory_pool::~memory_pool</a></div><div class="ttdeci">~memory_pool()</div><div class="ttdoc">Destroys pool and frees all the memory. This causes memory occupied by nodes allocated by the pool to...</div><div class="ttdef"><b>Definition:</b> rapidxml.h:400</div></div>
<div class="ttc" id="classrapidxml_1_1xml__attribute_html_a26be291103917d3e8de110d46dd83816"><div class="ttname"><a href="classrapidxml_1_1xml__attribute.html#a26be291103917d3e8de110d46dd83816">rapidxml::xml_attribute::xml_attribute</a></div><div class="ttdeci">xml_attribute()</div><div class="ttdoc">Constructs an empty attribute with the specified type. Consider using memory_pool of appropriate xml_...</div><div class="ttdef"><b>Definition:</b> rapidxml.h:810</div></div>
<div class="ttc" id="classrapidxml_1_1memory__pool_html_a6c9a83514446842518c9ffb7a38b76eb"><div class="ttname"><a href="classrapidxml_1_1memory__pool.html#a6c9a83514446842518c9ffb7a38b76eb">rapidxml::memory_pool::m_end</a></div><div class="ttdeci">char * m_end</div><div class="ttdef"><b>Definition:</b> rapidxml.h:635</div></div>
<div class="ttc" id="classrapidxml_1_1memory__pool_html_a317396afc1812f08b64a1dd9cde4039b"><div class="ttname"><a href="classrapidxml_1_1memory__pool.html#a317396afc1812f08b64a1dd9cde4039b">rapidxml::memory_pool::align</a></div><div class="ttdeci">char * align(char *ptr)</div><div class="ttdef"><b>Definition:</b> rapidxml.h:573</div></div>
<div class="ttc" id="classrapidxml_1_1xml__node_html_a5f91729128856b0aaab598d4364ace60"><div class="ttname"><a href="classrapidxml_1_1xml__node.html#a5f91729128856b0aaab598d4364ace60">rapidxml::xml_node::type</a></div><div class="ttdeci">node_type type() const</div><div class="ttdoc">Gets type of node. </div><div class="ttdef"><b>Definition:</b> rapidxml.h:913</div></div>
<div class="ttc" id="namespacerapidxml_html_a31f33885defb5176a7d99e524c35d386"><div class="ttname"><a href="namespacerapidxml.html#a31f33885defb5176a7d99e524c35d386">rapidxml::parse_normalize_whitespace</a></div><div class="ttdeci">const int parse_normalize_whitespace</div><div class="ttdoc">Parse flag instructing the parser to condense all whitespace runs of data nodes to a single space cha...</div><div class="ttdef"><b>Definition:</b> rapidxml.h:247</div></div>
<div class="ttc" id="classrapidxml_1_1memory__pool_html_a4118581c29ee9a2f6b55ebf7dac185f8"><div class="ttname"><a href="classrapidxml_1_1memory__pool.html#a4118581c29ee9a2f6b55ebf7dac185f8">rapidxml::memory_pool::allocate_node</a></div><div class="ttdeci">xml_node&lt; Ch &gt; * allocate_node(node_type type, const Ch *name=0, const Ch *value=0, std::size_t name_size=0, std::size_t value_size=0)</div><div class="ttdoc">Allocates a new node from the pool, and optionally assigns name and value to it. If the allocation re...</div><div class="ttdef"><b>Definition:</b> rapidxml.h:415</div></div>
<div class="ttc" id="classrapidxml_1_1parse__error_html_ab139528f4d9e960f0ee807d22d6c032d"><div class="ttname"><a href="classrapidxml_1_1parse__error.html#ab139528f4d9e960f0ee807d22d6c032d">rapidxml::parse_error::where</a></div><div class="ttdeci">Ch * where() const</div><div class="ttdoc">Gets pointer to character data where error happened. Ch should be the same as char type of xml_docume...</div><div class="ttdef"><b>Definition:</b> rapidxml.h:94</div></div>
<div class="ttc" id="structrapidxml_1_1xml__document_1_1attribute__value__pred_html"><div class="ttname"><a href="structrapidxml_1_1xml__document_1_1attribute__value__pred.html">rapidxml::xml_document::attribute_value_pred</a></div><div class="ttdef"><b>Definition:</b> rapidxml.h:1483</div></div>
<div class="ttc" id="classrapidxml_1_1xml__node_html_a499bbc9300c1b06821d5c08b24164c68"><div class="ttname"><a href="classrapidxml_1_1xml__node.html#a499bbc9300c1b06821d5c08b24164c68">rapidxml::xml_node::type</a></div><div class="ttdeci">void type(node_type type)</div><div class="ttdoc">Sets type of node. </div><div class="ttdef"><b>Definition:</b> rapidxml.h:1065</div></div>
<div class="ttc" id="namespacerapidxml_html_af3fc88ba6bee33482a2db81b1da36ea1"><div class="ttname"><a href="namespacerapidxml.html#af3fc88ba6bee33482a2db81b1da36ea1">rapidxml::parse_no_string_terminators</a></div><div class="ttdeci">const int parse_no_string_terminators</div><div class="ttdoc">Parse flag instructing the parser to not place zero terminators after strings in the source text...</div><div class="ttdef"><b>Definition:</b> rapidxml.h:179</div></div>
<div class="ttc" id="classrapidxml_1_1xml__base_html_a278a1ea63b0b70219b946cec47fa00ea"><div class="ttname"><a href="classrapidxml_1_1xml__base.html#a278a1ea63b0b70219b946cec47fa00ea">rapidxml::xml_base::m_value</a></div><div class="ttdeci">Ch * m_value</div><div class="ttdef"><b>Definition:</b> rapidxml.h:785</div></div>
<div class="ttc" id="classrapidxml_1_1xml__document_html_abc287ce83bcb2dc8519e300236004591"><div class="ttname"><a href="classrapidxml_1_1xml__document.html#abc287ce83bcb2dc8519e300236004591">rapidxml::xml_document::parse_comment</a></div><div class="ttdeci">xml_node&lt; Ch &gt; * parse_comment(Ch *&amp;text)</div><div class="ttdef"><b>Definition:</b> rapidxml.h:1773</div></div>
<div class="ttc" id="classrapidxml_1_1memory__pool_html_a4e9cf53fa5f9da3a8f31b754bd94b4ec"><div class="ttname"><a href="classrapidxml_1_1memory__pool.html#a4e9cf53fa5f9da3a8f31b754bd94b4ec">rapidxml::memory_pool::allocate_aligned</a></div><div class="ttdeci">void * allocate_aligned(std::size_t size)</div><div class="ttdef"><b>Definition:</b> rapidxml.h:599</div></div>
<div class="ttc" id="classrapidxml_1_1xml__document_html"><div class="ttname"><a href="classrapidxml_1_1xml__document.html">rapidxml::xml_document</a></div><div class="ttdoc">This class represents root of the DOM hierarchy. It is also an xml_node and a memory_pool through pub...</div><div class="ttdef"><b>Definition:</b> rapidxml.h:139</div></div>
<div class="ttc" id="classrapidxml_1_1xml__node_html"><div class="ttname"><a href="classrapidxml_1_1xml__node.html">rapidxml::xml_node</a></div><div class="ttdoc">Class representing a node of XML document. Each node may have associated name and value strings...</div><div class="ttdef"><b>Definition:</b> rapidxml.h:137</div></div>
<div class="ttc" id="classrapidxml_1_1xml__document_html_ab94daeb25e8a1609e31210a45b2afa6c"><div class="ttname"><a href="classrapidxml_1_1xml__document.html#ab94daeb25e8a1609e31210a45b2afa6c">rapidxml::xml_document::parse_cdata</a></div><div class="ttdeci">xml_node&lt; Ch &gt; * parse_cdata(Ch *&amp;text)</div><div class="ttdef"><b>Definition:</b> rapidxml.h:1998</div></div>
<div class="ttc" id="classrapidxml_1_1xml__node_html_a5f7caf8d72d8fae634be6eb744ad8538"><div class="ttname"><a href="classrapidxml_1_1xml__node.html#a5f7caf8d72d8fae634be6eb744ad8538">rapidxml::xml_node::m_first_attribute</a></div><div class="ttdeci">xml_attribute&lt; Ch &gt; * m_first_attribute</div><div class="ttdef"><b>Definition:</b> rapidxml.h:1340</div></div>
<div class="ttc" id="classrapidxml_1_1xml__node_html_ad36aa4445ced578f93c3e06770cb3ef9"><div class="ttname"><a href="classrapidxml_1_1xml__node.html#ad36aa4445ced578f93c3e06770cb3ef9">rapidxml::xml_node::next_sibling</a></div><div class="ttdeci">xml_node&lt; Ch &gt; * next_sibling(const Ch *name=0, std::size_t name_size=0, bool case_sensitive=true) const</div><div class="ttdoc">Gets next sibling node, optionally matching node name. Behaviour is undefined if node has no parent...</div><div class="ttdef"><b>Definition:</b> rapidxml.h:1004</div></div>
<div class="ttc" id="classrapidxml_1_1xml__node_html_a67db03d1568dc6891573210ddba61520"><div class="ttname"><a href="classrapidxml_1_1xml__node.html#a67db03d1568dc6891573210ddba61520">rapidxml::xml_node::last_attribute</a></div><div class="ttdeci">xml_attribute&lt; Ch &gt; * last_attribute(const Ch *name=0, std::size_t name_size=0, bool case_sensitive=true) const</div><div class="ttdoc">Gets last attribute of node, optionally matching attribute name. </div><div class="ttdef"><b>Definition:</b> rapidxml.h:1045</div></div>
<div class="ttc" id="namespacerapidxml_html"><div class="ttname"><a href="namespacerapidxml.html">rapidxml</a></div><div class="ttdef"><b>Definition:</b> rapidxml.h:57</div></div>
<div class="ttc" id="classrapidxml_1_1xml__document_html_ae33040bcfa8e5a29dc6f6f130984a981"><div class="ttname"><a href="classrapidxml_1_1xml__document.html#ae33040bcfa8e5a29dc6f6f130984a981">rapidxml::xml_document::insert_coded_character</a></div><div class="ttdeci">static void insert_coded_character(Ch *&amp;text, unsigned long code)</div><div class="ttdef"><b>Definition:</b> rapidxml.h:1511</div></div>
<div class="ttc" id="classrapidxml_1_1xml__node_html_a571f24c86107f8442f46a514a7cc5d0d"><div class="ttname"><a href="classrapidxml_1_1xml__node.html#a571f24c86107f8442f46a514a7cc5d0d">rapidxml::xml_node::m_prev_sibling</a></div><div class="ttdeci">xml_node&lt; Ch &gt; * m_prev_sibling</div><div class="ttdef"><b>Definition:</b> rapidxml.h:1342</div></div>
<div class="ttc" id="classrapidxml_1_1xml__node_html_a3c2a0b286724865b5c000e3333f60d4a"><div class="ttname"><a href="classrapidxml_1_1xml__node.html#a3c2a0b286724865b5c000e3333f60d4a">rapidxml::xml_node::m_first_node</a></div><div class="ttdeci">xml_node&lt; Ch &gt; * m_first_node</div><div class="ttdef"><b>Definition:</b> rapidxml.h:1338</div></div>
<div class="ttc" id="classrapidxml_1_1xml__node_html_ae86e92908c3eab40bbed8216e4f3f3cb"><div class="ttname"><a href="classrapidxml_1_1xml__node.html#ae86e92908c3eab40bbed8216e4f3f3cb">rapidxml::xml_node::prepend_node</a></div><div class="ttdeci">void prepend_node(xml_node&lt; Ch &gt; *child)</div><div class="ttdoc">Prepends a new child node. The prepended child becomes the first child, and all existing children are...</div><div class="ttdef"><b>Definition:</b> rapidxml.h:1076</div></div>
<div class="ttc" id="structrapidxml_1_1xml__document_1_1attribute__name__pred_html_a2cf003483847dfabcf0c83877818a4c5"><div class="ttname"><a href="structrapidxml_1_1xml__document_1_1attribute__name__pred.html#a2cf003483847dfabcf0c83877818a4c5">rapidxml::xml_document::attribute_name_pred::test</a></div><div class="ttdeci">static unsigned char test(Ch ch)</div><div class="ttdef"><b>Definition:</b> rapidxml.h:1448</div></div>
<div class="ttc" id="classrapidxml_1_1xml__node_html_a9fe659cdf4a5b3bbf5e8ffc98db5a84f"><div class="ttname"><a href="classrapidxml_1_1xml__node.html#a9fe659cdf4a5b3bbf5e8ffc98db5a84f">rapidxml::xml_node::insert_attribute</a></div><div class="ttdeci">void insert_attribute(xml_attribute&lt; Ch &gt; *where, xml_attribute&lt; Ch &gt; *attribute)</div><div class="ttdoc">Inserts a new attribute at specified place inside the node. All attributes after and including the sp...</div><div class="ttdef"><b>Definition:</b> rapidxml.h:1239</div></div>
<div class="ttc" id="classrapidxml_1_1xml__attribute_html_a204438287a5ad384405584726a1d8559"><div class="ttname"><a href="classrapidxml_1_1xml__attribute.html#a204438287a5ad384405584726a1d8559">rapidxml::xml_attribute::m_prev_attribute</a></div><div class="ttdeci">xml_attribute&lt; Ch &gt; * m_prev_attribute</div><div class="ttdef"><b>Definition:</b> rapidxml.h:873</div></div>
<div class="ttc" id="classrapidxml_1_1memory__pool_html_ae8964773675d24f77a808356be773c1d"><div class="ttname"><a href="classrapidxml_1_1memory__pool.html#ae8964773675d24f77a808356be773c1d">rapidxml::memory_pool::m_alloc_func</a></div><div class="ttdeci">alloc_func * m_alloc_func</div><div class="ttdef"><b>Definition:</b> rapidxml.h:637</div></div>
<div class="ttc" id="namespacerapidxml_html_a64da06dfdab7c86ca954bda4fecb978f"><div class="ttname"><a href="namespacerapidxml.html#a64da06dfdab7c86ca954bda4fecb978f">rapidxml::parse_fastest</a></div><div class="ttdeci">const int parse_fastest</div><div class="ttdoc">A combination of parse flags resulting in fastest possible parsing, without sacrificing important dat...</div><div class="ttdef"><b>Definition:</b> rapidxml.h:274</div></div>
<div class="ttc" id="classrapidxml_1_1parse__error_html_aea12a301271c393fb627b368fb9f35c1"><div class="ttname"><a href="classrapidxml_1_1parse__error.html#aea12a301271c393fb627b368fb9f35c1">rapidxml::parse_error::parse_error</a></div><div class="ttdeci">parse_error(const char *what, void *where)</div><div class="ttdoc">Constructs parse error. </div><div class="ttdef"><b>Definition:</b> rapidxml.h:77</div></div>
<div class="ttc" id="classrapidxml_1_1xml__node_html_aa8d5d9484aa1eb5ff1841a073c84c1aa"><div class="ttname"><a href="classrapidxml_1_1xml__node.html#aa8d5d9484aa1eb5ff1841a073c84c1aa">rapidxml::xml_node::remove_all_attributes</a></div><div class="ttdeci">void remove_all_attributes()</div><div class="ttdoc">Removes all attributes of node. </div><div class="ttdef"><b>Definition:</b> rapidxml.h:1309</div></div>
<div class="ttc" id="classrapidxml_1_1memory__pool_html_a3de2a66c983336e006ea3844e244ed30"><div class="ttname"><a href="classrapidxml_1_1memory__pool.html#a3de2a66c983336e006ea3844e244ed30">rapidxml::memory_pool::allocate_attribute</a></div><div class="ttdeci">xml_attribute&lt; Ch &gt; * allocate_attribute(const Ch *name=0, const Ch *value=0, std::size_t name_size=0, std::size_t value_size=0)</div><div class="ttdoc">Allocates a new attribute from the pool, and optionally assigns name and value to it...</div><div class="ttdef"><b>Definition:</b> rapidxml.h:447</div></div>
<div class="ttc" id="structrapidxml_1_1memory__pool_1_1header_html"><div class="ttname"><a href="structrapidxml_1_1memory__pool_1_1header.html">rapidxml::memory_pool::header</a></div><div class="ttdef"><b>Definition:</b> rapidxml.h:561</div></div>
<div class="ttc" id="classrapidxml_1_1xml__node_html_ab816ab6f13ee4b0588d5b76b0697511c"><div class="ttname"><a href="classrapidxml_1_1xml__node.html#ab816ab6f13ee4b0588d5b76b0697511c">rapidxml::xml_node::first_attribute</a></div><div class="ttdeci">xml_attribute&lt; Ch &gt; * first_attribute(const Ch *name=0, std::size_t name_size=0, bool case_sensitive=true) const</div><div class="ttdoc">Gets first attribute of node, optionally matching attribute name. </div><div class="ttdef"><b>Definition:</b> rapidxml.h:1025</div></div>
<div class="ttc" id="rapidxml_8h_html_a001304844ab478e3b213749fc8d72ca2"><div class="ttname"><a href="rapidxml_8h.html#a001304844ab478e3b213749fc8d72ca2">RAPIDXML_STATIC_POOL_SIZE</a></div><div class="ttdeci">#define RAPIDXML_STATIC_POOL_SIZE</div><div class="ttdef"><b>Definition:</b> rapidxml.h:116</div></div>
<div class="ttc" id="classrapidxml_1_1xml__attribute_html_a3254e4b040a9b71c6b6d1c27ec03352a"><div class="ttname"><a href="classrapidxml_1_1xml__attribute.html#a3254e4b040a9b71c6b6d1c27ec03352a">rapidxml::xml_attribute::m_next_attribute</a></div><div class="ttdeci">xml_attribute&lt; Ch &gt; * m_next_attribute</div><div class="ttdef"><b>Definition:</b> rapidxml.h:874</div></div>
<div class="ttc" id="structrapidxml_1_1xml__document_1_1attribute__value__pure__pred_html"><div class="ttname"><a href="structrapidxml_1_1xml__document_1_1attribute__value__pure__pred.html">rapidxml::xml_document::attribute_value_pure_pred</a></div><div class="ttdef"><b>Definition:</b> rapidxml.h:1497</div></div>
<div class="ttc" id="classrapidxml_1_1xml__base_html_a81e63ec4bfd2d7ef0a6c2ed49be6e623"><div class="ttname"><a href="classrapidxml_1_1xml__base.html#a81e63ec4bfd2d7ef0a6c2ed49be6e623">rapidxml::xml_base::value</a></div><div class="ttdeci">void value(const Ch *value)</div><div class="ttdoc">Sets value of node to a zero-terminated string. See also ownership_of_strings and xml_node::value(con...</div><div class="ttdef"><b>Definition:</b> rapidxml.h:760</div></div>
<div class="ttc" id="namespacerapidxml_html_a41002b49780a90a0bbcc28ce8b895fe4"><div class="ttname"><a href="namespacerapidxml.html#a41002b49780a90a0bbcc28ce8b895fe4">rapidxml::parse_doctype_node</a></div><div class="ttdeci">const int parse_doctype_node</div><div class="ttdoc">Parse flag instructing the parser to create DOCTYPE node. By default, doctype node is not created...</div><div class="ttdef"><b>Definition:</b> rapidxml.h:215</div></div>
<div class="ttc" id="classrapidxml_1_1xml__attribute_html_affd0c8d0a9020df0998c507cae5474e5"><div class="ttname"><a href="classrapidxml_1_1xml__attribute.html#affd0c8d0a9020df0998c507cae5474e5">rapidxml::xml_attribute::next_attribute</a></div><div class="ttdeci">xml_attribute&lt; Ch &gt; * next_attribute(const Ch *name=0, std::size_t name_size=0, bool case_sensitive=true) const</div><div class="ttdoc">Gets next attribute, optionally matching attribute name. </div><div class="ttdef"><b>Definition:</b> rapidxml.h:856</div></div>
<div class="ttc" id="classrapidxml_1_1xml__attribute_html_ab0ff3bc7880a6969ddcf0bb1e0444077"><div class="ttname"><a href="classrapidxml_1_1xml__attribute.html#ab0ff3bc7880a6969ddcf0bb1e0444077">rapidxml::xml_attribute::document</a></div><div class="ttdeci">xml_document&lt; Ch &gt; * document() const</div><div class="ttdoc">Gets document of which attribute is a child. </div><div class="ttdef"><b>Definition:</b> rapidxml.h:819</div></div>
</div><!-- fragment --></div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
  <ul>
    <li class="navelem"><a class="el" href="dir_d44c64559bbebec7f509842c48db8b23.html">include</a></li><li class="navelem"><a class="el" href="dir_f562165b51c585c003877be645f219b5.html">YAGE</a></li><li class="navelem"><a class="el" href="rapidxml_8h.html">rapidxml.h</a></li>
    <li class="footer">Generated on Sun Sep 3 2017 12:58:17 for YAGE by
    <a href="http://www.doxygen.org/index.html">
    <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.13 </li>
  </ul>
</div>
</body>
</html>