Merged 0.34 in trunk (revisions 69:84)
git-svn-id: http://pugixml.googlecode.com/svn/trunk@85 99668b35-9821-0410-8761-19e4c4f06640
@ -30,7 +30,7 @@
|
||||
<tr><td class="indexkey"><a class="el" href="classpugi_1_1xpath__node__set.html">pugi::xpath_node_set</a></td><td class="indexvalue">Not necessarily ordered constant collection of XPath nodes </td></tr>
|
||||
<tr><td class="indexkey"><a class="el" href="classpugi_1_1xpath__query.html">pugi::xpath_query</a></td><td class="indexvalue">A class that holds compiled XPath query and allows to evaluate query result </td></tr>
|
||||
</table>
|
||||
<hr size="1"><address style="align: right;"><small>Generated on Wed Feb 21 22:19:50 2007 for pugixml by
|
||||
<hr size="1"><address style="align: right;"><small>Generated on Wed Oct 31 20:23:42 2007 for pugixml by
|
||||
<a href="http://www.doxygen.org/index.html">
|
||||
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.6-NO </small></address>
|
||||
</body>
|
||||
|
@ -45,7 +45,7 @@
|
||||
<tr class="memlist"><td><a class="el" href="classpugi_1_1xml__attribute.html#a555fccff52247e39f823d564a31e4d8">xml_attribute</a>()</td><td><a class="el" href="classpugi_1_1xml__attribute.html">pugi::xml_attribute</a></td><td></td></tr>
|
||||
<tr bgcolor="#f0f0f0"><td><b>xml_attribute_iterator</b> (defined in <a class="el" href="classpugi_1_1xml__attribute.html">pugi::xml_attribute</a>)</td><td><a class="el" href="classpugi_1_1xml__attribute.html">pugi::xml_attribute</a></td><td><code> [friend]</code></td></tr>
|
||||
<tr bgcolor="#f0f0f0"><td><b>xml_node</b> (defined in <a class="el" href="classpugi_1_1xml__attribute.html">pugi::xml_attribute</a>)</td><td><a class="el" href="classpugi_1_1xml__attribute.html">pugi::xml_attribute</a></td><td><code> [friend]</code></td></tr>
|
||||
</table><hr size="1"><address style="align: right;"><small>Generated on Wed Feb 21 22:19:51 2007 for pugixml by
|
||||
</table><hr size="1"><address style="align: right;"><small>Generated on Wed Oct 31 20:23:42 2007 for pugixml by
|
||||
<a href="http://www.doxygen.org/index.html">
|
||||
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.6-NO </small></address>
|
||||
</body>
|
||||
|
@ -874,7 +874,7 @@ Get attribute value.
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<hr size="1"><address style="align: right;"><small>Generated on Wed Feb 21 22:19:51 2007 for pugixml by
|
||||
<hr size="1"><address style="align: right;"><small>Generated on Wed Oct 31 20:23:42 2007 for pugixml by
|
||||
<a href="http://www.doxygen.org/index.html">
|
||||
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.6-NO </small></address>
|
||||
</body>
|
||||
|
Before Width: | Height: | Size: 876 B After Width: | Height: | Size: 875 B |
@ -30,7 +30,7 @@
|
||||
<tr class="memlist"><td><a class="el" href="classpugi_1_1xml__attribute__iterator.html#4595648e3aa06a3209f200c69805ed47">xml_attribute_iterator</a>(const xml_attribute &node)</td><td><a class="el" href="classpugi_1_1xml__attribute__iterator.html">pugi::xml_attribute_iterator</a></td><td></td></tr>
|
||||
<tr class="memlist"><td><a class="el" href="classpugi_1_1xml__attribute__iterator.html#c99270b894dd2faeab9fc6eb3832dc94">xml_attribute_iterator</a>(xml_attribute_struct *ref, xml_attribute_struct *prev)</td><td><a class="el" href="classpugi_1_1xml__attribute__iterator.html">pugi::xml_attribute_iterator</a></td><td></td></tr>
|
||||
<tr bgcolor="#f0f0f0"><td><b>xml_node</b> (defined in <a class="el" href="classpugi_1_1xml__attribute__iterator.html">pugi::xml_attribute_iterator</a>)</td><td><a class="el" href="classpugi_1_1xml__attribute__iterator.html">pugi::xml_attribute_iterator</a></td><td><code> [friend]</code></td></tr>
|
||||
</table><hr size="1"><address style="align: right;"><small>Generated on Wed Feb 21 22:19:51 2007 for pugixml by
|
||||
</table><hr size="1"><address style="align: right;"><small>Generated on Wed Oct 31 20:23:43 2007 for pugixml by
|
||||
<a href="http://www.doxygen.org/index.html">
|
||||
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.6-NO </small></address>
|
||||
</body>
|
||||
|
@ -22,7 +22,7 @@
|
||||
<h1>pugi::xml_attribute_iterator Class Reference</h1><!-- doxytag: class="pugi::xml_attribute_iterator" --><!-- doxytag: inherits="std::iterator" -->Inheritance diagram for pugi::xml_attribute_iterator:<p><center><img src="classpugi_1_1xml__attribute__iterator__inherit__graph.png" border="0" usemap="#pugi_1_1xml__attribute__iterator__inherit__map" alt="Inheritance graph"></center>
|
||||
<center><font size="2">[<a href="graph_legend.html">legend</a>]</font></center>Collaboration diagram for pugi::xml_attribute_iterator:<p><center><img src="classpugi_1_1xml__attribute__iterator__coll__graph.png" border="0" usemap="#pugi_1_1xml__attribute__iterator__coll__map" alt="Collaboration graph"></center>
|
||||
<map name="pugi_1_1xml__attribute__iterator__coll__map">
|
||||
<area href="classpugi_1_1xml__attribute.html" shape="rect" coords="394,98,528,125" alt="">
|
||||
<area href="classpugi_1_1xml__attribute.html" shape="rect" coords="392,96,525,123" alt="">
|
||||
</map>
|
||||
<center><font size="2">[<a href="graph_legend.html">legend</a>]</font></center><a href="classpugi_1_1xml__attribute__iterator-members.html">List of all members.</a><hr><a name="_details"></a><h2>Detailed Description</h2>
|
||||
Attribute iterator.
|
||||
@ -407,7 +407,7 @@ Post-decrement operator.
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<hr size="1"><address style="align: right;"><small>Generated on Wed Feb 21 22:19:51 2007 for pugixml by
|
||||
<hr size="1"><address style="align: right;"><small>Generated on Wed Oct 31 20:23:43 2007 for pugixml by
|
||||
<a href="http://www.doxygen.org/index.html">
|
||||
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.6-NO </small></address>
|
||||
</body>
|
||||
|
@ -1,2 +1,2 @@
|
||||
base referer
|
||||
rect $classpugi_1_1xml__attribute.html 394,98 528,125
|
||||
rect $classpugi_1_1xml__attribute.html 392,96 525,123
|
||||
|
Before Width: | Height: | Size: 3.0 KiB After Width: | Height: | Size: 2.9 KiB |
Before Width: | Height: | Size: 1.4 KiB After Width: | Height: | Size: 1.4 KiB |
@ -96,7 +96,7 @@
|
||||
<tr bgcolor="#f0f0f0"><td><b>xml_node</b>(xml_node_struct *p) (defined in <a class="el" href="classpugi_1_1xml__node.html">pugi::xml_node</a>)</td><td><a class="el" href="classpugi_1_1xml__node.html">pugi::xml_node</a></td><td><code> [explicit, protected]</code></td></tr>
|
||||
<tr class="memlist"><td><a class="el" href="classpugi_1_1xml__node.html#1db6c67c97cddd74f59d872057987432">xml_node</a>()</td><td><a class="el" href="classpugi_1_1xml__node.html">pugi::xml_node</a></td><td></td></tr>
|
||||
<tr class="memlist"><td><a class="el" href="classpugi_1_1xml__document.html#16c086e679286271b0ccd4541d1c1290">~xml_document</a>()</td><td><a class="el" href="classpugi_1_1xml__document.html">pugi::xml_document</a></td><td></td></tr>
|
||||
</table><hr size="1"><address style="align: right;"><small>Generated on Wed Feb 21 22:19:52 2007 for pugixml by
|
||||
</table><hr size="1"><address style="align: right;"><small>Generated on Wed Oct 31 20:23:44 2007 for pugixml by
|
||||
<a href="http://www.doxygen.org/index.html">
|
||||
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.6-NO </small></address>
|
||||
</body>
|
||||
|
@ -21,11 +21,11 @@
|
||||
<a class="el" href="namespacepugi.html">pugi</a>::<a class="el" href="classpugi_1_1xml__document.html">xml_document</a></div>
|
||||
<h1>pugi::xml_document Class Reference</h1><!-- doxytag: class="pugi::xml_document" --><!-- doxytag: inherits="pugi::xml_node" -->Inheritance diagram for pugi::xml_document:<p><center><img src="classpugi_1_1xml__document__inherit__graph.png" border="0" usemap="#pugi_1_1xml__document__inherit__map" alt="Inheritance graph"></center>
|
||||
<map name="pugi_1_1xml__document__inherit__map">
|
||||
<area href="classpugi_1_1xml__node.html" shape="rect" coords="24,7,136,34" alt="">
|
||||
<area href="classpugi_1_1xml__node.html" shape="rect" coords="20,5,132,32" alt="">
|
||||
</map>
|
||||
<center><font size="2">[<a href="graph_legend.html">legend</a>]</font></center>Collaboration diagram for pugi::xml_document:<p><center><img src="classpugi_1_1xml__document__coll__graph.png" border="0" usemap="#pugi_1_1xml__document__coll__map" alt="Collaboration graph"></center>
|
||||
<map name="pugi_1_1xml__document__coll__map">
|
||||
<area href="classpugi_1_1xml__node.html" shape="rect" coords="17,98,129,125" alt="">
|
||||
<area href="classpugi_1_1xml__node.html" shape="rect" coords="15,96,127,123" alt="">
|
||||
</map>
|
||||
<center><font size="2">[<a href="graph_legend.html">legend</a>]</font></center><a href="classpugi_1_1xml__document-members.html">List of all members.</a><hr><a name="_details"></a><h2>Detailed Description</h2>
|
||||
Document class (DOM tree root).
|
||||
@ -358,7 +358,7 @@ Save XML to file.
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<hr size="1"><address style="align: right;"><small>Generated on Wed Feb 21 22:19:52 2007 for pugixml by
|
||||
<hr size="1"><address style="align: right;"><small>Generated on Wed Oct 31 20:23:44 2007 for pugixml by
|
||||
<a href="http://www.doxygen.org/index.html">
|
||||
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.6-NO </small></address>
|
||||
</body>
|
||||
|
@ -1,2 +1,2 @@
|
||||
base referer
|
||||
rect $classpugi_1_1xml__node.html 17,98 129,125
|
||||
rect $classpugi_1_1xml__node.html 15,96 127,123
|
||||
|
Before Width: | Height: | Size: 2.3 KiB After Width: | Height: | Size: 2.3 KiB |
@ -1,2 +1,2 @@
|
||||
base referer
|
||||
rect $classpugi_1_1xml__node.html 24,7 136,34
|
||||
rect $classpugi_1_1xml__node.html 20,5 132,32
|
||||
|
Before Width: | Height: | Size: 697 B After Width: | Height: | Size: 704 B |
@ -88,7 +88,7 @@
|
||||
<tr bgcolor="#f0f0f0"><td><b>xml_node</b>(xml_node_struct *p) (defined in <a class="el" href="classpugi_1_1xml__node.html">pugi::xml_node</a>)</td><td><a class="el" href="classpugi_1_1xml__node.html">pugi::xml_node</a></td><td><code> [explicit, protected]</code></td></tr>
|
||||
<tr class="memlist"><td><a class="el" href="classpugi_1_1xml__node.html#1db6c67c97cddd74f59d872057987432">xml_node</a>()</td><td><a class="el" href="classpugi_1_1xml__node.html">pugi::xml_node</a></td><td></td></tr>
|
||||
<tr bgcolor="#f0f0f0"><td><b>xml_node_iterator</b> (defined in <a class="el" href="classpugi_1_1xml__node.html">pugi::xml_node</a>)</td><td><a class="el" href="classpugi_1_1xml__node.html">pugi::xml_node</a></td><td><code> [friend]</code></td></tr>
|
||||
</table><hr size="1"><address style="align: right;"><small>Generated on Wed Feb 21 22:19:51 2007 for pugixml by
|
||||
</table><hr size="1"><address style="align: right;"><small>Generated on Wed Oct 31 20:23:43 2007 for pugixml by
|
||||
<a href="http://www.doxygen.org/index.html">
|
||||
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.6-NO </small></address>
|
||||
</body>
|
||||
|
@ -21,7 +21,7 @@
|
||||
<a class="el" href="namespacepugi.html">pugi</a>::<a class="el" href="classpugi_1_1xml__node.html">xml_node</a></div>
|
||||
<h1>pugi::xml_node Class Reference</h1><!-- doxytag: class="pugi::xml_node" -->Inheritance diagram for pugi::xml_node:<p><center><img src="classpugi_1_1xml__node__inherit__graph.png" border="0" usemap="#pugi_1_1xml__node__inherit__map" alt="Inheritance graph"></center>
|
||||
<map name="pugi_1_1xml__node__inherit__map">
|
||||
<area href="classpugi_1_1xml__document.html" shape="rect" coords="8,82,152,109" alt="">
|
||||
<area href="classpugi_1_1xml__document.html" shape="rect" coords="5,80,147,107" alt="">
|
||||
</map>
|
||||
<center><font size="2">[<a href="graph_legend.html">legend</a>]</font></center>Collaboration diagram for pugi::xml_node:<p><center><img src="classpugi_1_1xml__node__coll__graph.png" border="0" usemap="#pugi_1_1xml__node__coll__map" alt="Collaboration graph"></center>
|
||||
<center><font size="2">[<a href="graph_legend.html">legend</a>]</font></center><a href="classpugi_1_1xml__node-members.html">List of all members.</a><hr><a name="_details"></a><h2>Detailed Description</h2>
|
||||
@ -2466,7 +2466,7 @@ Print subtree to stream.
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<hr size="1"><address style="align: right;"><small>Generated on Wed Feb 21 22:19:51 2007 for pugixml by
|
||||
<hr size="1"><address style="align: right;"><small>Generated on Wed Oct 31 20:23:43 2007 for pugixml by
|
||||
<a href="http://www.doxygen.org/index.html">
|
||||
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.6-NO </small></address>
|
||||
</body>
|
||||
|
Before Width: | Height: | Size: 756 B After Width: | Height: | Size: 756 B |
@ -1,2 +1,2 @@
|
||||
base referer
|
||||
rect $classpugi_1_1xml__document.html 8,82 152,109
|
||||
rect $classpugi_1_1xml__document.html 5,80 147,107
|
||||
|
Before Width: | Height: | Size: 704 B After Width: | Height: | Size: 706 B |
@ -30,7 +30,7 @@
|
||||
<tr class="memlist"><td><a class="el" href="classpugi_1_1xml__node__iterator.html#09538d658aef0ba20cbe050dff1c3a81">xml_node_iterator</a>()</td><td><a class="el" href="classpugi_1_1xml__node__iterator.html">pugi::xml_node_iterator</a></td><td></td></tr>
|
||||
<tr class="memlist"><td><a class="el" href="classpugi_1_1xml__node__iterator.html#874c832b41aaaff159ef2c36cdcb705c">xml_node_iterator</a>(const xml_node &node)</td><td><a class="el" href="classpugi_1_1xml__node__iterator.html">pugi::xml_node_iterator</a></td><td></td></tr>
|
||||
<tr class="memlist"><td><a class="el" href="classpugi_1_1xml__node__iterator.html#b16f30b8b0b96e750792c69e8e1fbeb2">xml_node_iterator</a>(xml_node_struct *ref, xml_node_struct *prev)</td><td><a class="el" href="classpugi_1_1xml__node__iterator.html">pugi::xml_node_iterator</a></td><td></td></tr>
|
||||
</table><hr size="1"><address style="align: right;"><small>Generated on Wed Feb 21 22:19:51 2007 for pugixml by
|
||||
</table><hr size="1"><address style="align: right;"><small>Generated on Wed Oct 31 20:23:43 2007 for pugixml by
|
||||
<a href="http://www.doxygen.org/index.html">
|
||||
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.6-NO </small></address>
|
||||
</body>
|
||||
|
@ -22,7 +22,7 @@
|
||||
<h1>pugi::xml_node_iterator Class Reference</h1><!-- doxytag: class="pugi::xml_node_iterator" --><!-- doxytag: inherits="std::iterator" -->Inheritance diagram for pugi::xml_node_iterator:<p><center><img src="classpugi_1_1xml__node__iterator__inherit__graph.png" border="0" usemap="#pugi_1_1xml__node__iterator__inherit__map" alt="Inheritance graph"></center>
|
||||
<center><font size="2">[<a href="graph_legend.html">legend</a>]</font></center>Collaboration diagram for pugi::xml_node_iterator:<p><center><img src="classpugi_1_1xml__node__iterator__coll__graph.png" border="0" usemap="#pugi_1_1xml__node__iterator__coll__map" alt="Collaboration graph"></center>
|
||||
<map name="pugi_1_1xml__node__iterator__coll__map">
|
||||
<area href="classpugi_1_1xml__node.html" shape="rect" coords="375,98,487,125" alt="">
|
||||
<area href="classpugi_1_1xml__node.html" shape="rect" coords="373,96,485,123" alt="">
|
||||
</map>
|
||||
<center><font size="2">[<a href="graph_legend.html">legend</a>]</font></center><a href="classpugi_1_1xml__node__iterator-members.html">List of all members.</a><hr><a name="_details"></a><h2>Detailed Description</h2>
|
||||
Child node iterator.
|
||||
@ -407,7 +407,7 @@ Post-decrement operator.
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<hr size="1"><address style="align: right;"><small>Generated on Wed Feb 21 22:19:51 2007 for pugixml by
|
||||
<hr size="1"><address style="align: right;"><small>Generated on Wed Oct 31 20:23:43 2007 for pugixml by
|
||||
<a href="http://www.doxygen.org/index.html">
|
||||
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.6-NO </small></address>
|
||||
</body>
|
||||
|
@ -1,2 +1,2 @@
|
||||
base referer
|
||||
rect $classpugi_1_1xml__node.html 375,98 487,125
|
||||
rect $classpugi_1_1xml__node.html 373,96 485,123
|
||||
|
Before Width: | Height: | Size: 2.7 KiB After Width: | Height: | Size: 2.6 KiB |
Before Width: | Height: | Size: 1.3 KiB After Width: | Height: | Size: 1.3 KiB |
@ -25,7 +25,7 @@
|
||||
<tr bgcolor="#f0f0f0"><td><b>xml_node</b> (defined in <a class="el" href="classpugi_1_1xml__tree__walker.html">pugi::xml_tree_walker</a>)</td><td><a class="el" href="classpugi_1_1xml__tree__walker.html">pugi::xml_tree_walker</a></td><td><code> [friend]</code></td></tr>
|
||||
<tr class="memlist"><td><a class="el" href="classpugi_1_1xml__tree__walker.html#93c03157cff8f8a0ead30c2d256d061b">xml_tree_walker</a>()</td><td><a class="el" href="classpugi_1_1xml__tree__walker.html">pugi::xml_tree_walker</a></td><td></td></tr>
|
||||
<tr class="memlist"><td><a class="el" href="classpugi_1_1xml__tree__walker.html#aa0d4eb42c6518a2a90bc264588ece84">~xml_tree_walker</a>()</td><td><a class="el" href="classpugi_1_1xml__tree__walker.html">pugi::xml_tree_walker</a></td><td><code> [virtual]</code></td></tr>
|
||||
</table><hr size="1"><address style="align: right;"><small>Generated on Wed Feb 21 22:19:51 2007 for pugixml by
|
||||
</table><hr size="1"><address style="align: right;"><small>Generated on Wed Oct 31 20:23:44 2007 for pugixml by
|
||||
<a href="http://www.doxygen.org/index.html">
|
||||
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.6-NO </small></address>
|
||||
</body>
|
||||
|
@ -179,7 +179,7 @@ Callback that is called when traversal of node ends.
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<hr size="1"><address style="align: right;"><small>Generated on Wed Feb 21 22:19:51 2007 for pugixml by
|
||||
<hr size="1"><address style="align: right;"><small>Generated on Wed Oct 31 20:23:44 2007 for pugixml by
|
||||
<a href="http://www.doxygen.org/index.html">
|
||||
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.6-NO </small></address>
|
||||
</body>
|
||||
|
Before Width: | Height: | Size: 738 B After Width: | Height: | Size: 738 B |
@ -20,7 +20,7 @@
|
||||
<h1>pugi::xpath_exception Member List</h1>This is the complete list of members for <a class="el" href="classpugi_1_1xpath__exception.html">pugi::xpath_exception</a>, including all inherited members.<p><table>
|
||||
<tr class="memlist"><td><a class="el" href="classpugi_1_1xpath__exception.html#436980baf3d09670ecc15a110ed0f654">what</a>() const </td><td><a class="el" href="classpugi_1_1xpath__exception.html">pugi::xpath_exception</a></td><td><code> [virtual]</code></td></tr>
|
||||
<tr class="memlist"><td><a class="el" href="classpugi_1_1xpath__exception.html#9236dd8d2e0674417b2cb53760791017">xpath_exception</a>(const char *message)</td><td><a class="el" href="classpugi_1_1xpath__exception.html">pugi::xpath_exception</a></td><td><code> [explicit]</code></td></tr>
|
||||
</table><hr size="1"><address style="align: right;"><small>Generated on Wed Feb 21 22:19:52 2007 for pugixml by
|
||||
</table><hr size="1"><address style="align: right;"><small>Generated on Wed Oct 31 20:23:44 2007 for pugixml by
|
||||
<a href="http://www.doxygen.org/index.html">
|
||||
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.6-NO </small></address>
|
||||
</body>
|
||||
|
@ -101,7 +101,7 @@ Return error message.
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<hr size="1"><address style="align: right;"><small>Generated on Wed Feb 21 22:19:52 2007 for pugixml by
|
||||
<hr size="1"><address style="align: right;"><small>Generated on Wed Oct 31 20:23:44 2007 for pugixml by
|
||||
<a href="http://www.doxygen.org/index.html">
|
||||
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.6-NO </small></address>
|
||||
</body>
|
||||
|
Before Width: | Height: | Size: 1.4 KiB After Width: | Height: | Size: 1.3 KiB |
Before Width: | Height: | Size: 764 B After Width: | Height: | Size: 765 B |
@ -27,7 +27,7 @@
|
||||
<tr class="memlist"><td><a class="el" href="classpugi_1_1xpath__node.html#c744d6466fee3a062ba3bb928331031e">xpath_node</a>()</td><td><a class="el" href="classpugi_1_1xpath__node.html">pugi::xpath_node</a></td><td></td></tr>
|
||||
<tr class="memlist"><td><a class="el" href="classpugi_1_1xpath__node.html#c19206fda68c2c67ff2b42009debe74f">xpath_node</a>(const xml_node &node)</td><td><a class="el" href="classpugi_1_1xpath__node.html">pugi::xpath_node</a></td><td></td></tr>
|
||||
<tr class="memlist"><td><a class="el" href="classpugi_1_1xpath__node.html#5cc7cfd8ceb6cae4be45b2f29fe57f34">xpath_node</a>(const xml_attribute &attribute, const xml_node &parent)</td><td><a class="el" href="classpugi_1_1xpath__node.html">pugi::xpath_node</a></td><td></td></tr>
|
||||
</table><hr size="1"><address style="align: right;"><small>Generated on Wed Feb 21 22:19:52 2007 for pugixml by
|
||||
</table><hr size="1"><address style="align: right;"><small>Generated on Wed Oct 31 20:23:44 2007 for pugixml by
|
||||
<a href="http://www.doxygen.org/index.html">
|
||||
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.6-NO </small></address>
|
||||
</body>
|
||||
|
@ -21,8 +21,8 @@
|
||||
<a class="el" href="namespacepugi.html">pugi</a>::<a class="el" href="classpugi_1_1xpath__node.html">xpath_node</a></div>
|
||||
<h1>pugi::xpath_node Class Reference</h1><!-- doxytag: class="pugi::xpath_node" -->Collaboration diagram for pugi::xpath_node:<p><center><img src="classpugi_1_1xpath__node__coll__graph.png" border="0" usemap="#pugi_1_1xpath__node__coll__map" alt="Collaboration graph"></center>
|
||||
<map name="pugi_1_1xpath__node__coll__map">
|
||||
<area href="classpugi_1_1xml__node.html" shape="rect" coords="22,98,134,125" alt="">
|
||||
<area href="classpugi_1_1xml__attribute.html" shape="rect" coords="166,98,300,125" alt="">
|
||||
<area href="classpugi_1_1xml__node.html" shape="rect" coords="20,96,132,123" alt="">
|
||||
<area href="classpugi_1_1xml__attribute.html" shape="rect" coords="164,96,297,123" alt="">
|
||||
</map>
|
||||
<center><font size="2">[<a href="graph_legend.html">legend</a>]</font></center><a href="classpugi_1_1xpath__node-members.html">List of all members.</a><hr><a name="_details"></a><h2>Detailed Description</h2>
|
||||
XPath node class.
|
||||
@ -334,7 +334,7 @@ Compares two XPath nodes.
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<hr size="1"><address style="align: right;"><small>Generated on Wed Feb 21 22:19:52 2007 for pugixml by
|
||||
<hr size="1"><address style="align: right;"><small>Generated on Wed Oct 31 20:23:44 2007 for pugixml by
|
||||
<a href="http://www.doxygen.org/index.html">
|
||||
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.6-NO </small></address>
|
||||
</body>
|
||||
|
@ -1,3 +1,3 @@
|
||||
base referer
|
||||
rect $classpugi_1_1xml__node.html 22,98 134,125
|
||||
rect $classpugi_1_1xml__attribute.html 166,98 300,125
|
||||
rect $classpugi_1_1xml__node.html 20,96 132,123
|
||||
rect $classpugi_1_1xml__attribute.html 164,96 297,123
|
||||
|
Before Width: | Height: | Size: 2.3 KiB After Width: | Height: | Size: 2.2 KiB |
@ -35,7 +35,7 @@
|
||||
<tr class="memlist"><td><a class="el" href="classpugi_1_1xpath__node__set.html#3e102821157e43d83f6623996709127d">xpath_node_set</a>()</td><td><a class="el" href="classpugi_1_1xpath__node__set.html">pugi::xpath_node_set</a></td><td></td></tr>
|
||||
<tr class="memlist"><td><a class="el" href="classpugi_1_1xpath__node__set.html#59f1f078606bb6c4f1a081bb82bcf901">xpath_node_set</a>(const xpath_node_set &ns)</td><td><a class="el" href="classpugi_1_1xpath__node__set.html">pugi::xpath_node_set</a></td><td></td></tr>
|
||||
<tr class="memlist"><td><a class="el" href="classpugi_1_1xpath__node__set.html#6ca44658aa0126e12f9fc3e3f8017376">~xpath_node_set</a>()</td><td><a class="el" href="classpugi_1_1xpath__node__set.html">pugi::xpath_node_set</a></td><td></td></tr>
|
||||
</table><hr size="1"><address style="align: right;"><small>Generated on Wed Feb 21 22:19:52 2007 for pugixml by
|
||||
</table><hr size="1"><address style="align: right;"><small>Generated on Wed Oct 31 20:23:45 2007 for pugixml by
|
||||
<a href="http://www.doxygen.org/index.html">
|
||||
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.6-NO </small></address>
|
||||
</body>
|
||||
|
@ -21,9 +21,9 @@
|
||||
<a class="el" href="namespacepugi.html">pugi</a>::<a class="el" href="classpugi_1_1xpath__node__set.html">xpath_node_set</a></div>
|
||||
<h1>pugi::xpath_node_set Class Reference</h1><!-- doxytag: class="pugi::xpath_node_set" -->Collaboration diagram for pugi::xpath_node_set:<p><center><img src="classpugi_1_1xpath__node__set__coll__graph.png" border="0" usemap="#pugi_1_1xpath__node__set__coll__map" alt="Collaboration graph"></center>
|
||||
<map name="pugi_1_1xpath__node__set__coll__map">
|
||||
<area href="classpugi_1_1xpath__node.html" shape="rect" coords="82,189,207,216" alt="">
|
||||
<area href="classpugi_1_1xml__node.html" shape="rect" coords="25,98,137,125" alt="">
|
||||
<area href="classpugi_1_1xml__attribute.html" shape="rect" coords="166,98,299,125" alt="">
|
||||
<area href="classpugi_1_1xpath__node.html" shape="rect" coords="77,187,203,213" alt="">
|
||||
<area href="classpugi_1_1xml__node.html" shape="rect" coords="23,96,135,123" alt="">
|
||||
<area href="classpugi_1_1xml__attribute.html" shape="rect" coords="164,96,297,123" alt="">
|
||||
</map>
|
||||
<center><font size="2">[<a href="graph_legend.html">legend</a>]</font></center><a href="classpugi_1_1xpath__node__set-members.html">List of all members.</a><hr><a name="_details"></a><h2>Detailed Description</h2>
|
||||
Not necessarily ordered constant collection of XPath nodes.
|
||||
@ -406,7 +406,7 @@ Return true if collection is empty.
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<hr size="1"><address style="align: right;"><small>Generated on Wed Feb 21 22:19:52 2007 for pugixml by
|
||||
<hr size="1"><address style="align: right;"><small>Generated on Wed Oct 31 20:23:45 2007 for pugixml by
|
||||
<a href="http://www.doxygen.org/index.html">
|
||||
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.6-NO </small></address>
|
||||
</body>
|
||||
|
@ -1,4 +1,4 @@
|
||||
base referer
|
||||
rect $classpugi_1_1xpath__node.html 82,189 207,216
|
||||
rect $classpugi_1_1xml__node.html 25,98 137,125
|
||||
rect $classpugi_1_1xml__attribute.html 166,98 299,125
|
||||
rect $classpugi_1_1xpath__node.html 77,187 203,213
|
||||
rect $classpugi_1_1xml__node.html 23,96 135,123
|
||||
rect $classpugi_1_1xml__attribute.html 164,96 297,123
|
||||
|
Before Width: | Height: | Size: 4.3 KiB After Width: | Height: | Size: 4.0 KiB |
@ -24,7 +24,7 @@
|
||||
<tr class="memlist"><td><a class="el" href="classpugi_1_1xpath__query.html#0327ba2d1a1dddac08f18d400856dafc">evaluate_string</a>(const xml_node &n)</td><td><a class="el" href="classpugi_1_1xpath__query.html">pugi::xpath_query</a></td><td></td></tr>
|
||||
<tr class="memlist"><td><a class="el" href="classpugi_1_1xpath__query.html#df3ce6efc17c1b58a1ff60bedb632140">xpath_query</a>(const char *query)</td><td><a class="el" href="classpugi_1_1xpath__query.html">pugi::xpath_query</a></td><td><code> [explicit]</code></td></tr>
|
||||
<tr class="memlist"><td><a class="el" href="classpugi_1_1xpath__query.html#0ca09e7de62e46feb64d03995f389da3">~xpath_query</a>()</td><td><a class="el" href="classpugi_1_1xpath__query.html">pugi::xpath_query</a></td><td></td></tr>
|
||||
</table><hr size="1"><address style="align: right;"><small>Generated on Wed Feb 21 22:19:50 2007 for pugixml by
|
||||
</table><hr size="1"><address style="align: right;"><small>Generated on Wed Oct 31 20:23:42 2007 for pugixml by
|
||||
<a href="http://www.doxygen.org/index.html">
|
||||
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.6-NO </small></address>
|
||||
</body>
|
||||
|
@ -232,7 +232,7 @@ If expression does not directly evaluate to node set, function returns empty nod
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<hr size="1"><address style="align: right;"><small>Generated on Wed Feb 21 22:19:50 2007 for pugixml by
|
||||
<hr size="1"><address style="align: right;"><small>Generated on Wed Oct 31 20:23:42 2007 for pugixml by
|
||||
<a href="http://www.doxygen.org/index.html">
|
||||
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.6-NO </small></address>
|
||||
</body>
|
||||
|
Before Width: | Height: | Size: 1.5 KiB After Width: | Height: | Size: 1.4 KiB |
@ -188,7 +188,7 @@ Here is a list of all documented class members with links to the class documenta
|
||||
: <a class="el" href="classpugi_1_1xml__tree__walker.html#aa0d4eb42c6518a2a90bc264588ece84">pugi::xml_tree_walker</a><li>~xpath_node_set()
|
||||
: <a class="el" href="classpugi_1_1xpath__node__set.html#6ca44658aa0126e12f9fc3e3f8017376">pugi::xpath_node_set</a><li>~xpath_query()
|
||||
: <a class="el" href="classpugi_1_1xpath__query.html#0ca09e7de62e46feb64d03995f389da3">pugi::xpath_query</a></ul>
|
||||
<hr size="1"><address style="align: right;"><small>Generated on Wed Feb 21 22:19:50 2007 for pugixml by
|
||||
<hr size="1"><address style="align: right;"><small>Generated on Wed Oct 31 20:23:42 2007 for pugixml by
|
||||
<a href="http://www.doxygen.org/index.html">
|
||||
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.6-NO </small></address>
|
||||
</body>
|
||||
|
@ -31,7 +31,7 @@
|
||||
<ul>
|
||||
<li>type_t
|
||||
: <a class="el" href="classpugi_1_1xpath__node__set.html#6c6899c8ecfbce9e42ec85540907080e">pugi::xpath_node_set</a></ul>
|
||||
<hr size="1"><address style="align: right;"><small>Generated on Wed Feb 21 22:19:50 2007 for pugixml by
|
||||
<hr size="1"><address style="align: right;"><small>Generated on Wed Oct 31 20:23:42 2007 for pugixml by
|
||||
<a href="http://www.doxygen.org/index.html">
|
||||
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.6-NO </small></address>
|
||||
</body>
|
||||
|
@ -33,7 +33,7 @@
|
||||
: <a class="el" href="classpugi_1_1xpath__node__set.html#6c6899c8ecfbce9e42ec85540907080e9d5ce5e6194ac2003da0d86d9af87437">pugi::xpath_node_set</a><li>type_sorted_reverse
|
||||
: <a class="el" href="classpugi_1_1xpath__node__set.html#6c6899c8ecfbce9e42ec85540907080e7035df3be16759292de59850d6c0b9be">pugi::xpath_node_set</a><li>type_unsorted
|
||||
: <a class="el" href="classpugi_1_1xpath__node__set.html#6c6899c8ecfbce9e42ec85540907080e7636fa164710ab9b069850ea3b3e4924">pugi::xpath_node_set</a></ul>
|
||||
<hr size="1"><address style="align: right;"><small>Generated on Wed Feb 21 22:19:50 2007 for pugixml by
|
||||
<hr size="1"><address style="align: right;"><small>Generated on Wed Oct 31 20:23:42 2007 for pugixml by
|
||||
<a href="http://www.doxygen.org/index.html">
|
||||
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.6-NO </small></address>
|
||||
</body>
|
||||
|
@ -181,7 +181,7 @@
|
||||
: <a class="el" href="classpugi_1_1xml__tree__walker.html#aa0d4eb42c6518a2a90bc264588ece84">pugi::xml_tree_walker</a><li>~xpath_node_set()
|
||||
: <a class="el" href="classpugi_1_1xpath__node__set.html#6ca44658aa0126e12f9fc3e3f8017376">pugi::xpath_node_set</a><li>~xpath_query()
|
||||
: <a class="el" href="classpugi_1_1xpath__query.html#0ca09e7de62e46feb64d03995f389da3">pugi::xpath_query</a></ul>
|
||||
<hr size="1"><address style="align: right;"><small>Generated on Wed Feb 21 22:19:50 2007 for pugixml by
|
||||
<hr size="1"><address style="align: right;"><small>Generated on Wed Oct 31 20:23:42 2007 for pugixml by
|
||||
<a href="http://www.doxygen.org/index.html">
|
||||
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.6-NO </small></address>
|
||||
</body>
|
||||
|
@ -33,7 +33,7 @@
|
||||
: <a class="el" href="classpugi_1_1xml__node.html#9084f97350ffc64af1eaf7c17c57f4ba">pugi::xml_node</a><li>const_iterator
|
||||
: <a class="el" href="classpugi_1_1xpath__node__set.html#6987510e88cea4a396d186285c174de6">pugi::xpath_node_set</a><li>iterator
|
||||
: <a class="el" href="classpugi_1_1xml__node.html#e053ea39add5a64de584f7a81212e388">pugi::xml_node</a></ul>
|
||||
<hr size="1"><address style="align: right;"><small>Generated on Wed Feb 21 22:19:50 2007 for pugixml by
|
||||
<hr size="1"><address style="align: right;"><small>Generated on Wed Oct 31 20:23:42 2007 for pugixml by
|
||||
<a href="http://www.doxygen.org/index.html">
|
||||
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.6-NO </small></address>
|
||||
</body>
|
||||
|
@ -73,7 +73,7 @@ A purple dashed arrow is used if a class is contained or used by another class.
|
||||
<li>
|
||||
A yellow dashed arrow denotes a relation between a template instance and the template class it was instantiated from. The arrow is labeled with the template parameters of the instance. </li>
|
||||
</ul>
|
||||
<hr size="1"><address style="align: right;"><small>Generated on Wed Feb 21 22:19:53 2007 for pugixml by
|
||||
<hr size="1"><address style="align: right;"><small>Generated on Wed Oct 31 20:23:45 2007 for pugixml by
|
||||
<a href="http://www.doxygen.org/index.html">
|
||||
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.6-NO </small></address>
|
||||
</body>
|
||||
|
Before Width: | Height: | Size: 3.8 KiB After Width: | Height: | Size: 3.8 KiB |
@ -38,7 +38,7 @@ This inheritance list is sorted roughly, but not completely, alphabetically:<ul>
|
||||
<li><a class="el" href="classpugi_1_1xpath__node__set.html">pugi::xpath_node_set</a>
|
||||
<li><a class="el" href="classpugi_1_1xpath__query.html">pugi::xpath_query</a>
|
||||
</ul>
|
||||
<hr size="1"><address style="align: right;"><small>Generated on Wed Feb 21 22:19:50 2007 for pugixml by
|
||||
<hr size="1"><address style="align: right;"><small>Generated on Wed Oct 31 20:23:42 2007 for pugixml by
|
||||
<a href="http://www.doxygen.org/index.html">
|
||||
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.6-NO </small></address>
|
||||
</body>
|
||||
|
@ -13,7 +13,7 @@
|
||||
</ul></div>
|
||||
<h1>pugixml Documentation</h1>
|
||||
<p>
|
||||
<h3 align="center">0.3 </h3><hr size="1"><address style="align: right;"><small>Generated on Wed Feb 21 22:19:50 2007 for pugixml by
|
||||
<h3 align="center">0.34 </h3><hr size="1"><address style="align: right;"><small>Generated on Wed Oct 31 20:23:42 2007 for pugixml by
|
||||
<a href="http://www.doxygen.org/index.html">
|
||||
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.6-NO </small></address>
|
||||
</body>
|
||||
|
@ -1,2 +1,2 @@
|
||||
base referer
|
||||
rect $structpugi_1_1transfer__ownership__tag.html 8,8 202,34
|
||||
rect $structpugi_1_1transfer__ownership__tag.html 5,5 200,32
|
||||
|
Before Width: | Height: | Size: 582 B After Width: | Height: | Size: 585 B |
@ -1,2 +1,2 @@
|
||||
base referer
|
||||
rect $classpugi_1_1xml__attribute.html 7,8 141,34
|
||||
rect $classpugi_1_1xml__attribute.html 5,5 139,32
|
||||
|
Before Width: | Height: | Size: 428 B After Width: | Height: | Size: 433 B |
@ -1,3 +1,3 @@
|
||||
base referer
|
||||
rect $classpugi_1_1xml__attribute__iterator.html 121,7 302,34
|
||||
rect $classpugi_1_1xml__node__iterator.html 130,58 293,85
|
||||
rect $classpugi_1_1xml__attribute__iterator.html 119,5 300,32
|
||||
rect $classpugi_1_1xml__node__iterator.html 128,56 291,83
|
||||
|
Before Width: | Height: | Size: 1.0 KiB After Width: | Height: | Size: 1.0 KiB |
@ -1,3 +1,3 @@
|
||||
base referer
|
||||
rect $classpugi_1_1xml__node.html 9,8 121,34
|
||||
rect $classpugi_1_1xml__document.html 170,8 314,34
|
||||
rect $classpugi_1_1xml__node.html 7,5 119,32
|
||||
rect $classpugi_1_1xml__document.html 169,5 311,32
|
||||
|
Before Width: | Height: | Size: 596 B After Width: | Height: | Size: 602 B |
@ -1,2 +1,2 @@
|
||||
base referer
|
||||
rect $classpugi_1_1xml__tree__walker.html 9,8 161,34
|
||||
rect $classpugi_1_1xml__tree__walker.html 7,5 159,32
|
||||
|
Before Width: | Height: | Size: 485 B After Width: | Height: | Size: 492 B |
@ -1,2 +1,2 @@
|
||||
base referer
|
||||
rect $classpugi_1_1xpath__exception.html 137,8 289,34
|
||||
rect $classpugi_1_1xpath__exception.html 135,5 287,32
|
||||
|
Before Width: | Height: | Size: 644 B After Width: | Height: | Size: 645 B |
@ -1,2 +1,2 @@
|
||||
base referer
|
||||
rect $classpugi_1_1xpath__node.html 7,8 133,34
|
||||
rect $classpugi_1_1xpath__node.html 5,5 131,32
|
||||
|
Before Width: | Height: | Size: 404 B After Width: | Height: | Size: 404 B |
@ -1,2 +1,2 @@
|
||||
base referer
|
||||
rect $classpugi_1_1xpath__node__set.html 9,8 158,34
|
||||
rect $classpugi_1_1xpath__node__set.html 5,5 155,32
|
||||
|
Before Width: | Height: | Size: 470 B After Width: | Height: | Size: 463 B |
@ -1,2 +1,2 @@
|
||||
base referer
|
||||
rect $classpugi_1_1xpath__query.html 9,8 137,34
|
||||
rect $classpugi_1_1xpath__query.html 7,5 135,32
|
||||
|
Before Width: | Height: | Size: 437 B After Width: | Height: | Size: 438 B |
@ -22,44 +22,44 @@
|
||||
<table border="0" cellspacing="10" cellpadding="0">
|
||||
<tr><td><img src="inherit__graph__0.png" border="0" alt="" usemap="#pugi_1_1transfer__ownership__tag_map">
|
||||
<map name="pugi_1_1transfer__ownership__tag_map">
|
||||
<area href="structpugi_1_1transfer__ownership__tag.html" shape="rect" coords="8,8,202,34" alt="">
|
||||
<area href="structpugi_1_1transfer__ownership__tag.html" shape="rect" coords="5,5,200,32" alt="">
|
||||
</map></td></tr>
|
||||
<tr><td><img src="inherit__graph__1.png" border="0" alt="" usemap="#pugi_1_1xml__attribute_map">
|
||||
<map name="pugi_1_1xml__attribute_map">
|
||||
<area href="classpugi_1_1xml__attribute.html" shape="rect" coords="7,8,141,34" alt="">
|
||||
<area href="classpugi_1_1xml__attribute.html" shape="rect" coords="5,5,139,32" alt="">
|
||||
</map></td></tr>
|
||||
<tr><td><img src="inherit__graph__2.png" border="0" alt="" usemap="#pugi_1_1xml__attribute__iterator_map">
|
||||
<map name="pugi_1_1xml__attribute__iterator_map">
|
||||
<area href="classpugi_1_1xml__attribute__iterator.html" shape="rect" coords="121,7,302,34" alt="">
|
||||
<area href="classpugi_1_1xml__node__iterator.html" shape="rect" coords="130,58,293,85" alt="">
|
||||
<area href="classpugi_1_1xml__attribute__iterator.html" shape="rect" coords="119,5,300,32" alt="">
|
||||
<area href="classpugi_1_1xml__node__iterator.html" shape="rect" coords="128,56,291,83" alt="">
|
||||
</map></td></tr>
|
||||
<tr><td><img src="inherit__graph__3.png" border="0" alt="" usemap="#pugi_1_1xml__node_map">
|
||||
<map name="pugi_1_1xml__node_map">
|
||||
<area href="classpugi_1_1xml__node.html" shape="rect" coords="9,8,121,34" alt="">
|
||||
<area href="classpugi_1_1xml__document.html" shape="rect" coords="170,8,314,34" alt="">
|
||||
<area href="classpugi_1_1xml__node.html" shape="rect" coords="7,5,119,32" alt="">
|
||||
<area href="classpugi_1_1xml__document.html" shape="rect" coords="169,5,311,32" alt="">
|
||||
</map></td></tr>
|
||||
<tr><td><img src="inherit__graph__4.png" border="0" alt="" usemap="#pugi_1_1xml__tree__walker_map">
|
||||
<map name="pugi_1_1xml__tree__walker_map">
|
||||
<area href="classpugi_1_1xml__tree__walker.html" shape="rect" coords="9,8,161,34" alt="">
|
||||
<area href="classpugi_1_1xml__tree__walker.html" shape="rect" coords="7,5,159,32" alt="">
|
||||
</map></td></tr>
|
||||
<tr><td><img src="inherit__graph__5.png" border="0" alt="" usemap="#pugi_1_1xpath__exception_map">
|
||||
<map name="pugi_1_1xpath__exception_map">
|
||||
<area href="classpugi_1_1xpath__exception.html" shape="rect" coords="137,8,289,34" alt="">
|
||||
<area href="classpugi_1_1xpath__exception.html" shape="rect" coords="135,5,287,32" alt="">
|
||||
</map></td></tr>
|
||||
<tr><td><img src="inherit__graph__6.png" border="0" alt="" usemap="#pugi_1_1xpath__node_map">
|
||||
<map name="pugi_1_1xpath__node_map">
|
||||
<area href="classpugi_1_1xpath__node.html" shape="rect" coords="7,8,133,34" alt="">
|
||||
<area href="classpugi_1_1xpath__node.html" shape="rect" coords="5,5,131,32" alt="">
|
||||
</map></td></tr>
|
||||
<tr><td><img src="inherit__graph__7.png" border="0" alt="" usemap="#pugi_1_1xpath__node__set_map">
|
||||
<map name="pugi_1_1xpath__node__set_map">
|
||||
<area href="classpugi_1_1xpath__node__set.html" shape="rect" coords="9,8,158,34" alt="">
|
||||
<area href="classpugi_1_1xpath__node__set.html" shape="rect" coords="5,5,155,32" alt="">
|
||||
</map></td></tr>
|
||||
<tr><td><img src="inherit__graph__8.png" border="0" alt="" usemap="#pugi_1_1xpath__query_map">
|
||||
<map name="pugi_1_1xpath__query_map">
|
||||
<area href="classpugi_1_1xpath__query.html" shape="rect" coords="9,8,137,34" alt="">
|
||||
<area href="classpugi_1_1xpath__query.html" shape="rect" coords="7,5,135,32" alt="">
|
||||
</map></td></tr>
|
||||
</table>
|
||||
<hr size="1"><address style="align: right;"><small>Generated on Wed Feb 21 22:19:53 2007 for pugixml by
|
||||
<hr size="1"><address style="align: right;"><small>Generated on Wed Oct 31 20:23:45 2007 for pugixml by
|
||||
<a href="http://www.doxygen.org/index.html">
|
||||
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.6-NO </small></address>
|
||||
</body>
|
||||
|
@ -55,7 +55,7 @@ Here is a list of all documented namespace members with links to the namespaces
|
||||
: <a class="el" href="namespacepugi.html#8617ea5ba78c676aff8b7af960cb2f4b">pugi</a><li>parse_ws_pcdata
|
||||
: <a class="el" href="namespacepugi.html#e492a24302294f1ce3fbd56f2edbf131">pugi</a><li>xml_node_type
|
||||
: <a class="el" href="namespacepugi.html#137e94a038e4ab0ada6477cf7f6153a9">pugi</a></ul>
|
||||
<hr size="1"><address style="align: right;"><small>Generated on Wed Feb 21 22:19:52 2007 for pugixml by
|
||||
<hr size="1"><address style="align: right;"><small>Generated on Wed Oct 31 20:23:45 2007 for pugixml by
|
||||
<a href="http://www.doxygen.org/index.html">
|
||||
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.6-NO </small></address>
|
||||
</body>
|
||||
|
@ -30,7 +30,7 @@
|
||||
<ul>
|
||||
<li>xml_node_type
|
||||
: <a class="el" href="namespacepugi.html#137e94a038e4ab0ada6477cf7f6153a9">pugi</a></ul>
|
||||
<hr size="1"><address style="align: right;"><small>Generated on Wed Feb 21 22:19:52 2007 for pugixml by
|
||||
<hr size="1"><address style="align: right;"><small>Generated on Wed Oct 31 20:23:45 2007 for pugixml by
|
||||
<a href="http://www.doxygen.org/index.html">
|
||||
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.6-NO </small></address>
|
||||
</body>
|
||||
|
@ -36,7 +36,7 @@
|
||||
: <a class="el" href="namespacepugi.html#137e94a038e4ab0ada6477cf7f6153a9d58c55e810076e076318cc2268191b1f">pugi</a><li>node_pcdata
|
||||
: <a class="el" href="namespacepugi.html#137e94a038e4ab0ada6477cf7f6153a95c0042693a8b8b6b54c191b4403fca21">pugi</a><li>node_pi
|
||||
: <a class="el" href="namespacepugi.html#137e94a038e4ab0ada6477cf7f6153a9cd772b12b3d5442b9771151f45134440">pugi</a></ul>
|
||||
<hr size="1"><address style="align: right;"><small>Generated on Wed Feb 21 22:19:52 2007 for pugixml by
|
||||
<hr size="1"><address style="align: right;"><small>Generated on Wed Oct 31 20:23:45 2007 for pugixml by
|
||||
<a href="http://www.doxygen.org/index.html">
|
||||
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.6-NO </small></address>
|
||||
</body>
|
||||
|
@ -31,7 +31,7 @@
|
||||
<li>as_utf16()
|
||||
: <a class="el" href="namespacepugi.html#557d234d14b2da1cf7ad9b72a05d2698">pugi</a><li>as_utf8()
|
||||
: <a class="el" href="namespacepugi.html#55c7bb5900e82254aa1b9671c61030fd">pugi</a></ul>
|
||||
<hr size="1"><address style="align: right;"><small>Generated on Wed Feb 21 22:19:52 2007 for pugixml by
|
||||
<hr size="1"><address style="align: right;"><small>Generated on Wed Oct 31 20:23:45 2007 for pugixml by
|
||||
<a href="http://www.doxygen.org/index.html">
|
||||
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.6-NO </small></address>
|
||||
</body>
|
||||
|
@ -45,7 +45,7 @@
|
||||
: <a class="el" href="namespacepugi.html#1e943812f2de36fc3ee14f7756afdbd7">pugi</a><li>parse_wnorm_attribute
|
||||
: <a class="el" href="namespacepugi.html#8617ea5ba78c676aff8b7af960cb2f4b">pugi</a><li>parse_ws_pcdata
|
||||
: <a class="el" href="namespacepugi.html#e492a24302294f1ce3fbd56f2edbf131">pugi</a></ul>
|
||||
<hr size="1"><address style="align: right;"><small>Generated on Wed Feb 21 22:19:52 2007 for pugixml by
|
||||
<hr size="1"><address style="align: right;"><small>Generated on Wed Oct 31 20:23:45 2007 for pugixml by
|
||||
<a href="http://www.doxygen.org/index.html">
|
||||
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.6-NO </small></address>
|
||||
</body>
|
||||
|
@ -661,7 +661,7 @@ This is the default set of formatting flags.
|
||||
It includes indenting nodes depending on their depth in DOM tree and considering input data to be UTF-8. </td>
|
||||
</tr>
|
||||
</table>
|
||||
<hr size="1"><address style="align: right;"><small>Generated on Wed Feb 21 22:19:50 2007 for pugixml by
|
||||
<hr size="1"><address style="align: right;"><small>Generated on Wed Oct 31 20:23:42 2007 for pugixml by
|
||||
<a href="http://www.doxygen.org/index.html">
|
||||
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.6-NO </small></address>
|
||||
</body>
|
||||
|
@ -19,7 +19,7 @@
|
||||
<h1>pugixml Namespace List</h1>Here is a list of all documented namespaces with brief descriptions:<table>
|
||||
<tr><td class="indexkey"><a class="el" href="namespacepugi.html">pugi</a></td><td class="indexvalue">The PugiXML Parser namespace </td></tr>
|
||||
</table>
|
||||
<hr size="1"><address style="align: right;"><small>Generated on Wed Feb 21 22:19:50 2007 for pugixml by
|
||||
<hr size="1"><address style="align: right;"><small>Generated on Wed Oct 31 20:23:42 2007 for pugixml by
|
||||
<a href="http://www.doxygen.org/index.html">
|
||||
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.6-NO </small></address>
|
||||
</body>
|
||||
|
@ -28,7 +28,7 @@ Struct used to distinguish parsing with ownership transfer from parsing without
|
||||
<table border="0" cellpadding="0" cellspacing="0">
|
||||
<tr><td></td></tr>
|
||||
</table>
|
||||
<hr size="1"><address style="align: right;"><small>Generated on Wed Feb 21 22:19:51 2007 for pugixml by
|
||||
<hr size="1"><address style="align: right;"><small>Generated on Wed Oct 31 20:23:44 2007 for pugixml by
|
||||
<a href="http://www.doxygen.org/index.html">
|
||||
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.6-NO </small></address>
|
||||
</body>
|
||||
|
@ -415,10 +415,12 @@ environment). The library is written in standard-conformant C++ and was tested o
|
||||
|
||||
<p>
|
||||
<ul>
|
||||
<li>Windows 32-bit (MSVC<sup><a href="#annot-3">3</a></sup> 7.0 (2002), MSVC 7.1 (2003), MSVC 8.0 (2005), ICC<sup><a href="#annot-4">4</a></sup> 8.0, ICC 8.1, GCC 3.4.2 (MinGW), BCC<sup><a href="#annot-5">5</a></sup> 5.82)
|
||||
<li>Windows 32-bit (MSVC<sup><a href="#annot-3">3</a></sup> 6.0, MSVC 7.0 (2002), MSVC 7.1 (2003), MSVC 8.0 (2005), ICC<sup><a href="#annot-4">4</a></sup> 8.0, ICC 8.1, GCC 3.4.2 (MinGW), BCC<sup><a href="#annot-5">5</a></sup> 5.82, DMC<sup><a href="#annot-6">6</a></sup> 8.50, Comeau C++ 4.3.3, PGI<sup><a href="#annot-7">7</a></sup> 6.2, CW<sup><a href="#annot-8">8</a></sup> 8.0)
|
||||
<li>Linux 32-bit (GCC 3.2)
|
||||
<li>Sony Playstation Portable (GCC 3.4.2; in PUGIXML_NO_STL mode)
|
||||
<li>Sony Playstation 3 (GCC 4.0.2; in PUGIXML_NO_EXCEPTIONS mode (-fno-exceptions))
|
||||
<li>Microsoft Xbox (MSVC 7.1)
|
||||
<li>Microsoft Xbox 360 (MSVC 8.0)
|
||||
</ul>
|
||||
</p>
|
||||
|
||||
@ -428,7 +430,10 @@ environment). The library is written in standard-conformant C++ and was tested o
|
||||
|
||||
<a name="annot-3"><sup>3</sup><small> MSVC is Microsoft Visual C++ Compiler</small> <br>
|
||||
<a name="annot-4"><sup>4</sup><small> ICC is Intel C++ Compiler</small> <br>
|
||||
<a name="annot-5"><sup>5</sup><small> BCC is Borland C++ Compiler</small>
|
||||
<a name="annot-5"><sup>5</sup><small> BCC is Borland C++ Compiler</small> <br>
|
||||
<a name="annot-6"><sup>6</sup><small> DMC is Digital Mars C++ Compiler</small> <br>
|
||||
<a name="annot-7"><sup>7</sup><small> PGI is Portland Group C++ Compiler</small>
|
||||
<a name="annot-8"><sup>8</sup><small> CW is Metrowerks CodeWarrior</small>
|
||||
|
||||
<hr>
|
||||
|
||||
@ -624,6 +629,17 @@ if necessary)
|
||||
</ul>
|
||||
</dd>
|
||||
</dt>
|
||||
<dt>31.10.2007 - v0.34
|
||||
<dd>Maintenance release. Changes: <ul>
|
||||
<li>Improved compatibility (supported Digital Mars C++, MSVC 6, CodeWarrior 8, PGI C++, Comeau, supported PS3 and XBox360)
|
||||
<li>Fixed bug with loading from text-mode iostreams
|
||||
<li>Fixed leak when transfer_ownership is true and parsing is failing
|
||||
<li>Fixed bug in saving (\r and \n are now escaped in attribute values)
|
||||
<li>PUGIXML_NO_EXCEPTION flag for platforms without exception handling
|
||||
<li>Renamed free() to destroy() - some macro conflicts were reported
|
||||
</ul>
|
||||
</dd>
|
||||
</dt>
|
||||
</dl>
|
||||
|
||||
<hr>
|
||||
@ -670,7 +686,7 @@ OTHER DEALINGS IN THE SOFTWARE.
|
||||
|
||||
<hr>
|
||||
|
||||
<p>Revised 21 February, 2007</p>
|
||||
<p>Revised 31 October, 2007</p>
|
||||
<p><i>© Copyright <a href="mailto:arseny.kapoulkine@gmail.com">Arseny Kapoulkine</a> 2006-2007. All Rights Reserved.</i></p>
|
||||
</body>
|
||||
</html>
|
||||
|
1161
docs/pugixml.cfg
Normal file
@ -1,6 +1,6 @@
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Pug Improved XML Parser - Version 0.3
|
||||
// Pug Improved XML Parser - Version 0.34
|
||||
// --------------------------------------------------------
|
||||
// Copyright (C) 2006-2007, by Arseny Kapoulkine (arseny.kapoulkine@gmail.com)
|
||||
// This work is based on the pugxml parser, which is:
|
||||
@ -20,4 +20,8 @@
|
||||
// Uncomment this to disable XPath
|
||||
// #define PUGIXML_NO_XPATH
|
||||
|
||||
// Uncomment this to disable exceptions
|
||||
// Note: you can't use XPath with PUGIXML_NO_EXCEPTIONS
|
||||
// #define PUGIXML_NO_EXCEPTIONS
|
||||
|
||||
#endif
|
||||
|
5236
src/pugixml.cpp
@ -1,6 +1,6 @@
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Pug Improved XML Parser - Version 0.3
|
||||
// Pug Improved XML Parser - Version 0.34
|
||||
// --------------------------------------------------------
|
||||
// Copyright (C) 2006-2007, by Arseny Kapoulkine (arseny.kapoulkine@gmail.com)
|
||||
// This work is based on the pugxml parser, which is:
|
||||
@ -29,8 +29,8 @@
|
||||
# endif
|
||||
#endif
|
||||
|
||||
#include <cstddef>
|
||||
#include <cstring>
|
||||
#include <stddef.h>
|
||||
#include <string.h>
|
||||
|
||||
/// The PugiXML Parser namespace.
|
||||
namespace pugi
|
||||
@ -311,7 +311,11 @@ namespace pugi
|
||||
xml_attribute_struct* _attr;
|
||||
|
||||
/// \internal Safe bool type
|
||||
#ifdef __MWERKS__
|
||||
typedef bool (xml_attribute::*unspecified_bool_type)() const;
|
||||
#else
|
||||
typedef xml_attribute_struct* xml_attribute::*unspecified_bool_type;
|
||||
#endif
|
||||
|
||||
/// \internal Initializing ctor
|
||||
explicit xml_attribute(xml_attribute_struct* attr);
|
||||
@ -519,7 +523,11 @@ namespace pugi
|
||||
xml_node_struct* _root;
|
||||
|
||||
/// \internal Safe bool type
|
||||
#ifdef __MWERKS__
|
||||
typedef bool (xml_node::*unspecified_bool_type)() const;
|
||||
#else
|
||||
typedef xml_node_struct* xml_node::*unspecified_bool_type;
|
||||
#endif
|
||||
|
||||
/// \internal Initializing ctor
|
||||
explicit xml_node(xml_node_struct* p);
|
||||
@ -1315,7 +1323,7 @@ namespace pugi
|
||||
const xml_document& operator=(const xml_document&);
|
||||
|
||||
void create();
|
||||
void free();
|
||||
void destroy();
|
||||
|
||||
public:
|
||||
/**
|
||||
|
@ -1,6 +1,6 @@
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Pug Improved XML Parser - Version 0.3
|
||||
// Pug Improved XML Parser - Version 0.34
|
||||
// --------------------------------------------------------
|
||||
// Copyright (C) 2006-2007, by Arseny Kapoulkine (arseny.kapoulkine@gmail.com)
|
||||
// This work is based on the pugxml parser, which is:
|
||||
@ -30,6 +30,17 @@
|
||||
# pragma warning(disable: 4996) // this function or variable may be unsafe
|
||||
#endif
|
||||
|
||||
#if defined(_MSC_VER) && _MSC_VER == 1200
|
||||
// MSVC6 workaround
|
||||
namespace std
|
||||
{
|
||||
template <typename T> const T& min(const T& a, const T& b)
|
||||
{
|
||||
return _cpp_min(a, b);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
namespace
|
||||
{
|
||||
using namespace pugi;
|
||||
@ -176,7 +187,7 @@ namespace
|
||||
return false;
|
||||
else // lp is parent, ln & rn are distinct siblings
|
||||
{
|
||||
for (; ln; ln = ln.next_sibling());
|
||||
for (; ln; ln = ln.next_sibling())
|
||||
if (ln == rn)
|
||||
return true;
|
||||
|
||||
@ -256,7 +267,7 @@ namespace
|
||||
{
|
||||
#if defined(__USE_ISOC99)
|
||||
return isnan(value);
|
||||
#elif defined(_MSC_VER) || defined(__BORLANDC__)
|
||||
#elif (defined(_MSC_VER) || defined(__BORLANDC__)) && !defined(__COMO__)
|
||||
return !!_isnan(value);
|
||||
#elif FLT_RADIX == 2 && DBL_MAX_EXP == 1024 && DBL_MANT_DIG == 53
|
||||
// IEEE 754
|
||||
@ -275,7 +286,7 @@ namespace
|
||||
{
|
||||
#if defined(__USE_ISOC99)
|
||||
return !isfinite(value);
|
||||
#elif defined(_MSC_VER) || defined(__BORLANDC__)
|
||||
#elif (defined(_MSC_VER) || defined(__BORLANDC__)) && !defined(__COMO__)
|
||||
return !_finite(value);
|
||||
#elif FLT_RADIX == 2 && DBL_MAX_EXP == 1024 && DBL_MANT_DIG == 53
|
||||
// IEEE 754
|
||||
@ -371,7 +382,7 @@ namespace
|
||||
|
||||
double ieee754_round(double value)
|
||||
{
|
||||
return value == value ? floor(value + 0.5) : value;
|
||||
return is_nan(value) ? value : floor(value + 0.5);
|
||||
}
|
||||
|
||||
const char* local_name(const char* name)
|
||||
@ -550,6 +561,8 @@ namespace pugi
|
||||
return block->data;
|
||||
}
|
||||
}
|
||||
|
||||
void* node();
|
||||
};
|
||||
|
||||
xpath_node::xpath_node()
|
||||
@ -1155,6 +1168,13 @@ namespace pugi
|
||||
nodetest_all,
|
||||
nodetest_all_in_namespace
|
||||
};
|
||||
|
||||
template <axis_t N> struct axis_to_type
|
||||
{
|
||||
static const axis_t axis;
|
||||
};
|
||||
|
||||
template <axis_t N> const axis_t axis_to_type<N>::axis = N;
|
||||
|
||||
class xpath_ast_node
|
||||
{
|
||||
@ -1181,45 +1201,147 @@ namespace pugi
|
||||
xpath_ast_node(const xpath_ast_node&);
|
||||
xpath_ast_node& operator=(const xpath_ast_node&);
|
||||
|
||||
template <class Cbool, class Cdouble, class Cstring> bool compare_eq(xpath_ast_node* lhs, xpath_ast_node* rhs, xpath_context& c)
|
||||
template <class Cbool, class Cdouble, class Cstring> struct compare_eq
|
||||
{
|
||||
if (lhs->rettype() != ast_type_node_set && rhs->rettype() != ast_type_node_set)
|
||||
static bool run(xpath_ast_node* lhs, xpath_ast_node* rhs, xpath_context& c)
|
||||
{
|
||||
if (lhs->rettype() == ast_type_boolean || rhs->rettype() == ast_type_boolean)
|
||||
return Cbool()(lhs->eval_boolean(c), rhs->eval_boolean(c));
|
||||
else if (lhs->rettype() == ast_type_number || rhs->rettype() == ast_type_number)
|
||||
return Cdouble()(lhs->eval_number(c), rhs->eval_number(c));
|
||||
else if (lhs->rettype() == ast_type_string || rhs->rettype() == ast_type_string)
|
||||
return Cstring()(lhs->eval_string(c), rhs->eval_string(c));
|
||||
if (lhs->rettype() != ast_type_node_set && rhs->rettype() != ast_type_node_set)
|
||||
{
|
||||
if (lhs->rettype() == ast_type_boolean || rhs->rettype() == ast_type_boolean)
|
||||
return Cbool()(lhs->eval_boolean(c), rhs->eval_boolean(c));
|
||||
else if (lhs->rettype() == ast_type_number || rhs->rettype() == ast_type_number)
|
||||
return Cdouble()(lhs->eval_number(c), rhs->eval_number(c));
|
||||
else if (lhs->rettype() == ast_type_string || rhs->rettype() == ast_type_string)
|
||||
return Cstring()(lhs->eval_string(c), rhs->eval_string(c));
|
||||
else
|
||||
{
|
||||
assert(!"Wrong types");
|
||||
return false;
|
||||
}
|
||||
}
|
||||
else if (lhs->rettype() == ast_type_node_set && rhs->rettype() == ast_type_node_set)
|
||||
{
|
||||
xpath_node_set ls = lhs->eval_node_set(c);
|
||||
xpath_node_set rs = rhs->eval_node_set(c);
|
||||
|
||||
for (xpath_node_set::const_iterator li = ls.begin(); li != ls.end(); ++li)
|
||||
for (xpath_node_set::const_iterator ri = rs.begin(); ri != rs.end(); ++ri)
|
||||
{
|
||||
if (Cstring()(string_value(*li), string_value(*ri)))
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
else if (lhs->rettype() != ast_type_node_set && rhs->rettype() == ast_type_node_set)
|
||||
{
|
||||
if (lhs->rettype() == ast_type_boolean)
|
||||
return Cbool()(lhs->eval_boolean(c), rhs->eval_boolean(c));
|
||||
else if (lhs->rettype() == ast_type_number)
|
||||
{
|
||||
double l = lhs->eval_number(c);
|
||||
xpath_node_set rs = rhs->eval_node_set(c);
|
||||
|
||||
for (xpath_node_set::const_iterator ri = rs.begin(); ri != rs.end(); ++ri)
|
||||
{
|
||||
if (Cdouble()(l, convert_string_to_number(string_value(*ri).c_str())) == true)
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
else if (lhs->rettype() == ast_type_string)
|
||||
{
|
||||
std::string l = lhs->eval_string(c);
|
||||
xpath_node_set rs = rhs->eval_node_set(c);
|
||||
|
||||
for (xpath_node_set::const_iterator ri = rs.begin(); ri != rs.end(); ++ri)
|
||||
{
|
||||
if (Cstring()(l, string_value(*ri)) == true)
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
else
|
||||
{
|
||||
assert(!"Wrong types");
|
||||
return false;
|
||||
}
|
||||
}
|
||||
else if (lhs->rettype() == ast_type_node_set && rhs->rettype() != ast_type_node_set)
|
||||
{
|
||||
if (rhs->rettype() == ast_type_boolean)
|
||||
return Cbool()(lhs->eval_boolean(c), rhs->eval_boolean(c));
|
||||
else if (rhs->rettype() == ast_type_number)
|
||||
{
|
||||
xpath_node_set ls = lhs->eval_node_set(c);
|
||||
double r = rhs->eval_number(c);
|
||||
|
||||
for (xpath_node_set::const_iterator li = ls.begin(); li != ls.end(); ++li)
|
||||
{
|
||||
if (Cdouble()(convert_string_to_number(string_value(*li).c_str()), r) == true)
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
else if (rhs->rettype() == ast_type_string)
|
||||
{
|
||||
xpath_node_set ls = lhs->eval_node_set(c);
|
||||
std::string r = rhs->eval_string(c);
|
||||
|
||||
for (xpath_node_set::const_iterator li = ls.begin(); li != ls.end(); ++li)
|
||||
{
|
||||
if (Cstring()(string_value(*li), r) == true)
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
else
|
||||
{
|
||||
assert(!"Wrong types");
|
||||
return false;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
assert(!"Wrong types");
|
||||
return false;
|
||||
}
|
||||
}
|
||||
else if (lhs->rettype() == ast_type_node_set && rhs->rettype() == ast_type_node_set)
|
||||
};
|
||||
|
||||
template <class Cdouble> struct compare_rel
|
||||
{
|
||||
static bool run(xpath_ast_node* lhs, xpath_ast_node* rhs, xpath_context& c)
|
||||
{
|
||||
xpath_node_set ls = lhs->eval_node_set(c);
|
||||
xpath_node_set rs = rhs->eval_node_set(c);
|
||||
|
||||
for (xpath_node_set::const_iterator li = ls.begin(); li != ls.end(); ++li)
|
||||
for (xpath_node_set::const_iterator ri = rs.begin(); ri != rs.end(); ++ri)
|
||||
if (lhs->rettype() != ast_type_node_set && rhs->rettype() != ast_type_node_set)
|
||||
return Cdouble()(lhs->eval_number(c), rhs->eval_number(c));
|
||||
else if (lhs->rettype() == ast_type_node_set && rhs->rettype() == ast_type_node_set)
|
||||
{
|
||||
if (Cstring()(string_value(*li), string_value(*ri)))
|
||||
return true;
|
||||
xpath_node_set ls = lhs->eval_node_set(c);
|
||||
xpath_node_set rs = rhs->eval_node_set(c);
|
||||
|
||||
for (xpath_node_set::const_iterator li = ls.begin(); li != ls.end(); ++li)
|
||||
{
|
||||
double l = convert_string_to_number(string_value(*li).c_str());
|
||||
|
||||
for (xpath_node_set::const_iterator ri = rs.begin(); ri != rs.end(); ++ri)
|
||||
{
|
||||
if (Cdouble()(l, convert_string_to_number(string_value(*ri).c_str())) == true)
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
else if (lhs->rettype() != ast_type_node_set && rhs->rettype() == ast_type_node_set)
|
||||
{
|
||||
if (lhs->rettype() == ast_type_boolean)
|
||||
return Cbool()(lhs->eval_boolean(c), rhs->eval_boolean(c));
|
||||
else if (lhs->rettype() == ast_type_number)
|
||||
else if (lhs->rettype() != ast_type_node_set && rhs->rettype() == ast_type_node_set)
|
||||
{
|
||||
double l = lhs->eval_number(c);
|
||||
xpath_node_set rs = rhs->eval_node_set(c);
|
||||
|
||||
|
||||
for (xpath_node_set::const_iterator ri = rs.begin(); ri != rs.end(); ++ri)
|
||||
{
|
||||
if (Cdouble()(l, convert_string_to_number(string_value(*ri).c_str())) == true)
|
||||
@ -1228,30 +1350,7 @@ namespace pugi
|
||||
|
||||
return false;
|
||||
}
|
||||
else if (lhs->rettype() == ast_type_string)
|
||||
{
|
||||
std::string l = lhs->eval_string(c);
|
||||
xpath_node_set rs = rhs->eval_node_set(c);
|
||||
|
||||
for (xpath_node_set::const_iterator ri = rs.begin(); ri != rs.end(); ++ri)
|
||||
{
|
||||
if (Cstring()(l, string_value(*ri)) == true)
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
else
|
||||
{
|
||||
assert(!"Wrong types");
|
||||
return false;
|
||||
}
|
||||
}
|
||||
else if (lhs->rettype() == ast_type_node_set && rhs->rettype() != ast_type_node_set)
|
||||
{
|
||||
if (rhs->rettype() == ast_type_boolean)
|
||||
return Cbool()(lhs->eval_boolean(c), rhs->eval_boolean(c));
|
||||
else if (rhs->rettype() == ast_type_number)
|
||||
else if (lhs->rettype() == ast_type_node_set && rhs->rettype() != ast_type_node_set)
|
||||
{
|
||||
xpath_node_set ls = lhs->eval_node_set(c);
|
||||
double r = rhs->eval_number(c);
|
||||
@ -1264,87 +1363,14 @@ namespace pugi
|
||||
|
||||
return false;
|
||||
}
|
||||
else if (rhs->rettype() == ast_type_string)
|
||||
{
|
||||
xpath_node_set ls = lhs->eval_node_set(c);
|
||||
std::string r = rhs->eval_string(c);
|
||||
|
||||
for (xpath_node_set::const_iterator li = ls.begin(); li != ls.end(); ++li)
|
||||
{
|
||||
if (Cstring()(string_value(*li), r) == true)
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
else
|
||||
{
|
||||
assert(!"Wrong types");
|
||||
return false;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
assert(!"Wrong types");
|
||||
return false;
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
template <class Cdouble> bool compare_rel(xpath_ast_node* lhs, xpath_ast_node* rhs, xpath_context& c)
|
||||
{
|
||||
if (lhs->rettype() != ast_type_node_set && rhs->rettype() != ast_type_node_set)
|
||||
return Cdouble()(lhs->eval_number(c), rhs->eval_number(c));
|
||||
else if (lhs->rettype() == ast_type_node_set && rhs->rettype() == ast_type_node_set)
|
||||
{
|
||||
xpath_node_set ls = lhs->eval_node_set(c);
|
||||
xpath_node_set rs = rhs->eval_node_set(c);
|
||||
|
||||
for (xpath_node_set::const_iterator li = ls.begin(); li != ls.end(); ++li)
|
||||
{
|
||||
double l = convert_string_to_number(string_value(*li).c_str());
|
||||
|
||||
for (xpath_node_set::const_iterator ri = rs.begin(); ri != rs.end(); ++ri)
|
||||
{
|
||||
if (Cdouble()(l, convert_string_to_number(string_value(*ri).c_str())) == true)
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
else if (lhs->rettype() != ast_type_node_set && rhs->rettype() == ast_type_node_set)
|
||||
{
|
||||
double l = lhs->eval_number(c);
|
||||
xpath_node_set rs = rhs->eval_node_set(c);
|
||||
|
||||
for (xpath_node_set::const_iterator ri = rs.begin(); ri != rs.end(); ++ri)
|
||||
{
|
||||
if (Cdouble()(l, convert_string_to_number(string_value(*ri).c_str())) == true)
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
else if (lhs->rettype() == ast_type_node_set && rhs->rettype() != ast_type_node_set)
|
||||
{
|
||||
xpath_node_set ls = lhs->eval_node_set(c);
|
||||
double r = rhs->eval_number(c);
|
||||
|
||||
for (xpath_node_set::const_iterator li = ls.begin(); li != ls.end(); ++li)
|
||||
{
|
||||
if (Cdouble()(convert_string_to_number(string_value(*li).c_str()), r) == true)
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
else
|
||||
{
|
||||
assert(!"Wrong types");
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
void apply_predicate(xpath_node_set& ns, size_t first, xpath_ast_node* expr, const xpath_context& context)
|
||||
{
|
||||
xpath_context c;
|
||||
@ -1456,25 +1482,31 @@ namespace pugi
|
||||
}
|
||||
}
|
||||
|
||||
template <axis_t axis> void step_fill(xpath_node_set& ns, const xml_node& n)
|
||||
template <class T> void step_fill(xpath_node_set& ns, const xml_node& n, T)
|
||||
{
|
||||
const axis_t axis = T::axis;
|
||||
|
||||
switch (axis)
|
||||
{
|
||||
case axis_attribute:
|
||||
{
|
||||
ns.m_type = ns.empty() ? xpath_node_set::type_sorted : xpath_node_set::type_unsorted;
|
||||
|
||||
for (xml_attribute a = n.first_attribute(); a; a = a.next_attribute())
|
||||
step_push(ns, a, n);
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
case axis_child:
|
||||
{
|
||||
ns.m_type = ns.empty() ? xpath_node_set::type_sorted : xpath_node_set::type_unsorted;
|
||||
|
||||
for (xml_node c = n.first_child(); c; c = c.next_sibling())
|
||||
step_push(ns, c);
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
case axis_descendant:
|
||||
case axis_descendant_or_self:
|
||||
@ -1513,20 +1545,24 @@ namespace pugi
|
||||
}
|
||||
|
||||
case axis_following_sibling:
|
||||
{
|
||||
ns.m_type = ns.empty() ? xpath_node_set::type_sorted : xpath_node_set::type_unsorted;
|
||||
|
||||
for (xml_node c = n.next_sibling(); c; c = c.next_sibling())
|
||||
step_push(ns, c);
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
case axis_preceding_sibling:
|
||||
{
|
||||
ns.m_type = ns.empty() ? xpath_node_set::type_sorted_reverse : xpath_node_set::type_unsorted;
|
||||
|
||||
for (xml_node c = n.previous_sibling(); c; c = c.previous_sibling())
|
||||
step_push(ns, c);
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
case axis_following:
|
||||
{
|
||||
@ -1623,8 +1659,10 @@ namespace pugi
|
||||
}
|
||||
}
|
||||
|
||||
template <axis_t axis> void step_fill(xpath_node_set& ns, const xml_attribute& a, const xml_node& p)
|
||||
template <class T> void step_fill(xpath_node_set& ns, const xml_attribute& a, const xml_node& p, T)
|
||||
{
|
||||
const axis_t axis = T::axis;
|
||||
|
||||
switch (axis)
|
||||
{
|
||||
case axis_ancestor:
|
||||
@ -1652,8 +1690,10 @@ namespace pugi
|
||||
}
|
||||
}
|
||||
|
||||
template <axis_t axis> void step_do(xpath_node_set& ns, xpath_context& c)
|
||||
template <class T> void step_do(xpath_node_set& ns, xpath_context& c, T v)
|
||||
{
|
||||
const axis_t axis = T::axis;
|
||||
|
||||
switch (axis)
|
||||
{
|
||||
case axis_parent:
|
||||
@ -1726,17 +1766,17 @@ namespace pugi
|
||||
size_t s = ns.size();
|
||||
|
||||
if (it->node())
|
||||
step_fill<axis>(ns, it->node());
|
||||
step_fill(ns, it->node(), v);
|
||||
else
|
||||
step_fill<axis>(ns, it->attribute(), it->parent());
|
||||
step_fill(ns, it->attribute(), it->parent(), v);
|
||||
|
||||
apply_predicates(ns, s, c);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (c.n.node()) step_fill<axis>(ns, c.n.node());
|
||||
else step_fill<axis>(ns, c.n.attribute(), c.n.parent());
|
||||
if (c.n.node()) step_fill(ns, c.n.node(), v);
|
||||
else step_fill(ns, c.n.attribute(), c.n.parent(), v);
|
||||
|
||||
apply_predicates(ns, 0, c);
|
||||
}
|
||||
@ -1760,14 +1800,14 @@ namespace pugi
|
||||
size_t s = ns.size();
|
||||
|
||||
if (it->node())
|
||||
step_fill<axis>(ns, it->node());
|
||||
step_fill(ns, it->node(), v);
|
||||
|
||||
apply_predicates(ns, s, c);
|
||||
}
|
||||
}
|
||||
else if (c.n.node())
|
||||
{
|
||||
step_fill<axis>(ns, c.n.node());
|
||||
step_fill(ns, c.n.node(), v);
|
||||
|
||||
apply_predicates(ns, 0, c);
|
||||
}
|
||||
@ -1836,22 +1876,22 @@ namespace pugi
|
||||
else return m_right->eval_boolean(c);
|
||||
|
||||
case ast_op_equal:
|
||||
return compare_eq<equal_to<bool>, equal_to<double>, equal_to<std::string> >(m_left, m_right, c);
|
||||
return compare_eq<equal_to<bool>, equal_to<double>, equal_to<std::string> >::run(m_left, m_right, c);
|
||||
|
||||
case ast_op_not_equal:
|
||||
return compare_eq<not_equal_to<bool>, not_equal_to<double>, not_equal_to<std::string> >(m_left, m_right, c);
|
||||
return compare_eq<not_equal_to<bool>, not_equal_to<double>, not_equal_to<std::string> >::run(m_left, m_right, c);
|
||||
|
||||
case ast_op_less:
|
||||
return compare_rel<less<double> >(m_left, m_right, c);
|
||||
return compare_rel<less<double> >::run(m_left, m_right, c);
|
||||
|
||||
case ast_op_greater:
|
||||
return compare_rel<greater<double> >(m_left, m_right, c);
|
||||
return compare_rel<greater<double> >::run(m_left, m_right, c);
|
||||
|
||||
case ast_op_less_or_equal:
|
||||
return compare_rel<less_equal<double> >(m_left, m_right, c);
|
||||
return compare_rel<less_equal<double> >::run(m_left, m_right, c);
|
||||
|
||||
case ast_op_greater_or_equal:
|
||||
return compare_rel<greater_equal<double> >(m_left, m_right, c);
|
||||
return compare_rel<greater_equal<double> >::run(m_left, m_right, c);
|
||||
|
||||
case ast_func_starts_with:
|
||||
return starts_with(m_left->eval_string(c), m_right->eval_string(c).c_str());
|
||||
@ -2125,7 +2165,7 @@ namespace pugi
|
||||
std::string s = m_left->eval_string(c);
|
||||
double first = ieee754_round(m_right->eval_number(c));
|
||||
|
||||
if (first != first) return ""; // NaN
|
||||
if (is_nan(first)) return ""; // NaN
|
||||
else if (first >= s.length() + 1) return "";
|
||||
|
||||
size_t pos = first < 1 ? 1 : (size_t)first;
|
||||
@ -2139,7 +2179,7 @@ namespace pugi
|
||||
double first = ieee754_round(m_right->eval_number(c));
|
||||
double last = first + ieee754_round(m_third->eval_number(c));
|
||||
|
||||
if (first != first || last != last) return "";
|
||||
if (is_nan(first) || is_nan(last)) return "";
|
||||
else if (first >= s.length() + 1) return "";
|
||||
else if (first >= last) return "";
|
||||
|
||||
@ -2305,55 +2345,55 @@ namespace pugi
|
||||
switch (m_axis)
|
||||
{
|
||||
case axis_ancestor:
|
||||
step_do<axis_ancestor>(ns, c);
|
||||
step_do(ns, c, axis_to_type<axis_ancestor>());
|
||||
break;
|
||||
|
||||
case axis_ancestor_or_self:
|
||||
step_do<axis_ancestor_or_self>(ns, c);
|
||||
step_do(ns, c, axis_to_type<axis_ancestor_or_self>());
|
||||
break;
|
||||
|
||||
case axis_attribute:
|
||||
step_do<axis_attribute>(ns, c);
|
||||
step_do(ns, c, axis_to_type<axis_attribute>());
|
||||
break;
|
||||
|
||||
case axis_child:
|
||||
step_do<axis_child>(ns, c);
|
||||
step_do(ns, c, axis_to_type<axis_child>());
|
||||
break;
|
||||
|
||||
case axis_descendant:
|
||||
step_do<axis_descendant>(ns, c);
|
||||
step_do(ns, c, axis_to_type<axis_descendant>());
|
||||
break;
|
||||
|
||||
case axis_descendant_or_self:
|
||||
step_do<axis_descendant_or_self>(ns, c);
|
||||
step_do(ns, c, axis_to_type<axis_descendant_or_self>());
|
||||
break;
|
||||
|
||||
case axis_following:
|
||||
step_do<axis_following>(ns, c);
|
||||
step_do(ns, c, axis_to_type<axis_following>());
|
||||
break;
|
||||
|
||||
case axis_following_sibling:
|
||||
step_do<axis_following_sibling>(ns, c);
|
||||
step_do(ns, c, axis_to_type<axis_following_sibling>());
|
||||
break;
|
||||
|
||||
case axis_namespace:
|
||||
step_do<axis_namespace>(ns, c);
|
||||
step_do(ns, c, axis_to_type<axis_namespace>());
|
||||
break;
|
||||
|
||||
case axis_parent:
|
||||
step_do<axis_parent>(ns, c);
|
||||
step_do(ns, c, axis_to_type<axis_parent>());
|
||||
break;
|
||||
|
||||
case axis_preceding:
|
||||
step_do<axis_preceding>(ns, c);
|
||||
step_do(ns, c, axis_to_type<axis_preceding>());
|
||||
break;
|
||||
|
||||
case axis_preceding_sibling:
|
||||
step_do<axis_preceding_sibling>(ns, c);
|
||||
step_do(ns, c, axis_to_type<axis_preceding_sibling>());
|
||||
break;
|
||||
|
||||
case axis_self:
|
||||
step_do<axis_self>(ns, c);
|
||||
step_do(ns, c, axis_to_type<axis_self>());
|
||||
break;
|
||||
|
||||
default:
|
||||
@ -2434,13 +2474,15 @@ namespace pugi
|
||||
return false;
|
||||
|
||||
case ast_func_concat:
|
||||
{
|
||||
if (m_left->contains(type)) return true;
|
||||
|
||||
for (xpath_ast_node* n = m_right; n; n = n->m_next)
|
||||
if (n->contains(type)) return true;
|
||||
|
||||
return false;
|
||||
|
||||
}
|
||||
|
||||
case ast_func_starts_with:
|
||||
case ast_func_contains:
|
||||
case ast_func_substring_before:
|
||||
@ -2475,6 +2517,9 @@ namespace pugi
|
||||
|
||||
default:
|
||||
throw xpath_exception("Unknown semantics error");
|
||||
#ifdef __DMC__
|
||||
return false; // Digital Mars C++
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
||||
@ -2585,6 +2630,7 @@ namespace pugi
|
||||
break;
|
||||
|
||||
case ast_func_concat:
|
||||
{
|
||||
m_left->check_semantics();
|
||||
|
||||
for (xpath_ast_node* n = m_right; n; n = n->m_next)
|
||||
@ -2592,7 +2638,8 @@ namespace pugi
|
||||
|
||||
m_rettype = ast_type_string;
|
||||
break;
|
||||
|
||||
}
|
||||
|
||||
case ast_func_starts_with:
|
||||
case ast_func_contains:
|
||||
m_left->check_semantics();
|
||||
@ -2653,8 +2700,9 @@ namespace pugi
|
||||
if (m_left) m_left->check_semantics();
|
||||
m_rettype = ast_type_number;
|
||||
break;
|
||||
|
||||
|
||||
case ast_step:
|
||||
{
|
||||
if (m_left)
|
||||
{
|
||||
m_left->check_semantics();
|
||||
@ -2667,6 +2715,7 @@ namespace pugi
|
||||
|
||||
m_rettype = ast_type_node_set;
|
||||
break;
|
||||
}
|
||||
|
||||
case ast_step_root:
|
||||
m_rettype = ast_type_node_set;
|
||||
@ -2681,17 +2730,13 @@ namespace pugi
|
||||
{
|
||||
return m_rettype;
|
||||
}
|
||||
|
||||
void* operator new(size_t size, xpath_allocator& a)
|
||||
{
|
||||
return a.alloc(size);
|
||||
}
|
||||
|
||||
void operator delete(void*, xpath_allocator&)
|
||||
{
|
||||
}
|
||||
};
|
||||
|
||||
void* xpath_allocator::node()
|
||||
{
|
||||
return alloc(sizeof(xpath_ast_node));
|
||||
}
|
||||
|
||||
class xpath_parser
|
||||
{
|
||||
private:
|
||||
@ -2713,7 +2758,7 @@ namespace pugi
|
||||
if (m_lexer.current() != lex_string)
|
||||
throw xpath_exception("incorrect variable reference");
|
||||
|
||||
xpath_ast_node* n = new (m_alloc) xpath_ast_node(ast_variable, m_lexer.contents(), m_alloc);
|
||||
xpath_ast_node* n = new (m_alloc.node()) xpath_ast_node(ast_variable, m_lexer.contents(), m_alloc);
|
||||
m_lexer.next();
|
||||
|
||||
return n;
|
||||
@ -2735,7 +2780,7 @@ namespace pugi
|
||||
|
||||
case lex_quoted_string:
|
||||
{
|
||||
xpath_ast_node* n = new (m_alloc) xpath_ast_node(ast_string_constant, m_lexer.contents(), m_alloc);
|
||||
xpath_ast_node* n = new (m_alloc.node()) xpath_ast_node(ast_string_constant, m_lexer.contents(), m_alloc);
|
||||
m_lexer.next();
|
||||
|
||||
return n;
|
||||
@ -2743,7 +2788,7 @@ namespace pugi
|
||||
|
||||
case lex_number:
|
||||
{
|
||||
xpath_ast_node* n = new (m_alloc) xpath_ast_node(ast_number_constant, m_lexer.contents(), m_alloc);
|
||||
xpath_ast_node* n = new (m_alloc.node()) xpath_ast_node(ast_number_constant, m_lexer.contents(), m_alloc);
|
||||
m_lexer.next();
|
||||
|
||||
return n;
|
||||
@ -2813,7 +2858,7 @@ namespace pugi
|
||||
else if (function == "concat" && argc == 2)
|
||||
{
|
||||
// set_next was done earlier
|
||||
return new (m_alloc) xpath_ast_node(ast_func_concat, args[0], args[1]);
|
||||
return new (m_alloc.node()) xpath_ast_node(ast_func_concat, args[0], args[1]);
|
||||
}
|
||||
else if (function == "ceiling" && argc == 1)
|
||||
type = ast_func_ceiling;
|
||||
@ -2919,10 +2964,10 @@ namespace pugi
|
||||
{
|
||||
switch (argc)
|
||||
{
|
||||
case 0: return new (m_alloc) xpath_ast_node(type);
|
||||
case 1: return new (m_alloc) xpath_ast_node(type, args[0]);
|
||||
case 2: return new (m_alloc) xpath_ast_node(type, args[0], args[1]);
|
||||
case 3: return new (m_alloc) xpath_ast_node(type, args[0], args[1], args[2]);
|
||||
case 0: return new (m_alloc.node()) xpath_ast_node(type);
|
||||
case 1: return new (m_alloc.node()) xpath_ast_node(type, args[0]);
|
||||
case 2: return new (m_alloc.node()) xpath_ast_node(type, args[0], args[1]);
|
||||
case 3: return new (m_alloc.node()) xpath_ast_node(type, args[0], args[1], args[2]);
|
||||
}
|
||||
}
|
||||
|
||||
@ -2931,6 +2976,9 @@ namespace pugi
|
||||
|
||||
default:
|
||||
throw xpath_exception("unrecognizable primary expression");
|
||||
#ifdef __DMC__
|
||||
return 0; // Digital Mars C++
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
||||
@ -2945,7 +2993,7 @@ namespace pugi
|
||||
{
|
||||
m_lexer.next();
|
||||
|
||||
n = new (m_alloc) xpath_ast_node(ast_filter, n, parse_expression(), axis_child);
|
||||
n = new (m_alloc.node()) xpath_ast_node(ast_filter, n, parse_expression(), axis_child);
|
||||
|
||||
if (m_lexer.current() != lex_close_square_brace)
|
||||
throw xpath_exception("Unmatched square brace");
|
||||
@ -2975,13 +3023,13 @@ namespace pugi
|
||||
{
|
||||
m_lexer.next();
|
||||
|
||||
return new (m_alloc) xpath_ast_node(ast_step, set, axis_self, nodetest_type_node, 0, m_alloc);
|
||||
return new (m_alloc.node()) xpath_ast_node(ast_step, set, axis_self, nodetest_type_node, 0, m_alloc);
|
||||
}
|
||||
else if (m_lexer.current() == lex_double_dot)
|
||||
{
|
||||
m_lexer.next();
|
||||
|
||||
return new (m_alloc) xpath_ast_node(ast_step, set, axis_parent, nodetest_type_node, 0, m_alloc);
|
||||
return new (m_alloc.node()) xpath_ast_node(ast_step, set, axis_parent, nodetest_type_node, 0, m_alloc);
|
||||
}
|
||||
else // implied child axis
|
||||
axis = axis_child;
|
||||
@ -3104,7 +3152,7 @@ namespace pugi
|
||||
else
|
||||
throw xpath_exception("Unrecognized node type");
|
||||
|
||||
nt_name.clear();
|
||||
nt_name.erase(nt_name.begin(), nt_name.end());
|
||||
}
|
||||
else if (nt_name == "processing-instruction")
|
||||
{
|
||||
@ -3150,7 +3198,7 @@ namespace pugi
|
||||
}
|
||||
else throw xpath_exception("Unrecognized node test");
|
||||
|
||||
xpath_ast_node* n = new (m_alloc) xpath_ast_node(ast_step, set, axis, nt_type, nt_name.c_str(), m_alloc);
|
||||
xpath_ast_node* n = new (m_alloc.node()) xpath_ast_node(ast_step, set, axis, nt_type, nt_name.c_str(), m_alloc);
|
||||
|
||||
xpath_ast_node* last = 0;
|
||||
|
||||
@ -3158,7 +3206,7 @@ namespace pugi
|
||||
{
|
||||
m_lexer.next();
|
||||
|
||||
xpath_ast_node* pred = new (m_alloc) xpath_ast_node(ast_predicate, parse_expression(), 0, axis);
|
||||
xpath_ast_node* pred = new (m_alloc.node()) xpath_ast_node(ast_predicate, parse_expression(), 0, axis);
|
||||
|
||||
if (m_lexer.current() != lex_close_square_brace)
|
||||
throw xpath_exception("unmatched square brace");
|
||||
@ -3184,7 +3232,7 @@ namespace pugi
|
||||
m_lexer.next();
|
||||
|
||||
if (l == lex_double_slash)
|
||||
n = new (m_alloc) xpath_ast_node(ast_step, n, axis_descendant_or_self, nodetest_type_node, 0, m_alloc);
|
||||
n = new (m_alloc.node()) xpath_ast_node(ast_step, n, axis_descendant_or_self, nodetest_type_node, 0, m_alloc);
|
||||
|
||||
n = parse_step(n);
|
||||
}
|
||||
@ -3203,7 +3251,7 @@ namespace pugi
|
||||
|
||||
m_lexer.next();
|
||||
|
||||
xpath_ast_node* n = new (m_alloc) xpath_ast_node(ast_step_root);
|
||||
xpath_ast_node* n = new (m_alloc.node()) xpath_ast_node(ast_step_root);
|
||||
|
||||
try
|
||||
{
|
||||
@ -3220,8 +3268,8 @@ namespace pugi
|
||||
{
|
||||
m_lexer.next();
|
||||
|
||||
xpath_ast_node* n = new (m_alloc) xpath_ast_node(ast_step_root);
|
||||
n = new (m_alloc) xpath_ast_node(ast_step, n, axis_descendant_or_self, nodetest_type_node, 0, m_alloc);
|
||||
xpath_ast_node* n = new (m_alloc.node()) xpath_ast_node(ast_step_root);
|
||||
n = new (m_alloc.node()) xpath_ast_node(ast_step, n, axis_descendant_or_self, nodetest_type_node, 0, m_alloc);
|
||||
|
||||
return parse_relative_location_path(n);
|
||||
}
|
||||
@ -3266,7 +3314,7 @@ namespace pugi
|
||||
m_lexer.next();
|
||||
|
||||
if (l == lex_double_slash)
|
||||
n = new (m_alloc) xpath_ast_node(ast_step, n, axis_descendant_or_self, nodetest_type_node, 0, m_alloc);
|
||||
n = new (m_alloc.node()) xpath_ast_node(ast_step, n, axis_descendant_or_self, nodetest_type_node, 0, m_alloc);
|
||||
|
||||
// select from location path
|
||||
return parse_relative_location_path(n);
|
||||
@ -3286,7 +3334,7 @@ namespace pugi
|
||||
{
|
||||
m_lexer.next();
|
||||
|
||||
n = new (m_alloc) xpath_ast_node(ast_op_union, n, parse_union_expression());
|
||||
n = new (m_alloc.node()) xpath_ast_node(ast_op_union, n, parse_union_expression());
|
||||
}
|
||||
|
||||
return n;
|
||||
@ -3299,7 +3347,7 @@ namespace pugi
|
||||
{
|
||||
m_lexer.next();
|
||||
|
||||
return new (m_alloc) xpath_ast_node(ast_op_negate, parse_unary_expression());
|
||||
return new (m_alloc.node()) xpath_ast_node(ast_op_negate, parse_unary_expression());
|
||||
}
|
||||
else return parse_union_expression();
|
||||
}
|
||||
@ -3319,7 +3367,7 @@ namespace pugi
|
||||
!strcmp(m_lexer.contents(), "div") ? ast_op_divide : ast_op_mod;
|
||||
m_lexer.next();
|
||||
|
||||
n = new (m_alloc) xpath_ast_node(op, n, parse_unary_expression());
|
||||
n = new (m_alloc.node()) xpath_ast_node(op, n, parse_unary_expression());
|
||||
}
|
||||
|
||||
return n;
|
||||
@ -3338,7 +3386,7 @@ namespace pugi
|
||||
|
||||
m_lexer.next();
|
||||
|
||||
n = new (m_alloc) xpath_ast_node(l == lex_plus ? ast_op_add : ast_op_subtract, n, parse_multiplicative_expression());
|
||||
n = new (m_alloc.node()) xpath_ast_node(l == lex_plus ? ast_op_add : ast_op_subtract, n, parse_multiplicative_expression());
|
||||
}
|
||||
|
||||
return n;
|
||||
@ -3359,7 +3407,7 @@ namespace pugi
|
||||
lexeme_t l = m_lexer.current();
|
||||
m_lexer.next();
|
||||
|
||||
n = new (m_alloc) xpath_ast_node(l == lex_less ? ast_op_less : l == lex_greater ? ast_op_greater :
|
||||
n = new (m_alloc.node()) xpath_ast_node(l == lex_less ? ast_op_less : l == lex_greater ? ast_op_greater :
|
||||
l == lex_less_or_equal ? ast_op_less_or_equal : ast_op_greater_or_equal,
|
||||
n, parse_additive_expression());
|
||||
}
|
||||
@ -3380,7 +3428,7 @@ namespace pugi
|
||||
|
||||
m_lexer.next();
|
||||
|
||||
n = new (m_alloc) xpath_ast_node(l == lex_equal ? ast_op_equal : ast_op_not_equal, n, parse_relational_expression());
|
||||
n = new (m_alloc.node()) xpath_ast_node(l == lex_equal ? ast_op_equal : ast_op_not_equal, n, parse_relational_expression());
|
||||
}
|
||||
|
||||
return n;
|
||||
@ -3395,7 +3443,7 @@ namespace pugi
|
||||
{
|
||||
m_lexer.next();
|
||||
|
||||
n = new (m_alloc) xpath_ast_node(ast_op_and, n, parse_equality_expression());
|
||||
n = new (m_alloc.node()) xpath_ast_node(ast_op_and, n, parse_equality_expression());
|
||||
}
|
||||
|
||||
return n;
|
||||
@ -3410,7 +3458,7 @@ namespace pugi
|
||||
{
|
||||
m_lexer.next();
|
||||
|
||||
n = new (m_alloc) xpath_ast_node(ast_op_or, n, parse_and_expression());
|
||||
n = new (m_alloc.node()) xpath_ast_node(ast_op_or, n, parse_and_expression());
|
||||
}
|
||||
|
||||
return n;
|
||||
|