Merged 0.34 in trunk (revisions 69:84)

git-svn-id: http://pugixml.googlecode.com/svn/trunk@85 99668b35-9821-0410-8761-19e4c4f06640
This commit is contained in:
arseny.kapoulkine 2007-10-31 17:46:35 +00:00
parent faf69388f0
commit 2c06637bf8
85 changed files with 4192 additions and 2851 deletions

View File

@ -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__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> <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> </table>
<hr size="1"><address style="align: right;"><small>Generated on Wed Feb 21 22:19:50 2007 for pugixml by&nbsp; <hr size="1"><address style="align: right;"><small>Generated on Wed Oct 31 20:23:42 2007 for pugixml by&nbsp;
<a href="http://www.doxygen.org/index.html"> <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> <img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.6-NO </small></address>
</body> </body>

View File

@ -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 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_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> <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&nbsp; </table><hr size="1"><address style="align: right;"><small>Generated on Wed Oct 31 20:23:42 2007 for pugixml by&nbsp;
<a href="http://www.doxygen.org/index.html"> <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> <img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.6-NO </small></address>
</body> </body>

View File

@ -874,7 +874,7 @@ Get attribute value.
</td> </td>
</tr> </tr>
</table> </table>
<hr size="1"><address style="align: right;"><small>Generated on Wed Feb 21 22:19:51 2007 for pugixml by&nbsp; <hr size="1"><address style="align: right;"><small>Generated on Wed Oct 31 20:23:42 2007 for pugixml by&nbsp;
<a href="http://www.doxygen.org/index.html"> <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> <img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.6-NO </small></address>
</body> </body>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 876 B

After

Width:  |  Height:  |  Size: 875 B

View File

@ -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 &amp;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#4595648e3aa06a3209f200c69805ed47">xml_attribute_iterator</a>(const xml_attribute &amp;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 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> <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&nbsp; </table><hr size="1"><address style="align: right;"><small>Generated on Wed Oct 31 20:23:43 2007 for pugixml by&nbsp;
<a href="http://www.doxygen.org/index.html"> <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> <img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.6-NO </small></address>
</body> </body>

View File

@ -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> <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> <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"> <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> </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> <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. Attribute iterator.
@ -407,7 +407,7 @@ Post-decrement operator.
</td> </td>
</tr> </tr>
</table> </table>
<hr size="1"><address style="align: right;"><small>Generated on Wed Feb 21 22:19:51 2007 for pugixml by&nbsp; <hr size="1"><address style="align: right;"><small>Generated on Wed Oct 31 20:23:43 2007 for pugixml by&nbsp;
<a href="http://www.doxygen.org/index.html"> <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> <img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.6-NO </small></address>
</body> </body>

View File

@ -1,2 +1,2 @@
base referer base referer
rect $classpugi_1_1xml__attribute.html 394,98 528,125 rect $classpugi_1_1xml__attribute.html 392,96 525,123

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.0 KiB

After

Width:  |  Height:  |  Size: 2.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.4 KiB

After

Width:  |  Height:  |  Size: 1.4 KiB

View File

@ -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 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__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> <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&nbsp; </table><hr size="1"><address style="align: right;"><small>Generated on Wed Oct 31 20:23:44 2007 for pugixml by&nbsp;
<a href="http://www.doxygen.org/index.html"> <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> <img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.6-NO </small></address>
</body> </body>

View File

@ -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> <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> <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"> <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> </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> <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"> <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> </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> <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). Document class (DOM tree root).
@ -358,7 +358,7 @@ Save XML to file.
</td> </td>
</tr> </tr>
</table> </table>
<hr size="1"><address style="align: right;"><small>Generated on Wed Feb 21 22:19:52 2007 for pugixml by&nbsp; <hr size="1"><address style="align: right;"><small>Generated on Wed Oct 31 20:23:44 2007 for pugixml by&nbsp;
<a href="http://www.doxygen.org/index.html"> <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> <img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.6-NO </small></address>
</body> </body>

View File

@ -1,2 +1,2 @@
base referer base referer
rect $classpugi_1_1xml__node.html 17,98 129,125 rect $classpugi_1_1xml__node.html 15,96 127,123

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.3 KiB

After

Width:  |  Height:  |  Size: 2.3 KiB

View File

@ -1,2 +1,2 @@
base referer base referer
rect $classpugi_1_1xml__node.html 24,7 136,34 rect $classpugi_1_1xml__node.html 20,5 132,32

Binary file not shown.

Before

Width:  |  Height:  |  Size: 697 B

After

Width:  |  Height:  |  Size: 704 B

View File

@ -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 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__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> <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&nbsp; </table><hr size="1"><address style="align: right;"><small>Generated on Wed Oct 31 20:23:43 2007 for pugixml by&nbsp;
<a href="http://www.doxygen.org/index.html"> <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> <img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.6-NO </small></address>
</body> </body>

View File

@ -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> <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> <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"> <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> </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>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> <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> </td>
</tr> </tr>
</table> </table>
<hr size="1"><address style="align: right;"><small>Generated on Wed Feb 21 22:19:51 2007 for pugixml by&nbsp; <hr size="1"><address style="align: right;"><small>Generated on Wed Oct 31 20:23:43 2007 for pugixml by&nbsp;
<a href="http://www.doxygen.org/index.html"> <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> <img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.6-NO </small></address>
</body> </body>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 756 B

After

Width:  |  Height:  |  Size: 756 B

View File

@ -1,2 +1,2 @@
base referer base referer
rect $classpugi_1_1xml__document.html 8,82 152,109 rect $classpugi_1_1xml__document.html 5,80 147,107

Binary file not shown.

Before

Width:  |  Height:  |  Size: 704 B

After

Width:  |  Height:  |  Size: 706 B

View File

@ -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#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 &amp;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#874c832b41aaaff159ef2c36cdcb705c">xml_node_iterator</a>(const xml_node &amp;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> <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&nbsp; </table><hr size="1"><address style="align: right;"><small>Generated on Wed Oct 31 20:23:43 2007 for pugixml by&nbsp;
<a href="http://www.doxygen.org/index.html"> <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> <img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.6-NO </small></address>
</body> </body>

View File

@ -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> <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> <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"> <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> </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> <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. Child node iterator.
@ -407,7 +407,7 @@ Post-decrement operator.
</td> </td>
</tr> </tr>
</table> </table>
<hr size="1"><address style="align: right;"><small>Generated on Wed Feb 21 22:19:51 2007 for pugixml by&nbsp; <hr size="1"><address style="align: right;"><small>Generated on Wed Oct 31 20:23:43 2007 for pugixml by&nbsp;
<a href="http://www.doxygen.org/index.html"> <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> <img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.6-NO </small></address>
</body> </body>

View File

@ -1,2 +1,2 @@
base referer base referer
rect $classpugi_1_1xml__node.html 375,98 487,125 rect $classpugi_1_1xml__node.html 373,96 485,123

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.7 KiB

After

Width:  |  Height:  |  Size: 2.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.3 KiB

After

Width:  |  Height:  |  Size: 1.3 KiB

View File

@ -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 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#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> <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&nbsp; </table><hr size="1"><address style="align: right;"><small>Generated on Wed Oct 31 20:23:44 2007 for pugixml by&nbsp;
<a href="http://www.doxygen.org/index.html"> <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> <img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.6-NO </small></address>
</body> </body>

View File

@ -179,7 +179,7 @@ Callback that is called when traversal of node ends.
</td> </td>
</tr> </tr>
</table> </table>
<hr size="1"><address style="align: right;"><small>Generated on Wed Feb 21 22:19:51 2007 for pugixml by&nbsp; <hr size="1"><address style="align: right;"><small>Generated on Wed Oct 31 20:23:44 2007 for pugixml by&nbsp;
<a href="http://www.doxygen.org/index.html"> <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> <img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.6-NO </small></address>
</body> </body>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 738 B

After

Width:  |  Height:  |  Size: 738 B

View File

@ -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> <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#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> <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&nbsp; </table><hr size="1"><address style="align: right;"><small>Generated on Wed Oct 31 20:23:44 2007 for pugixml by&nbsp;
<a href="http://www.doxygen.org/index.html"> <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> <img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.6-NO </small></address>
</body> </body>

View File

@ -101,7 +101,7 @@ Return error message.
</td> </td>
</tr> </tr>
</table> </table>
<hr size="1"><address style="align: right;"><small>Generated on Wed Feb 21 22:19:52 2007 for pugixml by&nbsp; <hr size="1"><address style="align: right;"><small>Generated on Wed Oct 31 20:23:44 2007 for pugixml by&nbsp;
<a href="http://www.doxygen.org/index.html"> <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> <img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.6-NO </small></address>
</body> </body>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.4 KiB

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 764 B

After

Width:  |  Height:  |  Size: 765 B

View File

@ -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#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 &amp;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#c19206fda68c2c67ff2b42009debe74f">xpath_node</a>(const xml_node &amp;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 &amp;attribute, const xml_node &amp;parent)</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 &amp;attribute, const xml_node &amp;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&nbsp; </table><hr size="1"><address style="align: right;"><small>Generated on Wed Oct 31 20:23:44 2007 for pugixml by&nbsp;
<a href="http://www.doxygen.org/index.html"> <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> <img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.6-NO </small></address>
</body> </body>

View File

@ -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> <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> <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"> <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__node.html" shape="rect" coords="20,96,132,123" alt="">
<area href="classpugi_1_1xml__attribute.html" shape="rect" coords="166,98,300,125" alt=""> <area href="classpugi_1_1xml__attribute.html" shape="rect" coords="164,96,297,123" alt="">
</map> </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> <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. XPath node class.
@ -334,7 +334,7 @@ Compares two XPath nodes.
</td> </td>
</tr> </tr>
</table> </table>
<hr size="1"><address style="align: right;"><small>Generated on Wed Feb 21 22:19:52 2007 for pugixml by&nbsp; <hr size="1"><address style="align: right;"><small>Generated on Wed Oct 31 20:23:44 2007 for pugixml by&nbsp;
<a href="http://www.doxygen.org/index.html"> <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> <img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.6-NO </small></address>
</body> </body>

View File

@ -1,3 +1,3 @@
base referer base referer
rect $classpugi_1_1xml__node.html 22,98 134,125 rect $classpugi_1_1xml__node.html 20,96 132,123
rect $classpugi_1_1xml__attribute.html 166,98 300,125 rect $classpugi_1_1xml__attribute.html 164,96 297,123

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.3 KiB

After

Width:  |  Height:  |  Size: 2.2 KiB

View File

@ -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#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 &amp;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#59f1f078606bb6c4f1a081bb82bcf901">xpath_node_set</a>(const xpath_node_set &amp;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> <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&nbsp; </table><hr size="1"><address style="align: right;"><small>Generated on Wed Oct 31 20:23:45 2007 for pugixml by&nbsp;
<a href="http://www.doxygen.org/index.html"> <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> <img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.6-NO </small></address>
</body> </body>

View File

@ -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> <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> <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"> <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_1xpath__node.html" shape="rect" coords="77,187,203,213" alt="">
<area href="classpugi_1_1xml__node.html" shape="rect" coords="25,98,137,125" 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="166,98,299,125" alt=""> <area href="classpugi_1_1xml__attribute.html" shape="rect" coords="164,96,297,123" alt="">
</map> </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> <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. Not necessarily ordered constant collection of XPath nodes.
@ -406,7 +406,7 @@ Return true if collection is empty.
</td> </td>
</tr> </tr>
</table> </table>
<hr size="1"><address style="align: right;"><small>Generated on Wed Feb 21 22:19:52 2007 for pugixml by&nbsp; <hr size="1"><address style="align: right;"><small>Generated on Wed Oct 31 20:23:45 2007 for pugixml by&nbsp;
<a href="http://www.doxygen.org/index.html"> <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> <img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.6-NO </small></address>
</body> </body>

View File

@ -1,4 +1,4 @@
base referer base referer
rect $classpugi_1_1xpath__node.html 82,189 207,216 rect $classpugi_1_1xpath__node.html 77,187 203,213
rect $classpugi_1_1xml__node.html 25,98 137,125 rect $classpugi_1_1xml__node.html 23,96 135,123
rect $classpugi_1_1xml__attribute.html 166,98 299,125 rect $classpugi_1_1xml__attribute.html 164,96 297,123

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.3 KiB

After

Width:  |  Height:  |  Size: 4.0 KiB

View File

@ -24,7 +24,7 @@
<tr class="memlist"><td><a class="el" href="classpugi_1_1xpath__query.html#0327ba2d1a1dddac08f18d400856dafc">evaluate_string</a>(const xml_node &amp;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#0327ba2d1a1dddac08f18d400856dafc">evaluate_string</a>(const xml_node &amp;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#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> <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&nbsp; </table><hr size="1"><address style="align: right;"><small>Generated on Wed Oct 31 20:23:42 2007 for pugixml by&nbsp;
<a href="http://www.doxygen.org/index.html"> <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> <img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.6-NO </small></address>
</body> </body>

View File

@ -232,7 +232,7 @@ If expression does not directly evaluate to node set, function returns empty nod
</td> </td>
</tr> </tr>
</table> </table>
<hr size="1"><address style="align: right;"><small>Generated on Wed Feb 21 22:19:50 2007 for pugixml by&nbsp; <hr size="1"><address style="align: right;"><small>Generated on Wed Oct 31 20:23:42 2007 for pugixml by&nbsp;
<a href="http://www.doxygen.org/index.html"> <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> <img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.6-NO </small></address>
</body> </body>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.5 KiB

After

Width:  |  Height:  |  Size: 1.4 KiB

View File

@ -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_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__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> : <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&nbsp; <hr size="1"><address style="align: right;"><small>Generated on Wed Oct 31 20:23:42 2007 for pugixml by&nbsp;
<a href="http://www.doxygen.org/index.html"> <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> <img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.6-NO </small></address>
</body> </body>

View File

@ -31,7 +31,7 @@
<ul> <ul>
<li>type_t <li>type_t
: <a class="el" href="classpugi_1_1xpath__node__set.html#6c6899c8ecfbce9e42ec85540907080e">pugi::xpath_node_set</a></ul> : <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&nbsp; <hr size="1"><address style="align: right;"><small>Generated on Wed Oct 31 20:23:42 2007 for pugixml by&nbsp;
<a href="http://www.doxygen.org/index.html"> <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> <img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.6-NO </small></address>
</body> </body>

View File

@ -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#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#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> : <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&nbsp; <hr size="1"><address style="align: right;"><small>Generated on Wed Oct 31 20:23:42 2007 for pugixml by&nbsp;
<a href="http://www.doxygen.org/index.html"> <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> <img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.6-NO </small></address>
</body> </body>

View File

@ -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_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__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> : <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&nbsp; <hr size="1"><address style="align: right;"><small>Generated on Wed Oct 31 20:23:42 2007 for pugixml by&nbsp;
<a href="http://www.doxygen.org/index.html"> <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> <img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.6-NO </small></address>
</body> </body>

View File

@ -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_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_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> : <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&nbsp; <hr size="1"><address style="align: right;"><small>Generated on Wed Oct 31 20:23:42 2007 for pugixml by&nbsp;
<a href="http://www.doxygen.org/index.html"> <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> <img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.6-NO </small></address>
</body> </body>

View File

@ -73,7 +73,7 @@ A purple dashed arrow is used if a class is contained or used by another class.
<li> <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> 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> </ul>
<hr size="1"><address style="align: right;"><small>Generated on Wed Feb 21 22:19:53 2007 for pugixml by&nbsp; <hr size="1"><address style="align: right;"><small>Generated on Wed Oct 31 20:23:45 2007 for pugixml by&nbsp;
<a href="http://www.doxygen.org/index.html"> <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> <img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.6-NO </small></address>
</body> </body>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.8 KiB

After

Width:  |  Height:  |  Size: 3.8 KiB

View File

@ -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__node__set.html">pugi::xpath_node_set</a>
<li><a class="el" href="classpugi_1_1xpath__query.html">pugi::xpath_query</a> <li><a class="el" href="classpugi_1_1xpath__query.html">pugi::xpath_query</a>
</ul> </ul>
<hr size="1"><address style="align: right;"><small>Generated on Wed Feb 21 22:19:50 2007 for pugixml by&nbsp; <hr size="1"><address style="align: right;"><small>Generated on Wed Oct 31 20:23:42 2007 for pugixml by&nbsp;
<a href="http://www.doxygen.org/index.html"> <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> <img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.6-NO </small></address>
</body> </body>

View File

@ -13,7 +13,7 @@
</ul></div> </ul></div>
<h1>pugixml Documentation</h1> <h1>pugixml Documentation</h1>
<p> <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&nbsp; <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&nbsp;
<a href="http://www.doxygen.org/index.html"> <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> <img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.6-NO </small></address>
</body> </body>

View File

@ -1,2 +1,2 @@
base referer base referer
rect $structpugi_1_1transfer__ownership__tag.html 8,8 202,34 rect $structpugi_1_1transfer__ownership__tag.html 5,5 200,32

Binary file not shown.

Before

Width:  |  Height:  |  Size: 582 B

After

Width:  |  Height:  |  Size: 585 B

View File

@ -1,2 +1,2 @@
base referer base referer
rect $classpugi_1_1xml__attribute.html 7,8 141,34 rect $classpugi_1_1xml__attribute.html 5,5 139,32

Binary file not shown.

Before

Width:  |  Height:  |  Size: 428 B

After

Width:  |  Height:  |  Size: 433 B

View File

@ -1,3 +1,3 @@
base referer base referer
rect $classpugi_1_1xml__attribute__iterator.html 121,7 302,34 rect $classpugi_1_1xml__attribute__iterator.html 119,5 300,32
rect $classpugi_1_1xml__node__iterator.html 130,58 293,85 rect $classpugi_1_1xml__node__iterator.html 128,56 291,83

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.0 KiB

After

Width:  |  Height:  |  Size: 1.0 KiB

View File

@ -1,3 +1,3 @@
base referer base referer
rect $classpugi_1_1xml__node.html 9,8 121,34 rect $classpugi_1_1xml__node.html 7,5 119,32
rect $classpugi_1_1xml__document.html 170,8 314,34 rect $classpugi_1_1xml__document.html 169,5 311,32

Binary file not shown.

Before

Width:  |  Height:  |  Size: 596 B

After

Width:  |  Height:  |  Size: 602 B

View File

@ -1,2 +1,2 @@
base referer base referer
rect $classpugi_1_1xml__tree__walker.html 9,8 161,34 rect $classpugi_1_1xml__tree__walker.html 7,5 159,32

Binary file not shown.

Before

Width:  |  Height:  |  Size: 485 B

After

Width:  |  Height:  |  Size: 492 B

View File

@ -1,2 +1,2 @@
base referer base referer
rect $classpugi_1_1xpath__exception.html 137,8 289,34 rect $classpugi_1_1xpath__exception.html 135,5 287,32

Binary file not shown.

Before

Width:  |  Height:  |  Size: 644 B

After

Width:  |  Height:  |  Size: 645 B

View File

@ -1,2 +1,2 @@
base referer base referer
rect $classpugi_1_1xpath__node.html 7,8 133,34 rect $classpugi_1_1xpath__node.html 5,5 131,32

Binary file not shown.

Before

Width:  |  Height:  |  Size: 404 B

After

Width:  |  Height:  |  Size: 404 B

View File

@ -1,2 +1,2 @@
base referer base referer
rect $classpugi_1_1xpath__node__set.html 9,8 158,34 rect $classpugi_1_1xpath__node__set.html 5,5 155,32

Binary file not shown.

Before

Width:  |  Height:  |  Size: 470 B

After

Width:  |  Height:  |  Size: 463 B

View File

@ -1,2 +1,2 @@
base referer base referer
rect $classpugi_1_1xpath__query.html 9,8 137,34 rect $classpugi_1_1xpath__query.html 7,5 135,32

Binary file not shown.

Before

Width:  |  Height:  |  Size: 437 B

After

Width:  |  Height:  |  Size: 438 B

View File

@ -22,44 +22,44 @@
<table border="0" cellspacing="10" cellpadding="0"> <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"> <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"> <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> </map></td></tr>
<tr><td><img src="inherit__graph__1.png" border="0" alt="" usemap="#pugi_1_1xml__attribute_map"> <tr><td><img src="inherit__graph__1.png" border="0" alt="" usemap="#pugi_1_1xml__attribute_map">
<map name="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> </map></td></tr>
<tr><td><img src="inherit__graph__2.png" border="0" alt="" usemap="#pugi_1_1xml__attribute__iterator_map"> <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"> <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__attribute__iterator.html" shape="rect" coords="119,5,300,32" alt="">
<area href="classpugi_1_1xml__node__iterator.html" shape="rect" coords="130,58,293,85" alt=""> <area href="classpugi_1_1xml__node__iterator.html" shape="rect" coords="128,56,291,83" alt="">
</map></td></tr> </map></td></tr>
<tr><td><img src="inherit__graph__3.png" border="0" alt="" usemap="#pugi_1_1xml__node_map"> <tr><td><img src="inherit__graph__3.png" border="0" alt="" usemap="#pugi_1_1xml__node_map">
<map name="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__node.html" shape="rect" coords="7,5,119,32" alt="">
<area href="classpugi_1_1xml__document.html" shape="rect" coords="170,8,314,34" alt=""> <area href="classpugi_1_1xml__document.html" shape="rect" coords="169,5,311,32" alt="">
</map></td></tr> </map></td></tr>
<tr><td><img src="inherit__graph__4.png" border="0" alt="" usemap="#pugi_1_1xml__tree__walker_map"> <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"> <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> </map></td></tr>
<tr><td><img src="inherit__graph__5.png" border="0" alt="" usemap="#pugi_1_1xpath__exception_map"> <tr><td><img src="inherit__graph__5.png" border="0" alt="" usemap="#pugi_1_1xpath__exception_map">
<map name="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> </map></td></tr>
<tr><td><img src="inherit__graph__6.png" border="0" alt="" usemap="#pugi_1_1xpath__node_map"> <tr><td><img src="inherit__graph__6.png" border="0" alt="" usemap="#pugi_1_1xpath__node_map">
<map name="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> </map></td></tr>
<tr><td><img src="inherit__graph__7.png" border="0" alt="" usemap="#pugi_1_1xpath__node__set_map"> <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"> <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> </map></td></tr>
<tr><td><img src="inherit__graph__8.png" border="0" alt="" usemap="#pugi_1_1xpath__query_map"> <tr><td><img src="inherit__graph__8.png" border="0" alt="" usemap="#pugi_1_1xpath__query_map">
<map name="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> </map></td></tr>
</table> </table>
<hr size="1"><address style="align: right;"><small>Generated on Wed Feb 21 22:19:53 2007 for pugixml by&nbsp; <hr size="1"><address style="align: right;"><small>Generated on Wed Oct 31 20:23:45 2007 for pugixml by&nbsp;
<a href="http://www.doxygen.org/index.html"> <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> <img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.6-NO </small></address>
</body> </body>

View File

@ -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#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#e492a24302294f1ce3fbd56f2edbf131">pugi</a><li>xml_node_type
: <a class="el" href="namespacepugi.html#137e94a038e4ab0ada6477cf7f6153a9">pugi</a></ul> : <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&nbsp; <hr size="1"><address style="align: right;"><small>Generated on Wed Oct 31 20:23:45 2007 for pugixml by&nbsp;
<a href="http://www.doxygen.org/index.html"> <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> <img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.6-NO </small></address>
</body> </body>

View File

@ -30,7 +30,7 @@
<ul> <ul>
<li>xml_node_type <li>xml_node_type
: <a class="el" href="namespacepugi.html#137e94a038e4ab0ada6477cf7f6153a9">pugi</a></ul> : <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&nbsp; <hr size="1"><address style="align: right;"><small>Generated on Wed Oct 31 20:23:45 2007 for pugixml by&nbsp;
<a href="http://www.doxygen.org/index.html"> <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> <img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.6-NO </small></address>
</body> </body>

View File

@ -36,7 +36,7 @@
: <a class="el" href="namespacepugi.html#137e94a038e4ab0ada6477cf7f6153a9d58c55e810076e076318cc2268191b1f">pugi</a><li>node_pcdata : <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#137e94a038e4ab0ada6477cf7f6153a95c0042693a8b8b6b54c191b4403fca21">pugi</a><li>node_pi
: <a class="el" href="namespacepugi.html#137e94a038e4ab0ada6477cf7f6153a9cd772b12b3d5442b9771151f45134440">pugi</a></ul> : <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&nbsp; <hr size="1"><address style="align: right;"><small>Generated on Wed Oct 31 20:23:45 2007 for pugixml by&nbsp;
<a href="http://www.doxygen.org/index.html"> <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> <img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.6-NO </small></address>
</body> </body>

View File

@ -31,7 +31,7 @@
<li>as_utf16() <li>as_utf16()
: <a class="el" href="namespacepugi.html#557d234d14b2da1cf7ad9b72a05d2698">pugi</a><li>as_utf8() : <a class="el" href="namespacepugi.html#557d234d14b2da1cf7ad9b72a05d2698">pugi</a><li>as_utf8()
: <a class="el" href="namespacepugi.html#55c7bb5900e82254aa1b9671c61030fd">pugi</a></ul> : <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&nbsp; <hr size="1"><address style="align: right;"><small>Generated on Wed Oct 31 20:23:45 2007 for pugixml by&nbsp;
<a href="http://www.doxygen.org/index.html"> <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> <img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.6-NO </small></address>
</body> </body>

View File

@ -45,7 +45,7 @@
: <a class="el" href="namespacepugi.html#1e943812f2de36fc3ee14f7756afdbd7">pugi</a><li>parse_wnorm_attribute : <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#8617ea5ba78c676aff8b7af960cb2f4b">pugi</a><li>parse_ws_pcdata
: <a class="el" href="namespacepugi.html#e492a24302294f1ce3fbd56f2edbf131">pugi</a></ul> : <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&nbsp; <hr size="1"><address style="align: right;"><small>Generated on Wed Oct 31 20:23:45 2007 for pugixml by&nbsp;
<a href="http://www.doxygen.org/index.html"> <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> <img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.6-NO </small></address>
</body> </body>

View File

@ -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> It includes indenting nodes depending on their depth in DOM tree and considering input data to be UTF-8. </td>
</tr> </tr>
</table> </table>
<hr size="1"><address style="align: right;"><small>Generated on Wed Feb 21 22:19:50 2007 for pugixml by&nbsp; <hr size="1"><address style="align: right;"><small>Generated on Wed Oct 31 20:23:42 2007 for pugixml by&nbsp;
<a href="http://www.doxygen.org/index.html"> <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> <img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.6-NO </small></address>
</body> </body>

View File

@ -19,7 +19,7 @@
<h1>pugixml Namespace List</h1>Here is a list of all documented namespaces with brief descriptions:<table> <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> <tr><td class="indexkey"><a class="el" href="namespacepugi.html">pugi</a></td><td class="indexvalue">The PugiXML Parser namespace </td></tr>
</table> </table>
<hr size="1"><address style="align: right;"><small>Generated on Wed Feb 21 22:19:50 2007 for pugixml by&nbsp; <hr size="1"><address style="align: right;"><small>Generated on Wed Oct 31 20:23:42 2007 for pugixml by&nbsp;
<a href="http://www.doxygen.org/index.html"> <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> <img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.6-NO </small></address>
</body> </body>

View File

@ -28,7 +28,7 @@ Struct used to distinguish parsing with ownership transfer from parsing without
<table border="0" cellpadding="0" cellspacing="0"> <table border="0" cellpadding="0" cellspacing="0">
<tr><td></td></tr> <tr><td></td></tr>
</table> </table>
<hr size="1"><address style="align: right;"><small>Generated on Wed Feb 21 22:19:51 2007 for pugixml by&nbsp; <hr size="1"><address style="align: right;"><small>Generated on Wed Oct 31 20:23:44 2007 for pugixml by&nbsp;
<a href="http://www.doxygen.org/index.html"> <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> <img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.6-NO </small></address>
</body> </body>

View File

@ -415,10 +415,12 @@ environment). The library is written in standard-conformant C++ and was tested o
<p> <p>
<ul> <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>Linux 32-bit (GCC 3.2)
<li>Sony Playstation Portable (GCC 3.4.2; in PUGIXML_NO_STL mode) <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 (MSVC 7.1)
<li>Microsoft Xbox 360 (MSVC 8.0)
</ul> </ul>
</p> </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-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-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> <hr>
@ -624,6 +629,17 @@ if necessary)
</ul> </ul>
</dd> </dd>
</dt> </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> </dl>
<hr> <hr>
@ -670,7 +686,7 @@ OTHER DEALINGS IN THE SOFTWARE.
<hr> <hr>
<p>Revised 21 February, 2007</p> <p>Revised 31 October, 2007</p>
<p><i>&copy; Copyright <a href="mailto:arseny.kapoulkine@gmail.com">Arseny Kapoulkine</a> 2006-2007. All Rights Reserved.</i></p> <p><i>&copy; Copyright <a href="mailto:arseny.kapoulkine@gmail.com">Arseny Kapoulkine</a> 2006-2007. All Rights Reserved.</i></p>
</body> </body>
</html> </html>

1161
docs/pugixml.cfg Normal file

File diff suppressed because it is too large Load Diff

View 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) // Copyright (C) 2006-2007, by Arseny Kapoulkine (arseny.kapoulkine@gmail.com)
// This work is based on the pugxml parser, which is: // This work is based on the pugxml parser, which is:
@ -20,4 +20,8 @@
// Uncomment this to disable XPath // Uncomment this to disable XPath
// #define PUGIXML_NO_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 #endif

View 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) // Copyright (C) 2006-2007, by Arseny Kapoulkine (arseny.kapoulkine@gmail.com)
// This work is based on the pugxml parser, which is: // This work is based on the pugxml parser, which is:
@ -18,6 +18,10 @@
#include <new> #include <new>
#if !defined(PUGIXML_NO_XPATH) && defined(PUGIXML_NO_EXCEPTIONS)
#error No exception mode can't be used with XPath support
#endif
#ifndef PUGIXML_NO_STL #ifndef PUGIXML_NO_STL
# include <fstream> # include <fstream>
#endif #endif
@ -32,10 +36,17 @@
# pragma warn -8066 // unreachable code # pragma warn -8066 // unreachable code
#endif #endif
#define STATIC_ASSERT(cond) { static const char condition_failed[(cond) ? 1 : -1] = {0}; (void)condition_failed; } #ifdef __BORLANDC__
// BC workaround
using std::memmove;
#endif
#define STATIC_ASSERT(cond) { static const char condition_failed[(cond) ? 1 : -1] = {0}; (void)condition_failed[0]; }
namespace pugi namespace pugi
{ {
struct xml_document_struct;
class xml_allocator class xml_allocator
{ {
public: public:
@ -43,17 +54,9 @@ namespace pugi
{ {
} }
template <typename T> T* allocate() xml_document_struct* allocate_document();
{ xml_node_struct* allocate_node(xml_node_type type);
void* buf = memalloc(sizeof(T)); xml_attribute_struct* allocate_attribute();
return new (buf) T();
}
template <typename T, typename U> T* allocate(U val)
{
void* buf = memalloc(sizeof(T));
return new (buf) T(val);
}
private: private:
xml_memory_block* _root; xml_memory_block* _root;
@ -86,7 +89,7 @@ namespace pugi
{ {
} }
void free() void destroy()
{ {
if (!name_insitu) delete[] name; if (!name_insitu) delete[] name;
if (!value_insitu) delete[] value; if (!value_insitu) delete[] value;
@ -112,21 +115,21 @@ namespace pugi
{ {
} }
void free() void destroy()
{ {
if (!name_insitu) delete[] name; if (!name_insitu) delete[] name;
if (!value_insitu) delete[] value; if (!value_insitu) delete[] value;
for (xml_node_struct* cur = first_child; cur; cur = cur->next_sibling) for (xml_attribute_struct* attr = first_attribute; attr; attr = attr->next_attribute)
cur->free(); attr->destroy();
for (xml_attribute_struct* cur = first_attribute; cur; cur = cur->next_attribute) for (xml_node_struct* node = first_child; node; node = node->next_sibling)
cur->free(); node->destroy();
} }
xml_node_struct* append_node(xml_allocator& alloc, xml_node_type type = node_element) xml_node_struct* append_node(xml_allocator& alloc, xml_node_type type = node_element)
{ {
xml_node_struct* child = alloc.allocate<xml_node_struct>(type); xml_node_struct* child = alloc.allocate_node(type);
child->parent = this; child->parent = this;
if (last_child) if (last_child)
@ -142,7 +145,7 @@ namespace pugi
xml_attribute_struct* append_attribute(xml_allocator& alloc) xml_attribute_struct* append_attribute(xml_allocator& alloc)
{ {
xml_attribute_struct* a = alloc.allocate<xml_attribute_struct>(); xml_attribute_struct* a = alloc.allocate_attribute();
if (last_attribute) if (last_attribute)
{ {
@ -183,6 +186,21 @@ namespace pugi
xml_allocator allocator; xml_allocator allocator;
}; };
xml_document_struct* xml_allocator::allocate_document()
{
return new(memalloc(sizeof(xml_document_struct))) xml_document_struct;
}
xml_node_struct* xml_allocator::allocate_node(xml_node_type type)
{
return new(memalloc(sizeof(xml_node_struct))) xml_node_struct(type);
}
xml_attribute_struct* xml_allocator::allocate_attribute()
{
return new(memalloc(sizeof(xml_attribute_struct))) xml_attribute_struct;
}
} }
namespace namespace
@ -246,14 +264,19 @@ namespace
{ {
char* buf; char* buf;
#ifndef PUGIXML_NO_EXCEPTIONS
try try
{ {
#endif
buf = new char[source_size + 1]; buf = new char[source_size + 1];
if (!buf) return false;
#ifndef PUGIXML_NO_EXCEPTIONS
} }
catch (const std::bad_alloc&) catch (const std::bad_alloc&)
{ {
return false; return false;
} }
#endif
strcpy(buf, source); strcpy(buf, source);
@ -382,16 +405,41 @@ namespace
return reinterpret_cast<const char*>(str); return reinterpret_cast<const char*>(str);
} }
#ifndef PUGIXML_NO_STL template <bool _1, bool _2> struct opt2_to_type
template <bool quotes, bool utf8> void text_output_escaped(std::ostream& os, const char* s)
{ {
static const bool o1;
static const bool o2;
};
template <bool _1, bool _2> const bool opt2_to_type<_1, _2>::o1 = _1;
template <bool _1, bool _2> const bool opt2_to_type<_1, _2>::o2 = _2;
template <bool _1, bool _2, bool _3, bool _4> struct opt4_to_type
{
static const bool o1;
static const bool o2;
static const bool o3;
static const bool o4;
};
template <bool _1, bool _2, bool _3, bool _4> const bool opt4_to_type<_1, _2, _3, _4>::o1 = _1;
template <bool _1, bool _2, bool _3, bool _4> const bool opt4_to_type<_1, _2, _3, _4>::o2 = _2;
template <bool _1, bool _2, bool _3, bool _4> const bool opt4_to_type<_1, _2, _3, _4>::o3 = _3;
template <bool _1, bool _2, bool _3, bool _4> const bool opt4_to_type<_1, _2, _3, _4>::o4 = _4;
#ifndef PUGIXML_NO_STL
template <typename opt2> void text_output_escaped(std::ostream& os, const char* s, opt2)
{
const bool attribute = opt2::o1;
const bool utf8 = opt2::o2;
while (*s) while (*s)
{ {
const char* prev = s; const char* prev = s;
// While *s is a usual symbol // While *s is a usual symbol
while (*s && *s != '&' && *s != '<' && *s != '>' && ((*s != '"' && *s != '\'') || !quotes) while (*s && *s != '&' && *s != '<' && *s != '>' && ((*s != '"' && *s != '\'') || !attribute)
&& (*s >= 32 || *s == '\r' || *s == '\n' || *s == '\t')) && (*s >= 32 || (*s == '\r' && !attribute) || (*s == '\n' && !attribute) || *s == '\t'))
++s; ++s;
if (prev != s) os.write(prev, static_cast<std::streamsize>(s - prev)); if (prev != s) os.write(prev, static_cast<std::streamsize>(s - prev));
@ -419,6 +467,14 @@ namespace
os << "&apos;"; os << "&apos;";
++s; ++s;
break; break;
case '\r':
os << "&#13;";
++s;
break;
case '\n':
os << "&#10;";
++s;
break;
default: // s is not a usual symbol default: // s is not a usual symbol
{ {
unsigned int ch; unsigned int ch;
@ -451,7 +507,7 @@ namespace
if (end) // there was a gap already; collapse it if (end) // there was a gap already; collapse it
{ {
// Move [old_gap_end, new_gap_start) to [old_gap_start, ...) // Move [old_gap_end, new_gap_start) to [old_gap_start, ...)
std::memmove(end - size, end, s - end); memmove(end - size, end, s - end);
} }
s += count; // end of current gap s += count; // end of current gap
@ -467,7 +523,7 @@ namespace
if (end) if (end)
{ {
// Move [old_gap_end, current_pos) to [old_gap_start, ...) // Move [old_gap_end, current_pos) to [old_gap_start, ...)
std::memmove(end - size, end, s - end); memmove(end - size, end, s - end);
return s - size; return s - size;
} }
@ -653,8 +709,11 @@ namespace
} }
} }
template <bool opt_eol, bool opt_escape> char* strconv_pcdata_t(char* s) template <typename opt2> char* strconv_pcdata_t(char* s, opt2)
{ {
const bool opt_eol = opt2::o1;
const bool opt_escape = opt2::o2;
if (!*s) return 0; if (!*s) return 0;
gap g; gap g;
@ -693,16 +752,21 @@ namespace
switch ((optmask >> 4) & 3) // get bitmask for flags (eol escapes) switch ((optmask >> 4) & 3) // get bitmask for flags (eol escapes)
{ {
case 0: return strconv_pcdata_t<0, 0>(s); case 0: return strconv_pcdata_t(s, opt2_to_type<0, 0>());
case 1: return strconv_pcdata_t<0, 1>(s); case 1: return strconv_pcdata_t(s, opt2_to_type<0, 1>());
case 2: return strconv_pcdata_t<1, 0>(s); case 2: return strconv_pcdata_t(s, opt2_to_type<1, 0>());
case 3: return strconv_pcdata_t<1, 1>(s); case 3: return strconv_pcdata_t(s, opt2_to_type<1, 1>());
default: return 0; // should not get here default: return 0; // should not get here
} }
} }
template <bool opt_wconv, bool opt_wnorm, bool opt_eol, bool opt_escape> char* strconv_attribute_t(char* s, char end_quote) template <typename opt4> char* strconv_attribute_t(char* s, char end_quote, opt4)
{ {
const bool opt_wconv = opt4::o1;
const bool opt_wnorm = opt4::o2;
const bool opt_eol = opt4::o3;
const bool opt_escape = opt4::o4;
if (!*s) return 0; if (!*s) return 0;
gap g; gap g;
@ -722,11 +786,7 @@ namespace
{ {
while (!is_chartype(*s, (opt_wnorm || opt_wconv) ? ct_parse_attr_ws : ct_parse_attr)) ++s; while (!is_chartype(*s, (opt_wnorm || opt_wconv) ? ct_parse_attr_ws : ct_parse_attr)) ++s;
if (opt_escape && *s == '&') if (opt_wnorm && is_chartype(*s, ct_space))
{
s = strconv_escape(s, g);
}
else if (opt_wnorm && is_chartype(*s, ct_space))
{ {
*s++ = ' '; *s++ = ' ';
@ -771,6 +831,10 @@ namespace
return s + 1; return s + 1;
} }
else if (opt_escape && *s == '&')
{
s = strconv_escape(s, g);
}
else if (!*s) else if (!*s)
{ {
return 0; return 0;
@ -785,22 +849,22 @@ namespace
switch ((optmask >> 4) & 15) // get bitmask for flags (wconv wnorm eol escapes) switch ((optmask >> 4) & 15) // get bitmask for flags (wconv wnorm eol escapes)
{ {
case 0: return strconv_attribute_t <0, 0, 0, 0>(s, end_quote); case 0: return strconv_attribute_t(s, end_quote, opt4_to_type<0, 0, 0, 0>());
case 1: return strconv_attribute_t <0, 0, 0, 1>(s, end_quote); case 1: return strconv_attribute_t(s, end_quote, opt4_to_type<0, 0, 0, 1>());
case 2: return strconv_attribute_t <0, 0, 1, 0>(s, end_quote); case 2: return strconv_attribute_t(s, end_quote, opt4_to_type<0, 0, 1, 0>());
case 3: return strconv_attribute_t <0, 0, 1, 1>(s, end_quote); case 3: return strconv_attribute_t(s, end_quote, opt4_to_type<0, 0, 1, 1>());
case 4: return strconv_attribute_t <0, 1, 0, 0>(s, end_quote); case 4: return strconv_attribute_t(s, end_quote, opt4_to_type<0, 1, 0, 0>());
case 5: return strconv_attribute_t <0, 1, 0, 1>(s, end_quote); case 5: return strconv_attribute_t(s, end_quote, opt4_to_type<0, 1, 0, 1>());
case 6: return strconv_attribute_t <0, 1, 1, 0>(s, end_quote); case 6: return strconv_attribute_t(s, end_quote, opt4_to_type<0, 1, 1, 0>());
case 7: return strconv_attribute_t <0, 1, 1, 1>(s, end_quote); case 7: return strconv_attribute_t(s, end_quote, opt4_to_type<0, 1, 1, 1>());
case 8: return strconv_attribute_t <1, 0, 0, 0>(s, end_quote); case 8: return strconv_attribute_t(s, end_quote, opt4_to_type<1, 0, 0, 0>());
case 9: return strconv_attribute_t <1, 0, 0, 1>(s, end_quote); case 9: return strconv_attribute_t(s, end_quote, opt4_to_type<1, 0, 0, 1>());
case 10: return strconv_attribute_t<1, 0, 1, 0>(s, end_quote); case 10: return strconv_attribute_t(s, end_quote, opt4_to_type<1, 0, 1, 0>());
case 11: return strconv_attribute_t<1, 0, 1, 1>(s, end_quote); case 11: return strconv_attribute_t(s, end_quote, opt4_to_type<1, 0, 1, 1>());
case 12: return strconv_attribute_t<1, 1, 0, 0>(s, end_quote); case 12: return strconv_attribute_t(s, end_quote, opt4_to_type<1, 1, 0, 0>());
case 13: return strconv_attribute_t<1, 1, 0, 1>(s, end_quote); case 13: return strconv_attribute_t(s, end_quote, opt4_to_type<1, 1, 0, 1>());
case 14: return strconv_attribute_t<1, 1, 1, 0>(s, end_quote); case 14: return strconv_attribute_t(s, end_quote, opt4_to_type<1, 1, 1, 0>());
case 15: return strconv_attribute_t<1, 1, 1, 1>(s, end_quote); case 15: return strconv_attribute_t(s, end_quote, opt4_to_type<1, 1, 1, 1>());
default: return 0; // should not get here default: return 0; // should not get here
} }
} }
@ -1356,10 +1420,17 @@ namespace pugi
{ {
} }
#ifdef __MWERKS__
xml_attribute::operator xml_attribute::unspecified_bool_type() const
{
return empty() ? 0 : &xml_attribute::empty;
}
#else
xml_attribute::operator xml_attribute::unspecified_bool_type() const xml_attribute::operator xml_attribute::unspecified_bool_type() const
{ {
return empty() ? 0 : &xml_attribute::_attr; return empty() ? 0 : &xml_attribute::_attr;
} }
#endif
bool xml_attribute::operator!() const bool xml_attribute::operator!() const
{ {
@ -1532,10 +1603,17 @@ namespace pugi
{ {
} }
#ifdef __MWERKS__
xml_node::operator xml_node::unspecified_bool_type() const
{
return empty() ? 0 : &xml_node::empty;
}
#else
xml_node::operator xml_node::unspecified_bool_type() const xml_node::operator xml_node::unspecified_bool_type() const
{ {
return empty() ? 0 : &xml_node::_root; return empty() ? 0 : &xml_node::_root;
} }
#endif
bool xml_node::operator!() const bool xml_node::operator!() const
{ {
@ -1829,7 +1907,7 @@ namespace pugi
if (cur != _root->first_attribute) return xml_attribute(); if (cur != _root->first_attribute) return xml_attribute();
xml_attribute a(get_allocator().allocate<xml_attribute_struct>()); xml_attribute a(get_allocator().allocate_attribute());
a.set_name(name); a.set_name(name);
if (attr._attr->prev_attribute) if (attr._attr->prev_attribute)
@ -1855,7 +1933,7 @@ namespace pugi
if (cur != _root->first_attribute) return xml_attribute(); if (cur != _root->first_attribute) return xml_attribute();
xml_attribute a(get_allocator().allocate<xml_attribute_struct>()); xml_attribute a(get_allocator().allocate_attribute());
a.set_name(name); a.set_name(name);
if (attr._attr->next_attribute) if (attr._attr->next_attribute)
@ -1882,7 +1960,7 @@ namespace pugi
if ((this->type() != node_element && this->type() != node_document) || type == node_document || type == node_null) return xml_node(); if ((this->type() != node_element && this->type() != node_document) || type == node_document || type == node_null) return xml_node();
if (node.parent() != *this) return xml_node(); if (node.parent() != *this) return xml_node();
xml_node n(get_allocator().allocate<xml_node_struct>(type)); xml_node n(get_allocator().allocate_node(type));
n._root->parent = _root; n._root->parent = _root;
if (node._root->prev_sibling) if (node._root->prev_sibling)
@ -1902,7 +1980,7 @@ namespace pugi
if ((this->type() != node_element && this->type() != node_document) || type == node_document || type == node_null) return xml_node(); if ((this->type() != node_element && this->type() != node_document) || type == node_document || type == node_null) return xml_node();
if (node.parent() != *this) return xml_node(); if (node.parent() != *this) return xml_node();
xml_node n(get_allocator().allocate<xml_node_struct>(type)); xml_node n(get_allocator().allocate_node(type));
n._root->parent = _root; n._root->parent = _root;
if (node._root->next_sibling) if (node._root->next_sibling)
@ -1939,7 +2017,7 @@ namespace pugi
if (a._attr->prev_attribute) a._attr->prev_attribute->next_attribute = a._attr->next_attribute; if (a._attr->prev_attribute) a._attr->prev_attribute->next_attribute = a._attr->next_attribute;
else _root->first_attribute = a._attr->next_attribute; else _root->first_attribute = a._attr->next_attribute;
a._attr->free(); a._attr->destroy();
} }
void xml_node::remove_child(const char* name) void xml_node::remove_child(const char* name)
@ -1957,7 +2035,7 @@ namespace pugi
if (n._root->prev_sibling) n._root->prev_sibling->next_sibling = n._root->next_sibling; if (n._root->prev_sibling) n._root->prev_sibling->next_sibling = n._root->next_sibling;
else _root->first_child = n._root->next_sibling; else _root->first_child = n._root->next_sibling;
n._root->free(); n._root->destroy();
} }
#ifndef PUGIXML_NO_STL #ifndef PUGIXML_NO_STL
@ -2117,9 +2195,11 @@ namespace pugi
switch (type()) switch (type())
{ {
case node_document: case node_document:
{
for (xml_node n = first_child(); n; n = n.next_sibling()) for (xml_node n = first_child(); n; n = n.next_sibling())
n.print(os, indent, flags, depth); n.print(os, indent, flags, depth);
break; break;
}
case node_element: case node_element:
{ {
@ -2130,9 +2210,9 @@ namespace pugi
os << ' ' << a.name() << "=\""; os << ' ' << a.name() << "=\"";
if (flags & format_utf8) if (flags & format_utf8)
text_output_escaped<true, true>(os, a.value()); text_output_escaped(os, a.value(), opt2_to_type<1, 1>());
else else
text_output_escaped<true, false>(os, a.value()); text_output_escaped(os, a.value(), opt2_to_type<1, 0>());
os << "\""; os << "\"";
} }
@ -2156,9 +2236,9 @@ namespace pugi
os << ">"; os << ">";
if (flags & format_utf8) if (flags & format_utf8)
text_output_escaped<false, true>(os, first_child().value()); text_output_escaped(os, first_child().value(), opt2_to_type<0, 1>());
else else
text_output_escaped<false, false>(os, first_child().value()); text_output_escaped(os, first_child().value(), opt2_to_type<0, 0>());
os << "</" << name() << ">\n"; os << "</" << name() << ">\n";
} }
@ -2177,11 +2257,12 @@ namespace pugi
break; break;
} }
case node_pcdata: case node_pcdata:
if (flags & format_utf8) if (flags & format_utf8)
text_output_escaped<false, true>(os, value()); text_output_escaped(os, value(), opt2_to_type<0, 1>());
else else
text_output_escaped<false, false>(os, value()); text_output_escaped(os, value(), opt2_to_type<0, 0>());
break; break;
case node_cdata: case node_cdata:
@ -2358,24 +2439,24 @@ namespace pugi
xml_document::~xml_document() xml_document::~xml_document()
{ {
free(); destroy();
} }
void xml_document::create() void xml_document::create()
{ {
xml_allocator alloc(&_memory); xml_allocator alloc(&_memory);
_root = alloc.allocate<xml_document_struct>(); // Allocate a new root. _root = alloc.allocate_document(); // Allocate a new root.
xml_allocator& a = static_cast<xml_document_struct*>(_root)->allocator; xml_allocator& a = static_cast<xml_document_struct*>(_root)->allocator;
a = alloc; a = alloc;
} }
void xml_document::free() void xml_document::destroy()
{ {
delete[] _buffer; delete[] _buffer;
_buffer = 0; _buffer = 0;
if (_root) _root->free(); if (_root) _root->destroy();
xml_memory_block* current = _memory.next; xml_memory_block* current = _memory.next;
@ -2395,51 +2476,66 @@ namespace pugi
#ifndef PUGIXML_NO_STL #ifndef PUGIXML_NO_STL
bool xml_document::load(std::istream& stream, unsigned int options) bool xml_document::load(std::istream& stream, unsigned int options)
{ {
destroy();
if (!stream.good()) return false; if (!stream.good()) return false;
std::streamoff length, pos = stream.tellg(); std::streamoff length, pos = stream.tellg();
stream.seekg(0, std::ios_base::end); stream.seekg(0, std::ios::end);
length = stream.tellg(); length = stream.tellg();
stream.seekg(pos, std::ios_base::beg); stream.seekg(pos, std::ios::beg);
if (!stream.good()) return false; if (!stream.good()) return false;
char* s; char* s;
#ifndef PUGIXML_NO_EXCEPTIONS
try try
{ {
#endif
s = new char[length + 1]; s = new char[length + 1];
if (!s) return false;
#ifndef PUGIXML_NO_EXCEPTIONS
} }
catch (const std::bad_alloc&) catch (const std::bad_alloc&)
{ {
return false; return false;
} }
#endif
stream.read(s, length); stream.read(s, length);
s[length] = 0;
if (!stream.good()) if (stream.gcount() > length || stream.gcount() == 0)
{ {
delete[] s; delete[] s;
return false; return false;
} }
s[stream.gcount()] = 0;
return parse(transfer_ownership_tag(), s, options); // Parse the input string. return parse(transfer_ownership_tag(), s, options); // Parse the input string.
} }
#endif #endif
bool xml_document::load(const char* contents, unsigned int options) bool xml_document::load(const char* contents, unsigned int options)
{ {
destroy();
char* s; char* s;
#ifndef PUGIXML_NO_EXCEPTIONS
try try
{ {
#endif
s = new char[strlen(contents) + 1]; s = new char[strlen(contents) + 1];
if (!s) return false;
#ifndef PUGIXML_NO_EXCEPTIONS
} }
catch (const std::bad_alloc&) catch (const std::bad_alloc&)
{ {
return false; return false;
} }
#endif
strcpy(s, contents); strcpy(s, contents);
@ -2448,6 +2544,8 @@ namespace pugi
bool xml_document::load_file(const char* name, unsigned int options) bool xml_document::load_file(const char* name, unsigned int options)
{ {
destroy();
FILE* file = fopen(name, "rb"); FILE* file = fopen(name, "rb");
if (!file) return false; if (!file) return false;
@ -2463,15 +2561,20 @@ namespace pugi
char* s; char* s;
#ifndef PUGIXML_NO_EXCEPTIONS
try try
{ {
#endif
s = new char[length + 1]; s = new char[length + 1];
if (!s) return false;
#ifndef PUGIXML_NO_EXCEPTIONS
} }
catch (const std::bad_alloc&) catch (const std::bad_alloc&)
{ {
fclose(file); fclose(file);
return false; return false;
} }
#endif
size_t read = fread(s, (size_t)length, 1, file); size_t read = fread(s, (size_t)length, 1, file);
fclose(file); fclose(file);
@ -2489,7 +2592,7 @@ namespace pugi
bool xml_document::parse(char* xmlstr, unsigned int options) bool xml_document::parse(char* xmlstr, unsigned int options)
{ {
free(); destroy();
xml_allocator& alloc = static_cast<xml_document_struct*>(_root)->allocator; xml_allocator& alloc = static_cast<xml_document_struct*>(_root)->allocator;
@ -2503,6 +2606,7 @@ namespace pugi
bool res = parse(xmlstr, options); bool res = parse(xmlstr, options);
if (res) _buffer = xmlstr; if (res) _buffer = xmlstr;
else delete[] xmlstr;
return res; return res;
} }

View 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) // Copyright (C) 2006-2007, by Arseny Kapoulkine (arseny.kapoulkine@gmail.com)
// This work is based on the pugxml parser, which is: // This work is based on the pugxml parser, which is:
@ -29,8 +29,8 @@
# endif # endif
#endif #endif
#include <cstddef> #include <stddef.h>
#include <cstring> #include <string.h>
/// The PugiXML Parser namespace. /// The PugiXML Parser namespace.
namespace pugi namespace pugi
@ -311,7 +311,11 @@ namespace pugi
xml_attribute_struct* _attr; xml_attribute_struct* _attr;
/// \internal Safe bool type /// \internal Safe bool type
#ifdef __MWERKS__
typedef bool (xml_attribute::*unspecified_bool_type)() const;
#else
typedef xml_attribute_struct* xml_attribute::*unspecified_bool_type; typedef xml_attribute_struct* xml_attribute::*unspecified_bool_type;
#endif
/// \internal Initializing ctor /// \internal Initializing ctor
explicit xml_attribute(xml_attribute_struct* attr); explicit xml_attribute(xml_attribute_struct* attr);
@ -519,7 +523,11 @@ namespace pugi
xml_node_struct* _root; xml_node_struct* _root;
/// \internal Safe bool type /// \internal Safe bool type
#ifdef __MWERKS__
typedef bool (xml_node::*unspecified_bool_type)() const;
#else
typedef xml_node_struct* xml_node::*unspecified_bool_type; typedef xml_node_struct* xml_node::*unspecified_bool_type;
#endif
/// \internal Initializing ctor /// \internal Initializing ctor
explicit xml_node(xml_node_struct* p); explicit xml_node(xml_node_struct* p);
@ -1315,7 +1323,7 @@ namespace pugi
const xml_document& operator=(const xml_document&); const xml_document& operator=(const xml_document&);
void create(); void create();
void free(); void destroy();
public: public:
/** /**

View 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) // Copyright (C) 2006-2007, by Arseny Kapoulkine (arseny.kapoulkine@gmail.com)
// This work is based on the pugxml parser, which is: // 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 # pragma warning(disable: 4996) // this function or variable may be unsafe
#endif #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 namespace
{ {
using namespace pugi; using namespace pugi;
@ -176,7 +187,7 @@ namespace
return false; return false;
else // lp is parent, ln & rn are distinct siblings else // lp is parent, ln & rn are distinct siblings
{ {
for (; ln; ln = ln.next_sibling()); for (; ln; ln = ln.next_sibling())
if (ln == rn) if (ln == rn)
return true; return true;
@ -256,7 +267,7 @@ namespace
{ {
#if defined(__USE_ISOC99) #if defined(__USE_ISOC99)
return isnan(value); return isnan(value);
#elif defined(_MSC_VER) || defined(__BORLANDC__) #elif (defined(_MSC_VER) || defined(__BORLANDC__)) && !defined(__COMO__)
return !!_isnan(value); return !!_isnan(value);
#elif FLT_RADIX == 2 && DBL_MAX_EXP == 1024 && DBL_MANT_DIG == 53 #elif FLT_RADIX == 2 && DBL_MAX_EXP == 1024 && DBL_MANT_DIG == 53
// IEEE 754 // IEEE 754
@ -275,7 +286,7 @@ namespace
{ {
#if defined(__USE_ISOC99) #if defined(__USE_ISOC99)
return !isfinite(value); return !isfinite(value);
#elif defined(_MSC_VER) || defined(__BORLANDC__) #elif (defined(_MSC_VER) || defined(__BORLANDC__)) && !defined(__COMO__)
return !_finite(value); return !_finite(value);
#elif FLT_RADIX == 2 && DBL_MAX_EXP == 1024 && DBL_MANT_DIG == 53 #elif FLT_RADIX == 2 && DBL_MAX_EXP == 1024 && DBL_MANT_DIG == 53
// IEEE 754 // IEEE 754
@ -371,7 +382,7 @@ namespace
double ieee754_round(double value) 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) const char* local_name(const char* name)
@ -550,6 +561,8 @@ namespace pugi
return block->data; return block->data;
} }
} }
void* node();
}; };
xpath_node::xpath_node() xpath_node::xpath_node()
@ -1156,6 +1169,13 @@ namespace pugi
nodetest_all_in_namespace 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 class xpath_ast_node
{ {
private: private:
@ -1181,7 +1201,9 @@ namespace pugi
xpath_ast_node(const xpath_ast_node&); xpath_ast_node(const xpath_ast_node&);
xpath_ast_node& operator=(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
{
static bool run(xpath_ast_node* lhs, xpath_ast_node* rhs, xpath_context& c)
{ {
if (lhs->rettype() != ast_type_node_set && rhs->rettype() != ast_type_node_set) if (lhs->rettype() != ast_type_node_set && rhs->rettype() != ast_type_node_set)
{ {
@ -1289,8 +1311,11 @@ namespace pugi
return false; return false;
} }
} }
};
template <class Cdouble> bool compare_rel(xpath_ast_node* lhs, xpath_ast_node* rhs, xpath_context& c) template <class Cdouble> struct compare_rel
{
static bool run(xpath_ast_node* lhs, xpath_ast_node* rhs, xpath_context& c)
{ {
if (lhs->rettype() != ast_type_node_set && rhs->rettype() != ast_type_node_set) if (lhs->rettype() != ast_type_node_set && rhs->rettype() != ast_type_node_set)
return Cdouble()(lhs->eval_number(c), rhs->eval_number(c)); return Cdouble()(lhs->eval_number(c), rhs->eval_number(c));
@ -1344,6 +1369,7 @@ namespace pugi
return false; return false;
} }
} }
};
void apply_predicate(xpath_node_set& ns, size_t first, xpath_ast_node* expr, const xpath_context& context) void apply_predicate(xpath_node_set& ns, size_t first, xpath_ast_node* expr, const xpath_context& context)
{ {
@ -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) switch (axis)
{ {
case axis_attribute: case axis_attribute:
{
ns.m_type = ns.empty() ? xpath_node_set::type_sorted : xpath_node_set::type_unsorted; 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()) for (xml_attribute a = n.first_attribute(); a; a = a.next_attribute())
step_push(ns, a, n); step_push(ns, a, n);
break; break;
}
case axis_child: case axis_child:
{
ns.m_type = ns.empty() ? xpath_node_set::type_sorted : xpath_node_set::type_unsorted; 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()) for (xml_node c = n.first_child(); c; c = c.next_sibling())
step_push(ns, c); step_push(ns, c);
break; break;
}
case axis_descendant: case axis_descendant:
case axis_descendant_or_self: case axis_descendant_or_self:
@ -1513,20 +1545,24 @@ namespace pugi
} }
case axis_following_sibling: case axis_following_sibling:
{
ns.m_type = ns.empty() ? xpath_node_set::type_sorted : xpath_node_set::type_unsorted; 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()) for (xml_node c = n.next_sibling(); c; c = c.next_sibling())
step_push(ns, c); step_push(ns, c);
break; break;
}
case axis_preceding_sibling: case axis_preceding_sibling:
{
ns.m_type = ns.empty() ? xpath_node_set::type_sorted_reverse : xpath_node_set::type_unsorted; 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()) for (xml_node c = n.previous_sibling(); c; c = c.previous_sibling())
step_push(ns, c); step_push(ns, c);
break; break;
}
case axis_following: 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) switch (axis)
{ {
case axis_ancestor: 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) switch (axis)
{ {
case axis_parent: case axis_parent:
@ -1726,17 +1766,17 @@ namespace pugi
size_t s = ns.size(); size_t s = ns.size();
if (it->node()) if (it->node())
step_fill<axis>(ns, it->node()); step_fill(ns, it->node(), v);
else else
step_fill<axis>(ns, it->attribute(), it->parent()); step_fill(ns, it->attribute(), it->parent(), v);
apply_predicates(ns, s, c); apply_predicates(ns, s, c);
} }
} }
else else
{ {
if (c.n.node()) step_fill<axis>(ns, c.n.node()); if (c.n.node()) step_fill(ns, c.n.node(), v);
else step_fill<axis>(ns, c.n.attribute(), c.n.parent()); else step_fill(ns, c.n.attribute(), c.n.parent(), v);
apply_predicates(ns, 0, c); apply_predicates(ns, 0, c);
} }
@ -1760,14 +1800,14 @@ namespace pugi
size_t s = ns.size(); size_t s = ns.size();
if (it->node()) if (it->node())
step_fill<axis>(ns, it->node()); step_fill(ns, it->node(), v);
apply_predicates(ns, s, c); apply_predicates(ns, s, c);
} }
} }
else if (c.n.node()) else if (c.n.node())
{ {
step_fill<axis>(ns, c.n.node()); step_fill(ns, c.n.node(), v);
apply_predicates(ns, 0, c); apply_predicates(ns, 0, c);
} }
@ -1836,22 +1876,22 @@ namespace pugi
else return m_right->eval_boolean(c); else return m_right->eval_boolean(c);
case ast_op_equal: 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: 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: 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: 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: 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: 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: case ast_func_starts_with:
return starts_with(m_left->eval_string(c), m_right->eval_string(c).c_str()); 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); std::string s = m_left->eval_string(c);
double first = ieee754_round(m_right->eval_number(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 ""; else if (first >= s.length() + 1) return "";
size_t pos = first < 1 ? 1 : (size_t)first; 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 first = ieee754_round(m_right->eval_number(c));
double last = first + ieee754_round(m_third->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 >= s.length() + 1) return "";
else if (first >= last) return ""; else if (first >= last) return "";
@ -2305,55 +2345,55 @@ namespace pugi
switch (m_axis) switch (m_axis)
{ {
case axis_ancestor: case axis_ancestor:
step_do<axis_ancestor>(ns, c); step_do(ns, c, axis_to_type<axis_ancestor>());
break; break;
case axis_ancestor_or_self: 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; break;
case axis_attribute: case axis_attribute:
step_do<axis_attribute>(ns, c); step_do(ns, c, axis_to_type<axis_attribute>());
break; break;
case axis_child: case axis_child:
step_do<axis_child>(ns, c); step_do(ns, c, axis_to_type<axis_child>());
break; break;
case axis_descendant: case axis_descendant:
step_do<axis_descendant>(ns, c); step_do(ns, c, axis_to_type<axis_descendant>());
break; break;
case axis_descendant_or_self: 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; break;
case axis_following: case axis_following:
step_do<axis_following>(ns, c); step_do(ns, c, axis_to_type<axis_following>());
break; break;
case axis_following_sibling: case axis_following_sibling:
step_do<axis_following_sibling>(ns, c); step_do(ns, c, axis_to_type<axis_following_sibling>());
break; break;
case axis_namespace: case axis_namespace:
step_do<axis_namespace>(ns, c); step_do(ns, c, axis_to_type<axis_namespace>());
break; break;
case axis_parent: case axis_parent:
step_do<axis_parent>(ns, c); step_do(ns, c, axis_to_type<axis_parent>());
break; break;
case axis_preceding: case axis_preceding:
step_do<axis_preceding>(ns, c); step_do(ns, c, axis_to_type<axis_preceding>());
break; break;
case axis_preceding_sibling: case axis_preceding_sibling:
step_do<axis_preceding_sibling>(ns, c); step_do(ns, c, axis_to_type<axis_preceding_sibling>());
break; break;
case axis_self: case axis_self:
step_do<axis_self>(ns, c); step_do(ns, c, axis_to_type<axis_self>());
break; break;
default: default:
@ -2434,12 +2474,14 @@ namespace pugi
return false; return false;
case ast_func_concat: case ast_func_concat:
{
if (m_left->contains(type)) return true; if (m_left->contains(type)) return true;
for (xpath_ast_node* n = m_right; n; n = n->m_next) for (xpath_ast_node* n = m_right; n; n = n->m_next)
if (n->contains(type)) return true; if (n->contains(type)) return true;
return false; return false;
}
case ast_func_starts_with: case ast_func_starts_with:
case ast_func_contains: case ast_func_contains:
@ -2475,6 +2517,9 @@ namespace pugi
default: default:
throw xpath_exception("Unknown semantics error"); throw xpath_exception("Unknown semantics error");
#ifdef __DMC__
return false; // Digital Mars C++
#endif
} }
} }
@ -2585,6 +2630,7 @@ namespace pugi
break; break;
case ast_func_concat: case ast_func_concat:
{
m_left->check_semantics(); m_left->check_semantics();
for (xpath_ast_node* n = m_right; n; n = n->m_next) for (xpath_ast_node* n = m_right; n; n = n->m_next)
@ -2592,6 +2638,7 @@ namespace pugi
m_rettype = ast_type_string; m_rettype = ast_type_string;
break; break;
}
case ast_func_starts_with: case ast_func_starts_with:
case ast_func_contains: case ast_func_contains:
@ -2655,6 +2702,7 @@ namespace pugi
break; break;
case ast_step: case ast_step:
{
if (m_left) if (m_left)
{ {
m_left->check_semantics(); m_left->check_semantics();
@ -2667,6 +2715,7 @@ namespace pugi
m_rettype = ast_type_node_set; m_rettype = ast_type_node_set;
break; break;
}
case ast_step_root: case ast_step_root:
m_rettype = ast_type_node_set; m_rettype = ast_type_node_set;
@ -2681,17 +2730,13 @@ namespace pugi
{ {
return m_rettype; 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 class xpath_parser
{ {
private: private:
@ -2713,7 +2758,7 @@ namespace pugi
if (m_lexer.current() != lex_string) if (m_lexer.current() != lex_string)
throw xpath_exception("incorrect variable reference"); 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(); m_lexer.next();
return n; return n;
@ -2735,7 +2780,7 @@ namespace pugi
case lex_quoted_string: 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(); m_lexer.next();
return n; return n;
@ -2743,7 +2788,7 @@ namespace pugi
case lex_number: 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(); m_lexer.next();
return n; return n;
@ -2813,7 +2858,7 @@ namespace pugi
else if (function == "concat" && argc == 2) else if (function == "concat" && argc == 2)
{ {
// set_next was done earlier // 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) else if (function == "ceiling" && argc == 1)
type = ast_func_ceiling; type = ast_func_ceiling;
@ -2919,10 +2964,10 @@ namespace pugi
{ {
switch (argc) switch (argc)
{ {
case 0: return new (m_alloc) xpath_ast_node(type); case 0: return new (m_alloc.node()) xpath_ast_node(type);
case 1: return new (m_alloc) xpath_ast_node(type, args[0]); case 1: return new (m_alloc.node()) xpath_ast_node(type, args[0]);
case 2: return new (m_alloc) xpath_ast_node(type, args[0], args[1]); case 2: return new (m_alloc.node()) 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 3: return new (m_alloc.node()) xpath_ast_node(type, args[0], args[1], args[2]);
} }
} }
@ -2931,6 +2976,9 @@ namespace pugi
default: default:
throw xpath_exception("unrecognizable primary expression"); throw xpath_exception("unrecognizable primary expression");
#ifdef __DMC__
return 0; // Digital Mars C++
#endif
} }
} }
@ -2945,7 +2993,7 @@ namespace pugi
{ {
m_lexer.next(); 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) if (m_lexer.current() != lex_close_square_brace)
throw xpath_exception("Unmatched square brace"); throw xpath_exception("Unmatched square brace");
@ -2975,13 +3023,13 @@ namespace pugi
{ {
m_lexer.next(); 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) else if (m_lexer.current() == lex_double_dot)
{ {
m_lexer.next(); 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 else // implied child axis
axis = axis_child; axis = axis_child;
@ -3104,7 +3152,7 @@ namespace pugi
else else
throw xpath_exception("Unrecognized node type"); throw xpath_exception("Unrecognized node type");
nt_name.clear(); nt_name.erase(nt_name.begin(), nt_name.end());
} }
else if (nt_name == "processing-instruction") else if (nt_name == "processing-instruction")
{ {
@ -3150,7 +3198,7 @@ namespace pugi
} }
else throw xpath_exception("Unrecognized node test"); 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; xpath_ast_node* last = 0;
@ -3158,7 +3206,7 @@ namespace pugi
{ {
m_lexer.next(); 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) if (m_lexer.current() != lex_close_square_brace)
throw xpath_exception("unmatched square brace"); throw xpath_exception("unmatched square brace");
@ -3184,7 +3232,7 @@ namespace pugi
m_lexer.next(); m_lexer.next();
if (l == lex_double_slash) 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); n = parse_step(n);
} }
@ -3203,7 +3251,7 @@ namespace pugi
m_lexer.next(); 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 try
{ {
@ -3220,8 +3268,8 @@ namespace pugi
{ {
m_lexer.next(); 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);
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);
return parse_relative_location_path(n); return parse_relative_location_path(n);
} }
@ -3266,7 +3314,7 @@ namespace pugi
m_lexer.next(); m_lexer.next();
if (l == lex_double_slash) 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 // select from location path
return parse_relative_location_path(n); return parse_relative_location_path(n);
@ -3286,7 +3334,7 @@ namespace pugi
{ {
m_lexer.next(); 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; return n;
@ -3299,7 +3347,7 @@ namespace pugi
{ {
m_lexer.next(); 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(); else return parse_union_expression();
} }
@ -3319,7 +3367,7 @@ namespace pugi
!strcmp(m_lexer.contents(), "div") ? ast_op_divide : ast_op_mod; !strcmp(m_lexer.contents(), "div") ? ast_op_divide : ast_op_mod;
m_lexer.next(); 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; return n;
@ -3338,7 +3386,7 @@ namespace pugi
m_lexer.next(); 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; return n;
@ -3359,7 +3407,7 @@ namespace pugi
lexeme_t l = m_lexer.current(); lexeme_t l = m_lexer.current();
m_lexer.next(); 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, l == lex_less_or_equal ? ast_op_less_or_equal : ast_op_greater_or_equal,
n, parse_additive_expression()); n, parse_additive_expression());
} }
@ -3380,7 +3428,7 @@ namespace pugi
m_lexer.next(); 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; return n;
@ -3395,7 +3443,7 @@ namespace pugi
{ {
m_lexer.next(); 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; return n;
@ -3410,7 +3458,7 @@ namespace pugi
{ {
m_lexer.next(); 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; return n;