external/tinyxml 2_4_1

Change-Id: Id87a03820c20eaa9c9b92028ab859a27872c16da
diff --git a/changes.txt b/changes.txt
index 3fc47d2..625f3ef 100644
--- a/changes.txt
+++ b/changes.txt
@@ -208,3 +208,7 @@
   from 'instructor_'
 - Ellers submitted his very popular tutorials, which have been added to the distribution.
 
+2.4.1
+- Fixed CDATA output formatting
+- Fixed memory allocators in TinyString to work with overloaded new/delete
+
diff --git a/docs/annotated.html b/docs/annotated.html
index 342af3f..6363873 100644
--- a/docs/annotated.html
+++ b/docs/annotated.html
@@ -17,7 +17,7 @@
   <tr><td class="indexkey"><a class="el" href="classTiXmlText.html">TiXmlText</a></td><td class="indexvalue">XML text </td></tr>
   <tr><td class="indexkey"><a class="el" href="classTiXmlUnknown.html">TiXmlUnknown</a></td><td class="indexvalue">Any tag that tinyXml doesn't recognize is saved as an unknown </td></tr>
 </table>
-<hr size="1"><address style="align: right;"><small>Generated on Sat Oct 8 14:15:30 2005 for TinyXml by&nbsp;
+<hr size="1"><address style="align: right;"><small>Generated on Tue Oct 18 20:58:44 2005 for TinyXml by&nbsp;
 <a href="http://www.doxygen.org/index.html">
 <img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4 </small></address>
 </body>
diff --git a/docs/classTiXmlAttribute-members.html b/docs/classTiXmlAttribute-members.html
index 1c14a73..b01d9b6 100644
--- a/docs/classTiXmlAttribute-members.html
+++ b/docs/classTiXmlAttribute-members.html
@@ -29,7 +29,7 @@
   <tr class="memlist"><td><a class="el" href="classTiXmlAttribute.html#a2">TiXmlAttribute</a>(const char *_name, const char *_value)</td><td><a class="el" href="classTiXmlAttribute.html">TiXmlAttribute</a></td><td><code> [inline]</code></td></tr>
   <tr class="memlist"><td><a class="el" href="classTiXmlBase.html#p1">userData</a></td><td><a class="el" href="classTiXmlBase.html">TiXmlBase</a></td><td><code> [protected]</code></td></tr>
   <tr class="memlist"><td><a class="el" href="classTiXmlAttribute.html#a4">Value</a>() const </td><td><a class="el" href="classTiXmlAttribute.html">TiXmlAttribute</a></td><td><code> [inline]</code></td></tr>
-</table><hr size="1"><address style="align: right;"><small>Generated on Sat Oct 8 14:15:30 2005 for TinyXml by&nbsp;
+</table><hr size="1"><address style="align: right;"><small>Generated on Tue Oct 18 20:58:44 2005 for TinyXml by&nbsp;
 <a href="http://www.doxygen.org/index.html">
 <img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4 </small></address>
 </body>
diff --git a/docs/classTiXmlAttribute.html b/docs/classTiXmlAttribute.html
index 1b4db51..2fa139e 100644
--- a/docs/classTiXmlAttribute.html
+++ b/docs/classTiXmlAttribute.html
@@ -172,7 +172,7 @@
 </table>
 <hr>The documentation for this class was generated from the following file:<ul>
 <li><a class="el" href="tinyxml_8h-source.html">tinyxml.h</a></ul>
-<hr size="1"><address style="align: right;"><small>Generated on Sat Oct 8 14:15:30 2005 for TinyXml by&nbsp;
+<hr size="1"><address style="align: right;"><small>Generated on Tue Oct 18 20:58:44 2005 for TinyXml by&nbsp;
 <a href="http://www.doxygen.org/index.html">
 <img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4 </small></address>
 </body>
diff --git a/docs/classTiXmlBase-members.html b/docs/classTiXmlBase-members.html
index 7786d90..e648013 100644
--- a/docs/classTiXmlBase-members.html
+++ b/docs/classTiXmlBase-members.html
@@ -12,7 +12,7 @@
   <tr class="memlist"><td><a class="el" href="classTiXmlBase.html#a3">Row</a>() const </td><td><a class="el" href="classTiXmlBase.html">TiXmlBase</a></td><td><code> [inline]</code></td></tr>
   <tr class="memlist"><td><a class="el" href="classTiXmlBase.html#e0">SetCondenseWhiteSpace</a>(bool condense)</td><td><a class="el" href="classTiXmlBase.html">TiXmlBase</a></td><td><code> [inline, static]</code></td></tr>
   <tr class="memlist"><td><a class="el" href="classTiXmlBase.html#p1">userData</a></td><td><a class="el" href="classTiXmlBase.html">TiXmlBase</a></td><td><code> [protected]</code></td></tr>
-</table><hr size="1"><address style="align: right;"><small>Generated on Sat Oct 8 14:15:30 2005 for TinyXml by&nbsp;
+</table><hr size="1"><address style="align: right;"><small>Generated on Tue Oct 18 20:58:44 2005 for TinyXml by&nbsp;
 <a href="http://www.doxygen.org/index.html">
 <img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4 </small></address>
 </body>
diff --git a/docs/classTiXmlBase.html b/docs/classTiXmlBase.html
index 39c0cd0..9575e25 100644
--- a/docs/classTiXmlBase.html
+++ b/docs/classTiXmlBase.html
@@ -187,7 +187,7 @@
 </table>
 <hr>The documentation for this class was generated from the following file:<ul>
 <li><a class="el" href="tinyxml_8h-source.html">tinyxml.h</a></ul>
-<hr size="1"><address style="align: right;"><small>Generated on Sat Oct 8 14:15:30 2005 for TinyXml by&nbsp;
+<hr size="1"><address style="align: right;"><small>Generated on Tue Oct 18 20:58:44 2005 for TinyXml by&nbsp;
 <a href="http://www.doxygen.org/index.html">
 <img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4 </small></address>
 </body>
diff --git a/docs/classTiXmlComment-members.html b/docs/classTiXmlComment-members.html
index f7047b2..677a31e 100644
--- a/docs/classTiXmlComment-members.html
+++ b/docs/classTiXmlComment-members.html
@@ -74,7 +74,7 @@
   <tr class="memlist"><td><a class="el" href="classTiXmlBase.html#p1">userData</a></td><td><a class="el" href="classTiXmlBase.html">TiXmlBase</a></td><td><code> [protected]</code></td></tr>
   <tr class="memlist"><td><a class="el" href="classTiXmlNode.html#a1">Value</a>() const </td><td><a class="el" href="classTiXmlNode.html">TiXmlNode</a></td><td><code> [inline]</code></td></tr>
   <tr class="memlist"><td><a class="el" href="classTiXmlNode.html#a2">ValueStr</a>() const </td><td><a class="el" href="classTiXmlNode.html">TiXmlNode</a></td><td><code> [inline]</code></td></tr>
-</table><hr size="1"><address style="align: right;"><small>Generated on Sat Oct 8 14:15:30 2005 for TinyXml by&nbsp;
+</table><hr size="1"><address style="align: right;"><small>Generated on Tue Oct 18 20:58:44 2005 for TinyXml by&nbsp;
 <a href="http://www.doxygen.org/index.html">
 <img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4 </small></address>
 </body>
diff --git a/docs/classTiXmlComment.html b/docs/classTiXmlComment.html
index 593af9c..e46a91f 100644
--- a/docs/classTiXmlComment.html
+++ b/docs/classTiXmlComment.html
@@ -37,7 +37,7 @@
 <p>
 <hr>The documentation for this class was generated from the following file:<ul>
 <li><a class="el" href="tinyxml_8h-source.html">tinyxml.h</a></ul>
-<hr size="1"><address style="align: right;"><small>Generated on Sat Oct 8 14:15:30 2005 for TinyXml by&nbsp;
+<hr size="1"><address style="align: right;"><small>Generated on Tue Oct 18 20:58:44 2005 for TinyXml by&nbsp;
 <a href="http://www.doxygen.org/index.html">
 <img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4 </small></address>
 </body>
diff --git a/docs/classTiXmlDeclaration-members.html b/docs/classTiXmlDeclaration-members.html
index 8bc63cd..a30e531 100644
--- a/docs/classTiXmlDeclaration-members.html
+++ b/docs/classTiXmlDeclaration-members.html
@@ -79,7 +79,7 @@
   <tr class="memlist"><td><a class="el" href="classTiXmlNode.html#a1">Value</a>() const </td><td><a class="el" href="classTiXmlNode.html">TiXmlNode</a></td><td><code> [inline]</code></td></tr>
   <tr class="memlist"><td><a class="el" href="classTiXmlNode.html#a2">ValueStr</a>() const </td><td><a class="el" href="classTiXmlNode.html">TiXmlNode</a></td><td><code> [inline]</code></td></tr>
   <tr class="memlist"><td><a class="el" href="classTiXmlDeclaration.html#a6">Version</a>() const </td><td><a class="el" href="classTiXmlDeclaration.html">TiXmlDeclaration</a></td><td><code> [inline]</code></td></tr>
-</table><hr size="1"><address style="align: right;"><small>Generated on Sat Oct 8 14:15:30 2005 for TinyXml by&nbsp;
+</table><hr size="1"><address style="align: right;"><small>Generated on Tue Oct 18 20:58:44 2005 for TinyXml by&nbsp;
 <a href="http://www.doxygen.org/index.html">
 <img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4 </small></address>
 </body>
diff --git a/docs/classTiXmlDeclaration.html b/docs/classTiXmlDeclaration.html
index 2c97e6e..70217ff 100644
--- a/docs/classTiXmlDeclaration.html
+++ b/docs/classTiXmlDeclaration.html
@@ -62,7 +62,7 @@
 <p>
 <hr>The documentation for this class was generated from the following file:<ul>
 <li><a class="el" href="tinyxml_8h-source.html">tinyxml.h</a></ul>
-<hr size="1"><address style="align: right;"><small>Generated on Sat Oct 8 14:15:30 2005 for TinyXml by&nbsp;
+<hr size="1"><address style="align: right;"><small>Generated on Tue Oct 18 20:58:44 2005 for TinyXml by&nbsp;
 <a href="http://www.doxygen.org/index.html">
 <img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4 </small></address>
 </body>
diff --git a/docs/classTiXmlDocument-members.html b/docs/classTiXmlDocument-members.html
index c8bf675..a309913 100644
--- a/docs/classTiXmlDocument-members.html
+++ b/docs/classTiXmlDocument-members.html
@@ -92,7 +92,7 @@
   <tr class="memlist"><td><a class="el" href="classTiXmlBase.html#p1">userData</a></td><td><a class="el" href="classTiXmlBase.html">TiXmlBase</a></td><td><code> [protected]</code></td></tr>
   <tr class="memlist"><td><a class="el" href="classTiXmlNode.html#a1">Value</a>() const </td><td><a class="el" href="classTiXmlNode.html">TiXmlNode</a></td><td><code> [inline]</code></td></tr>
   <tr class="memlist"><td><a class="el" href="classTiXmlNode.html#a2">ValueStr</a>() const </td><td><a class="el" href="classTiXmlNode.html">TiXmlNode</a></td><td><code> [inline]</code></td></tr>
-</table><hr size="1"><address style="align: right;"><small>Generated on Sat Oct 8 14:15:30 2005 for TinyXml by&nbsp;
+</table><hr size="1"><address style="align: right;"><small>Generated on Tue Oct 18 20:58:44 2005 for TinyXml by&nbsp;
 <a href="http://www.doxygen.org/index.html">
 <img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4 </small></address>
 </body>
diff --git a/docs/classTiXmlDocument.html b/docs/classTiXmlDocument.html
index 542ae2b..9c2bcd2 100644
--- a/docs/classTiXmlDocument.html
+++ b/docs/classTiXmlDocument.html
@@ -440,7 +440,7 @@
 </table>
 <hr>The documentation for this class was generated from the following file:<ul>
 <li><a class="el" href="tinyxml_8h-source.html">tinyxml.h</a></ul>
-<hr size="1"><address style="align: right;"><small>Generated on Sat Oct 8 14:15:30 2005 for TinyXml by&nbsp;
+<hr size="1"><address style="align: right;"><small>Generated on Tue Oct 18 20:58:44 2005 for TinyXml by&nbsp;
 <a href="http://www.doxygen.org/index.html">
 <img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4 </small></address>
 </body>
diff --git a/docs/classTiXmlElement-members.html b/docs/classTiXmlElement-members.html
index dfbf1d9..efa48d0 100644
--- a/docs/classTiXmlElement-members.html
+++ b/docs/classTiXmlElement-members.html
@@ -90,7 +90,7 @@
   <tr class="memlist"><td><a class="el" href="classTiXmlBase.html#p1">userData</a></td><td><a class="el" href="classTiXmlBase.html">TiXmlBase</a></td><td><code> [protected]</code></td></tr>
   <tr class="memlist"><td><a class="el" href="classTiXmlNode.html#a1">Value</a>() const </td><td><a class="el" href="classTiXmlNode.html">TiXmlNode</a></td><td><code> [inline]</code></td></tr>
   <tr class="memlist"><td><a class="el" href="classTiXmlNode.html#a2">ValueStr</a>() const </td><td><a class="el" href="classTiXmlNode.html">TiXmlNode</a></td><td><code> [inline]</code></td></tr>
-</table><hr size="1"><address style="align: right;"><small>Generated on Sat Oct 8 14:15:30 2005 for TinyXml by&nbsp;
+</table><hr size="1"><address style="align: right;"><small>Generated on Tue Oct 18 20:58:44 2005 for TinyXml by&nbsp;
 <a href="http://www.doxygen.org/index.html">
 <img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4 </small></address>
 </body>
diff --git a/docs/classTiXmlElement.html b/docs/classTiXmlElement.html
index 27b4bd9..0a92b89 100644
--- a/docs/classTiXmlElement.html
+++ b/docs/classTiXmlElement.html
@@ -199,7 +199,7 @@
 Convenience function for easy access to the text inside an element. 
 <p>
 Although easy and concise, <a class="el" href="classTiXmlElement.html#a27">GetText()</a> is limited compared to getting the <a class="el" href="classTiXmlText.html">TiXmlText</a> child and accessing it directly.<p>
-If the first child of 'this' is a <a class="el" href="classTiXmlText.html">TiXmlText</a>, the <a class="el" href="classTiXmlElement.html#a27">GetText()</a> returs the character string of the Text node, else null is returned.<p>
+If the first child of 'this' is a <a class="el" href="classTiXmlText.html">TiXmlText</a>, the <a class="el" href="classTiXmlElement.html#a27">GetText()</a> returns the character string of the Text node, else null is returned.<p>
 This is a convenient method for getting the text of simple contained text: <div class="fragment"><pre class="fragment">		&lt;foo&gt;This is text&lt;/foo&gt;
 		const char* str = fooElement-&gt;GetText();
 		</pre></div><p>
@@ -411,7 +411,7 @@
 </table>
 <hr>The documentation for this class was generated from the following file:<ul>
 <li><a class="el" href="tinyxml_8h-source.html">tinyxml.h</a></ul>
-<hr size="1"><address style="align: right;"><small>Generated on Sat Oct 8 14:15:30 2005 for TinyXml by&nbsp;
+<hr size="1"><address style="align: right;"><small>Generated on Tue Oct 18 20:58:44 2005 for TinyXml by&nbsp;
 <a href="http://www.doxygen.org/index.html">
 <img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4 </small></address>
 </body>
diff --git a/docs/classTiXmlHandle-members.html b/docs/classTiXmlHandle-members.html
index adfaebc..6c83270 100644
--- a/docs/classTiXmlHandle-members.html
+++ b/docs/classTiXmlHandle-members.html
@@ -20,7 +20,7 @@
   <tr class="memlist"><td><a class="el" href="classTiXmlHandle.html#a0">TiXmlHandle</a>(TiXmlNode *_node)</td><td><a class="el" href="classTiXmlHandle.html">TiXmlHandle</a></td><td><code> [inline]</code></td></tr>
   <tr class="memlist"><td><a class="el" href="classTiXmlHandle.html#a1">TiXmlHandle</a>(const TiXmlHandle &amp;ref)</td><td><a class="el" href="classTiXmlHandle.html">TiXmlHandle</a></td><td><code> [inline]</code></td></tr>
   <tr class="memlist"><td><a class="el" href="classTiXmlHandle.html#a18">Unknown</a>() const </td><td><a class="el" href="classTiXmlHandle.html">TiXmlHandle</a></td><td><code> [inline]</code></td></tr>
-</table><hr size="1"><address style="align: right;"><small>Generated on Sat Oct 8 14:15:30 2005 for TinyXml by&nbsp;
+</table><hr size="1"><address style="align: right;"><small>Generated on Tue Oct 18 20:58:44 2005 for TinyXml by&nbsp;
 <a href="http://www.doxygen.org/index.html">
 <img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4 </small></address>
 </body>
diff --git a/docs/classTiXmlHandle.html b/docs/classTiXmlHandle.html
index f7af602..a4c229a 100644
--- a/docs/classTiXmlHandle.html
+++ b/docs/classTiXmlHandle.html
@@ -263,7 +263,7 @@
 </table>
 <hr>The documentation for this class was generated from the following file:<ul>
 <li><a class="el" href="tinyxml_8h-source.html">tinyxml.h</a></ul>
-<hr size="1"><address style="align: right;"><small>Generated on Sat Oct 8 14:15:30 2005 for TinyXml by&nbsp;
+<hr size="1"><address style="align: right;"><small>Generated on Tue Oct 18 20:58:44 2005 for TinyXml by&nbsp;
 <a href="http://www.doxygen.org/index.html">
 <img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4 </small></address>
 </body>
diff --git a/docs/classTiXmlNode-members.html b/docs/classTiXmlNode-members.html
index 25cb802..308eea2 100644
--- a/docs/classTiXmlNode-members.html
+++ b/docs/classTiXmlNode-members.html
@@ -73,7 +73,7 @@
   <tr class="memlist"><td><a class="el" href="classTiXmlBase.html#p1">userData</a></td><td><a class="el" href="classTiXmlBase.html">TiXmlBase</a></td><td><code> [protected]</code></td></tr>
   <tr class="memlist"><td><a class="el" href="classTiXmlNode.html#a1">Value</a>() const </td><td><a class="el" href="classTiXmlNode.html">TiXmlNode</a></td><td><code> [inline]</code></td></tr>
   <tr class="memlist"><td><a class="el" href="classTiXmlNode.html#a2">ValueStr</a>() const </td><td><a class="el" href="classTiXmlNode.html">TiXmlNode</a></td><td><code> [inline]</code></td></tr>
-</table><hr size="1"><address style="align: right;"><small>Generated on Sat Oct 8 14:15:30 2005 for TinyXml by&nbsp;
+</table><hr size="1"><address style="align: right;"><small>Generated on Tue Oct 18 20:58:44 2005 for TinyXml by&nbsp;
 <a href="http://www.doxygen.org/index.html">
 <img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4 </small></address>
 </body>
diff --git a/docs/classTiXmlNode.html b/docs/classTiXmlNode.html
index dab9950..dd8951c 100644
--- a/docs/classTiXmlNode.html
+++ b/docs/classTiXmlNode.html
@@ -838,7 +838,7 @@
 </table>
 <hr>The documentation for this class was generated from the following file:<ul>
 <li><a class="el" href="tinyxml_8h-source.html">tinyxml.h</a></ul>
-<hr size="1"><address style="align: right;"><small>Generated on Sat Oct 8 14:15:30 2005 for TinyXml by&nbsp;
+<hr size="1"><address style="align: right;"><small>Generated on Tue Oct 18 20:58:44 2005 for TinyXml by&nbsp;
 <a href="http://www.doxygen.org/index.html">
 <img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4 </small></address>
 </body>
diff --git a/docs/classTiXmlText-members.html b/docs/classTiXmlText-members.html
index ce9bc4e..1f5a1d6 100644
--- a/docs/classTiXmlText-members.html
+++ b/docs/classTiXmlText-members.html
@@ -77,7 +77,7 @@
   <tr class="memlist"><td><a class="el" href="classTiXmlBase.html#p1">userData</a></td><td><a class="el" href="classTiXmlBase.html">TiXmlBase</a></td><td><code> [protected]</code></td></tr>
   <tr class="memlist"><td><a class="el" href="classTiXmlNode.html#a1">Value</a>() const </td><td><a class="el" href="classTiXmlNode.html">TiXmlNode</a></td><td><code> [inline]</code></td></tr>
   <tr class="memlist"><td><a class="el" href="classTiXmlNode.html#a2">ValueStr</a>() const </td><td><a class="el" href="classTiXmlNode.html">TiXmlNode</a></td><td><code> [inline]</code></td></tr>
-</table><hr size="1"><address style="align: right;"><small>Generated on Sat Oct 8 14:15:30 2005 for TinyXml by&nbsp;
+</table><hr size="1"><address style="align: right;"><small>Generated on Tue Oct 18 20:58:44 2005 for TinyXml by&nbsp;
 <a href="http://www.doxygen.org/index.html">
 <img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4 </small></address>
 </body>
diff --git a/docs/classTiXmlText.html b/docs/classTiXmlText.html
index d6e3ab5..109614a 100644
--- a/docs/classTiXmlText.html
+++ b/docs/classTiXmlText.html
@@ -86,7 +86,7 @@
 </table>
 <hr>The documentation for this class was generated from the following file:<ul>
 <li><a class="el" href="tinyxml_8h-source.html">tinyxml.h</a></ul>
-<hr size="1"><address style="align: right;"><small>Generated on Sat Oct 8 14:15:30 2005 for TinyXml by&nbsp;
+<hr size="1"><address style="align: right;"><small>Generated on Tue Oct 18 20:58:44 2005 for TinyXml by&nbsp;
 <a href="http://www.doxygen.org/index.html">
 <img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4 </small></address>
 </body>
diff --git a/docs/classTiXmlUnknown-members.html b/docs/classTiXmlUnknown-members.html
index 8d94a04..3e09bb8 100644
--- a/docs/classTiXmlUnknown-members.html
+++ b/docs/classTiXmlUnknown-members.html
@@ -73,7 +73,7 @@
   <tr class="memlist"><td><a class="el" href="classTiXmlBase.html#p1">userData</a></td><td><a class="el" href="classTiXmlBase.html">TiXmlBase</a></td><td><code> [protected]</code></td></tr>
   <tr class="memlist"><td><a class="el" href="classTiXmlNode.html#a1">Value</a>() const </td><td><a class="el" href="classTiXmlNode.html">TiXmlNode</a></td><td><code> [inline]</code></td></tr>
   <tr class="memlist"><td><a class="el" href="classTiXmlNode.html#a2">ValueStr</a>() const </td><td><a class="el" href="classTiXmlNode.html">TiXmlNode</a></td><td><code> [inline]</code></td></tr>
-</table><hr size="1"><address style="align: right;"><small>Generated on Sat Oct 8 14:15:30 2005 for TinyXml by&nbsp;
+</table><hr size="1"><address style="align: right;"><small>Generated on Tue Oct 18 20:58:44 2005 for TinyXml by&nbsp;
 <a href="http://www.doxygen.org/index.html">
 <img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4 </small></address>
 </body>
diff --git a/docs/classTiXmlUnknown.html b/docs/classTiXmlUnknown.html
index a6661d3..83f79c8 100644
--- a/docs/classTiXmlUnknown.html
+++ b/docs/classTiXmlUnknown.html
@@ -36,7 +36,7 @@
 <p>
 <hr>The documentation for this class was generated from the following file:<ul>
 <li><a class="el" href="tinyxml_8h-source.html">tinyxml.h</a></ul>
-<hr size="1"><address style="align: right;"><small>Generated on Sat Oct 8 14:15:30 2005 for TinyXml by&nbsp;
+<hr size="1"><address style="align: right;"><small>Generated on Tue Oct 18 20:58:44 2005 for TinyXml by&nbsp;
 <a href="http://www.doxygen.org/index.html">
 <img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4 </small></address>
 </body>
diff --git a/docs/files.html b/docs/files.html
index e848a1d..d18006b 100644
--- a/docs/files.html
+++ b/docs/files.html
@@ -9,7 +9,7 @@
   <tr><td class="indexkey"><b>tinystr.h</b> <a href="tinystr_8h-source.html">[code]</a></td><td class="indexvalue"></td></tr>
   <tr><td class="indexkey"><b>tinyxml.h</b> <a href="tinyxml_8h-source.html">[code]</a></td><td class="indexvalue"></td></tr>
 </table>
-<hr size="1"><address style="align: right;"><small>Generated on Sat Oct 8 14:15:30 2005 for TinyXml by&nbsp;
+<hr size="1"><address style="align: right;"><small>Generated on Tue Oct 18 20:58:44 2005 for TinyXml by&nbsp;
 <a href="http://www.doxygen.org/index.html">
 <img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4 </small></address>
 </body>
diff --git a/docs/functions.html b/docs/functions.html
index 72741f0..1a5a95d 100644
--- a/docs/functions.html
+++ b/docs/functions.html
@@ -131,7 +131,7 @@
 : <a class="el" href="classTiXmlAttribute.html#a4">TiXmlAttribute</a>, <a class="el" href="classTiXmlNode.html#a1">TiXmlNode</a><li>ValueStr()
 : <a class="el" href="classTiXmlNode.html#a2">TiXmlNode</a><li>Version()
 : <a class="el" href="classTiXmlDeclaration.html#a6">TiXmlDeclaration</a></ul>
-<hr size="1"><address style="align: right;"><small>Generated on Sat Oct 8 14:15:30 2005 for TinyXml by&nbsp;
+<hr size="1"><address style="align: right;"><small>Generated on Tue Oct 18 20:58:44 2005 for TinyXml by&nbsp;
 <a href="http://www.doxygen.org/index.html">
 <img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4 </small></address>
 </body>
diff --git a/docs/functions_enum.html b/docs/functions_enum.html
index a5ee939..d1d7178 100644
--- a/docs/functions_enum.html
+++ b/docs/functions_enum.html
@@ -11,7 +11,7 @@
 <ul>
 <li>NodeType
 : <a class="el" href="classTiXmlNode.html#w7">TiXmlNode</a></ul>
-<hr size="1"><address style="align: right;"><small>Generated on Sat Oct 8 14:15:30 2005 for TinyXml by&nbsp;
+<hr size="1"><address style="align: right;"><small>Generated on Tue Oct 18 20:58:44 2005 for TinyXml by&nbsp;
 <a href="http://www.doxygen.org/index.html">
 <img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4 </small></address>
 </body>
diff --git a/docs/functions_func.html b/docs/functions_func.html
index 3a7fb0d..9ad0b77 100644
--- a/docs/functions_func.html
+++ b/docs/functions_func.html
@@ -125,7 +125,7 @@
 : <a class="el" href="classTiXmlAttribute.html#a4">TiXmlAttribute</a>, <a class="el" href="classTiXmlNode.html#a1">TiXmlNode</a><li>ValueStr()
 : <a class="el" href="classTiXmlNode.html#a2">TiXmlNode</a><li>Version()
 : <a class="el" href="classTiXmlDeclaration.html#a6">TiXmlDeclaration</a></ul>
-<hr size="1"><address style="align: right;"><small>Generated on Sat Oct 8 14:15:30 2005 for TinyXml by&nbsp;
+<hr size="1"><address style="align: right;"><small>Generated on Tue Oct 18 20:58:44 2005 for TinyXml by&nbsp;
 <a href="http://www.doxygen.org/index.html">
 <img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4 </small></address>
 </body>
diff --git a/docs/functions_rela.html b/docs/functions_rela.html
index d83816f..6322c32 100644
--- a/docs/functions_rela.html
+++ b/docs/functions_rela.html
@@ -12,7 +12,7 @@
 <li>operator&lt;&lt;
 : <a class="el" href="classTiXmlNode.html#n4">TiXmlNode</a><li>operator&gt;&gt;
 : <a class="el" href="classTiXmlNode.html#n2">TiXmlNode</a></ul>
-<hr size="1"><address style="align: right;"><small>Generated on Sat Oct 8 14:15:30 2005 for TinyXml by&nbsp;
+<hr size="1"><address style="align: right;"><small>Generated on Tue Oct 18 20:58:44 2005 for TinyXml by&nbsp;
 <a href="http://www.doxygen.org/index.html">
 <img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4 </small></address>
 </body>
diff --git a/docs/functions_vars.html b/docs/functions_vars.html
index 6d3b037..b3dab18 100644
--- a/docs/functions_vars.html
+++ b/docs/functions_vars.html
@@ -11,7 +11,7 @@
 <ul>
 <li>userData
 : <a class="el" href="classTiXmlBase.html#p1">TiXmlBase</a></ul>
-<hr size="1"><address style="align: right;"><small>Generated on Sat Oct 8 14:15:30 2005 for TinyXml by&nbsp;
+<hr size="1"><address style="align: right;"><small>Generated on Tue Oct 18 20:58:44 2005 for TinyXml by&nbsp;
 <a href="http://www.doxygen.org/index.html">
 <img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4 </small></address>
 </body>
diff --git a/docs/hierarchy.html b/docs/hierarchy.html
index 4404cf2..6e939bc 100644
--- a/docs/hierarchy.html
+++ b/docs/hierarchy.html
@@ -21,7 +21,7 @@
 </ul>
 <li><a class="el" href="classTiXmlHandle.html">TiXmlHandle</a>
 </ul>
-<hr size="1"><address style="align: right;"><small>Generated on Sat Oct 8 14:15:30 2005 for TinyXml by&nbsp;
+<hr size="1"><address style="align: right;"><small>Generated on Tue Oct 18 20:58:44 2005 for TinyXml by&nbsp;
 <a href="http://www.doxygen.org/index.html">
 <img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4 </small></address>
 </body>
diff --git a/docs/index.html b/docs/index.html
index 95818c6..0f3c51d 100644
--- a/docs/index.html
+++ b/docs/index.html
@@ -7,7 +7,7 @@
 <div class="qindex"><a class="qindexHL" href="index.html">Main&nbsp;Page</a> | <a class="qindex" href="hierarchy.html">Class&nbsp;Hierarchy</a> | <a class="qindex" href="annotated.html">Class&nbsp;List</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Class&nbsp;Members</a></div>
 <h1>TinyXml Documentation</h1>
 <p>
-<h3 align="center">2.4.0 </h3><h1>TinyXml </h1>
+<h3 align="center">2.4.1 </h3><h1>TinyXml </h1>
 <p>
 TinyXml is a simple, small, C++ XML parser that can be easily integrating into other programs.<p>
 <h2>What it does. </h2>
@@ -232,7 +232,7 @@
 TinyXml was originally written be Lee Thomason. (Often the "I" still in the documenation.) Lee reviews changes and releases new versions, with the help of Yves Berquin and the tinyXml community.<p>
 We appreciate your suggestions, and would love to know if you use TinyXml. Hopefully you will enjoy it and find it useful. Please post questions, comments, file bugs, or contact us at:<p>
 www.sourceforge.net/projects/tinyxml<p>
-Lee Thomason, Yves Berquin <hr size="1"><address style="align: right;"><small>Generated on Sat Oct 8 14:15:30 2005 for TinyXml by&nbsp;
+Lee Thomason, Yves Berquin <hr size="1"><address style="align: right;"><small>Generated on Tue Oct 18 20:58:44 2005 for TinyXml by&nbsp;
 <a href="http://www.doxygen.org/index.html">
 <img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4 </small></address>
 </body>
diff --git a/docs/tinystr_8h-source.html b/docs/tinystr_8h-source.html
index d40a3c5..2d71016 100644
--- a/docs/tinystr_8h-source.html
+++ b/docs/tinystr_8h-source.html
@@ -224,82 +224,90 @@
 <a name="l00217"></a>00217     {
 <a name="l00218"></a>00218         <span class="keywordflow">if</span> (cap)
 <a name="l00219"></a>00219         {
-<a name="l00220"></a>00220             rep_ = static_cast&lt;Rep*&gt;(operator new(<span class="keyword">sizeof</span>(Rep) + cap));
-<a name="l00221"></a>00221             rep_-&gt;str[ rep_-&gt;size = sz ] = <span class="charliteral">'\0'</span>;
-<a name="l00222"></a>00222             rep_-&gt;capacity = cap;
-<a name="l00223"></a>00223         }
-<a name="l00224"></a>00224         <span class="keywordflow">else</span>
-<a name="l00225"></a>00225         {
-<a name="l00226"></a>00226             rep_ = &amp;nullrep_;
-<a name="l00227"></a>00227         }
-<a name="l00228"></a>00228     }
-<a name="l00229"></a>00229 
-<a name="l00230"></a>00230     <span class="keywordtype">void</span> quit()
-<a name="l00231"></a>00231     {
-<a name="l00232"></a>00232         <span class="keywordflow">if</span> (rep_ != &amp;nullrep_)
+<a name="l00220"></a>00220             <span class="comment">// Lee: the original form:</span>
+<a name="l00221"></a>00221             <span class="comment">//  rep_ = static_cast&lt;Rep*&gt;(operator new(sizeof(Rep) + cap));</span>
+<a name="l00222"></a>00222             <span class="comment">// doesn't work in some cases of new being overloaded. Switching</span>
+<a name="l00223"></a>00223             <span class="comment">// to the normal allocation, although use an 'int' for systems</span>
+<a name="l00224"></a>00224             <span class="comment">// that are overly picky about structure alignment.</span>
+<a name="l00225"></a>00225             <span class="keyword">const</span> size_type bytesNeeded = <span class="keyword">sizeof</span>(Rep) + cap;
+<a name="l00226"></a>00226             <span class="keyword">const</span> size_type intsNeeded = ( bytesNeeded + <span class="keyword">sizeof</span>(int) - 1 ) / <span class="keyword">sizeof</span>( int ); 
+<a name="l00227"></a>00227             rep_ = reinterpret_cast&lt;Rep*&gt;( <span class="keyword">new</span> <span class="keywordtype">int</span>[ intsNeeded ] );
+<a name="l00228"></a>00228 
+<a name="l00229"></a>00229             rep_-&gt;str[ rep_-&gt;size = sz ] = <span class="charliteral">'\0'</span>;
+<a name="l00230"></a>00230             rep_-&gt;capacity = cap;
+<a name="l00231"></a>00231         }
+<a name="l00232"></a>00232         <span class="keywordflow">else</span>
 <a name="l00233"></a>00233         {
-<a name="l00234"></a>00234             operator delete(rep_);
+<a name="l00234"></a>00234             rep_ = &amp;nullrep_;
 <a name="l00235"></a>00235         }
 <a name="l00236"></a>00236     }
 <a name="l00237"></a>00237 
-<a name="l00238"></a>00238     Rep * rep_;
-<a name="l00239"></a>00239     <span class="keyword">static</span> Rep nullrep_;
-<a name="l00240"></a>00240 
-<a name="l00241"></a>00241 } ;
-<a name="l00242"></a>00242 
-<a name="l00243"></a>00243 
-<a name="l00244"></a>00244 <span class="keyword">inline</span> <span class="keywordtype">bool</span> operator == (<span class="keyword">const</span> TiXmlString &amp; a, <span class="keyword">const</span> TiXmlString &amp; b)
-<a name="l00245"></a>00245 {
-<a name="l00246"></a>00246     <span class="keywordflow">return</span>    ( a.length() == b.length() )              <span class="comment">// optimization on some platforms</span>
-<a name="l00247"></a>00247            &amp;&amp; ( strcmp(a.c_str(), b.c_str()) == 0 );    <span class="comment">// actual compare</span>
-<a name="l00248"></a>00248 }
-<a name="l00249"></a>00249 <span class="keyword">inline</span> <span class="keywordtype">bool</span> operator &lt; (<span class="keyword">const</span> TiXmlString &amp; a, <span class="keyword">const</span> TiXmlString &amp; b)
-<a name="l00250"></a>00250 {
-<a name="l00251"></a>00251     <span class="keywordflow">return</span> strcmp(a.c_str(), b.c_str()) &lt; 0;
-<a name="l00252"></a>00252 }
-<a name="l00253"></a>00253 
-<a name="l00254"></a>00254 <span class="keyword">inline</span> <span class="keywordtype">bool</span> operator != (<span class="keyword">const</span> TiXmlString &amp; a, <span class="keyword">const</span> TiXmlString &amp; b) { <span class="keywordflow">return</span> !(a == b); }
-<a name="l00255"></a>00255 <span class="keyword">inline</span> <span class="keywordtype">bool</span> operator &gt;  (<span class="keyword">const</span> TiXmlString &amp; a, <span class="keyword">const</span> TiXmlString &amp; b) { <span class="keywordflow">return</span> b &lt; a; }
-<a name="l00256"></a>00256 <span class="keyword">inline</span> <span class="keywordtype">bool</span> operator &lt;= (<span class="keyword">const</span> TiXmlString &amp; a, <span class="keyword">const</span> TiXmlString &amp; b) { <span class="keywordflow">return</span> !(b &lt; a); }
-<a name="l00257"></a>00257 <span class="keyword">inline</span> <span class="keywordtype">bool</span> operator &gt;= (<span class="keyword">const</span> TiXmlString &amp; a, <span class="keyword">const</span> TiXmlString &amp; b) { <span class="keywordflow">return</span> !(a &lt; b); }
-<a name="l00258"></a>00258 
-<a name="l00259"></a>00259 <span class="keyword">inline</span> <span class="keywordtype">bool</span> operator == (<span class="keyword">const</span> TiXmlString &amp; a, <span class="keyword">const</span> <span class="keywordtype">char</span>* b) { <span class="keywordflow">return</span> strcmp(a.c_str(), b) == 0; }
-<a name="l00260"></a>00260 <span class="keyword">inline</span> <span class="keywordtype">bool</span> operator == (<span class="keyword">const</span> <span class="keywordtype">char</span>* a, <span class="keyword">const</span> TiXmlString &amp; b) { <span class="keywordflow">return</span> b == a; }
-<a name="l00261"></a>00261 <span class="keyword">inline</span> <span class="keywordtype">bool</span> operator != (<span class="keyword">const</span> TiXmlString &amp; a, <span class="keyword">const</span> <span class="keywordtype">char</span>* b) { <span class="keywordflow">return</span> !(a == b); }
-<a name="l00262"></a>00262 <span class="keyword">inline</span> <span class="keywordtype">bool</span> operator != (<span class="keyword">const</span> <span class="keywordtype">char</span>* a, <span class="keyword">const</span> TiXmlString &amp; b) { <span class="keywordflow">return</span> !(b == a); }
-<a name="l00263"></a>00263 
-<a name="l00264"></a>00264 TiXmlString operator + (<span class="keyword">const</span> TiXmlString &amp; a, <span class="keyword">const</span> TiXmlString &amp; b);
-<a name="l00265"></a>00265 TiXmlString operator + (<span class="keyword">const</span> TiXmlString &amp; a, <span class="keyword">const</span> <span class="keywordtype">char</span>* b);
-<a name="l00266"></a>00266 TiXmlString operator + (<span class="keyword">const</span> <span class="keywordtype">char</span>* a, <span class="keyword">const</span> TiXmlString &amp; b);
-<a name="l00267"></a>00267 
-<a name="l00268"></a>00268 
-<a name="l00269"></a>00269 <span class="comment">/*</span>
-<a name="l00270"></a>00270 <span class="comment">   TiXmlOutStream is an emulation of std::ostream. It is based on TiXmlString.</span>
-<a name="l00271"></a>00271 <span class="comment">   Only the operators that we need for TinyXML have been developped.</span>
-<a name="l00272"></a>00272 <span class="comment">*/</span>
-<a name="l00273"></a>00273 <span class="keyword">class </span>TiXmlOutStream : <span class="keyword">public</span> TiXmlString
-<a name="l00274"></a>00274 {
-<a name="l00275"></a>00275 <span class="keyword">public</span> :
+<a name="l00238"></a>00238     <span class="keywordtype">void</span> quit()
+<a name="l00239"></a>00239     {
+<a name="l00240"></a>00240         <span class="keywordflow">if</span> (rep_ != &amp;nullrep_)
+<a name="l00241"></a>00241         {
+<a name="l00242"></a>00242             <span class="keyword">delete</span> [] rep_;
+<a name="l00243"></a>00243         }
+<a name="l00244"></a>00244     }
+<a name="l00245"></a>00245 
+<a name="l00246"></a>00246     Rep * rep_;
+<a name="l00247"></a>00247     <span class="keyword">static</span> Rep nullrep_;
+<a name="l00248"></a>00248 
+<a name="l00249"></a>00249 } ;
+<a name="l00250"></a>00250 
+<a name="l00251"></a>00251 
+<a name="l00252"></a>00252 <span class="keyword">inline</span> <span class="keywordtype">bool</span> operator == (<span class="keyword">const</span> TiXmlString &amp; a, <span class="keyword">const</span> TiXmlString &amp; b)
+<a name="l00253"></a>00253 {
+<a name="l00254"></a>00254     <span class="keywordflow">return</span>    ( a.length() == b.length() )              <span class="comment">// optimization on some platforms</span>
+<a name="l00255"></a>00255            &amp;&amp; ( strcmp(a.c_str(), b.c_str()) == 0 );    <span class="comment">// actual compare</span>
+<a name="l00256"></a>00256 }
+<a name="l00257"></a>00257 <span class="keyword">inline</span> <span class="keywordtype">bool</span> operator &lt; (<span class="keyword">const</span> TiXmlString &amp; a, <span class="keyword">const</span> TiXmlString &amp; b)
+<a name="l00258"></a>00258 {
+<a name="l00259"></a>00259     <span class="keywordflow">return</span> strcmp(a.c_str(), b.c_str()) &lt; 0;
+<a name="l00260"></a>00260 }
+<a name="l00261"></a>00261 
+<a name="l00262"></a>00262 <span class="keyword">inline</span> <span class="keywordtype">bool</span> operator != (<span class="keyword">const</span> TiXmlString &amp; a, <span class="keyword">const</span> TiXmlString &amp; b) { <span class="keywordflow">return</span> !(a == b); }
+<a name="l00263"></a>00263 <span class="keyword">inline</span> <span class="keywordtype">bool</span> operator &gt;  (<span class="keyword">const</span> TiXmlString &amp; a, <span class="keyword">const</span> TiXmlString &amp; b) { <span class="keywordflow">return</span> b &lt; a; }
+<a name="l00264"></a>00264 <span class="keyword">inline</span> <span class="keywordtype">bool</span> operator &lt;= (<span class="keyword">const</span> TiXmlString &amp; a, <span class="keyword">const</span> TiXmlString &amp; b) { <span class="keywordflow">return</span> !(b &lt; a); }
+<a name="l00265"></a>00265 <span class="keyword">inline</span> <span class="keywordtype">bool</span> operator &gt;= (<span class="keyword">const</span> TiXmlString &amp; a, <span class="keyword">const</span> TiXmlString &amp; b) { <span class="keywordflow">return</span> !(a &lt; b); }
+<a name="l00266"></a>00266 
+<a name="l00267"></a>00267 <span class="keyword">inline</span> <span class="keywordtype">bool</span> operator == (<span class="keyword">const</span> TiXmlString &amp; a, <span class="keyword">const</span> <span class="keywordtype">char</span>* b) { <span class="keywordflow">return</span> strcmp(a.c_str(), b) == 0; }
+<a name="l00268"></a>00268 <span class="keyword">inline</span> <span class="keywordtype">bool</span> operator == (<span class="keyword">const</span> <span class="keywordtype">char</span>* a, <span class="keyword">const</span> TiXmlString &amp; b) { <span class="keywordflow">return</span> b == a; }
+<a name="l00269"></a>00269 <span class="keyword">inline</span> <span class="keywordtype">bool</span> operator != (<span class="keyword">const</span> TiXmlString &amp; a, <span class="keyword">const</span> <span class="keywordtype">char</span>* b) { <span class="keywordflow">return</span> !(a == b); }
+<a name="l00270"></a>00270 <span class="keyword">inline</span> <span class="keywordtype">bool</span> operator != (<span class="keyword">const</span> <span class="keywordtype">char</span>* a, <span class="keyword">const</span> TiXmlString &amp; b) { <span class="keywordflow">return</span> !(b == a); }
+<a name="l00271"></a>00271 
+<a name="l00272"></a>00272 TiXmlString operator + (<span class="keyword">const</span> TiXmlString &amp; a, <span class="keyword">const</span> TiXmlString &amp; b);
+<a name="l00273"></a>00273 TiXmlString operator + (<span class="keyword">const</span> TiXmlString &amp; a, <span class="keyword">const</span> <span class="keywordtype">char</span>* b);
+<a name="l00274"></a>00274 TiXmlString operator + (<span class="keyword">const</span> <span class="keywordtype">char</span>* a, <span class="keyword">const</span> TiXmlString &amp; b);
+<a name="l00275"></a>00275 
 <a name="l00276"></a>00276 
-<a name="l00277"></a>00277     <span class="comment">// TiXmlOutStream &lt;&lt; operator.</span>
-<a name="l00278"></a>00278     TiXmlOutStream &amp; operator &lt;&lt; (<span class="keyword">const</span> TiXmlString &amp; in)
-<a name="l00279"></a>00279     {
-<a name="l00280"></a>00280         *<span class="keyword">this</span> += in;
-<a name="l00281"></a>00281         <span class="keywordflow">return</span> *<span class="keyword">this</span>;
-<a name="l00282"></a>00282     }
-<a name="l00283"></a>00283 
-<a name="l00284"></a>00284     <span class="comment">// TiXmlOutStream &lt;&lt; operator.</span>
-<a name="l00285"></a>00285     TiXmlOutStream &amp; operator &lt;&lt; (<span class="keyword">const</span> <span class="keywordtype">char</span> * in)
-<a name="l00286"></a>00286     {
-<a name="l00287"></a>00287         *<span class="keyword">this</span> += in;
-<a name="l00288"></a>00288         <span class="keywordflow">return</span> *<span class="keyword">this</span>;
-<a name="l00289"></a>00289     }
-<a name="l00290"></a>00290 
-<a name="l00291"></a>00291 } ;
-<a name="l00292"></a>00292 
-<a name="l00293"></a>00293 <span class="preprocessor">#endif  // TIXML_STRING_INCLUDED</span>
-<a name="l00294"></a>00294 <span class="preprocessor"></span><span class="preprocessor">#endif  // TIXML_USE_STL</span>
-</pre></div><hr size="1"><address style="align: right;"><small>Generated on Sat Oct 8 14:15:30 2005 for TinyXml by&nbsp;
+<a name="l00277"></a>00277 <span class="comment">/*</span>
+<a name="l00278"></a>00278 <span class="comment">   TiXmlOutStream is an emulation of std::ostream. It is based on TiXmlString.</span>
+<a name="l00279"></a>00279 <span class="comment">   Only the operators that we need for TinyXML have been developped.</span>
+<a name="l00280"></a>00280 <span class="comment">*/</span>
+<a name="l00281"></a>00281 <span class="keyword">class </span>TiXmlOutStream : <span class="keyword">public</span> TiXmlString
+<a name="l00282"></a>00282 {
+<a name="l00283"></a>00283 <span class="keyword">public</span> :
+<a name="l00284"></a>00284 
+<a name="l00285"></a>00285     <span class="comment">// TiXmlOutStream &lt;&lt; operator.</span>
+<a name="l00286"></a>00286     TiXmlOutStream &amp; operator &lt;&lt; (<span class="keyword">const</span> TiXmlString &amp; in)
+<a name="l00287"></a>00287     {
+<a name="l00288"></a>00288         *<span class="keyword">this</span> += in;
+<a name="l00289"></a>00289         <span class="keywordflow">return</span> *<span class="keyword">this</span>;
+<a name="l00290"></a>00290     }
+<a name="l00291"></a>00291 
+<a name="l00292"></a>00292     <span class="comment">// TiXmlOutStream &lt;&lt; operator.</span>
+<a name="l00293"></a>00293     TiXmlOutStream &amp; operator &lt;&lt; (<span class="keyword">const</span> <span class="keywordtype">char</span> * in)
+<a name="l00294"></a>00294     {
+<a name="l00295"></a>00295         *<span class="keyword">this</span> += in;
+<a name="l00296"></a>00296         <span class="keywordflow">return</span> *<span class="keyword">this</span>;
+<a name="l00297"></a>00297     }
+<a name="l00298"></a>00298 
+<a name="l00299"></a>00299 } ;
+<a name="l00300"></a>00300 
+<a name="l00301"></a>00301 <span class="preprocessor">#endif  // TIXML_STRING_INCLUDED</span>
+<a name="l00302"></a>00302 <span class="preprocessor"></span><span class="preprocessor">#endif  // TIXML_USE_STL</span>
+</pre></div><hr size="1"><address style="align: right;"><small>Generated on Tue Oct 18 20:58:44 2005 for TinyXml by&nbsp;
 <a href="http://www.doxygen.org/index.html">
 <img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4 </small></address>
 </body>
diff --git a/docs/tinyxml_8h-source.html b/docs/tinyxml_8h-source.html
index 673687b..6900aa1 100644
--- a/docs/tinyxml_8h-source.html
+++ b/docs/tinyxml_8h-source.html
@@ -100,7 +100,7 @@
 <a name="l00093"></a>00093 
 <a name="l00094"></a>00094 <span class="keyword">const</span> <span class="keywordtype">int</span> TIXML_MAJOR_VERSION = 2;
 <a name="l00095"></a>00095 <span class="keyword">const</span> <span class="keywordtype">int</span> TIXML_MINOR_VERSION = 4;
-<a name="l00096"></a>00096 <span class="keyword">const</span> <span class="keywordtype">int</span> TIXML_PATCH_VERSION = 0;
+<a name="l00096"></a>00096 <span class="keyword">const</span> <span class="keywordtype">int</span> TIXML_PATCH_VERSION = 1;
 <a name="l00097"></a>00097 
 <a name="l00098"></a>00098 <span class="comment">/*  Internal structure for tracking location of items </span>
 <a name="l00099"></a>00099 <span class="comment">    in the XML file.</span>
@@ -1030,7 +1030,7 @@
 <a name="l01509"></a>01509 <span class="preprocessor"></span>
 <a name="l01510"></a>01510 <span class="preprocessor">#endif</span>
 <a name="l01511"></a>01511 <span class="preprocessor"></span>
-</pre></div><hr size="1"><address style="align: right;"><small>Generated on Sat Oct 8 14:15:30 2005 for TinyXml by&nbsp;
+</pre></div><hr size="1"><address style="align: right;"><small>Generated on Tue Oct 18 20:58:44 2005 for TinyXml by&nbsp;
 <a href="http://www.doxygen.org/index.html">
 <img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4 </small></address>
 </body>
diff --git a/docs/tutorial0.html b/docs/tutorial0.html
index 9625d37..2a079a8 100644
--- a/docs/tutorial0.html
+++ b/docs/tutorial0.html
@@ -7,316 +7,707 @@
 <div class="qindex"><a class="qindex" href="index.html">Main&nbsp;Page</a> | <a class="qindex" href="hierarchy.html">Class&nbsp;Hierarchy</a> | <a class="qindex" href="annotated.html">Class&nbsp;List</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Class&nbsp;Members</a></div>
 <div class="nav">
 <a class="el" href="index.html">index</a></div>
-<h1><a class="anchor" name="tutorial0">TinyXML Tutorial</a></h1><h1>Tutorial Preliminary </h1>
+<h1><a class="anchor" name="tutorial0">TinyXML Tutorial</a></h1><h1>What is this? </h1>
 <p>
-These pages contains a bunch of examples of using TinyXml.<p>
-Each demo is written in a standalone function. If you want to try the code, all you need to do is copy/paste the code into a file, then have a main to call it.<p>
-So if the example has a function:<p>
-<div class="fragment"><pre class="fragment">	void write_simple_doc()
-	{
-		...
-	}
-	</pre></div><p>
-then the *complete* program you need to try it is:<p>
-<div class="fragment"><pre class="fragment">	#include "stdafx.h" // &lt;-- you MIGHT need this
-	#include "tinyxml.h" // &lt;-- you definitely need this ;)
-
-	void write_simple_doc()
-	{
-		...
-	}
-
-	void main( void )
-	{
-		write_simple_doc();
-	}
-	</pre></div><p>
-Two example XML datasets/files will be used. The first looks like this:<p>
-<div class="fragment"><pre class="fragment">	&lt;?xml version="1.0" ?&gt;
-	&lt;Hello&gt;World&lt;/Hello&gt;
-	</pre></div><p>
-The other:<p>
-<div class="fragment"><pre class="fragment">	&lt;?xml version="1.0" ?&gt;
-	&lt;poetry&gt;
-		&lt;verse&gt;
-			Alas
-			  Great Whatever
-				Alas (again)
-		&lt;/verse&gt;
-	&lt;/poetry&gt;
-	</pre></div><p>
+This tutorial has a few tips and suggestions on how to use TinyXML effectively.<p>
+I've also tried to include some C++ tips like how to convert strings to integers and vice versa. This isn't anything to do with TinyXML itself, but it may helpful for your project so I've put it in anyway.<p>
+If you don't know basic C++ concepts this tutorial won't be useful. Likewise if you don't know what a DOM is, look elsewhere first.<p>
+<h1>Before we start </h1>
+<p>
+Some example XML datasets/files will be used.<p>
+example1.xml:<p>
+<div class="fragment"><pre class="fragment">&lt;?xml version="1.0" ?&gt;
+&lt;Hello&gt;World&lt;/Hello&gt;
+</pre></div><p>
+example2.xml:<p>
+<div class="fragment"><pre class="fragment">&lt;?xml version="1.0" ?&gt;
+&lt;poetry&gt;
+	&lt;verse&gt;
+		Alas
+		  Great World
+			Alas (again)
+	&lt;/verse&gt;
+&lt;/poetry&gt;
+</pre></div><p>
+example3.xml:<p>
+<div class="fragment"><pre class="fragment">&lt;?xml version="1.0" ?&gt;
+&lt;shapes&gt;
+	&lt;circle name="int-based" x="20" y="30" r="50" /&gt;
+	&lt;point name="float-based" x="3.5" y="52.1" /&gt;
+&lt;/shapes&gt;
+</pre></div><p>
+example4.xml<p>
+<div class="fragment"><pre class="fragment">&lt;?xml version="1.0" ?&gt;
+&lt;MyApp&gt;
+    &lt;!-- Settings for MyApp --&gt;
+    &lt;Messages&gt;
+        &lt;Welcome&gt;Welcome to MyApp&lt;/Welcome&gt;
+        &lt;Farewell&gt;Thank you for using MyApp&lt;/Farewell&gt;
+    &lt;/Messages&gt;
+    &lt;Windows&gt;
+        &lt;Window name="MainFrame" x="5" y="15" w="400" h="250" /&gt;
+    &lt;/Windows&gt;
+    &lt;Connection ip="192.168.0.1" timeout="123.456000" /&gt;
+&lt;/MyApp&gt;
+</pre></div><p>
 <h1>Getting Started </h1>
 <p>
 <h2>Load XML from a file </h2>
 <p>
-Loading a file is as simple as:<p>
-<div class="fragment"><pre class="fragment">	void load_file( )
+The simplest way to load a file into a TinyXML DOM is:<p>
+<div class="fragment"><pre class="fragment">TiXmlDocument doc( "demo.xml" );
+doc.LoadFile();
+</pre></div><p>
+A more real-world usage is shown below. This will load the file and display the contents to STDOUT:<p>
+<div class="fragment"><pre class="fragment">// load the named file and dump its structure to STDOUT
+void dump_to_stdout(const char* pFilename)
+{
+	TiXmlDocument doc(pFilename);
+	bool loadOkay = doc.LoadFile();
+	if (loadOkay)
 	{
-		TiXmlDocument doc( "demo.xml" );
-		bool loadOkay = doc.LoadFile();
-
-		if ( loadOkay )
-		{
-			// Your document is loaded - do what you like
-			// with it.
-			//
-			// Here we'll dump the structure to STDOUT,
-			// just for example
-			dump_to_stdout( &amp;doc );
-		}
-		else
-		{
-			// load failed
-		}
+		printf("\n%s:\n", pFilename);
+		dump_to_stdout( &amp;doc ); // defined later in the tutorial
 	}
-	</pre></div><p>
-The ``dump_to_stdout`` function is defined in the section `Dump structure of a Document to STDOUT` below. If you run this program with this XML:<p>
-<div class="fragment"><pre class="fragment">	&lt;?xml version="1.0" ?&gt;
-	&lt;Hello&gt;World&lt;/Hello&gt;
-	</pre></div><p>
-You'll see this:<p>
-<div class="fragment"><pre class="fragment">	DOCUMENT
-	+ DECLARATION
-	+ ELEMENT Hello
-	  + TEXT[World]
-	</pre></div><p>
+	else
+	{
+		printf("Failed to load file \"%s\"\n", pFilename);
+	}
+}
+</pre></div><p>
+A simple demonstration of this function is to use a main like this:<p>
+<div class="fragment"><pre class="fragment">int main(void)
+{
+	dump_to_stdout("example1.xml");
+	return 0;
+}
+</pre></div><p>
+Recall that Example 1 XML is:<p>
+<div class="fragment"><pre class="fragment">&lt;?xml version="1.0" ?&gt;
+&lt;Hello&gt;World&lt;/Hello&gt;
+</pre></div><p>
+Running the program with this XML will display this in the console/DOS window:<p>
+<div class="fragment"><pre class="fragment">DOCUMENT
++ DECLARATION
++ ELEMENT Hello
+  + TEXT[World]
+</pre></div><p>
+The ``dump_to_stdout`` function is defined later in this tutorial and is useful if you want to understand recursive traversal of a DOM.<p>
 <h2>Building Documents Programatically </h2>
 <p>
-Example:<p>
-<div class="fragment"><pre class="fragment">	void write_simple_doc( )
-	{
-		// Make xml: &lt;?xml ..&gt;&lt;Hello&gt;World&lt;/Hello&gt;
-		TiXmlDocument doc;
-		TiXmlDeclaration * decl = new TiXmlDeclaration( "1.0", "", "" );
-		TiXmlElement * element = new TiXmlElement( "Hello" );
-		TiXmlText * text = new TiXmlText( "World" );
-		element-&gt;LinkEndChild( text );
-		doc.LinkEndChild( decl );
-		doc.LinkEndChild( element );
-		
-		dump_to_stdout( &amp;doc );
-		doc.SaveFile( "madeByHand.xml" );
-	}
-	</pre></div><p>
-Alternatively:<p>
-<div class="fragment"><pre class="fragment">	void write_simple_doc2( )
-	{
-		// same as write_simple_doc1 but add each node
-		// as early as possible into the tree.
+This is how to build Example 1 pragmatically:<p>
+<div class="fragment"><pre class="fragment">void build_simple_doc( )
+{
+	// Make xml: &lt;?xml ..&gt;&lt;Hello&gt;World&lt;/Hello&gt;
+	TiXmlDocument doc;
+	TiXmlDeclaration * decl = new TiXmlDeclaration( "1.0", "", "" );
+	TiXmlElement * element = new TiXmlElement( "Hello" );
+	TiXmlText * text = new TiXmlText( "World" );
+	element-&gt;LinkEndChild( text );
+	doc.LinkEndChild( decl );
+	doc.LinkEndChild( element );
+	doc.SaveFile( "madeByHand.xml" );
+}
+</pre></div><p>
+This can be loaded and displayed on the console with:<p>
+<div class="fragment"><pre class="fragment">dump_to_stdout("madeByHand.xml"); // this func defined later in the tutorial
+</pre></div><p>
+and you'll see it is identical to Example 1:<p>
+<div class="fragment"><pre class="fragment">madeByHand.xml:
+Document
++ Declaration
++ Element [Hello]
+  + Text: [World]
+</pre></div><p>
+This code produces exactly the same XML DOM but it shows a different ordering to node creation and linking:<p>
+<div class="fragment"><pre class="fragment">void write_simple_doc2( )
+{
+	// same as write_simple_doc1 but add each node
+	// as early as possible into the tree.
+
+	TiXmlDocument doc;
+	TiXmlDeclaration * decl = new TiXmlDeclaration( "1.0", "", "" );
+	doc.LinkEndChild( decl );
 	
-		TiXmlDocument doc;
-		TiXmlDeclaration * decl = new TiXmlDeclaration( "1.0", "", "" );
-		doc.LinkEndChild( decl );
-		
-		TiXmlElement * element = new TiXmlElement( "Hello" );
-		doc.LinkEndChild( element );
-		
-		TiXmlText * text = new TiXmlText( "World" );
-		element-&gt;LinkEndChild( text );
-		
-		dump_to_stdout( &amp;doc );
-		doc.SaveFile( "madeByHand2.xml" );
-	}
-	</pre></div><p>
+	TiXmlElement * element = new TiXmlElement( "Hello" );
+	doc.LinkEndChild( element );
+	
+	TiXmlText * text = new TiXmlText( "World" );
+	element-&gt;LinkEndChild( text );
+	
+	doc.SaveFile( "madeByHand2.xml" );
+}
+</pre></div><p>
 Both of these produce the same XML, namely:<p>
-<div class="fragment"><pre class="fragment">	&lt;?xml version="1.0" ?&gt;
-	&lt;Hello&gt;World&lt;/Hello&gt;
-	</pre></div><p>
+<div class="fragment"><pre class="fragment">&lt;?xml version="1.0" ?&gt;
+&lt;Hello&gt;World&lt;/Hello&gt;
+</pre></div><p>
 Or in structure form:<p>
-<div class="fragment"><pre class="fragment">	DOCUMENT
-	+ DECLARATION
-	+ ELEMENT Hello
-	  + TEXT[World]
-	</pre></div><p>
-<h2>Saving Documents to File </h2>
+<div class="fragment"><pre class="fragment">DOCUMENT
++ DECLARATION
++ ELEMENT Hello
+  + TEXT[World]
+</pre></div><p>
+<h2>Attributes </h2>
 <p>
-This function:<p>
-<div class="fragment"><pre class="fragment">	void write_simple_doc3( )  
-	{  
-		// This example courtesy of polocolege
-	 
-		TiXmlDocument doc;  
-		TiXmlDeclaration * decl = new TiXmlDeclaration( "1.0", "", "" );  
-		doc.LinkEndChild( decl );  
-	 
-		TiXmlElement * element = new TiXmlElement( "Hello" );  
-		doc.LinkEndChild( element );  
-	 
-		TiXmlText * text = new TiXmlText( "Opening a new salutation" );  
-		element-&gt;LinkEndChild( text );  
-	 
-		TiXmlElement * element2 = new TiXmlElement( "Greeting" );  
-		element-&gt;LinkEndChild( element2 );  
-	 
-		TiXmlText * text2 = new TiXmlText( "How are you?" );  
-		element2-&gt;LinkEndChild( text2 );  
-	 
-		TiXmlElement * element3 = new TiXmlElement( "Language" );  
-		element2-&gt;LinkEndChild( element3 );  
-	 
-		TiXmlText * text3 = new TiXmlText( "English" );  
-		element3-&gt;LinkEndChild( text3 );  
-	 
-		TiXmlElement * element4 = new TiXmlElement( "Exclamation" );  
-		element-&gt;LinkEndChild( element4 );  
-	 
-		TiXmlText * text4 = new TiXmlText( "You have children!" );  
-		element4-&gt;LinkEndChild( text4 );  
-	 
-		dump_to_stdout( &amp;doc );
-		doc.SaveFile( "madeByHand3.xml" );  
-	}  
-	</pre></div><p>
-Produces this structure:<p>
-<div class="fragment"><pre class="fragment">	Document
-	+ Declaration
-	+ Element "Hello"
-	  + Text: [Opening a new salutation]
-	  + Element "Greeting"
-		+ Text: [How are you?]
-		+ Element "Language"
-		  + Text: [English]
-	  + Element "Exclamation"
-		+ Text: [You have children!]
-	</pre></div><p>
-The file ``madeByHand3.xml`` looks exactly like this (including indents):<p>
-<div class="fragment"><pre class="fragment">	&lt;?xml version="1.0" ?&gt;
-	&lt;Hello&gt;Opening a new salutation
-	    &lt;Greeting&gt;How are you?
-	        &lt;Language&gt;English&lt;/Language&gt;
-	    &lt;/Greeting&gt;
-	    &lt;Exclamation&gt;You have children!&lt;/Exclamation&gt;
-	&lt;/Hello&gt;
-	</pre></div><p>
+Given an existing node, settings attributes is easy:<p>
+<div class="fragment"><pre class="fragment">window = new TiXmlElement( "Demo" );  
+window-&gt;SetAttribute("name", "Circle");
+window-&gt;SetAttribute("x", 5);
+window-&gt;SetAttribute("y", 15);
+window-&gt;SetDoubleAttribute("radius", 3.14159);
+</pre></div><p>
+You can it also work with the <a class="el" href="classTiXmlAttribute.html">TiXmlAttribute</a> objects if you want.<p>
+The following code shows one way (not the only way) to get all attributes of an element, print the name and string value, and if the value can be converted to an integer or double, print that value too:<p>
+<div class="fragment"><pre class="fragment">// print all attributes of pElement.
+// returns the number of attributes printed
+int dump_attribs_to_stdout(TiXmlElement* pElement, unsigned int indent)
+{
+	if ( !pElement ) return 0;
+
+	TiXmlAttribute* pAttrib=pElement-&gt;FirstAttribute();
+	int i=0;
+	int ival;
+	double dval;
+	const char* pIndent=getIndent(indent);
+	printf("\n");
+	while (pAttrib)
+	{
+		printf( "%s%s: value=[%s]", pIndent, pAttrib-&gt;Name(), pAttrib-&gt;Value());
+
+		if (pAttrib-&gt;QueryIntValue(&amp;ival)==TIXML_SUCCESS)    printf( " int=%d", ival);
+		if (pAttrib-&gt;QueryDoubleValue(&amp;dval)==TIXML_SUCCESS) printf( " d=%1.1f", dval);
+		printf( "\n" );
+		i++;
+		pAttrib=pAttrib-&gt;Next();
+	}
+	return i;
+}
+</pre></div><p>
+<h2>Writing a document to a file </h2>
+<p>
+Writing a pre-built DOM to a file is trivial:<p>
+<div class="fragment"><pre class="fragment">doc.SaveFile( saveFilename );  
+</pre></div><p>
+Recall, for example, example 4:<p>
+<div class="fragment"><pre class="fragment">&lt;?xml version="1.0" ?&gt;
+&lt;MyApp&gt;
+    &lt;!-- Settings for MyApp --&gt;
+    &lt;Messages&gt;
+        &lt;Welcome&gt;Welcome to MyApp&lt;/Welcome&gt;
+        &lt;Farewell&gt;Thank you for using MyApp&lt;/Farewell&gt;
+    &lt;/Messages&gt;
+    &lt;Windows&gt;
+        &lt;Window name="MainFrame" x="5" y="15" w="400" h="250" /&gt;
+    &lt;/Windows&gt;
+    &lt;Connection ip="192.168.0.1" timeout="123.456000" /&gt;
+&lt;/MyApp&gt;
+</pre></div><p>
+The following function builds this DOM and writes the file "appsettings.xml":<p>
+<div class="fragment"><pre class="fragment">void write_app_settings_doc( )  
+{  
+	TiXmlDocument doc;  
+	TiXmlElement* msg;
+ 	TiXmlDeclaration* decl = new TiXmlDeclaration( "1.0", "", "" );  
+	doc.LinkEndChild( decl );  
+ 
+	TiXmlElement * root = new TiXmlElement( "MyApp" );  
+	doc.LinkEndChild( root );  
+
+	TiXmlComment * comment = new TiXmlComment();
+	comment-&gt;SetValue(" Settings for MyApp " );  
+	root-&gt;LinkEndChild( comment );  
+ 
+	TiXmlElement * msgs = new TiXmlElement( "Messages" );  
+	root-&gt;LinkEndChild( msgs );  
+ 
+	msg = new TiXmlElement( "Welcome" );  
+	msg-&gt;LinkEndChild( new TiXmlText( "Welcome to MyApp" ));  
+	msgs-&gt;LinkEndChild( msg );  
+ 
+	msg = new TiXmlElement( "Farewell" );  
+	msg-&gt;LinkEndChild( new TiXmlText( "Thank you for using MyApp" ));  
+	msgs-&gt;LinkEndChild( msg );  
+ 
+	TiXmlElement * windows = new TiXmlElement( "Windows" );  
+	root-&gt;LinkEndChild( windows );  
+
+	TiXmlElement * window;
+	window = new TiXmlElement( "Window" );  
+	windows-&gt;LinkEndChild( window );  
+	window-&gt;SetAttribute("name", "MainFrame");
+	window-&gt;SetAttribute("x", 5);
+	window-&gt;SetAttribute("y", 15);
+	window-&gt;SetAttribute("w", 400);
+	window-&gt;SetAttribute("h", 250);
+
+	TiXmlElement * cxn = new TiXmlElement( "Connection" );  
+	root-&gt;LinkEndChild( cxn );  
+	cxn-&gt;SetAttribute("ip", "192.168.0.1");
+	cxn-&gt;SetDoubleAttribute("timeout", 123.456); // floating point attrib
+	
+	dump_to_stdout( &amp;doc );
+	doc.SaveFile( "appsettings.xml" );  
+} 
+</pre></div><p>
+The dump_to_stdout function will show this structure:<p>
+<div class="fragment"><pre class="fragment">Document
++ Declaration
++ Element [MyApp]
+ (No attributes)
+  + Comment: [ Settings for MyApp ]
+  + Element [Messages]
+ (No attributes)
+    + Element [Welcome]
+ (No attributes)
+      + Text: [Welcome to MyApp]
+    + Element [Farewell]
+ (No attributes)
+      + Text: [Thank you for using MyApp]
+  + Element [Windows]
+ (No attributes)
+    + Element [Window]
+      + name: value=[MainFrame]
+      + x: value=[5] int=5 d=5.0
+      + y: value=[15] int=15 d=15.0
+      + w: value=[400] int=400 d=400.0
+      + h: value=[250] int=250 d=250.0
+      5 attributes
+  + Element [Connection]
+    + ip: value=[192.168.0.1] int=192 d=192.2
+    + timeout: value=[123.456000] int=123 d=123.5
+    2 attributes
+</pre></div><p>
 I was surprised that TinyXml, by default, writes the XML in what other APIs call a "pretty" format - it modifies the whitespace of text of elements that contain other nodes so that writing the tree includes an indication of nesting level.<p>
 I haven't looked yet to see if there is a way to turn off indenting when writing a file - its bound to be easy.<p>
 [Lee: It's easy in STL mode, just use cout &lt;&lt; myDoc. Non-STL mode is always in "pretty" format. Adding a switch would be a nice feature and has been requested.]<p>
-<h1>Iterating Over Documents </h1>
+<h1>XML to/from C++ objects </h1>
 <p>
-<h2>Dump structure of a Document to STDOUT </h2>
+<h2>Intro </h2>
 <p>
-Often when you're starting its helpful and reassuring to know that you're document got loaded as you expect it to.<p>
-Below I've defined a function to walk a document and write contents to STDOUT:<p>
-<div class="fragment"><pre class="fragment">	// a utility function defining a very simple method to indent a line of text
-	const char * getIndent( unsigned int numIndents )
+This example assumes you're loading and saving your app settings in an XML file, e.g. something like example4.xml.<p>
+There are a number of ways to do this. For example, look into the TinyBind project at <a href="http://sourceforge.net/projects/tinybind">http://sourceforge.net/projects/tinybind</a><p>
+This section shows a plain-old approach to loading and saving a basic object structure using XML.<p>
+<h2>Set up your object classes </h2>
+<p>
+Start off with some basic classes like these:<p>
+<div class="fragment"><pre class="fragment">#include &lt;string&gt;
+#include &lt;map&gt;
+using namespace std;
+
+typedef std::map&lt;std::string,std::string&gt; MessageMap;
+
+// a basic window abstraction - demo purposes only
+class WindowSettings
+{
+public:
+	int x,y,w,h;
+	string name;
+
+	WindowSettings()
+		: x(0), y(0), w(100), h(100), name("Untitled")
 	{
-		static const char * pINDENT = "                                      + ";
-		static const unsigned int LENGTH = strlen( pINDENT );
+	}
+
+	WindowSettings(int x, int y, int w, int h, const string&amp; name)
+	{
+		this-&gt;x=x;
+		this-&gt;y=y;
+		this-&gt;w=w;
+		this-&gt;h=h;
+		this-&gt;name=name;
+	}
+};
+
+class ConnectionSettings
+{
+public:
+	string ip;
+	double timeout;
+};
+
+class AppSettings
+{
+public:
+	string m_name;
+	MessageMap m_messages;
+	list&lt;WindowSettings&gt; m_windows;
+	ConnectionSettings m_connection;
+
+	AppSettings() {}
+
+	void save(const char* pFilename);
+	void load(const char* pFilename);
 	
-		if ( numIndents &gt; LENGTH ) numIndents = LENGTH;
+	// just to show how to do it
+	void setDemoValues()
+	{
+		m_name="MyApp";
+		m_messages.clear();
+		m_messages["Welcome"]="Welcome to "+m_name;
+		m_messages["Farewell"]="Thank you for using "+m_name;
+		m_windows.clear();
+		m_windows.push_back(WindowSettings(15,15,400,250,"Main"));
+		m_connection.ip="Unknown";
+		m_connection.timeout=123.456;
+	}
+};
+</pre></div><p>
+This is a basic main() that shows how to create a default settings object tree, save it and load it again:<p>
+<div class="fragment"><pre class="fragment">int main(void)
+{
+	AppSettings settings;
 	
-		return &amp;pINDENT[ LENGTH-numIndents ];
+	settings.save("appsettings2.xml");
+	settings.load("appsettings2.xml");
+	return 0;
+}
+</pre></div><p>
+The following main() shows creation, modification, saving and then loading of a settings structure:<p>
+<div class="fragment"><pre class="fragment">int main(void)
+{
+	// block: customise and save settings
+	{
+		AppSettings settings;
+		settings.m_name="HitchHikerApp";
+		settings.m_messages["Welcome"]="Don't Panic";
+		settings.m_messages["Farewell"]="Thanks for all the fish";
+		settings.m_windows.push_back(WindowSettings(15,25,300,250,"BookFrame"));
+		settings.m_connection.ip="192.168.0.77";
+		settings.m_connection.timeout=42.0;
+
+		settings.save("appsettings2.xml");
 	}
 	
-	void dump_to_stdout( TiXmlNode * pParent, unsigned int indent = 0 )
+	// block: load settings
 	{
-		if ( !pParent ) return;
-	
-		TiXmlText *pText;
-		int t = pParent-&gt;Type();
-		printf( "%s", getIndent( indent));
-	
-		switch ( t )
+		AppSettings settings;
+		settings.load("appsettings2.xml");
+		printf("%s: %s\n", settings.m_name.c_str(), 
+			settings.m_messages["Welcome"].c_str());
+		WindowSettings &amp; w=settings.m_windows.front();
+		printf("%s: Show window '%s' at %d,%d (%d x %d)\n", 
+			settings.m_name.c_str(), w.name.c_str(), w.x, w.y, w.w, w.h);
+		printf("%s: %s\n", settings.m_name.c_str(), settings.m_messages["Farewell"].c_str());
+	}
+	return 0;
+}
+</pre></div><p>
+When the save() and load() are completed (see below), running this main() displays on the console:<p>
+<div class="fragment"><pre class="fragment">HitchHikerApp: Don't Panic
+HitchHikerApp: Show window 'BookFrame' at 15,25 (300 x 100)
+HitchHikerApp: Thanks for all the fish
+</pre></div><p>
+<h2>Encode C++ state as XML </h2>
+<p>
+There are lots of different ways to approach saving this to a file. Here's one:<p>
+<div class="fragment"><pre class="fragment">void AppSettings::save(const char* pFilename)
+{
+	TiXmlDocument doc;  
+	TiXmlElement* msg;
+	TiXmlComment * comment;
+	string s;
+ 	TiXmlDeclaration* decl = new TiXmlDeclaration( "1.0", "", "" );  
+	doc.LinkEndChild( decl ); 
+ 
+	TiXmlElement * root = new TiXmlElement(m_name.c_str());  
+	doc.LinkEndChild( root );  
+
+	comment = new TiXmlComment();
+	s=" Settings for "+m_name+" ";
+	comment-&gt;SetValue(s.c_str());  
+	root-&gt;LinkEndChild( comment );  
+
+	// block: messages
+	{
+		MessageMap::iterator iter;
+
+		TiXmlElement * msgs = new TiXmlElement( "Messages" );  
+		root-&gt;LinkEndChild( msgs );  
+ 
+		for (iter=m_messages.begin(); iter != m_messages.end(); iter++)
 		{
-		case TiXmlNode::DOCUMENT:
-			printf( "Document" );
-			break;
-	
-		case TiXmlNode::ELEMENT:
-			printf( "Element \"%s\"", pParent-&gt;Value() );
-			break;
-	
-		case TiXmlNode::COMMENT:
-			printf( "Comment: \"%s\"", pParent-&gt;Value());
-			break;
-	
-		case TiXmlNode::UNKNOWN:
-			printf( "Unknown" );
-			break;
-	
-		case TiXmlNode::TEXT:
-			pText = pParent-&gt;ToText();
-			printf( "Text: [%s]", pText-&gt;Value() );
-			break;
-	
-		case TiXmlNode::DECLARATION:
-			printf( "Declaration" );
-			break;
-		default:
-			break;
+			const string &amp; key=(*iter).first;
+			const string &amp; value=(*iter).second;
+			msg = new TiXmlElement(key.c_str());  
+			msg-&gt;LinkEndChild( new TiXmlText(value.c_str()));  
+			msgs-&gt;LinkEndChild( msg );  
 		}
+	}
+
+	// block: windows
+	{
+		TiXmlElement * windowsNode = new TiXmlElement( "Windows" );  
+		root-&gt;LinkEndChild( windowsNode );  
+
+		list&lt;WindowSettings&gt;::iterator iter;
+
+		for (iter=m_windows.begin(); iter != m_windows.end(); iter++)
+		{
+			const WindowSettings&amp; w=*iter;
+
+			TiXmlElement * window;
+			window = new TiXmlElement( "Window" );  
+			windowsNode-&gt;LinkEndChild( window );  
+			window-&gt;SetAttribute("name", w.name.c_str());
+			window-&gt;SetAttribute("x", w.x);
+			window-&gt;SetAttribute("y", w.y);
+			window-&gt;SetAttribute("w", w.w);
+			window-&gt;SetAttribute("h", w.h);
+		}
+	}
+
+	// block: connection
+	{
+		TiXmlElement * cxn = new TiXmlElement( "Connection" );  
+		root-&gt;LinkEndChild( cxn );  
+		cxn-&gt;SetAttribute("ip", m_connection.ip.c_str());
+		cxn-&gt;SetDoubleAttribute("timeout", m_connection.timeout); 
+	}
+
+	doc.SaveFile(pFilename);  
+}
+</pre></div><p>
+Running this with the modified main produces this file:<p>
+<div class="fragment"><pre class="fragment">&lt;?xml version="1.0" ?&gt;
+&lt;HitchHikerApp&gt;
+    &lt;!-- Settings for HitchHikerApp --&gt;
+    &lt;Messages&gt;
+        &lt;Farewell&gt;Thanks for all the fish&lt;/Farewell&gt;
+        &lt;Welcome&gt;Don&amp;apos;t Panic&lt;/Welcome&gt;
+    &lt;/Messages&gt;
+    &lt;Windows&gt;
+        &lt;Window name="BookFrame" x="15" y="25" w="300" h="250" /&gt;
+    &lt;/Windows&gt;
+    &lt;Connection ip="192.168.0.77" timeout="42.000000" /&gt;
+&lt;/HitchHikerApp&gt;
+</pre></div><p>
+<h2>Decoding state from XML </h2>
+<p>
+As with encoding objects, there are a number of approaches to decoding XML into your own C++ object structure. The following approach uses TiXmlHandles.<p>
+<div class="fragment"><pre class="fragment">void AppSettings::load(const char* pFilename)
+{
+	TiXmlDocument doc(pFilename);
+	if (!doc.LoadFile()) return;
+
+	TiXmlHandle hDoc(&amp;doc);
+	TiXmlElement* pElem;
+	TiXmlHandle hRoot(0);
+
+	// block: name
+	{
+		pElem=hDoc.FirstChildElement().Element();
+		// should always have a valid root but handle gracefully if it does
+		if (!pElem) return;
+		m_name=pElem-&gt;Value();
+
+		// save this for later
+		hRoot=TiXmlHandle(pElem);
+	}
+
+	// block: string table
+	{
+		m_messages.clear(); // trash existing table
+
+		pElem=hRoot.FirstChild( "Messages" ).FirstChild().Element();
+		for( pElem; pElem; pElem=pElem-&gt;NextSiblingElement())
+		{
+			const char *pKey=pElem-&gt;Value();
+			const char *pText=pElem-&gt;GetText();
+			if (pKey &amp;&amp; pText) 
+			{
+				m_messages[pKey]=pText;
+			}
+		}
+	}
+
+	// block: windows
+	{
+		m_windows.clear(); // trash existing list
+
+		TiXmlElement* pWindowNode=hRoot.FirstChild( "Windows" ).FirstChild().Element();
+		for( pWindowNode; pWindowNode; pWindowNode=pWindowNode-&gt;NextSiblingElement())
+		{
+			WindowSettings w;
+			const char *pName=pWindowNode-&gt;Attribute("name");
+			if (pName) w.name=pName;
+			
+			pWindowNode-&gt;QueryIntAttribute("x", &amp;w.x); // If this fails, original value is left as-is
+			pWindowNode-&gt;QueryIntAttribute("y", &amp;w.y);
+			pWindowNode-&gt;QueryIntAttribute("w", &amp;w.w);
+			pWindowNode-&gt;QueryIntAttribute("hh", &amp;w.h);
+
+			m_windows.push_back(w);
+		}
+	}
+
+	// block: connection
+	{
+		pElem=hRoot.FirstChild("Connection").Element();
+		if (pElem)
+		{
+			m_connection.ip=pElem-&gt;Attribute("ip");
+			pElem-&gt;QueryDoubleAttribute("timeout",&amp;m_connection.timeout);
+		}
+	}
+}
+</pre></div><p>
+<h1>Full listing for dump_to_stdout </h1>
+<p>
+Below is a copy-and-paste demo program for loading arbitrary XML files and dumping the structure to STDOUT using the recursive traversal listed above.<p>
+<div class="fragment"><pre class="fragment">// tutorial demo program
+#include "stdafx.h"
+#include "tinyxml.h"
+
+// ----------------------------------------------------------------------
+// STDOUT dump and indenting utility functions
+// ----------------------------------------------------------------------
+const unsigned int NUM_INDENTS_PER_SPACE=2;
+
+const char * getIndent( unsigned int numIndents )
+{
+	static const char * pINDENT="                                      + ";
+	static const unsigned int LENGTH=strlen( pINDENT );
+	unsigned int n=numIndents*NUM_INDENTS_PER_SPACE;
+	if ( n &gt; LENGTH ) n = LENGTH;
+
+	return &amp;pINDENT[ LENGTH-n ];
+}
+
+// same as getIndent but no "+" at the end
+const char * getIndentAlt( unsigned int numIndents )
+{
+	static const char * pINDENT="                                        ";
+	static const unsigned int LENGTH=strlen( pINDENT );
+	unsigned int n=numIndents*NUM_INDENTS_PER_SPACE;
+	if ( n &gt; LENGTH ) n = LENGTH;
+
+	return &amp;pINDENT[ LENGTH-n ];
+}
+
+int dump_attribs_to_stdout(TiXmlElement* pElement, unsigned int indent)
+{
+	if ( !pElement ) return 0;
+
+	TiXmlAttribute* pAttrib=pElement-&gt;FirstAttribute();
+	int i=0;
+	int ival;
+	double dval;
+	const char* pIndent=getIndent(indent);
+	printf("\n");
+	while (pAttrib)
+	{
+		printf( "%s%s: value=[%s]", pIndent, pAttrib-&gt;Name(), pAttrib-&gt;Value());
+
+		if (pAttrib-&gt;QueryIntValue(&amp;ival)==TIXML_SUCCESS)    printf( " int=%d", ival);
+		if (pAttrib-&gt;QueryDoubleValue(&amp;dval)==TIXML_SUCCESS) printf( " d=%1.1f", dval);
 		printf( "\n" );
-	
-		TiXmlNode * pChild;
-	
-		for ( pChild = pParent-&gt;FirstChild(); pChild != 0; pChild = pChild-&gt;NextSibling()) 
-		{
-			dump_to_stdout( pChild, indent+2 );
-		}
+		i++;
+		pAttrib=pAttrib-&gt;Next();
 	}
-	</pre></div><p>
-To load a file and dump its structure:<p>
-<div class="fragment"><pre class="fragment">	void load_and_display( )
+	return i;	
+}
+
+void dump_to_stdout( TiXmlNode* pParent, unsigned int indent = 0 )
+{
+	if ( !pParent ) return;
+
+	TiXmlNode* pChild;
+	TiXmlText* pText;
+	int t = pParent-&gt;Type();
+	printf( "%s", getIndent(indent));
+	int num;
+
+	switch ( t )
 	{
-		// important for the poetry demo, but you may not need this 
-		// in your own projects
-		TiXmlBase::SetCondenseWhiteSpace( false );
-	
-		TiXmlDocument doc( "demo.xml" );
-		bool loadOkay = doc.LoadFile();
-	
-		if ( loadOkay )
+	case TiXmlNode::DOCUMENT:
+		printf( "Document" );
+		break;
+
+	case TiXmlNode::ELEMENT:
+		printf( "Element [%s]", pParent-&gt;Value() );
+		num=dump_attribs_to_stdout(pParent-&gt;ToElement(), indent+1);
+		switch(num)
 		{
-			dump_to_stdout( &amp;doc );
+			case 0:  printf( " (No attributes)"); break;
+			case 1:  printf( "%s1 attribute", getIndentAlt(indent)); break;
+			default: printf( "%s%d attributes", getIndentAlt(indent), num); break;
 		}
-		else
-		{
-			printf( "Something went wrong\n" );
-		}
+		break;
+
+	case TiXmlNode::COMMENT:
+		printf( "Comment: [%s]", pParent-&gt;Value());
+		break;
+
+	case TiXmlNode::UNKNOWN:
+		printf( "Unknown" );
+		break;
+
+	case TiXmlNode::TEXT:
+		pText = pParent-&gt;ToText();
+		printf( "Text: [%s]", pText-&gt;Value() );
+		break;
+
+	case TiXmlNode::DECLARATION:
+		printf( "Declaration" );
+		break;
+	default:
+		break;
 	}
-	</pre></div><p>
-If you run this with the first XML file you'll see this on STDOUT:<p>
-<div class="fragment"><pre class="fragment">	DOCUMENT
-	+ DECLARATION
-	+ ELEMENT Hello
-	  + TEXT[World]
-	</pre></div><p>
-and on the second XML file:<p>
-<div class="fragment"><pre class="fragment">	DOCUMENT
-	+ DECLARATION
-	+ ELEMENT poetry
-	  + COMMENT:  my great work of art
-	  + ELEMENT verse
-	    + TEXT[
-	Alas
-	  Great Whatever
-	    Alas (again)
-	]
-	</pre></div><p>
-Note that if you call dump_to_stdout like this:<p>
-<div class="fragment"><pre class="fragment">	dump_to_stdout( doc.RootElement());
-	</pre></div><p>
-You'll see this instead:<p>
-<div class="fragment"><pre class="fragment">	ELEMENT Hello
-	+ TEXT[World]
-	</pre></div><p>
-and:<p>
-<div class="fragment"><pre class="fragment">	ELEMENT poetry
-	+ COMMENT:  my great work of art
-	+ ELEMENT verse
-  	+ TEXT[
-	Alas
-	  Great Whatever
-	    Alas (again)
-	] 
-	</pre></div><p>
+	printf( "\n" );
+	for ( pChild = pParent-&gt;FirstChild(); pChild != 0; pChild = pChild-&gt;NextSibling()) 
+	{
+		dump_to_stdout( pChild, indent+1 );
+	}
+}
+
+// load the named file and dump its structure to STDOUT
+void dump_to_stdout(const char* pFilename)
+{
+	TiXmlDocument doc(pFilename);
+	bool loadOkay = doc.LoadFile();
+	if (loadOkay)
+	{
+		printf("\n%s:\n", pFilename);
+		dump_to_stdout( &amp;doc ); // defined later in the tutorial
+	}
+	else
+	{
+		printf("Failed to load file \"%s\"\n", pFilename);
+	}
+}
+
+// ----------------------------------------------------------------------
+// main() for printing files named on the command line
+// ----------------------------------------------------------------------
+int main(int argc, char* argv[])
+{
+	for (int i=1; i&lt;argc; i++)
+	{
+		dump_to_stdout(argv[i]);
+	}
+	return 0;
+}
+</pre></div><p>
+Run this from the command line or a DOS window, e.g.:<p>
+<div class="fragment"><pre class="fragment">C:\dev\tinyxml&gt; Debug\tinyxml_1.exe example1.xml
+
+example1.xml:
+Document
++ Declaration
++ Element [Hello]
+ (No attributes)
+  + Text: [World]
+</pre></div><p>
 <em> Authors and Changes <ul>
 <li>
-Written by Ellers, April 2005  </li>
+Written by Ellers, April, May, June 2005  </li>
 <li>
 Minor edits and integration into doc system, Lee Thomason September 2005  </li>
+<li>
+Updated by Ellers, October 2005  </li>
 </ul>
-</em> <hr size="1"><address style="align: right;"><small>Generated on Sat Oct 8 14:15:30 2005 for TinyXml by&nbsp;
+</em> <hr size="1"><address style="align: right;"><small>Generated on Tue Oct 18 20:58:44 2005 for TinyXml by&nbsp;
 <a href="http://www.doxygen.org/index.html">
 <img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4 </small></address>
 </body>
diff --git a/tinystr.h b/tinystr.h
index aedd2f9..b5ba5e8 100644
--- a/tinystr.h
+++ b/tinystr.h
@@ -217,7 +217,15 @@
 	{
 		if (cap)
 		{
-			rep_ = static_cast<Rep*>(operator new(sizeof(Rep) + cap));
+			// Lee: the original form:
+			//	rep_ = static_cast<Rep*>(operator new(sizeof(Rep) + cap));
+			// doesn't work in some cases of new being overloaded. Switching
+			// to the normal allocation, although use an 'int' for systems
+			// that are overly picky about structure alignment.
+			const size_type bytesNeeded = sizeof(Rep) + cap;
+			const size_type intsNeeded = ( bytesNeeded + sizeof(int) - 1 ) / sizeof( int ); 
+			rep_ = reinterpret_cast<Rep*>( new int[ intsNeeded ] );
+
 			rep_->str[ rep_->size = sz ] = '\0';
 			rep_->capacity = cap;
 		}
@@ -231,7 +239,7 @@
 	{
 		if (rep_ != &nullrep_)
 		{
-			operator delete(rep_);
+			delete [] rep_;
 		}
 	}
 
diff --git a/tinyxml.cpp b/tinyxml.cpp
index 5f84dec..8706683 100644
--- a/tinyxml.cpp
+++ b/tinyxml.cpp
@@ -1332,14 +1332,8 @@
 		for ( i=0; i<depth; i++ ) {
 			fprintf( cfile, "    " );
 		}
-		fprintf( cfile, "<![CDATA[\n" );
-
+		fprintf( cfile, "<![CDATA[" );
 		fprintf( cfile, "%s", value.c_str() );	// unformatted output
-
-		fprintf( cfile, "\n" );
-		for ( i=0; i<depth; i++ ) {
-			fprintf( cfile, "    " );
-		}
 		fprintf( cfile, "]]>\n" );
 	}
 	else
diff --git a/tinyxml.h b/tinyxml.h
index 18cf94f..7d1e8d9 100644
--- a/tinyxml.h
+++ b/tinyxml.h
@@ -93,7 +93,7 @@
 
 const int TIXML_MAJOR_VERSION = 2;
 const int TIXML_MINOR_VERSION = 4;
-const int TIXML_PATCH_VERSION = 0;
+const int TIXML_PATCH_VERSION = 1;
 
 /*	Internal structure for tracking location of items 
 	in the XML file.
@@ -955,7 +955,7 @@
 		and accessing it directly.
 	
 		If the first child of 'this' is a TiXmlText, the GetText()
-		returs the character string of the Text node, else null is returned.
+		returns the character string of the Text node, else null is returned.
 
 		This is a convenient method for getting the text of simple contained text:
 		@verbatim
diff --git a/xmltest.cpp b/xmltest.cpp
index 8aa350e..6f82552 100644
--- a/xmltest.cpp
+++ b/xmltest.cpp
@@ -699,7 +699,7 @@
 							"</xmlElement>";
 		TiXmlDocument doc;
 		doc.Parse( str );
-		//doc.Print();
+		doc.Print();
 
 		XmlTest( "CDATA parse.", doc.FirstChildElement()->FirstChild()->Value(), 
 								 "I am > the rules!\n...since I make symbolic puns",