<!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"/> <meta http-equiv="X-UA-Compatible" content="IE=9"/> <meta name="generator" content="Doxygen 1.8.11"/> <title>ICU 58.2: icu::StringTrieBuilder::Node Class Reference</title> <link href="tabs.css" rel="stylesheet" type="text/css"/> <script type="text/javascript" src="jquery.js"></script> <script type="text/javascript" src="dynsections.js"></script> <link href="doxygen.css" rel="stylesheet" type="text/css" /> </head> <body> <div id="top"><!-- do not remove this div, it is closed by doxygen! --> <div id="titlearea"> <table cellspacing="0" cellpadding="0"> <tbody> <tr style="height: 56px;"> <td id="projectalign" style="padding-left: 0.5em;"> <div id="projectname">ICU 58.2  <span id="projectnumber">58.2</span> </div> </td> </tr> </tbody> </table> </div> <!-- end header part --> <!-- Generated by Doxygen 1.8.11 --> <div id="navrow1" class="tabs"> <ul class="tablist"> <li><a href="index.html"><span>Main Page</span></a></li> <li><a href="pages.html"><span>Related Pages</span></a></li> <li><a href="modules.html"><span>Modules</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> </ul> </div> <div id="navrow2" class="tabs2"> <ul class="tablist"> <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 id="nav-path" class="navpath"> <ul> <li class="navelem"><a class="el" href="namespaceicu.html">icu</a></li><li class="navelem"><a class="el" href="classicu_1_1StringTrieBuilder.html">StringTrieBuilder</a></li><li class="navelem"><a class="el" href="classicu_1_1StringTrieBuilder_1_1Node.html">Node</a></li> </ul> </div> </div><!-- top --> <div class="header"> <div class="summary"> <a href="#pub-methods">Public Member Functions</a> | <a href="#pub-static-methods">Static Public Member Functions</a> | <a href="#pro-attribs">Protected Attributes</a> </div> <div class="headertitle"> <div class="title">icu::StringTrieBuilder::Node Class Reference<span class="mlabels"><span class="mlabel">abstract</span></span></div> </div> </div><!--header--> <div class="contents"> <p><code>#include <<a class="el" href="stringtriebuilder_8h_source.html">stringtriebuilder.h</a>></code></p> <div class="dynheader"> Inheritance diagram for icu::StringTrieBuilder::Node:</div> <div class="dyncontent"> <div class="center"> <img src="classicu_1_1StringTrieBuilder_1_1Node.png" usemap="#icu::StringTrieBuilder::Node_map" alt=""/> <map id="icu::StringTrieBuilder::Node_map" name="icu::StringTrieBuilder::Node_map"> <area href="classicu_1_1UObject.html" title="UObject is the common ICU "boilerplate" class. " alt="icu::UObject" shape="rect" coords="415,56,682,80"/> <area href="classicu_1_1UMemory.html" title="UMemory is the common ICU base class. " alt="icu::UMemory" shape="rect" coords="415,0,682,24"/> <area href="classicu_1_1StringTrieBuilder_1_1BranchNode.html" alt="icu::StringTrieBuilder::BranchNode" shape="rect" coords="138,168,405,192"/> <area href="classicu_1_1StringTrieBuilder_1_1FinalValueNode.html" alt="icu::StringTrieBuilder::FinalValueNode" shape="rect" coords="415,168,682,192"/> <area href="classicu_1_1StringTrieBuilder_1_1ValueNode.html" alt="icu::StringTrieBuilder::ValueNode" shape="rect" coords="831,168,1098,192"/> <area href="classicu_1_1StringTrieBuilder_1_1ListBranchNode.html" alt="icu::StringTrieBuilder::ListBranchNode" shape="rect" coords="0,224,267,248"/> <area href="classicu_1_1StringTrieBuilder_1_1SplitBranchNode.html" alt="icu::StringTrieBuilder::SplitBranchNode" shape="rect" coords="277,224,544,248"/> <area href="classicu_1_1StringTrieBuilder_1_1BranchHeadNode.html" alt="icu::StringTrieBuilder::BranchHeadNode" shape="rect" coords="554,224,821,248"/> <area href="classicu_1_1StringTrieBuilder_1_1IntermediateValueNode.html" alt="icu::StringTrieBuilder::IntermediateValueNode" shape="rect" coords="831,224,1098,248"/> <area href="classicu_1_1StringTrieBuilder_1_1LinearMatchNode.html" alt="icu::StringTrieBuilder::LinearMatchNode" shape="rect" coords="1108,224,1375,248"/> </map> </div></div> <table class="memberdecls"> <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a> Public Member Functions</h2></td></tr> <tr class="memitem:ac8a1ea845159e315029930b3cbddb43f"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac8a1ea845159e315029930b3cbddb43f"></a>  </td><td class="memItemRight" valign="bottom"><b>Node</b> (int32_t initialHash)</td></tr> <tr class="separator:ac8a1ea845159e315029930b3cbddb43f"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a8a0202815bf6a8ea65a47331427e9c37"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a8a0202815bf6a8ea65a47331427e9c37"></a> int32_t </td><td class="memItemRight" valign="bottom"><b>hashCode</b> () const </td></tr> <tr class="separator:a8a0202815bf6a8ea65a47331427e9c37"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a3833133b7bf7df5f0af521d816c3d9d1"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a3833133b7bf7df5f0af521d816c3d9d1"></a> virtual <a class="el" href="umachine_8h.html#a349ef00011f20ccd1d3b424445681aa5">UBool</a> </td><td class="memItemRight" valign="bottom"><b>operator==</b> (const <a class="el" href="classicu_1_1StringTrieBuilder_1_1Node.html">Node</a> &other) const </td></tr> <tr class="separator:a3833133b7bf7df5f0af521d816c3d9d1"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a012d6bb1d794e72e6c14285f5c0cb876"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a012d6bb1d794e72e6c14285f5c0cb876"></a> <a class="el" href="umachine_8h.html#a349ef00011f20ccd1d3b424445681aa5">UBool</a> </td><td class="memItemRight" valign="bottom"><b>operator!=</b> (const <a class="el" href="classicu_1_1StringTrieBuilder_1_1Node.html">Node</a> &other) const </td></tr> <tr class="separator:a012d6bb1d794e72e6c14285f5c0cb876"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a6579bd649427882f665f0ca74e2d058e"><td class="memItemLeft" align="right" valign="top">virtual int32_t </td><td class="memItemRight" valign="bottom"><a class="el" href="classicu_1_1StringTrieBuilder_1_1Node.html#a6579bd649427882f665f0ca74e2d058e">markRightEdgesFirst</a> (int32_t edgeNumber)</td></tr> <tr class="memdesc:a6579bd649427882f665f0ca74e2d058e"><td class="mdescLeft"> </td><td class="mdescRight">Traverses the <a class="el" href="classicu_1_1StringTrieBuilder_1_1Node.html">Node</a> graph and numbers branch edges, with rightmost edges first. <a href="#a6579bd649427882f665f0ca74e2d058e">More...</a><br /></td></tr> <tr class="separator:a6579bd649427882f665f0ca74e2d058e"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:ad5bcf39816639ffbccd6e9b9654585d1"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ad5bcf39816639ffbccd6e9b9654585d1"></a> virtual void </td><td class="memItemRight" valign="bottom"><b>write</b> (<a class="el" href="classicu_1_1StringTrieBuilder.html">StringTrieBuilder</a> &builder)=0</td></tr> <tr class="separator:ad5bcf39816639ffbccd6e9b9654585d1"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:adfd1484dd24f5bf5c468538a3583ed57"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="adfd1484dd24f5bf5c468538a3583ed57"></a> void </td><td class="memItemRight" valign="bottom"><b>writeUnlessInsideRightEdge</b> (int32_t firstRight, int32_t lastRight, <a class="el" href="classicu_1_1StringTrieBuilder.html">StringTrieBuilder</a> &builder)</td></tr> <tr class="separator:adfd1484dd24f5bf5c468538a3583ed57"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a0bf6ee63af089a3e116f970513d86f43"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a0bf6ee63af089a3e116f970513d86f43"></a> int32_t </td><td class="memItemRight" valign="bottom"><b>getOffset</b> () const </td></tr> <tr class="separator:a0bf6ee63af089a3e116f970513d86f43"><td class="memSeparator" colspan="2"> </td></tr> <tr class="inherit_header pub_methods_classicu_1_1UObject"><td colspan="2" onclick="javascript:toggleInherit('pub_methods_classicu_1_1UObject')"><img src="closed.png" alt="-"/> Public Member Functions inherited from <a class="el" href="classicu_1_1UObject.html">icu::UObject</a></td></tr> <tr class="memitem:af10026497704f510d3d1f2eff50acb18 inherit pub_methods_classicu_1_1UObject"><td class="memItemLeft" align="right" valign="top">virtual </td><td class="memItemRight" valign="bottom"><a class="el" href="classicu_1_1UObject.html#af10026497704f510d3d1f2eff50acb18">~UObject</a> ()</td></tr> <tr class="memdesc:af10026497704f510d3d1f2eff50acb18 inherit pub_methods_classicu_1_1UObject"><td class="mdescLeft"> </td><td class="mdescRight">Destructor. <a href="#af10026497704f510d3d1f2eff50acb18">More...</a><br /></td></tr> <tr class="separator:af10026497704f510d3d1f2eff50acb18 inherit pub_methods_classicu_1_1UObject"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a1aa93096e880907080b503ff1fb0f8bc inherit pub_methods_classicu_1_1UObject"><td class="memItemLeft" align="right" valign="top">virtual <a class="el" href="uobject_8h.html#a22af10545208a455a6e884008df48e9f">UClassID</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classicu_1_1UObject.html#a1aa93096e880907080b503ff1fb0f8bc">getDynamicClassID</a> () const </td></tr> <tr class="memdesc:a1aa93096e880907080b503ff1fb0f8bc inherit pub_methods_classicu_1_1UObject"><td class="mdescLeft"> </td><td class="mdescRight">ICU4C "poor man's RTTI", returns a UClassID for the actual ICU class. <a href="#a1aa93096e880907080b503ff1fb0f8bc">More...</a><br /></td></tr> <tr class="separator:a1aa93096e880907080b503ff1fb0f8bc inherit pub_methods_classicu_1_1UObject"><td class="memSeparator" colspan="2"> </td></tr> </table><table class="memberdecls"> <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-static-methods"></a> Static Public Member Functions</h2></td></tr> <tr class="memitem:a38a75eb1bc77432a459640520da2a14a"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a38a75eb1bc77432a459640520da2a14a"></a> static int32_t </td><td class="memItemRight" valign="bottom"><b>hashCode</b> (const <a class="el" href="classicu_1_1StringTrieBuilder_1_1Node.html">Node</a> *node)</td></tr> <tr class="separator:a38a75eb1bc77432a459640520da2a14a"><td class="memSeparator" colspan="2"> </td></tr> </table><table class="memberdecls"> <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pro-attribs"></a> Protected Attributes</h2></td></tr> <tr class="memitem:adb88ddfa6a185f926ab9cf2ed13630de"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="adb88ddfa6a185f926ab9cf2ed13630de"></a> int32_t </td><td class="memItemRight" valign="bottom"><b>hash</b></td></tr> <tr class="separator:adb88ddfa6a185f926ab9cf2ed13630de"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:adf5d3660b810e89bc1cd32e6863240bb"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="adf5d3660b810e89bc1cd32e6863240bb"></a> int32_t </td><td class="memItemRight" valign="bottom"><b>offset</b></td></tr> <tr class="separator:adf5d3660b810e89bc1cd32e6863240bb"><td class="memSeparator" colspan="2"> </td></tr> </table> <a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2> <div class="textblock"><dl class="internal"><dt><b><a class="el" href="internal.html#_internal000143">Internal:</a></b></dt><dd>Do not use.</dd></dl> <p>This API is for internal use only. </p> <p>Definition at line <a class="el" href="stringtriebuilder_8h_source.html#l00192">192</a> of file <a class="el" href="stringtriebuilder_8h_source.html">stringtriebuilder.h</a>.</p> </div><h2 class="groupheader">Member Function Documentation</h2> <a class="anchor" id="a6579bd649427882f665f0ca74e2d058e"></a> <div class="memitem"> <div class="memproto"> <table class="mlabels"> <tr> <td class="mlabels-left"> <table class="memname"> <tr> <td class="memname">virtual int32_t icu::StringTrieBuilder::Node::markRightEdgesFirst </td> <td>(</td> <td class="paramtype">int32_t </td> <td class="paramname"><em>edgeNumber</em></td><td>)</td> <td></td> </tr> </table> </td> <td class="mlabels-right"> <span class="mlabels"><span class="mlabel">virtual</span></span> </td> </tr> </table> </div><div class="memdoc"> <p>Traverses the <a class="el" href="classicu_1_1StringTrieBuilder_1_1Node.html">Node</a> graph and numbers branch edges, with rightmost edges first. </p> <p>This is to avoid writing a duplicate node twice.</p> <p>Branch nodes in this trie data structure are not symmetric. Most branch edges "jump" to other nodes but the rightmost branch edges just continue without a jump. Therefore, write() must write the rightmost branch edge last (trie units are written backwards), and must write it at that point even if it is a duplicate of a node previously written elsewhere.</p> <p>This function visits and marks right branch edges first. Edges are numbered with increasingly negative values because we share the offset field which gets positive values when nodes are written. A branch edge also remembers the first number for any of its edges.</p> <p>When a further-left branch edge has a number in the range of the rightmost edge's numbers, then it will be written as part of the required right edge and we can avoid writing it first.</p> <p>After root.markRightEdgesFirst(-1) the offsets of all nodes are negative edge numbers.</p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">edgeNumber</td><td>The first edge number for this node and its sub-nodes. </td></tr> </table> </dd> </dl> <dl class="section return"><dt>Returns</dt><dd>An edge number that is at least the maximum-negative of the input edge number and the numbers of this node and all of its sub-nodes. </dd></dl> <p>Reimplemented in <a class="el" href="classicu_1_1StringTrieBuilder_1_1BranchHeadNode.html#a3e2f9ec4a6800fbe7c7c5a81224dcb6f">icu::StringTrieBuilder::BranchHeadNode</a>, <a class="el" href="classicu_1_1StringTrieBuilder_1_1SplitBranchNode.html#a1db22eb659e9c056239f8b8c818bdf3b">icu::StringTrieBuilder::SplitBranchNode</a>, <a class="el" href="classicu_1_1StringTrieBuilder_1_1ListBranchNode.html#a316f11c8b5ae1622120f532f6b1b6fbb">icu::StringTrieBuilder::ListBranchNode</a>, <a class="el" href="classicu_1_1StringTrieBuilder_1_1LinearMatchNode.html#a595e0de9726d76d0bd7266b57890b71c">icu::StringTrieBuilder::LinearMatchNode</a>, and <a class="el" href="classicu_1_1StringTrieBuilder_1_1IntermediateValueNode.html#a434f335c17019c6d9b4ef10108cea125">icu::StringTrieBuilder::IntermediateValueNode</a>.</p> </div> </div> <hr/>The documentation for this class was generated from the following file:<ul> <li><a class="el" href="stringtriebuilder_8h_source.html">stringtriebuilder.h</a></li> </ul> </div><!-- contents --> <!-- start footer part --> <hr class="footer"/><address class="footer"><small> Generated by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.11 </small></address> </body> </html>