<!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::LinearMatchNode 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_1LinearMatchNode.html">LinearMatchNode</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">icu::StringTrieBuilder::LinearMatchNode 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 icu::StringTrieBuilder::LinearMatchNode:</div> <div class="dyncontent"> <div class="center"> <img src="classicu_1_1StringTrieBuilder_1_1LinearMatchNode.png" usemap="#icu::StringTrieBuilder::LinearMatchNode_map" alt=""/> <map id="icu::StringTrieBuilder::LinearMatchNode_map" name="icu::StringTrieBuilder::LinearMatchNode_map"> <area href="classicu_1_1StringTrieBuilder_1_1ValueNode.html" alt="icu::StringTrieBuilder::ValueNode" shape="rect" coords="0,168,237,192"/> <area href="classicu_1_1StringTrieBuilder_1_1Node.html" alt="icu::StringTrieBuilder::Node" shape="rect" coords="0,112,237,136"/> <area href="classicu_1_1UObject.html" title="UObject is the common ICU "boilerplate" class. " alt="icu::UObject" shape="rect" coords="0,56,237,80"/> <area href="classicu_1_1UMemory.html" title="UMemory is the common ICU base class. " alt="icu::UMemory" shape="rect" coords="0,0,237,24"/> </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:a360851b8be8dfddb71f94a64e84ce7d7"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a360851b8be8dfddb71f94a64e84ce7d7"></a>  </td><td class="memItemRight" valign="bottom"><b>LinearMatchNode</b> (int32_t len, <a class="el" href="classicu_1_1StringTrieBuilder_1_1Node.html">Node</a> *nextNode)</td></tr> <tr class="separator:a360851b8be8dfddb71f94a64e84ce7d7"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a1d53535508c3d6cc281bbc97620cff97"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a1d53535508c3d6cc281bbc97620cff97"></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:a1d53535508c3d6cc281bbc97620cff97"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a595e0de9726d76d0bd7266b57890b71c"><td class="memItemLeft" align="right" valign="top">virtual int32_t </td><td class="memItemRight" valign="bottom"><a class="el" href="classicu_1_1StringTrieBuilder_1_1LinearMatchNode.html#a595e0de9726d76d0bd7266b57890b71c">markRightEdgesFirst</a> (int32_t edgeNumber)</td></tr> <tr class="memdesc:a595e0de9726d76d0bd7266b57890b71c"><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="#a595e0de9726d76d0bd7266b57890b71c">More...</a><br /></td></tr> <tr class="separator:a595e0de9726d76d0bd7266b57890b71c"><td class="memSeparator" colspan="2"> </td></tr> <tr class="inherit_header pub_methods_classicu_1_1StringTrieBuilder_1_1ValueNode"><td colspan="2" onclick="javascript:toggleInherit('pub_methods_classicu_1_1StringTrieBuilder_1_1ValueNode')"><img src="closed.png" alt="-"/> Public Member Functions inherited from <a class="el" href="classicu_1_1StringTrieBuilder_1_1ValueNode.html">icu::StringTrieBuilder::ValueNode</a></td></tr> <tr class="memitem:ab524070882ee28b1f3ed372c385c66fa inherit pub_methods_classicu_1_1StringTrieBuilder_1_1ValueNode"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ab524070882ee28b1f3ed372c385c66fa"></a>  </td><td class="memItemRight" valign="bottom"><b>ValueNode</b> (int32_t initialHash)</td></tr> <tr class="separator:ab524070882ee28b1f3ed372c385c66fa inherit pub_methods_classicu_1_1StringTrieBuilder_1_1ValueNode"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a03cfb634cf37e15644f525b773c69089 inherit pub_methods_classicu_1_1StringTrieBuilder_1_1ValueNode"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a03cfb634cf37e15644f525b773c69089"></a> void </td><td class="memItemRight" valign="bottom"><b>setValue</b> (int32_t v)</td></tr> <tr class="separator:a03cfb634cf37e15644f525b773c69089 inherit pub_methods_classicu_1_1StringTrieBuilder_1_1ValueNode"><td class="memSeparator" colspan="2"> </td></tr> <tr class="inherit_header pub_methods_classicu_1_1StringTrieBuilder_1_1Node"><td colspan="2" onclick="javascript:toggleInherit('pub_methods_classicu_1_1StringTrieBuilder_1_1Node')"><img src="closed.png" alt="-"/> Public Member Functions inherited from <a class="el" href="classicu_1_1StringTrieBuilder_1_1Node.html">icu::StringTrieBuilder::Node</a></td></tr> <tr class="memitem:ac8a1ea845159e315029930b3cbddb43f inherit pub_methods_classicu_1_1StringTrieBuilder_1_1Node"><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 inherit pub_methods_classicu_1_1StringTrieBuilder_1_1Node"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a8a0202815bf6a8ea65a47331427e9c37 inherit pub_methods_classicu_1_1StringTrieBuilder_1_1Node"><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 inherit pub_methods_classicu_1_1StringTrieBuilder_1_1Node"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a012d6bb1d794e72e6c14285f5c0cb876 inherit pub_methods_classicu_1_1StringTrieBuilder_1_1Node"><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 inherit pub_methods_classicu_1_1StringTrieBuilder_1_1Node"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:ad5bcf39816639ffbccd6e9b9654585d1 inherit pub_methods_classicu_1_1StringTrieBuilder_1_1Node"><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 inherit pub_methods_classicu_1_1StringTrieBuilder_1_1Node"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:adfd1484dd24f5bf5c468538a3583ed57 inherit pub_methods_classicu_1_1StringTrieBuilder_1_1Node"><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 inherit pub_methods_classicu_1_1StringTrieBuilder_1_1Node"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a0bf6ee63af089a3e116f970513d86f43 inherit pub_methods_classicu_1_1StringTrieBuilder_1_1Node"><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 inherit pub_methods_classicu_1_1StringTrieBuilder_1_1Node"><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="pro-attribs"></a> Protected Attributes</h2></td></tr> <tr class="memitem:a6b1aa8b3485a4692b523ea87b7b52c16"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a6b1aa8b3485a4692b523ea87b7b52c16"></a> int32_t </td><td class="memItemRight" valign="bottom"><b>length</b></td></tr> <tr class="separator:a6b1aa8b3485a4692b523ea87b7b52c16"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a447712a9c6718f1eebf7fa1f0c1ff452"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a447712a9c6718f1eebf7fa1f0c1ff452"></a> <a class="el" href="classicu_1_1StringTrieBuilder_1_1Node.html">Node</a> * </td><td class="memItemRight" valign="bottom"><b>next</b></td></tr> <tr class="separator:a447712a9c6718f1eebf7fa1f0c1ff452"><td class="memSeparator" colspan="2"> </td></tr> <tr class="inherit_header pro_attribs_classicu_1_1StringTrieBuilder_1_1ValueNode"><td colspan="2" onclick="javascript:toggleInherit('pro_attribs_classicu_1_1StringTrieBuilder_1_1ValueNode')"><img src="closed.png" alt="-"/> Protected Attributes inherited from <a class="el" href="classicu_1_1StringTrieBuilder_1_1ValueNode.html">icu::StringTrieBuilder::ValueNode</a></td></tr> <tr class="memitem:aae3581bcc14c1e480a9c1781c24cafae inherit pro_attribs_classicu_1_1StringTrieBuilder_1_1ValueNode"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aae3581bcc14c1e480a9c1781c24cafae"></a> <a class="el" href="umachine_8h.html#a349ef00011f20ccd1d3b424445681aa5">UBool</a> </td><td class="memItemRight" valign="bottom"><b>hasValue</b></td></tr> <tr class="separator:aae3581bcc14c1e480a9c1781c24cafae inherit pro_attribs_classicu_1_1StringTrieBuilder_1_1ValueNode"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a5cd6f3a29be09376b876dc6ff6c4ab33 inherit pro_attribs_classicu_1_1StringTrieBuilder_1_1ValueNode"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a5cd6f3a29be09376b876dc6ff6c4ab33"></a> int32_t </td><td class="memItemRight" valign="bottom"><b>value</b></td></tr> <tr class="separator:a5cd6f3a29be09376b876dc6ff6c4ab33 inherit pro_attribs_classicu_1_1StringTrieBuilder_1_1ValueNode"><td class="memSeparator" colspan="2"> </td></tr> <tr class="inherit_header pro_attribs_classicu_1_1StringTrieBuilder_1_1Node"><td colspan="2" onclick="javascript:toggleInherit('pro_attribs_classicu_1_1StringTrieBuilder_1_1Node')"><img src="closed.png" alt="-"/> Protected Attributes inherited from <a class="el" href="classicu_1_1StringTrieBuilder_1_1Node.html">icu::StringTrieBuilder::Node</a></td></tr> <tr class="memitem:adb88ddfa6a185f926ab9cf2ed13630de inherit pro_attribs_classicu_1_1StringTrieBuilder_1_1Node"><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 inherit pro_attribs_classicu_1_1StringTrieBuilder_1_1Node"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:adf5d3660b810e89bc1cd32e6863240bb inherit pro_attribs_classicu_1_1StringTrieBuilder_1_1Node"><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 inherit pro_attribs_classicu_1_1StringTrieBuilder_1_1Node"><td class="memSeparator" colspan="2"> </td></tr> </table><table class="memberdecls"> <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="inherited"></a> Additional Inherited Members</h2></td></tr> <tr class="inherit_header pub_static_methods_classicu_1_1StringTrieBuilder_1_1Node"><td colspan="2" onclick="javascript:toggleInherit('pub_static_methods_classicu_1_1StringTrieBuilder_1_1Node')"><img src="closed.png" alt="-"/> Static Public Member Functions inherited from <a class="el" href="classicu_1_1StringTrieBuilder_1_1Node.html">icu::StringTrieBuilder::Node</a></td></tr> <tr class="memitem:a38a75eb1bc77432a459640520da2a14a inherit pub_static_methods_classicu_1_1StringTrieBuilder_1_1Node"><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 inherit pub_static_methods_classicu_1_1StringTrieBuilder_1_1Node"><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#_internal000147">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#l00307">307</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="a595e0de9726d76d0bd7266b57890b71c"></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::LinearMatchNode::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 from <a class="el" href="classicu_1_1StringTrieBuilder_1_1Node.html#a6579bd649427882f665f0ca74e2d058e">icu::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.11 </small></address> </body> </html>