<!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"/> <title>ICU 4.8.1.1: StringTrieBuilder::SplitBranchNode 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="search/search.css" rel="stylesheet" type="text/css"/> <script type="text/javascript" src="search/search.js"></script> <script type="text/javascript"> $(document).ready(function() { searchBox.OnSelectItem(0); }); </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 style="padding-left: 0.5em;"> <div id="projectname">ICU 4.8.1.1  <span id="projectnumber">4.8.1.1</span> </div> </td> </tr> </tbody> </table> </div> <!-- end header part --> <!-- Generated by Doxygen 1.8.1.1 --> <script type="text/javascript"> var searchBox = new SearchBox("searchBox", "search",false,'Search'); </script> <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 class="current"><a href="annotated.html"><span>Data Structures</span></a></li> <li><a href="files.html"><span>Files</span></a></li> <li> <div id="MSearchBox" class="MSearchBoxInactive"> <span class="left"> <img id="MSearchSelect" src="search/mag_sel.png" onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()" alt=""/> <input type="text" id="MSearchField" value="Search" accesskey="S" onfocus="searchBox.OnSearchFieldFocus(true)" onblur="searchBox.OnSearchFieldFocus(false)" onkeyup="searchBox.OnSearchFieldChange(event)"/> </span><span class="right"> <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a> </span> </div> </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> <!-- window showing the filter options --> <div id="MSearchSelectWindow" onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()" onkeydown="return searchBox.OnSearchSelectKey(event)"> <a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark"> </span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark"> </span>Data Structures</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark"> </span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark"> </span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark"> </span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark"> </span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark"> </span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark"> </span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark"> </span>Friends</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark"> </span>Macros</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark"> </span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark"> </span>Pages</a></div> <!-- iframe showing the search results (closed by default) --> <div id="MSearchResultsWindow"> <iframe src="javascript:void(0)" frameborder="0" name="MSearchResults" id="MSearchResults"> </iframe> </div> <div id="nav-path" class="navpath"> <ul> <li class="navelem"><a class="el" href="classStringTrieBuilder.html">StringTrieBuilder</a></li><li class="navelem"><a class="el" href="classStringTrieBuilder_1_1SplitBranchNode.html">SplitBranchNode</a></li> </ul> </div> </div><!-- top --> <div class="header"> <div class="summary"> <a href="#pub-methods">Public Member Functions</a> | <a href="#pro-attribs">Protected Attributes</a> </div> <div class="headertitle"> <div class="title">StringTrieBuilder::SplitBranchNode Class Reference</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 StringTrieBuilder::SplitBranchNode:</div> <div class="dyncontent"> <div class="center"> <img src="classStringTrieBuilder_1_1SplitBranchNode.png" usemap="#StringTrieBuilder::SplitBranchNode_map" alt=""/> <map id="StringTrieBuilder::SplitBranchNode_map" name="StringTrieBuilder::SplitBranchNode_map"> <area href="classStringTrieBuilder_1_1BranchNode.html" alt="StringTrieBuilder::BranchNode" shape="rect" coords="0,168,208,192"/> <area href="classStringTrieBuilder_1_1Node.html" alt="StringTrieBuilder::Node" shape="rect" coords="0,112,208,136"/> <area href="classUObject.html" title="UObject is the common ICU "boilerplate" class." alt="UObject" shape="rect" coords="0,56,208,80"/> <area href="classUMemory.html" title="UMemory is the common ICU base class." alt="UMemory" shape="rect" coords="0,0,208,24"/> </map> </div></div> <table class="memberdecls"> <tr class="heading"><td colspan="2"><h2><a name="pub-methods"></a> Public Member Functions</h2></td></tr> <tr class="memitem:ae30418316ea78ad17733bff45fd7f329"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae30418316ea78ad17733bff45fd7f329"></a>  </td><td class="memItemRight" valign="bottom"><b>SplitBranchNode</b> (<a class="el" href="umachine_8h.html#a6bb9fad572d65b305324ef288165e2ac">UChar</a> middleUnit, <a class="el" href="classStringTrieBuilder_1_1Node.html">Node</a> *lessThanNode, <a class="el" href="classStringTrieBuilder_1_1Node.html">Node</a> *greaterOrEqualNode)</td></tr> <tr class="memitem:a987736e8bc9a69bb96c8e69c0aad9afc"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a987736e8bc9a69bb96c8e69c0aad9afc"></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="classStringTrieBuilder_1_1Node.html">Node</a> &other) const </td></tr> <tr class="memitem:ab50502af618b9c48d0021c979c542225"><td class="memItemLeft" align="right" valign="top">virtual <a class="el" href="pwin32_8h.html#ab1967d8591af1a4e48c37fd2b0f184d0">int32_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classStringTrieBuilder_1_1SplitBranchNode.html#ab50502af618b9c48d0021c979c542225">markRightEdgesFirst</a> (<a class="el" href="pwin32_8h.html#ab1967d8591af1a4e48c37fd2b0f184d0">int32_t</a> edgeNumber)</td></tr> <tr class="memdesc:ab50502af618b9c48d0021c979c542225"><td class="mdescLeft"> </td><td class="mdescRight">Traverses the <a class="el" href="classStringTrieBuilder_1_1Node.html">Node</a> graph and numbers branch edges, with rightmost edges first. <a href="#ab50502af618b9c48d0021c979c542225"></a><br/></td></tr> <tr class="memitem:a806cd7d549e4e130bb16bcf613dedd59"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a806cd7d549e4e130bb16bcf613dedd59"></a> virtual void </td><td class="memItemRight" valign="bottom"><b>write</b> (<a class="el" href="classStringTrieBuilder.html">StringTrieBuilder</a> &builder)</td></tr> <tr class="inherit_header pub_methods_classStringTrieBuilder_1_1BranchNode"><td colspan="2" onclick="javascript:toggleInherit('pub_methods_classStringTrieBuilder_1_1BranchNode')"><img src="closed.png" alt="-"/> Public Member Functions inherited from <a class="el" href="classStringTrieBuilder_1_1BranchNode.html">StringTrieBuilder::BranchNode</a></td></tr> <tr class="memitem:a5e42216e0ced62d77f79222a87233eed inherit pub_methods_classStringTrieBuilder_1_1BranchNode"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a5e42216e0ced62d77f79222a87233eed"></a>  </td><td class="memItemRight" valign="bottom"><b>BranchNode</b> (<a class="el" href="pwin32_8h.html#ab1967d8591af1a4e48c37fd2b0f184d0">int32_t</a> initialHash)</td></tr> <tr class="inherit_header pub_methods_classStringTrieBuilder_1_1Node"><td colspan="2" onclick="javascript:toggleInherit('pub_methods_classStringTrieBuilder_1_1Node')"><img src="closed.png" alt="-"/> Public Member Functions inherited from <a class="el" href="classStringTrieBuilder_1_1Node.html">StringTrieBuilder::Node</a></td></tr> <tr class="memitem:adccd346893ef1b72e5847f988bdc885f inherit pub_methods_classStringTrieBuilder_1_1Node"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="adccd346893ef1b72e5847f988bdc885f"></a>  </td><td class="memItemRight" valign="bottom"><b>Node</b> (<a class="el" href="pwin32_8h.html#ab1967d8591af1a4e48c37fd2b0f184d0">int32_t</a> initialHash)</td></tr> <tr class="memitem:ad039a9ade764d8b128c2f8e75254f2ec inherit pub_methods_classStringTrieBuilder_1_1Node"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ad039a9ade764d8b128c2f8e75254f2ec"></a> <a class="el" href="pwin32_8h.html#ab1967d8591af1a4e48c37fd2b0f184d0">int32_t</a> </td><td class="memItemRight" valign="bottom"><b>hashCode</b> () const </td></tr> <tr class="memitem:aa6a49f2817ebeeb4d256fce177f1a27a inherit pub_methods_classStringTrieBuilder_1_1Node"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa6a49f2817ebeeb4d256fce177f1a27a"></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="classStringTrieBuilder_1_1Node.html">Node</a> &other) const </td></tr> <tr class="memitem:aab15b0acdcc1ec21fed9f704f0fa791e inherit pub_methods_classStringTrieBuilder_1_1Node"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aab15b0acdcc1ec21fed9f704f0fa791e"></a> void </td><td class="memItemRight" valign="bottom"><b>writeUnlessInsideRightEdge</b> (<a class="el" href="pwin32_8h.html#ab1967d8591af1a4e48c37fd2b0f184d0">int32_t</a> firstRight, <a class="el" href="pwin32_8h.html#ab1967d8591af1a4e48c37fd2b0f184d0">int32_t</a> lastRight, <a class="el" href="classStringTrieBuilder.html">StringTrieBuilder</a> &builder)</td></tr> <tr class="memitem:ab4a16694fb6383f096c6c3bd0f6681e5 inherit pub_methods_classStringTrieBuilder_1_1Node"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ab4a16694fb6383f096c6c3bd0f6681e5"></a> <a class="el" href="pwin32_8h.html#ab1967d8591af1a4e48c37fd2b0f184d0">int32_t</a> </td><td class="memItemRight" valign="bottom"><b>getOffset</b> () const </td></tr> <tr class="inherit_header pub_methods_classUObject"><td colspan="2" onclick="javascript:toggleInherit('pub_methods_classUObject')"><img src="closed.png" alt="-"/> Public Member Functions inherited from <a class="el" href="classUObject.html">UObject</a></td></tr> <tr class="memitem:ace22cf29a90641ef43350deae5bedb85 inherit pub_methods_classUObject"><td class="memItemLeft" align="right" valign="top">virtual </td><td class="memItemRight" valign="bottom"><a class="el" href="classUObject.html#ace22cf29a90641ef43350deae5bedb85">~UObject</a> ()</td></tr> <tr class="memdesc:ace22cf29a90641ef43350deae5bedb85 inherit pub_methods_classUObject"><td class="mdescLeft"> </td><td class="mdescRight">Destructor. <a href="#ace22cf29a90641ef43350deae5bedb85"></a><br/></td></tr> </table><table class="memberdecls"> <tr class="heading"><td colspan="2"><h2><a name="pro-attribs"></a> Protected Attributes</h2></td></tr> <tr class="memitem:a664ebb21c2e0ed5dc7c1c2f4394cc56d"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a664ebb21c2e0ed5dc7c1c2f4394cc56d"></a> <a class="el" href="umachine_8h.html#a6bb9fad572d65b305324ef288165e2ac">UChar</a> </td><td class="memItemRight" valign="bottom"><b>unit</b></td></tr> <tr class="memitem:ab9d13d5bfe8e35cb19cd765e0a819e45"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ab9d13d5bfe8e35cb19cd765e0a819e45"></a> <a class="el" href="classStringTrieBuilder_1_1Node.html">Node</a> * </td><td class="memItemRight" valign="bottom"><b>lessThan</b></td></tr> <tr class="memitem:aeef3c8ec186110e964dc92a77f0f130e"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aeef3c8ec186110e964dc92a77f0f130e"></a> <a class="el" href="classStringTrieBuilder_1_1Node.html">Node</a> * </td><td class="memItemRight" valign="bottom"><b>greaterOrEqual</b></td></tr> <tr class="inherit_header pro_attribs_classStringTrieBuilder_1_1BranchNode"><td colspan="2" onclick="javascript:toggleInherit('pro_attribs_classStringTrieBuilder_1_1BranchNode')"><img src="closed.png" alt="-"/> Protected Attributes inherited from <a class="el" href="classStringTrieBuilder_1_1BranchNode.html">StringTrieBuilder::BranchNode</a></td></tr> <tr class="memitem:adf8b79e1a169effc214db0fc1993393b inherit pro_attribs_classStringTrieBuilder_1_1BranchNode"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="adf8b79e1a169effc214db0fc1993393b"></a> <a class="el" href="pwin32_8h.html#ab1967d8591af1a4e48c37fd2b0f184d0">int32_t</a> </td><td class="memItemRight" valign="bottom"><b>firstEdgeNumber</b></td></tr> <tr class="inherit_header pro_attribs_classStringTrieBuilder_1_1Node"><td colspan="2" onclick="javascript:toggleInherit('pro_attribs_classStringTrieBuilder_1_1Node')"><img src="closed.png" alt="-"/> Protected Attributes inherited from <a class="el" href="classStringTrieBuilder_1_1Node.html">StringTrieBuilder::Node</a></td></tr> <tr class="memitem:aa1d3d4154d0cd9018148022d151179fb inherit pro_attribs_classStringTrieBuilder_1_1Node"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa1d3d4154d0cd9018148022d151179fb"></a> <a class="el" href="pwin32_8h.html#ab1967d8591af1a4e48c37fd2b0f184d0">int32_t</a> </td><td class="memItemRight" valign="bottom"><b>hash</b></td></tr> <tr class="memitem:a366e2c3b5e1e93fea0dfa683c8b0f063 inherit pro_attribs_classStringTrieBuilder_1_1Node"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a366e2c3b5e1e93fea0dfa683c8b0f063"></a> <a class="el" href="pwin32_8h.html#ab1967d8591af1a4e48c37fd2b0f184d0">int32_t</a> </td><td class="memItemRight" valign="bottom"><b>offset</b></td></tr> </table> <hr/><a name="details" id="details"></a><h2>Detailed Description</h2> <div class="textblock"><dl class="internal"><dt><b><a class="el" href="internal.html#_internal000122">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#l00328">328</a> of file <a class="el" href="stringtriebuilder_8h_source.html">stringtriebuilder.h</a>.</p> </div><hr/><h2>Member Function Documentation</h2> <a class="anchor" id="ab50502af618b9c48d0021c979c542225"></a> <div class="memitem"> <div class="memproto"> <table class="mlabels"> <tr> <td class="mlabels-left"> <table class="memname"> <tr> <td class="memname">virtual <a class="el" href="pwin32_8h.html#ab1967d8591af1a4e48c37fd2b0f184d0">int32_t</a> StringTrieBuilder::SplitBranchNode::markRightEdgesFirst </td> <td>(</td> <td class="paramtype"><a class="el" href="pwin32_8h.html#ab1967d8591af1a4e48c37fd2b0f184d0">int32_t</a> </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="classStringTrieBuilder_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 from <a class="el" href="classStringTrieBuilder_1_1Node.html#af78a4a35580b5b6790bb36aaf3d5dcb4">StringTrieBuilder::Node</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.1.1 </small></address> </body> </html>