<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> <title>ucommon: ucommon::NamedTree Class Reference</title> <link href="tabs.css" rel="stylesheet" type="text/css"/> <link href="doxygen.css" rel="stylesheet" type="text/css"/> </head> <body> <!-- Generated by Doxygen 1.6.3 --> <div class="navigation" id="top"> <div class="tabs"> <ul> <li><a href="main.html"><span>Main Page</span></a></li> <li><a href="namespaces.html"><span>Namespaces</span></a></li> <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li> <li><a href="files.html"><span>Files</span></a></li> <li><a href="examples.html"><span>Examples</span></a></li> </ul> </div> <div class="tabs"> <ul> <li><a href="annotated.html"><span>Data Structures</span></a></li> <li><a href="classes.html"><span>Data Structure Index</span></a></li> <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li> <li><a href="functions.html"><span>Data Fields</span></a></li> </ul> </div> <div class="navpath"><a class="el" href="a00208.html">ucommon</a>::<a class="el" href="a00091.html">NamedTree</a> </div> </div> <div class="contents"> <h1>ucommon::NamedTree Class Reference</h1><!-- doxytag: class="ucommon::NamedTree" --><!-- doxytag: inherits="ucommon::NamedObject" --> <p>The named tree class is used to form a tree oriented list of associated objects. <a href="#_details">More...</a></p> <p><code>#include <<a class="el" href="a00188_source.html">linked.h</a>></code></p> <div class="dynheader"> Inheritance diagram for ucommon::NamedTree:</div> <div class="dynsection"> <div class="center"><img src="a00452.png" border="0" usemap="#ucommon_1_1_named_tree_inherit__map" alt="Inheritance graph"/></div> <map name="ucommon_1_1_named_tree_inherit__map" id="ucommon_1_1_named_tree_inherit__map"> <area shape="rect" id="node11" href="a00166.html" title="Embed data objects into a tree structured memory database." alt="" coords="15,379,247,405"/><area shape="rect" id="node2" href="a00090.html" title="A linked object base class with members found by name." alt="" coords="20,229,241,256"/><area shape="rect" id="node4" href="a00101.html" title="A linked object base class for ordered objects." alt="" coords="9,155,252,181"/><area shape="rect" id="node6" href="a00067.html" title="Common base class for all objects that can be formed into a linked list." alt="" coords="15,80,247,107"/><area shape="rect" id="node8" href="a00095.html" title="A common base class for all managed objects." alt="" coords="5,5,256,32"/></map> <center><span class="legend">[<a target="top" href="graph_legend.html">legend</a>]</span></center></div> <div class="dynheader"> Collaboration diagram for ucommon::NamedTree:</div> <div class="dynsection"> <div class="center"><img src="a00453.png" border="0" usemap="#ucommon_1_1_named_tree_coll__map" alt="Collaboration graph"/></div> <map name="ucommon_1_1_named_tree_coll__map" id="ucommon_1_1_named_tree_coll__map"> <area shape="rect" id="node2" href="a00090.html" title="A linked object base class with members found by name." alt="" coords="5,280,227,307"/><area shape="rect" id="node4" href="a00101.html" title="A linked object base class for ordered objects." alt="" coords="68,176,311,203"/><area shape="rect" id="node11" href="a00100.html" title="An index container for maintaining an ordered list of objects." alt="" coords="251,280,483,307"/><area shape="rect" id="node6" href="a00067.html" title="Common base class for all objects that can be formed into a linked list." alt="" coords="73,91,305,117"/><area shape="rect" id="node8" href="a00095.html" title="A common base class for all managed objects." alt="" coords="64,5,315,32"/></map> <center><span class="legend">[<a target="top" href="graph_legend.html">legend</a>]</span></center></div> <table border="0" cellpadding="0" cellspacing="0"> <tr><td colspan="2"><h2>Public Member Functions</h2></td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="a00091.html">NamedTree</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="a00091.html#af2764cb49258df006acfe27296c63480">find</a> (const char *name) const </td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Find a child node of our object with the specified name. <a href="#af2764cb49258df006acfe27296c63480"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="a00091.html">NamedTree</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="a00091.html#a6177498167785c350002afa7d5412f2a">getChild</a> (const char *name) const </td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Find a direct child of our node which matches the specified name. <a href="#a6177498167785c350002afa7d5412f2a"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="a00091.html">NamedTree</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="a00091.html#a702e2080ffa5d9a2bed5b12db9543751">getFirst</a> (void) const </td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Get first child node in our ordered list of children. <a href="#a702e2080ffa5d9a2bed5b12db9543751"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="a00100.html">OrderedIndex</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="a00091.html#a94e7413310afc4de4a3c95913f71ef7d">getIndex</a> (void) const </td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Get the ordered index of our child nodes. <a href="#a94e7413310afc4de4a3c95913f71ef7d"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="a00091.html">NamedTree</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="a00091.html#a1b3e3905352e02db62bfee475abe35fd">getIndexed</a> (unsigned index) const </td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Get child by index number. <a href="#a1b3e3905352e02db62bfee475abe35fd"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="a00091.html">NamedTree</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="a00091.html#ac94a302de671abe9db11e89ed8719de9">getLeaf</a> (const char *name) const </td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Find a direct leaf node on our node. <a href="#ac94a302de671abe9db11e89ed8719de9"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="a00091.html">NamedTree</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="a00091.html#a4399e3d2de6f9826b15443de26d040ea">getParent</a> (void) const </td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Get parent node we are listed as a child on. <a href="#a4399e3d2de6f9826b15443de26d040ea"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00091.html#a72f623e391305a498ba037e22702fabb">isLeaf</a> (void) const </td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Test if node has children. <a href="#a72f623e391305a498ba037e22702fabb"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00091.html#a98f2f04c3aa1ebb20003735bc1e4133d">isRoot</a> (void) const </td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Test if node is root node. <a href="#a98f2f04c3aa1ebb20003735bc1e4133d"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="a00091.html">NamedTree</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="a00091.html#af4a0903591a0a30b52d69df7c356f955">leaf</a> (const char *name) const </td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Find a child leaf node of our object with the specified name. <a href="#af4a0903591a0a30b52d69df7c356f955"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="a00091.html#ae25ea6138334927b6f67961a1ea061b4">operator bool</a> () const </td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Test if this node has a name. <a href="#ae25ea6138334927b6f67961a1ea061b4"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00091.html#a4e8be4e6eea4358d4f1bdd5a6311d274">operator!</a> () const </td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Test if this node is unnamed. <a href="#a4e8be4e6eea4358d4f1bdd5a6311d274"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="a00091.html">NamedTree</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="a00091.html#a466fed5ca078c9dce9c0ac787b002960">path</a> (const char *path) const </td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Find a subnode by a dot separated list of node names. <a href="#a466fed5ca078c9dce9c0ac787b002960"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00091.html#af454df71b72cbf05c52c6382d3accf5f">relist</a> (<a class="el" href="a00091.html">NamedTree</a> *trunk=NULL)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Default relist is by tail. <a href="#af454df71b72cbf05c52c6382d3accf5f"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00091.html#ab38559cb59b088c94df2fba66e24f6cb">relistHead</a> (<a class="el" href="a00091.html">NamedTree</a> *trunk)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Add leaf to a trunk, by reverse order. <a href="#ab38559cb59b088c94df2fba66e24f6cb"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00091.html#a41a3076a0c06dd55630ef6dd78f995fc">relistTail</a> (<a class="el" href="a00091.html">NamedTree</a> *trunk)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Add leaf to a trunk, by order. <a href="#a41a3076a0c06dd55630ef6dd78f995fc"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00091.html#a033e3062739216099de76aeb0b09b89c">remove</a> (void)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Remove our node from our parent list. <a href="#a033e3062739216099de76aeb0b09b89c"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00091.html#a02d27764236bfa3de963df539d100134">setId</a> (char *name)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Set or replace the name id of this node. <a href="#a02d27764236bfa3de963df539d100134"></a><br/></td></tr> <tr><td colspan="2"><h2>Protected Member Functions</h2></td></tr> <tr><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="a00091.html#a023157a3a5f87380ce183415cb172e83">NamedTree</a> (const <a class="el" href="a00091.html">NamedTree</a> &source)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Construct a copy of the tree. <a href="#a023157a3a5f87380ce183415cb172e83"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="a00091.html#aac8ef766e6bd9f6b2f7ae306eb2f68d7">NamedTree</a> (<a class="el" href="a00091.html">NamedTree</a> *parent, char *name)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Create a tree node as a child of an existing node. <a href="#aac8ef766e6bd9f6b2f7ae306eb2f68d7"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="a00091.html#a42f81a93f226950e03ba4112c2c48d04">NamedTree</a> (char *name=NULL)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Create a stand-alone or root tree node, with an optional name. <a href="#a42f81a93f226950e03ba4112c2c48d04"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00091.html#afa9cc4544dd469e9054ef6959682e669">purge</a> (void)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Performs object destruction. <a href="#afa9cc4544dd469e9054ef6959682e669"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">virtual </td><td class="memItemRight" valign="bottom"><a class="el" href="a00091.html#adf7edee79153f235e93d95ef39bf8bab">~NamedTree</a> ()</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Delete node in a tree. <a href="#adf7edee79153f235e93d95ef39bf8bab"></a><br/></td></tr> <tr><td colspan="2"><h2>Protected Attributes</h2></td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="af51fe679533eec10ae8a622791a88a06"></a><!-- doxytag: member="ucommon::NamedTree::child" ref="af51fe679533eec10ae8a622791a88a06" args="" --> <a class="el" href="a00100.html">OrderedIndex</a> </td><td class="memItemRight" valign="bottom"><b>child</b></td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a9173493f39e69fc1b71e41a015b0cefa"></a><!-- doxytag: member="ucommon::NamedTree::parent" ref="a9173493f39e69fc1b71e41a015b0cefa" args="" --> <a class="el" href="a00091.html">NamedTree</a> * </td><td class="memItemRight" valign="bottom"><b>parent</b></td></tr> </table> <hr/><a name="_details"></a><h2>Detailed Description</h2> <p>The named tree class is used to form a tree oriented list of associated objects. </p> <p>Typical uses for such data structures might be to form a parsed XML document, or for forming complex configuration management systems or for forming system resource management trees. </p> <dl class="author"><dt><b>Author:</b></dt><dd>David Sugar <<a href="mailto:dyfet@gnutelephony.org">dyfet@gnutelephony.org</a>> </dd></dl> <p>Definition at line <a class="el" href="a00188_source.html#l00573">573</a> of file <a class="el" href="a00188_source.html">linked.h</a>.</p> <hr/><h2>Constructor & Destructor Documentation</h2> <a class="anchor" id="a42f81a93f226950e03ba4112c2c48d04"></a><!-- doxytag: member="ucommon::NamedTree::NamedTree" ref="a42f81a93f226950e03ba4112c2c48d04" args="(char *name=NULL)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">ucommon::NamedTree::NamedTree </td> <td>(</td> <td class="paramtype">char * </td> <td class="paramname"> <em>name</em> = <code>NULL</code></td> <td> ) </td> <td><code> [protected]</code></td> </tr> </table> </div> <div class="memdoc"> <p>Create a stand-alone or root tree node, with an optional name. </p> <dl><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>name</em> </td><td>for this node. </td></tr> </table> </dd> </dl> </div> </div> <a class="anchor" id="aac8ef766e6bd9f6b2f7ae306eb2f68d7"></a><!-- doxytag: member="ucommon::NamedTree::NamedTree" ref="aac8ef766e6bd9f6b2f7ae306eb2f68d7" args="(NamedTree *parent, char *name)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">ucommon::NamedTree::NamedTree </td> <td>(</td> <td class="paramtype"><a class="el" href="a00091.html">NamedTree</a> * </td> <td class="paramname"> <em>parent</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">char * </td> <td class="paramname"> <em>name</em></td><td> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td><td><code> [protected]</code></td> </tr> </table> </div> <div class="memdoc"> <p>Create a tree node as a child of an existing node. </p> <dl><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>parent</em> </td><td>node we are listed under. </td></tr> <tr><td valign="top"></td><td valign="top"><em>name</em> </td><td>of our node. </td></tr> </table> </dd> </dl> </div> </div> <a class="anchor" id="a023157a3a5f87380ce183415cb172e83"></a><!-- doxytag: member="ucommon::NamedTree::NamedTree" ref="a023157a3a5f87380ce183415cb172e83" args="(const NamedTree &source)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">ucommon::NamedTree::NamedTree </td> <td>(</td> <td class="paramtype">const <a class="el" href="a00091.html">NamedTree</a> & </td> <td class="paramname"> <em>source</em></td> <td> ) </td> <td><code> [protected]</code></td> </tr> </table> </div> <div class="memdoc"> <p>Construct a copy of the tree. </p> <dl><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>source</em> </td><td>object to copy from. </td></tr> </table> </dd> </dl> </div> </div> <a class="anchor" id="adf7edee79153f235e93d95ef39bf8bab"></a><!-- doxytag: member="ucommon::NamedTree::~NamedTree" ref="adf7edee79153f235e93d95ef39bf8bab" args="()" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">virtual ucommon::NamedTree::~NamedTree </td> <td>(</td> <td class="paramname"></td> <td> ) </td> <td><code> [protected, virtual]</code></td> </tr> </table> </div> <div class="memdoc"> <p>Delete node in a tree. </p> <p>If we delete a node, we must delist it from it's parent. We must also delink any child nodes. This is done by calling the <a class="el" href="a00091.html#afa9cc4544dd469e9054ef6959682e669" title="Performs object destruction.">purge()</a> member. </p> </div> </div> <hr/><h2>Member Function Documentation</h2> <a class="anchor" id="af2764cb49258df006acfe27296c63480"></a><!-- doxytag: member="ucommon::NamedTree::find" ref="af2764cb49258df006acfe27296c63480" args="(const char *name) const " --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="a00091.html">NamedTree</a>* ucommon::NamedTree::find </td> <td>(</td> <td class="paramtype">const char * </td> <td class="paramname"> <em>name</em></td> <td> ) </td> <td> const</td> </tr> </table> </div> <div class="memdoc"> <p>Find a child node of our object with the specified name. </p> <p>This will also recursivily search all child nodes that have children until the named node can be found. This seeks a child node that has children. </p> <dl><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>name</em> </td><td>to search for. </td></tr> </table> </dd> </dl> <dl class="return"><dt><b>Returns:</b></dt><dd>tree object found or NULL. </dd></dl> <p>Reimplemented in <a class="el" href="a00166.html#a7305aa33b7e774457668f32e941b7bca">ucommon::treemap< T ></a>.</p> </div> </div> <a class="anchor" id="a6177498167785c350002afa7d5412f2a"></a><!-- doxytag: member="ucommon::NamedTree::getChild" ref="a6177498167785c350002afa7d5412f2a" args="(const char *name) const " --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="a00091.html">NamedTree</a>* ucommon::NamedTree::getChild </td> <td>(</td> <td class="paramtype">const char * </td> <td class="paramname"> <em>name</em></td> <td> ) </td> <td> const</td> </tr> </table> </div> <div class="memdoc"> <p>Find a direct child of our node which matches the specified name. </p> <dl><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>name</em> </td><td>of child node to find. </td></tr> </table> </dd> </dl> <dl class="return"><dt><b>Returns:</b></dt><dd>tree node object of child or NULL. </dd></dl> <p>Reimplemented in <a class="el" href="a00166.html#a0be97e58f9c446203ea662314c3ef02c">ucommon::treemap< T ></a>.</p> </div> </div> <a class="anchor" id="a702e2080ffa5d9a2bed5b12db9543751"></a><!-- doxytag: member="ucommon::NamedTree::getFirst" ref="a702e2080ffa5d9a2bed5b12db9543751" args="(void) const " --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="a00091.html">NamedTree</a>* ucommon::NamedTree::getFirst </td> <td>(</td> <td class="paramtype">void </td> <td class="paramname"></td> <td> ) </td> <td> const<code> [inline]</code></td> </tr> </table> </div> <div class="memdoc"> <p>Get first child node in our ordered list of children. </p> <p>This might be used to iterate child nodes. This may also be used to get unamed child nodes. </p> <dl class="return"><dt><b>Returns:</b></dt><dd>first child node or NULL if no children. </dd></dl> <p>Reimplemented in <a class="el" href="a00166.html#af127f5e029fd67fa6f1dbf901ebab95d">ucommon::treemap< T ></a>.</p> <p>Definition at line <a class="el" href="a00188_source.html#l00665">665</a> of file <a class="el" href="a00188_source.html">linked.h</a>.</p> </div> </div> <a class="anchor" id="a94e7413310afc4de4a3c95913f71ef7d"></a><!-- doxytag: member="ucommon::NamedTree::getIndex" ref="a94e7413310afc4de4a3c95913f71ef7d" args="(void) const " --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="a00100.html">OrderedIndex</a>* ucommon::NamedTree::getIndex </td> <td>(</td> <td class="paramtype">void </td> <td class="paramname"></td> <td> ) </td> <td> const<code> [inline]</code></td> </tr> </table> </div> <div class="memdoc"> <p>Get the ordered index of our child nodes. </p> <dl class="return"><dt><b>Returns:</b></dt><dd>ordered index of our children. </dd></dl> <p>Definition at line <a class="el" href="a00188_source.html#l00687">687</a> of file <a class="el" href="a00188_source.html">linked.h</a>.</p> </div> </div> <a class="anchor" id="a1b3e3905352e02db62bfee475abe35fd"></a><!-- doxytag: member="ucommon::NamedTree::getIndexed" ref="a1b3e3905352e02db62bfee475abe35fd" args="(unsigned index) const " --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="a00091.html">NamedTree</a>* ucommon::NamedTree::getIndexed </td> <td>(</td> <td class="paramtype">unsigned </td> <td class="paramname"> <em>index</em></td> <td> ) </td> <td> const<code> [inline]</code></td> </tr> </table> </div> <div class="memdoc"> <p>Get child by index number. </p> <dl><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>index</em> </td><td>of child to fetch. </td></tr> </table> </dd> </dl> <dl class="return"><dt><b>Returns:</b></dt><dd>indexed child node. </dd></dl> <p>Reimplemented in <a class="el" href="a00166.html#abf488bbfecb7066c92d8f1f63e7c6cb6">ucommon::treemap< T ></a>.</p> <p>Definition at line <a class="el" href="a00188_source.html#l00680">680</a> of file <a class="el" href="a00188_source.html">linked.h</a>.</p> </div> </div> <a class="anchor" id="ac94a302de671abe9db11e89ed8719de9"></a><!-- doxytag: member="ucommon::NamedTree::getLeaf" ref="ac94a302de671abe9db11e89ed8719de9" args="(const char *name) const " --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="a00091.html">NamedTree</a>* ucommon::NamedTree::getLeaf </td> <td>(</td> <td class="paramtype">const char * </td> <td class="paramname"> <em>name</em></td> <td> ) </td> <td> const</td> </tr> </table> </div> <div class="memdoc"> <p>Find a direct leaf node on our node. </p> <p>A leaf node is a node that has no children of it's own. This does not perform a recursive search. </p> <dl><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>name</em> </td><td>of leaf child node to find. </td></tr> </table> </dd> </dl> <dl class="return"><dt><b>Returns:</b></dt><dd>tree node object of leaf or NULL. </dd></dl> <p>Reimplemented in <a class="el" href="a00166.html#a822b9aafb1db8648f6b3f48f52436671">ucommon::treemap< T ></a>.</p> </div> </div> <a class="anchor" id="a4399e3d2de6f9826b15443de26d040ea"></a><!-- doxytag: member="ucommon::NamedTree::getParent" ref="a4399e3d2de6f9826b15443de26d040ea" args="(void) const " --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="a00091.html">NamedTree</a>* ucommon::NamedTree::getParent </td> <td>(</td> <td class="paramtype">void </td> <td class="paramname"></td> <td> ) </td> <td> const<code> [inline]</code></td> </tr> </table> </div> <div class="memdoc"> <p>Get parent node we are listed as a child on. </p> <dl class="return"><dt><b>Returns:</b></dt><dd>parent node or NULL if none. </dd></dl> <p>Reimplemented in <a class="el" href="a00166.html#a204d20cc0b62a95d7dc47411f89ffee9">ucommon::treemap< T ></a>.</p> <p>Definition at line <a class="el" href="a00188_source.html#l00672">672</a> of file <a class="el" href="a00188_source.html">linked.h</a>.</p> </div> </div> <a class="anchor" id="a72f623e391305a498ba037e22702fabb"></a><!-- doxytag: member="ucommon::NamedTree::isLeaf" ref="a72f623e391305a498ba037e22702fabb" args="(void) const " --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">bool ucommon::NamedTree::isLeaf </td> <td>(</td> <td class="paramtype">void </td> <td class="paramname"></td> <td> ) </td> <td> const<code> [inline]</code></td> </tr> </table> </div> <div class="memdoc"> <p>Test if node has children. </p> <dl class="return"><dt><b>Returns:</b></dt><dd>true if node contains child nodes. </dd></dl> <p>Definition at line <a class="el" href="a00188_source.html#l00721">721</a> of file <a class="el" href="a00188_source.html">linked.h</a>.</p> </div> </div> <a class="anchor" id="a98f2f04c3aa1ebb20003735bc1e4133d"></a><!-- doxytag: member="ucommon::NamedTree::isRoot" ref="a98f2f04c3aa1ebb20003735bc1e4133d" args="(void) const " --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">bool ucommon::NamedTree::isRoot </td> <td>(</td> <td class="paramtype">void </td> <td class="paramname"></td> <td> ) </td> <td> const<code> [inline]</code></td> </tr> </table> </div> <div class="memdoc"> <p>Test if node is root node. </p> <dl class="return"><dt><b>Returns:</b></dt><dd>true if node is root node. </dd></dl> <p>Definition at line <a class="el" href="a00188_source.html#l00728">728</a> of file <a class="el" href="a00188_source.html">linked.h</a>.</p> </div> </div> <a class="anchor" id="af4a0903591a0a30b52d69df7c356f955"></a><!-- doxytag: member="ucommon::NamedTree::leaf" ref="af4a0903591a0a30b52d69df7c356f955" args="(const char *name) const " --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="a00091.html">NamedTree</a>* ucommon::NamedTree::leaf </td> <td>(</td> <td class="paramtype">const char * </td> <td class="paramname"> <em>name</em></td> <td> ) </td> <td> const</td> </tr> </table> </div> <div class="memdoc"> <p>Find a child leaf node of our object with the specified name. </p> <p>This will recursively search all our child nodes until it can find a leaf node containing the specified id but that holds no further children. </p> <dl><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>name</em> </td><td>of leaf node to search for. </td></tr> </table> </dd> </dl> <dl class="return"><dt><b>Returns:</b></dt><dd>tree node object found or NULL. </dd></dl> <p>Reimplemented in <a class="el" href="a00166.html#a7d0f65a8ead61198d8515b29c37ad455">ucommon::treemap< T ></a>.</p> </div> </div> <a class="anchor" id="ae25ea6138334927b6f67961a1ea061b4"></a><!-- doxytag: member="ucommon::NamedTree::operator bool" ref="ae25ea6138334927b6f67961a1ea061b4" args="() const " --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">ucommon::NamedTree::operator bool </td> <td>(</td> <td class="paramname"></td> <td> ) </td> <td> const<code> [inline]</code></td> </tr> </table> </div> <div class="memdoc"> <p>Test if this node has a name. </p> <dl class="return"><dt><b>Returns:</b></dt><dd>true if name is set. </dd></dl> <p>Definition at line <a class="el" href="a00188_source.html#l00694">694</a> of file <a class="el" href="a00188_source.html">linked.h</a>.</p> </div> </div> <a class="anchor" id="a4e8be4e6eea4358d4f1bdd5a6311d274"></a><!-- doxytag: member="ucommon::NamedTree::operator!" ref="a4e8be4e6eea4358d4f1bdd5a6311d274" args="() const " --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">bool ucommon::NamedTree::operator! </td> <td>(</td> <td class="paramname"></td> <td> ) </td> <td> const<code> [inline]</code></td> </tr> </table> </div> <div class="memdoc"> <p>Test if this node is unnamed. </p> <dl class="return"><dt><b>Returns:</b></dt><dd>false if name is set. </dd></dl> <p>Definition at line <a class="el" href="a00188_source.html#l00701">701</a> of file <a class="el" href="a00188_source.html">linked.h</a>.</p> </div> </div> <a class="anchor" id="a466fed5ca078c9dce9c0ac787b002960"></a><!-- doxytag: member="ucommon::NamedTree::path" ref="a466fed5ca078c9dce9c0ac787b002960" args="(const char *path) const " --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="a00091.html">NamedTree</a>* ucommon::NamedTree::path </td> <td>(</td> <td class="paramtype">const char * </td> <td class="paramname"> <em>path</em></td> <td> ) </td> <td> const</td> </tr> </table> </div> <div class="memdoc"> <p>Find a subnode by a dot separated list of node names. </p> <p>If one or more lead dots are used, then the search will go through parent node levels of our node. The dot separated list could be thought of as a kind of pathname where dot is used like slash. This implies that individual nodes can never use names which contain dot's if the path function will be used. </p> <dl><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>path</em> </td><td>name string being sought. </td></tr> </table> </dd> </dl> <dl class="return"><dt><b>Returns:</b></dt><dd>tree node object found at the path or NULL. </dd></dl> <p>Reimplemented in <a class="el" href="a00166.html#a0d1f8e9ccfffda92bed13b595bacc1fe">ucommon::treemap< T ></a>.</p> </div> </div> <a class="anchor" id="afa9cc4544dd469e9054ef6959682e669"></a><!-- doxytag: member="ucommon::NamedTree::purge" ref="afa9cc4544dd469e9054ef6959682e669" args="(void)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">void ucommon::NamedTree::purge </td> <td>(</td> <td class="paramtype">void </td> <td class="paramname"></td> <td> ) </td> <td><code> [protected]</code></td> </tr> </table> </div> <div class="memdoc"> <p>Performs object destruction. </p> <p>Note, if we delete a named tree object the name of our member object is assumed to be a dynamically allocated string that will also be free'd. </p> </div> </div> <a class="anchor" id="af454df71b72cbf05c52c6382d3accf5f"></a><!-- doxytag: member="ucommon::NamedTree::relist" ref="af454df71b72cbf05c52c6382d3accf5f" args="(NamedTree *trunk=NULL)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">void ucommon::NamedTree::relist </td> <td>(</td> <td class="paramtype"><a class="el" href="a00091.html">NamedTree</a> * </td> <td class="paramname"> <em>trunk</em> = <code>NULL</code></td> <td> ) </td> <td><code> [inline]</code></td> </tr> </table> </div> <div class="memdoc"> <p>Default relist is by tail. </p> <p>.. </p> <dl><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>trunk</em> </td><td>we add leaf node to, NULL to delist. </td></tr> </table> </dd> </dl> <p>Definition at line <a class="el" href="a00188_source.html#l00747">747</a> of file <a class="el" href="a00188_source.html">linked.h</a>.</p> </div> </div> <a class="anchor" id="ab38559cb59b088c94df2fba66e24f6cb"></a><!-- doxytag: member="ucommon::NamedTree::relistHead" ref="ab38559cb59b088c94df2fba66e24f6cb" args="(NamedTree *trunk)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">void ucommon::NamedTree::relistHead </td> <td>(</td> <td class="paramtype"><a class="el" href="a00091.html">NamedTree</a> * </td> <td class="paramname"> <em>trunk</em></td> <td> ) </td> <td></td> </tr> </table> </div> <div class="memdoc"> <p>Add leaf to a trunk, by reverse order. </p> <p>If NULL, just remove. </p> <dl><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>trunk</em> </td><td>we add leaf node to. </td></tr> </table> </dd> </dl> </div> </div> <a class="anchor" id="a41a3076a0c06dd55630ef6dd78f995fc"></a><!-- doxytag: member="ucommon::NamedTree::relistTail" ref="a41a3076a0c06dd55630ef6dd78f995fc" args="(NamedTree *trunk)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">void ucommon::NamedTree::relistTail </td> <td>(</td> <td class="paramtype"><a class="el" href="a00091.html">NamedTree</a> * </td> <td class="paramname"> <em>trunk</em></td> <td> ) </td> <td></td> </tr> </table> </div> <div class="memdoc"> <p>Add leaf to a trunk, by order. </p> <p>If NULL, just remove. </p> <dl><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>trunk</em> </td><td>we add leaf node to. </td></tr> </table> </dd> </dl> </div> </div> <a class="anchor" id="a033e3062739216099de76aeb0b09b89c"></a><!-- doxytag: member="ucommon::NamedTree::remove" ref="a033e3062739216099de76aeb0b09b89c" args="(void)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">void ucommon::NamedTree::remove </td> <td>(</td> <td class="paramtype">void </td> <td class="paramname"></td> <td> ) </td> <td></td> </tr> </table> </div> <div class="memdoc"> <p>Remove our node from our parent list. </p> <p>The name is set to NULL to keep delete from freeing the name string. </p> </div> </div> <a class="anchor" id="a02d27764236bfa3de963df539d100134"></a><!-- doxytag: member="ucommon::NamedTree::setId" ref="a02d27764236bfa3de963df539d100134" args="(char *name)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">void ucommon::NamedTree::setId </td> <td>(</td> <td class="paramtype">char * </td> <td class="paramname"> <em>name</em></td> <td> ) </td> <td></td> </tr> </table> </div> <div class="memdoc"> <p>Set or replace the name id of this node. </p> <p>This will free the string if a name had already been set. </p> <dl><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>name</em> </td><td>for this node to set. </td></tr> </table> </dd> </dl> </div> </div> <hr/>The documentation for this class was generated from the following file:<ul> <li>ucommon/<a class="el" href="a00188_source.html">linked.h</a></li> </ul> </div> <hr class="footer"/><address style="text-align: right;"><small>Generated on Thu Jul 14 16:39:47 2011 for ucommon by <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address> </body> </html>