Sophie

Sophie

distrib > Mandriva > 2010.0 > i586 > media > contrib-release > by-pkgid > eeacaa4eb55fa544d622989e42fc27b1 > files > 625

libyate-devel-2.0.0-2mdv2009.1.i586.rpm

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
<title>Yate: TiXmlHandle Class Reference</title>
<link href="doxygen.css" rel="stylesheet" type="text/css">
<link href="tabs.css" rel="stylesheet" type="text/css">
</head><body>
<!-- Generated by Doxygen 1.5.7.1 -->
<div class="navigation" id="top">
  <div class="tabs">
    <ul>
      <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
      <li><a href="files.html"><span>Files</span></a></li>
    </ul>
  </div>
  <div class="tabs">
    <ul>
      <li><a href="annotated.html"><span>Class&nbsp;List</span></a></li>
      <li><a href="hierarchy.html"><span>Class&nbsp;Hierarchy</span></a></li>
      <li><a href="functions.html"><span>Class&nbsp;Members</span></a></li>
    </ul>
  </div>
  <div class="navpath"><a class="el" href="namespaceTelEngine.html">TelEngine</a>::<a class="el" href="classTelEngine_1_1TiXmlHandle.html">TiXmlHandle</a>
  </div>
</div>
<div class="contents">
<h1>TiXmlHandle Class Reference</h1><!-- doxytag: class="TelEngine::TiXmlHandle" --><code>#include &lt;<a class="el" href="tinyxml_8h-source.html">tinyxml.h</a>&gt;</code>
<p>

<p>
<a href="classTelEngine_1_1TiXmlHandle-members.html">List of all members.</a><table border="0" cellpadding="0" cellspacing="0">
<tr><td></td></tr>
<tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="7a91f73db1ec65f60edf6c3351e9085a"></a><!-- doxytag: member="TelEngine::TiXmlHandle::TiXmlHandle" ref="7a91f73db1ec65f60edf6c3351e9085a" args="(TiXmlNode *_node)" -->
&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classTelEngine_1_1TiXmlHandle.html#7a91f73db1ec65f60edf6c3351e9085a">TiXmlHandle</a> (<a class="el" href="classTelEngine_1_1TiXmlNode.html">TiXmlNode</a> *_node)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Create a handle from any node (at any depth of the tree.) This can be a null pointer. <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="c9e2921a67990ee459e075bb6f79ab6c"></a><!-- doxytag: member="TelEngine::TiXmlHandle::TiXmlHandle" ref="c9e2921a67990ee459e075bb6f79ab6c" args="(const TiXmlHandle &amp;ref)" -->
&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classTelEngine_1_1TiXmlHandle.html#c9e2921a67990ee459e075bb6f79ab6c">TiXmlHandle</a> (const <a class="el" href="classTelEngine_1_1TiXmlHandle.html">TiXmlHandle</a> &amp;ref)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Copy constructor. <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="e3825271aa876075ea2a1c560afbf312"></a><!-- doxytag: member="TelEngine::TiXmlHandle::operator=" ref="e3825271aa876075ea2a1c560afbf312" args="(const TiXmlHandle &amp;ref)" -->
<a class="el" href="classTelEngine_1_1TiXmlHandle.html">TiXmlHandle</a>&nbsp;</td><td class="memItemRight" valign="bottom"><b>operator=</b> (const <a class="el" href="classTelEngine_1_1TiXmlHandle.html">TiXmlHandle</a> &amp;ref)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="174b56f23bfa602db4ac29eb64b6d869"></a><!-- doxytag: member="TelEngine::TiXmlHandle::FirstChild" ref="174b56f23bfa602db4ac29eb64b6d869" args="() const " -->
<a class="el" href="classTelEngine_1_1TiXmlHandle.html">TiXmlHandle</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classTelEngine_1_1TiXmlHandle.html#174b56f23bfa602db4ac29eb64b6d869">FirstChild</a> () const </td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Return a handle to the first child node. <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="4a97d7b0ad7a30a427be280287c68f0b"></a><!-- doxytag: member="TelEngine::TiXmlHandle::FirstChild" ref="4a97d7b0ad7a30a427be280287c68f0b" args="(const char *value) const " -->
<a class="el" href="classTelEngine_1_1TiXmlHandle.html">TiXmlHandle</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classTelEngine_1_1TiXmlHandle.html#4a97d7b0ad7a30a427be280287c68f0b">FirstChild</a> (const char *value) const </td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Return a handle to the first child node with the given name. <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="9735a8caf93a6307565cd268eb2e773b"></a><!-- doxytag: member="TelEngine::TiXmlHandle::FirstChildElement" ref="9735a8caf93a6307565cd268eb2e773b" args="() const " -->
<a class="el" href="classTelEngine_1_1TiXmlHandle.html">TiXmlHandle</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classTelEngine_1_1TiXmlHandle.html#9735a8caf93a6307565cd268eb2e773b">FirstChildElement</a> () const </td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Return a handle to the first child element. <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="be915ebd64386332a75529f01b4ce49e"></a><!-- doxytag: member="TelEngine::TiXmlHandle::FirstChildElement" ref="be915ebd64386332a75529f01b4ce49e" args="(const char *value) const " -->
<a class="el" href="classTelEngine_1_1TiXmlHandle.html">TiXmlHandle</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classTelEngine_1_1TiXmlHandle.html#be915ebd64386332a75529f01b4ce49e">FirstChildElement</a> (const char *value) const </td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Return a handle to the first child element with the given name. <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="classTelEngine_1_1TiXmlHandle.html">TiXmlHandle</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classTelEngine_1_1TiXmlHandle.html#287f1d8da399e36d93d6dda84f58d38d">Child</a> (const char *value, int index) const </td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="classTelEngine_1_1TiXmlHandle.html">TiXmlHandle</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classTelEngine_1_1TiXmlHandle.html#8e3cf46a5e6698caee8a62d036ed8c86">Child</a> (int index) const </td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="classTelEngine_1_1TiXmlHandle.html">TiXmlHandle</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classTelEngine_1_1TiXmlHandle.html#6220b7bc9c4138e60c4ba508cda893ef">ChildElement</a> (const char *value, int index) const </td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="classTelEngine_1_1TiXmlHandle.html">TiXmlHandle</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classTelEngine_1_1TiXmlHandle.html#a3a699f0e75b917861906fa14fdae359">ChildElement</a> (int index) const </td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="b3d2b11f2c53f11c63c432221563c962"></a><!-- doxytag: member="TelEngine::TiXmlHandle::FirstChild" ref="b3d2b11f2c53f11c63c432221563c962" args="(const std::string &amp;_value) const " -->
<a class="el" href="classTelEngine_1_1TiXmlHandle.html">TiXmlHandle</a>&nbsp;</td><td class="memItemRight" valign="bottom"><b>FirstChild</b> (const std::string &amp;_value) const </td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="d8e1c69ed47c4a6948daa7103780d03e"></a><!-- doxytag: member="TelEngine::TiXmlHandle::FirstChildElement" ref="d8e1c69ed47c4a6948daa7103780d03e" args="(const std::string &amp;_value) const " -->
<a class="el" href="classTelEngine_1_1TiXmlHandle.html">TiXmlHandle</a>&nbsp;</td><td class="memItemRight" valign="bottom"><b>FirstChildElement</b> (const std::string &amp;_value) const </td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="2bbf58598fc711aa751bea2c802125f6"></a><!-- doxytag: member="TelEngine::TiXmlHandle::Child" ref="2bbf58598fc711aa751bea2c802125f6" args="(const std::string &amp;_value, int index) const " -->
<a class="el" href="classTelEngine_1_1TiXmlHandle.html">TiXmlHandle</a>&nbsp;</td><td class="memItemRight" valign="bottom"><b>Child</b> (const std::string &amp;_value, int index) const </td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a0c42b4ffc4cd98a077bd6ec4bdfa0ab"></a><!-- doxytag: member="TelEngine::TiXmlHandle::ChildElement" ref="a0c42b4ffc4cd98a077bd6ec4bdfa0ab" args="(const std::string &amp;_value, int index) const " -->
<a class="el" href="classTelEngine_1_1TiXmlHandle.html">TiXmlHandle</a>&nbsp;</td><td class="memItemRight" valign="bottom"><b>ChildElement</b> (const std::string &amp;_value, int index) const </td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="8ee8431ed0e64eff7e87071c3e104328"></a><!-- doxytag: member="TelEngine::TiXmlHandle::Node" ref="8ee8431ed0e64eff7e87071c3e104328" args="() const " -->
<a class="el" href="classTelEngine_1_1TiXmlNode.html">TiXmlNode</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classTelEngine_1_1TiXmlHandle.html#8ee8431ed0e64eff7e87071c3e104328">Node</a> () const </td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Return the handle as a <a class="el" href="classTelEngine_1_1TiXmlNode.html">TiXmlNode</a>. This may return null. <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="7861a8552c191f4ddd9a22487126bb18"></a><!-- doxytag: member="TelEngine::TiXmlHandle::Element" ref="7861a8552c191f4ddd9a22487126bb18" args="() const " -->
<a class="el" href="classTelEngine_1_1TiXmlElement.html">TiXmlElement</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classTelEngine_1_1TiXmlHandle.html#7861a8552c191f4ddd9a22487126bb18">Element</a> () const </td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Return the handle as a <a class="el" href="classTelEngine_1_1TiXmlElement.html">TiXmlElement</a>. This may return null. <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="3020aa52e43b2640bc34b4d4550a4586"></a><!-- doxytag: member="TelEngine::TiXmlHandle::Text" ref="3020aa52e43b2640bc34b4d4550a4586" args="() const " -->
<a class="el" href="classTelEngine_1_1TiXmlText.html">TiXmlText</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classTelEngine_1_1TiXmlHandle.html#3020aa52e43b2640bc34b4d4550a4586">Text</a> () const </td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Return the handle as a <a class="el" href="classTelEngine_1_1TiXmlText.html">TiXmlText</a>. This may return null. <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="8ebe774896d89376917b91a9adec1719"></a><!-- doxytag: member="TelEngine::TiXmlHandle::Unknown" ref="8ebe774896d89376917b91a9adec1719" args="() const " -->
<a class="el" href="classTelEngine_1_1TiXmlUnknown.html">TiXmlUnknown</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classTelEngine_1_1TiXmlHandle.html#8ebe774896d89376917b91a9adec1719">Unknown</a> () const </td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Return the handle as a <a class="el" href="classTelEngine_1_1TiXmlUnknown.html">TiXmlUnknown</a>. This may return null;. <br></td></tr>
</table>
<hr><a name="_details"></a><h2>Detailed Description</h2>
A <a class="el" href="classTelEngine_1_1TiXmlHandle.html">TiXmlHandle</a> is a class that wraps a node pointer with null checks; this is an incredibly useful thing. Note that <a class="el" href="classTelEngine_1_1TiXmlHandle.html">TiXmlHandle</a> is not part of the TinyXml DOM structure. It is a separate utility class.<p>
Take an example: <div class="fragment"><pre class="fragment">
	&lt;Document&gt;
		&lt;Element attributeA = "valueA"&gt;
			&lt;Child attributeB = "value1" /&gt;
			&lt;Child attributeB = "value2" /&gt;
		&lt;/Element&gt;
	&lt;Document&gt;
	</pre></div><p>
Assuming you want the value of "attributeB" in the 2nd "Child" element, it's very easy to write a *lot* of code that looks like:<p>
<div class="fragment"><pre class="fragment">
	TiXmlElement* root = document.FirstChildElement( "Document" );
	if ( root )
	{
		TiXmlElement* element = root-&gt;FirstChildElement( "Element" );
		if ( element )
		{
			TiXmlElement* child = element-&gt;FirstChildElement( "Child" );
			if ( child )
			{
				TiXmlElement* child2 = child-&gt;NextSiblingElement( "Child" );
				if ( child2 )
				{
					// Finally do something useful.
	</pre></div><p>
And that doesn't even cover "else" cases. <a class="el" href="classTelEngine_1_1TiXmlHandle.html">TiXmlHandle</a> addresses the verbosity of such code. A <a class="el" href="classTelEngine_1_1TiXmlHandle.html">TiXmlHandle</a> checks for null pointers so it is perfectly safe and correct to use:<p>
<div class="fragment"><pre class="fragment">
	TiXmlHandle docHandle( &amp;document );
	TiXmlElement* child2 = docHandle.FirstChild( "Document" ).FirstChild( "Element" ).Child( "Child", 1 ).Element();
	if ( child2 )
	{
		// do something useful
	</pre></div><p>
Which is MUCH more concise and useful.<p>
It is also safe to copy handles - internally they are nothing more than node pointers. <div class="fragment"><pre class="fragment">
	TiXmlHandle handleCopy = handle;
	</pre></div><p>
What they should not be used for is iteration:<p>
<div class="fragment"><pre class="fragment">
	int i=0; 
	while ( true )
	{
		TiXmlElement* child = docHandle.FirstChild( "Document" ).FirstChild( "Element" ).Child( "Child", i ).Element();
		if ( !child )
			break;
		// do something
		++i;
	}
	</pre></div><p>
It seems reasonable, but it is in fact two embedded while loops. The Child method is a linear walk to find the element, so this code would iterate much more than it needs to. Instead, prefer:<p>
<div class="fragment"><pre class="fragment">
	TiXmlElement* child = docHandle.FirstChild( "Document" ).FirstChild( "Element" ).FirstChild( "Child" ).Element();

	for( child; child; child=child-&gt;NextSiblingElement() )
	{
		// do something
	}
	</pre></div> <hr><h2>Member Function Documentation</h2>
<a class="anchor" name="8e3cf46a5e6698caee8a62d036ed8c86"></a><!-- doxytag: member="TelEngine::TiXmlHandle::Child" ref="8e3cf46a5e6698caee8a62d036ed8c86" args="(int index) const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classTelEngine_1_1TiXmlHandle.html">TiXmlHandle</a> Child           </td>
          <td>(</td>
          <td class="paramtype">int&nbsp;</td>
          <td class="paramname"> <em>index</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td> const</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Return a handle to the "index" child. The first child is 0, the second 1, etc. 
</div>
</div><p>
<a class="anchor" name="287f1d8da399e36d93d6dda84f58d38d"></a><!-- doxytag: member="TelEngine::TiXmlHandle::Child" ref="287f1d8da399e36d93d6dda84f58d38d" args="(const char *value, int index) const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classTelEngine_1_1TiXmlHandle.html">TiXmlHandle</a> Child           </td>
          <td>(</td>
          <td class="paramtype">const char *&nbsp;</td>
          <td class="paramname"> <em>value</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&nbsp;</td>
          <td class="paramname"> <em>index</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td> const</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Return a handle to the "index" child with the given name. The first child is 0, the second 1, etc. 
</div>
</div><p>
<a class="anchor" name="a3a699f0e75b917861906fa14fdae359"></a><!-- doxytag: member="TelEngine::TiXmlHandle::ChildElement" ref="a3a699f0e75b917861906fa14fdae359" args="(int index) const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classTelEngine_1_1TiXmlHandle.html">TiXmlHandle</a> ChildElement           </td>
          <td>(</td>
          <td class="paramtype">int&nbsp;</td>
          <td class="paramname"> <em>index</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td> const</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Return a handle to the "index" child element. The first child element is 0, the second 1, etc. Note that only TiXmlElements are indexed: other types are not counted. 
</div>
</div><p>
<a class="anchor" name="6220b7bc9c4138e60c4ba508cda893ef"></a><!-- doxytag: member="TelEngine::TiXmlHandle::ChildElement" ref="6220b7bc9c4138e60c4ba508cda893ef" args="(const char *value, int index) const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classTelEngine_1_1TiXmlHandle.html">TiXmlHandle</a> ChildElement           </td>
          <td>(</td>
          <td class="paramtype">const char *&nbsp;</td>
          <td class="paramname"> <em>value</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&nbsp;</td>
          <td class="paramname"> <em>index</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td> const</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Return a handle to the "index" child element with the given name. The first child element is 0, the second 1, etc. Note that only TiXmlElements are indexed: other types are not counted. 
</div>
</div><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>
</div>
<hr size="1"><address style="text-align: right;"><small>Generated on Sun Dec 7 21:36:14 2008 for Yate by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.7.1 </small></address>
</body>
</html>