<!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 52.1: tblcoll.h Source File</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 style="padding-left: 0.5em;"> <div id="projectname">ICU 52.1  <span id="projectnumber">52.1</span> </div> </td> </tr> </tbody> </table> </div> <!-- end header part --> <!-- Generated by Doxygen 1.8.1.2 --> <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><a href="annotated.html"><span>Data Structures</span></a></li> <li class="current"><a href="files.html"><span>Files</span></a></li> </ul> </div> <div id="navrow2" class="tabs2"> <ul class="tablist"> <li><a href="files.html"><span>File List</span></a></li> <li><a href="globals.html"><span>Globals</span></a></li> </ul> </div> <div id="nav-path" class="navpath"> <ul> <li class="navelem"><a class="el" href="dir_73bc6a9bb617ea1bc89a10aa59ce84e4.html">i18n</a></li><li class="navelem"><a class="el" href="dir_0119ce638985e8a1561a00fdb5f76ff6.html">unicode</a></li> </ul> </div> </div><!-- top --> <div class="header"> <div class="headertitle"> <div class="title">tblcoll.h</div> </div> </div><!--header--> <div class="contents"> <a href="tblcoll_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/*</span></div> <div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment">******************************************************************************</span></div> <div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment">* Copyright (C) 1996-2013, International Business Machines Corporation and</span></div> <div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment">* others. All Rights Reserved.</span></div> <div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment">******************************************************************************</span></div> <div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment">*/</span></div> <div class="line"><a name="l00007"></a><span class="lineno"> 7</span> </div> <div class="line"><a name="l00059"></a><span class="lineno"> 59</span> <span class="preprocessor">#ifndef TBLCOLL_H</span></div> <div class="line"><a name="l00060"></a><span class="lineno"> 60</span> <span class="preprocessor"></span><span class="preprocessor">#define TBLCOLL_H</span></div> <div class="line"><a name="l00061"></a><span class="lineno"> 61</span> <span class="preprocessor"></span></div> <div class="line"><a name="l00062"></a><span class="lineno"> 62</span> <span class="preprocessor">#include "<a class="code" href="utypes_8h.html" title="Basic definitions for ICU, for both C and C++ APIs.">unicode/utypes.h</a>"</span></div> <div class="line"><a name="l00063"></a><span class="lineno"> 63</span> </div> <div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  </div> <div class="line"><a name="l00065"></a><span class="lineno"> 65</span> <span class="preprocessor">#if !UCONFIG_NO_COLLATION</span></div> <div class="line"><a name="l00066"></a><span class="lineno"> 66</span> <span class="preprocessor"></span></div> <div class="line"><a name="l00067"></a><span class="lineno"> 67</span> <span class="preprocessor">#include "<a class="code" href="coll_8h.html" title="C++ API: Collation Service.">unicode/coll.h</a>"</span></div> <div class="line"><a name="l00068"></a><span class="lineno"> 68</span> <span class="preprocessor">#include "<a class="code" href="ucol_8h.html" title="C API: Collator.">unicode/ucol.h</a>"</span></div> <div class="line"><a name="l00069"></a><span class="lineno"> 69</span> <span class="preprocessor">#include "<a class="code" href="sortkey_8h.html" title="C++ API: Keys for comparing strings multiple times.">unicode/sortkey.h</a>"</span></div> <div class="line"><a name="l00070"></a><span class="lineno"> 70</span> <span class="preprocessor">#include "<a class="code" href="normlzr_8h.html" title="C++ API: Unicode Normalization.">unicode/normlzr.h</a>"</span></div> <div class="line"><a name="l00071"></a><span class="lineno"> 71</span> </div> <div class="line"><a name="l00072"></a><span class="lineno"> 72</span> <a class="code" href="uversion_8h.html#a7d9374e037299886d4192b763b4c5e8b" title="This is used to begin a declaration of a public ICU C++ API.">U_NAMESPACE_BEGIN</a></div> <div class="line"><a name="l00073"></a><span class="lineno"> 73</span> </div> <div class="line"><a name="l00077"></a><span class="lineno"> 77</span> <span class="keyword">class </span>StringSearch;</div> <div class="line"><a name="l00081"></a><span class="lineno"> 81</span> <span class="keyword">class </span>CollationElementIterator;</div> <div class="line"><a name="l00082"></a><span class="lineno"> 82</span> </div> <div class="line"><a name="l00111"></a><span class="lineno"><a class="code" href="classicu_1_1RuleBasedCollator.html"> 111</a></span> <span class="keyword">class </span><a class="code" href="utypes_8h.html#ab9d90a30137b6ec046fe59e79b09745a" title="Set to export library symbols from inside the i18n library, and to import them from outside...">U_I18N_API</a> <a class="code" href="classicu_1_1RuleBasedCollator.html" title="The RuleBasedCollator class provides the simple implementation of Collator, using data-driven tables...">RuleBasedCollator</a> : <span class="keyword">public</span> <a class="code" href="classicu_1_1Collator.html" title="The Collator class performs locale-sensitive string comparison.">Collator</a></div> <div class="line"><a name="l00112"></a><span class="lineno"> 112</span> {</div> <div class="line"><a name="l00113"></a><span class="lineno"> 113</span> <span class="keyword">public</span>:</div> <div class="line"><a name="l00114"></a><span class="lineno"> 114</span> </div> <div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  <span class="comment">// constructor -------------------------------------------------------------</span></div> <div class="line"><a name="l00116"></a><span class="lineno"> 116</span> </div> <div class="line"><a name="l00126"></a><span class="lineno"> 126</span>  <a class="code" href="classicu_1_1RuleBasedCollator.html" title="The RuleBasedCollator class provides the simple implementation of Collator, using data-driven tables...">RuleBasedCollator</a>(<span class="keyword">const</span> <a class="code" href="classicu_1_1UnicodeString.html" title="UnicodeString is a string class that stores Unicode characters directly and provides similar function...">UnicodeString</a>& rules, <a class="code" href="utypes_8h.html#a3343c1c8a8377277046774691c98d78c" title="Error code to replace exception handling, so that the code is compatible with all C++ compilers...">UErrorCode</a>& status);</div> <div class="line"><a name="l00127"></a><span class="lineno"> 127</span> </div> <div class="line"><a name="l00138"></a><span class="lineno"> 138</span>  <a class="code" href="classicu_1_1RuleBasedCollator.html" title="The RuleBasedCollator class provides the simple implementation of Collator, using data-driven tables...">RuleBasedCollator</a>(<span class="keyword">const</span> <a class="code" href="classicu_1_1UnicodeString.html" title="UnicodeString is a string class that stores Unicode characters directly and provides similar function...">UnicodeString</a>& rules,</div> <div class="line"><a name="l00139"></a><span class="lineno"> 139</span>  <a class="code" href="classicu_1_1Collator.html#a82bc20541fe4503fb78644a1968e15a2" title="Base letter represents a primary difference.">ECollationStrength</a> collationStrength,</div> <div class="line"><a name="l00140"></a><span class="lineno"> 140</span>  <a class="code" href="utypes_8h.html#a3343c1c8a8377277046774691c98d78c" title="Error code to replace exception handling, so that the code is compatible with all C++ compilers...">UErrorCode</a>& status);</div> <div class="line"><a name="l00141"></a><span class="lineno"> 141</span> </div> <div class="line"><a name="l00152"></a><span class="lineno"> 152</span>  <a class="code" href="classicu_1_1RuleBasedCollator.html" title="The RuleBasedCollator class provides the simple implementation of Collator, using data-driven tables...">RuleBasedCollator</a>(<span class="keyword">const</span> <a class="code" href="classicu_1_1UnicodeString.html" title="UnicodeString is a string class that stores Unicode characters directly and provides similar function...">UnicodeString</a>& rules,</div> <div class="line"><a name="l00153"></a><span class="lineno"> 153</span>  <a class="code" href="ucol_8h.html#acc801048729e684bcabed328be85f77a" title="Enum containing attribute values for controling collation behavior.">UColAttributeValue</a> decompositionMode,</div> <div class="line"><a name="l00154"></a><span class="lineno"> 154</span>  <a class="code" href="utypes_8h.html#a3343c1c8a8377277046774691c98d78c" title="Error code to replace exception handling, so that the code is compatible with all C++ compilers...">UErrorCode</a>& status);</div> <div class="line"><a name="l00155"></a><span class="lineno"> 155</span> </div> <div class="line"><a name="l00167"></a><span class="lineno"> 167</span>  <a class="code" href="classicu_1_1RuleBasedCollator.html" title="The RuleBasedCollator class provides the simple implementation of Collator, using data-driven tables...">RuleBasedCollator</a>(<span class="keyword">const</span> <a class="code" href="classicu_1_1UnicodeString.html" title="UnicodeString is a string class that stores Unicode characters directly and provides similar function...">UnicodeString</a>& rules,</div> <div class="line"><a name="l00168"></a><span class="lineno"> 168</span>  <a class="code" href="classicu_1_1Collator.html#a82bc20541fe4503fb78644a1968e15a2" title="Base letter represents a primary difference.">ECollationStrength</a> collationStrength,</div> <div class="line"><a name="l00169"></a><span class="lineno"> 169</span>  <a class="code" href="ucol_8h.html#acc801048729e684bcabed328be85f77a" title="Enum containing attribute values for controling collation behavior.">UColAttributeValue</a> decompositionMode,</div> <div class="line"><a name="l00170"></a><span class="lineno"> 170</span>  <a class="code" href="utypes_8h.html#a3343c1c8a8377277046774691c98d78c" title="Error code to replace exception handling, so that the code is compatible with all C++ compilers...">UErrorCode</a>& status);</div> <div class="line"><a name="l00171"></a><span class="lineno"> 171</span> </div> <div class="line"><a name="l00178"></a><span class="lineno"> 178</span>  <a class="code" href="classicu_1_1RuleBasedCollator.html" title="The RuleBasedCollator class provides the simple implementation of Collator, using data-driven tables...">RuleBasedCollator</a>(<span class="keyword">const</span> <a class="code" href="classicu_1_1RuleBasedCollator.html" title="The RuleBasedCollator class provides the simple implementation of Collator, using data-driven tables...">RuleBasedCollator</a>& other);</div> <div class="line"><a name="l00179"></a><span class="lineno"> 179</span> </div> <div class="line"><a name="l00180"></a><span class="lineno"> 180</span> </div> <div class="line"><a name="l00198"></a><span class="lineno"> 198</span>  <a class="code" href="classicu_1_1RuleBasedCollator.html" title="The RuleBasedCollator class provides the simple implementation of Collator, using data-driven tables...">RuleBasedCollator</a>(<span class="keyword">const</span> uint8_t *bin, int32_t length, </div> <div class="line"><a name="l00199"></a><span class="lineno"> 199</span>  <span class="keyword">const</span> <a class="code" href="classicu_1_1RuleBasedCollator.html" title="The RuleBasedCollator class provides the simple implementation of Collator, using data-driven tables...">RuleBasedCollator</a> *base, </div> <div class="line"><a name="l00200"></a><span class="lineno"> 200</span>  <a class="code" href="utypes_8h.html#a3343c1c8a8377277046774691c98d78c" title="Error code to replace exception handling, so that the code is compatible with all C++ compilers...">UErrorCode</a> &status);</div> <div class="line"><a name="l00201"></a><span class="lineno"> 201</span>  <span class="comment">// destructor --------------------------------------------------------------</span></div> <div class="line"><a name="l00202"></a><span class="lineno"> 202</span> </div> <div class="line"><a name="l00207"></a><span class="lineno"> 207</span>  <span class="keyword">virtual</span> ~<a class="code" href="classicu_1_1RuleBasedCollator.html" title="The RuleBasedCollator class provides the simple implementation of Collator, using data-driven tables...">RuleBasedCollator</a>();</div> <div class="line"><a name="l00208"></a><span class="lineno"> 208</span> </div> <div class="line"><a name="l00209"></a><span class="lineno"> 209</span>  <span class="comment">// public methods ----------------------------------------------------------</span></div> <div class="line"><a name="l00210"></a><span class="lineno"> 210</span> </div> <div class="line"><a name="l00216"></a><span class="lineno"> 216</span>  <a class="code" href="classicu_1_1RuleBasedCollator.html" title="The RuleBasedCollator class provides the simple implementation of Collator, using data-driven tables...">RuleBasedCollator</a>& operator=(<span class="keyword">const</span> <a class="code" href="classicu_1_1RuleBasedCollator.html" title="The RuleBasedCollator class provides the simple implementation of Collator, using data-driven tables...">RuleBasedCollator</a>& other);</div> <div class="line"><a name="l00217"></a><span class="lineno"> 217</span> </div> <div class="line"><a name="l00224"></a><span class="lineno"> 224</span>  <span class="keyword">virtual</span> <a class="code" href="umachine_8h.html#a349ef00011f20ccd1d3b424445681aa5" title="The ICU boolean type.">UBool</a> <a class="code" href="classicu_1_1Collator.html#a042bb938d6eff7f670fca78e8d025500" title="Returns TRUE if "other" is the same as "this".">operator==</a>(<span class="keyword">const</span> <a class="code" href="classicu_1_1Collator.html" title="The Collator class performs locale-sensitive string comparison.">Collator</a>& other) <span class="keyword">const</span>;</div> <div class="line"><a name="l00225"></a><span class="lineno"> 225</span> </div> <div class="line"><a name="l00231"></a><span class="lineno"> 231</span>  <span class="keyword">virtual</span> <a class="code" href="classicu_1_1Collator.html" title="The Collator class performs locale-sensitive string comparison.">Collator</a>* <a class="code" href="classicu_1_1Collator.html#a505289afa039447c0cf500558ac249e0" title="Makes a copy of this object.">clone</a>(<span class="keywordtype">void</span>) <span class="keyword">const</span>;</div> <div class="line"><a name="l00232"></a><span class="lineno"> 232</span> </div> <div class="line"><a name="l00243"></a><span class="lineno"> 243</span>  <span class="keyword">virtual</span> <a class="code" href="classicu_1_1CollationElementIterator.html" title="The CollationElementIterator class is used as an iterator to walk through each character of an intern...">CollationElementIterator</a>* createCollationElementIterator(</div> <div class="line"><a name="l00244"></a><span class="lineno"> 244</span>  <span class="keyword">const</span> <a class="code" href="classicu_1_1UnicodeString.html" title="UnicodeString is a string class that stores Unicode characters directly and provides similar function...">UnicodeString</a>& source) <span class="keyword">const</span>;</div> <div class="line"><a name="l00245"></a><span class="lineno"> 245</span> </div> <div class="line"><a name="l00255"></a><span class="lineno"> 255</span>  <span class="keyword">virtual</span> <a class="code" href="classicu_1_1CollationElementIterator.html" title="The CollationElementIterator class is used as an iterator to walk through each character of an intern...">CollationElementIterator</a>* createCollationElementIterator(</div> <div class="line"><a name="l00256"></a><span class="lineno"> 256</span>  <span class="keyword">const</span> <a class="code" href="classicu_1_1CharacterIterator.html" title="Abstract class that defines an API for iteration on text objects.">CharacterIterator</a>& source) <span class="keyword">const</span>;</div> <div class="line"><a name="l00257"></a><span class="lineno"> 257</span> </div> <div class="line"><a name="l00258"></a><span class="lineno"> 258</span>  <span class="comment">// Make deprecated versions of Collator::compare() visible.</span></div> <div class="line"><a name="l00259"></a><span class="lineno"> 259</span>  <span class="keyword">using</span> Collator::compare;</div> <div class="line"><a name="l00260"></a><span class="lineno"> 260</span> </div> <div class="line"><a name="l00273"></a><span class="lineno"> 273</span>  <span class="keyword">virtual</span> <a class="code" href="ucol_8h.html#a8b4e71db8109af87f84ac1576e2b245d" title="UCOL_LESS is returned if source string is compared to be less than target string in the ucol_strcoll(...">UCollationResult</a> <a class="code" href="classicu_1_1Collator.html#a844bcb05f66aeaf17b2c52d8d7294d1d" title="The comparison function compares the character data stored in two different strings.">compare</a>(<span class="keyword">const</span> <a class="code" href="classicu_1_1UnicodeString.html" title="UnicodeString is a string class that stores Unicode characters directly and provides similar function...">UnicodeString</a>& source,</div> <div class="line"><a name="l00274"></a><span class="lineno"> 274</span>  <span class="keyword">const</span> <a class="code" href="classicu_1_1UnicodeString.html" title="UnicodeString is a string class that stores Unicode characters directly and provides similar function...">UnicodeString</a>& target,</div> <div class="line"><a name="l00275"></a><span class="lineno"> 275</span>  <a class="code" href="utypes_8h.html#a3343c1c8a8377277046774691c98d78c" title="Error code to replace exception handling, so that the code is compatible with all C++ compilers...">UErrorCode</a> &status) <span class="keyword">const</span>;</div> <div class="line"><a name="l00276"></a><span class="lineno"> 276</span> </div> <div class="line"><a name="l00290"></a><span class="lineno"> 290</span>  <span class="keyword">virtual</span> <a class="code" href="ucol_8h.html#a8b4e71db8109af87f84ac1576e2b245d" title="UCOL_LESS is returned if source string is compared to be less than target string in the ucol_strcoll(...">UCollationResult</a> <a class="code" href="classicu_1_1Collator.html#a844bcb05f66aeaf17b2c52d8d7294d1d" title="The comparison function compares the character data stored in two different strings.">compare</a>(<span class="keyword">const</span> <a class="code" href="classicu_1_1UnicodeString.html" title="UnicodeString is a string class that stores Unicode characters directly and provides similar function...">UnicodeString</a>& source,</div> <div class="line"><a name="l00291"></a><span class="lineno"> 291</span>  <span class="keyword">const</span> <a class="code" href="classicu_1_1UnicodeString.html" title="UnicodeString is a string class that stores Unicode characters directly and provides similar function...">UnicodeString</a>& target,</div> <div class="line"><a name="l00292"></a><span class="lineno"> 292</span>  int32_t length,</div> <div class="line"><a name="l00293"></a><span class="lineno"> 293</span>  <a class="code" href="utypes_8h.html#a3343c1c8a8377277046774691c98d78c" title="Error code to replace exception handling, so that the code is compatible with all C++ compilers...">UErrorCode</a> &status) <span class="keyword">const</span>;</div> <div class="line"><a name="l00294"></a><span class="lineno"> 294</span> </div> <div class="line"><a name="l00311"></a><span class="lineno"> 311</span>  <span class="keyword">virtual</span> <a class="code" href="ucol_8h.html#a8b4e71db8109af87f84ac1576e2b245d" title="UCOL_LESS is returned if source string is compared to be less than target string in the ucol_strcoll(...">UCollationResult</a> <a class="code" href="classicu_1_1Collator.html#a844bcb05f66aeaf17b2c52d8d7294d1d" title="The comparison function compares the character data stored in two different strings.">compare</a>(<span class="keyword">const</span> <a class="code" href="umachine_8h.html#a6bb9fad572d65b305324ef288165e2ac" title="Define UChar to be UCHAR_TYPE, if that is #defined (for example, to char16_t), or wchar_t if that is ...">UChar</a>* source, int32_t sourceLength,</div> <div class="line"><a name="l00312"></a><span class="lineno"> 312</span>  <span class="keyword">const</span> <a class="code" href="umachine_8h.html#a6bb9fad572d65b305324ef288165e2ac" title="Define UChar to be UCHAR_TYPE, if that is #defined (for example, to char16_t), or wchar_t if that is ...">UChar</a>* target, int32_t targetLength,</div> <div class="line"><a name="l00313"></a><span class="lineno"> 313</span>  <a class="code" href="utypes_8h.html#a3343c1c8a8377277046774691c98d78c" title="Error code to replace exception handling, so that the code is compatible with all C++ compilers...">UErrorCode</a> &status) <span class="keyword">const</span>;</div> <div class="line"><a name="l00314"></a><span class="lineno"> 314</span> </div> <div class="line"><a name="l00326"></a><span class="lineno"> 326</span>  <span class="keyword">virtual</span> <a class="code" href="ucol_8h.html#a8b4e71db8109af87f84ac1576e2b245d" title="UCOL_LESS is returned if source string is compared to be less than target string in the ucol_strcoll(...">UCollationResult</a> <a class="code" href="classicu_1_1Collator.html#a844bcb05f66aeaf17b2c52d8d7294d1d" title="The comparison function compares the character data stored in two different strings.">compare</a>(<a class="code" href="structUCharIterator.html" title="C API for code unit iteration.">UCharIterator</a> &sIter,</div> <div class="line"><a name="l00327"></a><span class="lineno"> 327</span>  <a class="code" href="structUCharIterator.html" title="C API for code unit iteration.">UCharIterator</a> &tIter,</div> <div class="line"><a name="l00328"></a><span class="lineno"> 328</span>  <a class="code" href="utypes_8h.html#a3343c1c8a8377277046774691c98d78c" title="Error code to replace exception handling, so that the code is compatible with all C++ compilers...">UErrorCode</a> &status) <span class="keyword">const</span>;</div> <div class="line"><a name="l00329"></a><span class="lineno"> 329</span> </div> <div class="line"><a name="l00342"></a><span class="lineno"> 342</span>  <span class="keyword">virtual</span> <a class="code" href="classicu_1_1CollationKey.html" title="Collation keys are generated by the Collator class.">CollationKey</a>& <a class="code" href="classicu_1_1Collator.html#ad1e3bebe6e3ae7bd79cce7f2cf9f4ab1" title="Transforms the string into a series of characters that can be compared with CollationKey::compareTo.">getCollationKey</a>(<span class="keyword">const</span> <a class="code" href="classicu_1_1UnicodeString.html" title="UnicodeString is a string class that stores Unicode characters directly and provides similar function...">UnicodeString</a>& source,</div> <div class="line"><a name="l00343"></a><span class="lineno"> 343</span>  <a class="code" href="classicu_1_1CollationKey.html" title="Collation keys are generated by the Collator class.">CollationKey</a>& key,</div> <div class="line"><a name="l00344"></a><span class="lineno"> 344</span>  <a class="code" href="utypes_8h.html#a3343c1c8a8377277046774691c98d78c" title="Error code to replace exception handling, so that the code is compatible with all C++ compilers...">UErrorCode</a>& status) <span class="keyword">const</span>;</div> <div class="line"><a name="l00345"></a><span class="lineno"> 345</span> </div> <div class="line"><a name="l00359"></a><span class="lineno"> 359</span>  <span class="keyword">virtual</span> <a class="code" href="classicu_1_1CollationKey.html" title="Collation keys are generated by the Collator class.">CollationKey</a>& <a class="code" href="classicu_1_1Collator.html#ad1e3bebe6e3ae7bd79cce7f2cf9f4ab1" title="Transforms the string into a series of characters that can be compared with CollationKey::compareTo.">getCollationKey</a>(<span class="keyword">const</span> <a class="code" href="umachine_8h.html#a6bb9fad572d65b305324ef288165e2ac" title="Define UChar to be UCHAR_TYPE, if that is #defined (for example, to char16_t), or wchar_t if that is ...">UChar</a> *source,</div> <div class="line"><a name="l00360"></a><span class="lineno"> 360</span>  int32_t sourceLength,</div> <div class="line"><a name="l00361"></a><span class="lineno"> 361</span>  <a class="code" href="classicu_1_1CollationKey.html" title="Collation keys are generated by the Collator class.">CollationKey</a>& key,</div> <div class="line"><a name="l00362"></a><span class="lineno"> 362</span>  <a class="code" href="utypes_8h.html#a3343c1c8a8377277046774691c98d78c" title="Error code to replace exception handling, so that the code is compatible with all C++ compilers...">UErrorCode</a>& status) <span class="keyword">const</span>;</div> <div class="line"><a name="l00363"></a><span class="lineno"> 363</span> </div> <div class="line"><a name="l00369"></a><span class="lineno"> 369</span>  <span class="keyword">virtual</span> int32_t <a class="code" href="classicu_1_1Collator.html#aadde1f7d0f8156b9d33993aad707e7fa" title="Generates the hash code for the collation object.">hashCode</a>(<span class="keywordtype">void</span>) <span class="keyword">const</span>;</div> <div class="line"><a name="l00370"></a><span class="lineno"> 370</span> </div> <div class="line"><a name="l00381"></a><span class="lineno"> 381</span>  <span class="keyword">virtual</span> <a class="code" href="classicu_1_1Locale.html" title="A Locale object represents a specific geographical, political, or cultural region.">Locale</a> <a class="code" href="classicu_1_1Collator.html#a9ce5b59d720566877b2201747782ed19" title="Gets the locale of the Collator.">getLocale</a>(<a class="code" href="uloc_8h.html#adf053345d343f8d82ae080f7a5871f34" title="Constants for *_getLocale() Allow user to select whether she wants information on requested...">ULocDataLocaleType</a> type, <a class="code" href="utypes_8h.html#a3343c1c8a8377277046774691c98d78c" title="Error code to replace exception handling, so that the code is compatible with all C++ compilers...">UErrorCode</a>& status) <span class="keyword">const</span>;</div> <div class="line"><a name="l00382"></a><span class="lineno"> 382</span> </div> <div class="line"><a name="l00388"></a><span class="lineno"> 388</span>  <span class="keyword">const</span> <a class="code" href="classicu_1_1UnicodeString.html" title="UnicodeString is a string class that stores Unicode characters directly and provides similar function...">UnicodeString</a>& getRules(<span class="keywordtype">void</span>) <span class="keyword">const</span>;</div> <div class="line"><a name="l00389"></a><span class="lineno"> 389</span> </div> <div class="line"><a name="l00395"></a><span class="lineno"> 395</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classicu_1_1Collator.html#a26375fdb52b064d914b7f9861ec51236" title="Gets the version information for a Collator.">getVersion</a>(<a class="code" href="uversion_8h.html#a61caef96ba86d8e86a4031925ea44e94" title="The binary form of a version on ICU APIs is an array of 4 uint8_t.">UVersionInfo</a> info) <span class="keyword">const</span>;</div> <div class="line"><a name="l00396"></a><span class="lineno"> 396</span> </div> <div class="line"><a name="l00397"></a><span class="lineno"> 397</span> <span class="preprocessor">#ifndef U_HIDE_DEPRECATED_API </span></div> <div class="line"><a name="l00398"></a><span class="lineno"> 398</span> <span class="preprocessor"></span></div> <div class="line"><a name="l00414"></a><span class="lineno"> 414</span>  int32_t getMaxExpansion(int32_t order) <span class="keyword">const</span>;</div> <div class="line"><a name="l00415"></a><span class="lineno"> 415</span> <span class="preprocessor">#endif </span><span class="comment">/* U_HIDE_DEPRECATED_API */</span><span class="preprocessor"></span></div> <div class="line"><a name="l00416"></a><span class="lineno"> 416</span> <span class="preprocessor"></span></div> <div class="line"><a name="l00427"></a><span class="lineno"> 427</span>  <span class="keyword">virtual</span> <a class="code" href="uobject_8h.html#a22af10545208a455a6e884008df48e9f" title="UClassID is used to identify classes without using the compiler's RTTI.">UClassID</a> <a class="code" href="classicu_1_1Collator.html#a5bc8a1b8e65aa2444aa568e9692aed0a" title="Returns a unique class ID POLYMORPHICALLY.">getDynamicClassID</a>(<span class="keywordtype">void</span>) <span class="keyword">const</span>;</div> <div class="line"><a name="l00428"></a><span class="lineno"> 428</span> </div> <div class="line"><a name="l00440"></a><span class="lineno"> 440</span>  <span class="keyword">static</span> <a class="code" href="uobject_8h.html#a22af10545208a455a6e884008df48e9f" title="UClassID is used to identify classes without using the compiler's RTTI.">UClassID</a> U_EXPORT2 getStaticClassID(<span class="keywordtype">void</span>);</div> <div class="line"><a name="l00441"></a><span class="lineno"> 441</span> </div> <div class="line"><a name="l00442"></a><span class="lineno"> 442</span> <span class="preprocessor">#ifndef U_HIDE_DEPRECATED_API </span></div> <div class="line"><a name="l00443"></a><span class="lineno"> 443</span> <span class="preprocessor"></span></div> <div class="line"><a name="l00453"></a><span class="lineno"> 453</span>  uint8_t *cloneRuleData(int32_t &length, <a class="code" href="utypes_8h.html#a3343c1c8a8377277046774691c98d78c" title="Error code to replace exception handling, so that the code is compatible with all C++ compilers...">UErrorCode</a> &status);</div> <div class="line"><a name="l00454"></a><span class="lineno"> 454</span> <span class="preprocessor">#endif </span><span class="comment">/* U_HIDE_DEPRECATED_API */</span><span class="preprocessor"></span></div> <div class="line"><a name="l00455"></a><span class="lineno"> 455</span> <span class="preprocessor"></span></div> <div class="line"><a name="l00466"></a><span class="lineno"> 466</span>  int32_t cloneBinary(uint8_t *buffer, int32_t capacity, <a class="code" href="utypes_8h.html#a3343c1c8a8377277046774691c98d78c" title="Error code to replace exception handling, so that the code is compatible with all C++ compilers...">UErrorCode</a> &status);</div> <div class="line"><a name="l00467"></a><span class="lineno"> 467</span> </div> <div class="line"><a name="l00479"></a><span class="lineno"> 479</span>  <span class="keywordtype">void</span> getRules(<a class="code" href="ucol_8h.html#a46363290036b8dffd6862c35e7b5872f" title="Options for retrieving the rule string.">UColRuleOption</a> delta, <a class="code" href="classicu_1_1UnicodeString.html" title="UnicodeString is a string class that stores Unicode characters directly and provides similar function...">UnicodeString</a> &buffer);</div> <div class="line"><a name="l00480"></a><span class="lineno"> 480</span> </div> <div class="line"><a name="l00488"></a><span class="lineno"> 488</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classicu_1_1Collator.html#a4339fbf9104428a06923a25df7ffd7f4" title="Universal attribute setter.">setAttribute</a>(<a class="code" href="ucol_8h.html#a583fbe7fc4a850e2fcc692e766d2826c" title="Attributes that collation service understands.">UColAttribute</a> attr, <a class="code" href="ucol_8h.html#acc801048729e684bcabed328be85f77a" title="Enum containing attribute values for controling collation behavior.">UColAttributeValue</a> value,</div> <div class="line"><a name="l00489"></a><span class="lineno"> 489</span>  <a class="code" href="utypes_8h.html#a3343c1c8a8377277046774691c98d78c" title="Error code to replace exception handling, so that the code is compatible with all C++ compilers...">UErrorCode</a> &status);</div> <div class="line"><a name="l00490"></a><span class="lineno"> 490</span> </div> <div class="line"><a name="l00498"></a><span class="lineno"> 498</span>  <span class="keyword">virtual</span> <a class="code" href="ucol_8h.html#acc801048729e684bcabed328be85f77a" title="Enum containing attribute values for controling collation behavior.">UColAttributeValue</a> <a class="code" href="classicu_1_1Collator.html#aa3b934fb5a3a08fd8664824159c0ac91" title="Universal attribute getter.">getAttribute</a>(<a class="code" href="ucol_8h.html#a583fbe7fc4a850e2fcc692e766d2826c" title="Attributes that collation service understands.">UColAttribute</a> attr,</div> <div class="line"><a name="l00499"></a><span class="lineno"> 499</span>  <a class="code" href="utypes_8h.html#a3343c1c8a8377277046774691c98d78c" title="Error code to replace exception handling, so that the code is compatible with all C++ compilers...">UErrorCode</a> &status) <span class="keyword">const</span>;</div> <div class="line"><a name="l00500"></a><span class="lineno"> 500</span> </div> <div class="line"><a name="l00511"></a><span class="lineno"> 511</span>  <span class="keyword">virtual</span> uint32_t <a class="code" href="classicu_1_1Collator.html#af160cfa99c42483eb423ec8ea2d6abba" title="Sets the variable top to a collation element value of a string supplied.">setVariableTop</a>(<span class="keyword">const</span> <a class="code" href="umachine_8h.html#a6bb9fad572d65b305324ef288165e2ac" title="Define UChar to be UCHAR_TYPE, if that is #defined (for example, to char16_t), or wchar_t if that is ...">UChar</a> *varTop, int32_t len, <a class="code" href="utypes_8h.html#a3343c1c8a8377277046774691c98d78c" title="Error code to replace exception handling, so that the code is compatible with all C++ compilers...">UErrorCode</a> &status);</div> <div class="line"><a name="l00512"></a><span class="lineno"> 512</span> </div> <div class="line"><a name="l00522"></a><span class="lineno"> 522</span>  <span class="keyword">virtual</span> uint32_t <a class="code" href="classicu_1_1Collator.html#af160cfa99c42483eb423ec8ea2d6abba" title="Sets the variable top to a collation element value of a string supplied.">setVariableTop</a>(<span class="keyword">const</span> <a class="code" href="classicu_1_1UnicodeString.html" title="UnicodeString is a string class that stores Unicode characters directly and provides similar function...">UnicodeString</a> &varTop, <a class="code" href="utypes_8h.html#a3343c1c8a8377277046774691c98d78c" title="Error code to replace exception handling, so that the code is compatible with all C++ compilers...">UErrorCode</a> &status);</div> <div class="line"><a name="l00523"></a><span class="lineno"> 523</span> </div> <div class="line"><a name="l00531"></a><span class="lineno"> 531</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classicu_1_1Collator.html#af160cfa99c42483eb423ec8ea2d6abba" title="Sets the variable top to a collation element value of a string supplied.">setVariableTop</a>(uint32_t varTop, <a class="code" href="utypes_8h.html#a3343c1c8a8377277046774691c98d78c" title="Error code to replace exception handling, so that the code is compatible with all C++ compilers...">UErrorCode</a> &status);</div> <div class="line"><a name="l00532"></a><span class="lineno"> 532</span> </div> <div class="line"><a name="l00539"></a><span class="lineno"> 539</span>  <span class="keyword">virtual</span> uint32_t <a class="code" href="classicu_1_1Collator.html#a5aa9ae3225889380d10c53179e615790" title="Gets the variable top value of a Collator.">getVariableTop</a>(<a class="code" href="utypes_8h.html#a3343c1c8a8377277046774691c98d78c" title="Error code to replace exception handling, so that the code is compatible with all C++ compilers...">UErrorCode</a> &status) <span class="keyword">const</span>;</div> <div class="line"><a name="l00540"></a><span class="lineno"> 540</span> </div> <div class="line"><a name="l00550"></a><span class="lineno"> 550</span>  <span class="keyword">virtual</span> <a class="code" href="classicu_1_1UnicodeSet.html" title="A mutable set of Unicode characters and multicharacter strings.">UnicodeSet</a> *<a class="code" href="classicu_1_1Collator.html#ab4b6cdc4af0b4011d6867cb74f3287ce" title="Get an UnicodeSet that contains all the characters and sequences tailored in this collator...">getTailoredSet</a>(<a class="code" href="utypes_8h.html#a3343c1c8a8377277046774691c98d78c" title="Error code to replace exception handling, so that the code is compatible with all C++ compilers...">UErrorCode</a> &status) <span class="keyword">const</span>;</div> <div class="line"><a name="l00551"></a><span class="lineno"> 551</span> </div> <div class="line"><a name="l00562"></a><span class="lineno"> 562</span>  <span class="keyword">virtual</span> int32_t <a class="code" href="classicu_1_1Collator.html#a52ca2d2de5cd75fabd4b50fe61dd0165" title="Get the sort key as an array of bytes from an UnicodeString.">getSortKey</a>(<span class="keyword">const</span> <a class="code" href="classicu_1_1UnicodeString.html" title="UnicodeString is a string class that stores Unicode characters directly and provides similar function...">UnicodeString</a>& source, uint8_t *result,</div> <div class="line"><a name="l00563"></a><span class="lineno"> 563</span>  int32_t resultLength) <span class="keyword">const</span>;</div> <div class="line"><a name="l00564"></a><span class="lineno"> 564</span> </div> <div class="line"><a name="l00577"></a><span class="lineno"> 577</span>  <span class="keyword">virtual</span> int32_t <a class="code" href="classicu_1_1Collator.html#a52ca2d2de5cd75fabd4b50fe61dd0165" title="Get the sort key as an array of bytes from an UnicodeString.">getSortKey</a>(<span class="keyword">const</span> <a class="code" href="umachine_8h.html#a6bb9fad572d65b305324ef288165e2ac" title="Define UChar to be UCHAR_TYPE, if that is #defined (for example, to char16_t), or wchar_t if that is ...">UChar</a> *source, int32_t sourceLength,</div> <div class="line"><a name="l00578"></a><span class="lineno"> 578</span>  uint8_t *result, int32_t resultLength) <span class="keyword">const</span>;</div> <div class="line"><a name="l00579"></a><span class="lineno"> 579</span> </div> <div class="line"><a name="l00593"></a><span class="lineno"> 593</span>  <span class="keyword">virtual</span> int32_t <a class="code" href="classicu_1_1Collator.html#a18035cc173f7253b9b778eb52e32eae3" title="Retrieves the reordering codes for this collator.">getReorderCodes</a>(int32_t *dest,</div> <div class="line"><a name="l00594"></a><span class="lineno"> 594</span>  int32_t destCapacity,</div> <div class="line"><a name="l00595"></a><span class="lineno"> 595</span>  <a class="code" href="utypes_8h.html#a3343c1c8a8377277046774691c98d78c" title="Error code to replace exception handling, so that the code is compatible with all C++ compilers...">UErrorCode</a>& status) <span class="keyword">const</span>;</div> <div class="line"><a name="l00596"></a><span class="lineno"> 596</span> </div> <div class="line"><a name="l00607"></a><span class="lineno"> 607</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classicu_1_1Collator.html#ad0d7f72096a46f480e1cf6653a679240" title="Sets the ordering of scripts for this collator.">setReorderCodes</a>(<span class="keyword">const</span> int32_t* reorderCodes,</div> <div class="line"><a name="l00608"></a><span class="lineno"> 608</span>  int32_t reorderCodesLength,</div> <div class="line"><a name="l00609"></a><span class="lineno"> 609</span>  <a class="code" href="utypes_8h.html#a3343c1c8a8377277046774691c98d78c" title="Error code to replace exception handling, so that the code is compatible with all C++ compilers...">UErrorCode</a>& status) ;</div> <div class="line"><a name="l00610"></a><span class="lineno"> 610</span> </div> <div class="line"><a name="l00627"></a><span class="lineno"> 627</span>  <span class="keyword">static</span> int32_t U_EXPORT2 <a class="code" href="classicu_1_1Collator.html#af7c8befb8e7086be8fca27d23072b4d5" title="Retrieves the reorder codes that are grouped with the given reorder code.">getEquivalentReorderCodes</a>(int32_t reorderCode,</div> <div class="line"><a name="l00628"></a><span class="lineno"> 628</span>  int32_t* dest,</div> <div class="line"><a name="l00629"></a><span class="lineno"> 629</span>  int32_t destCapacity,</div> <div class="line"><a name="l00630"></a><span class="lineno"> 630</span>  <a class="code" href="utypes_8h.html#a3343c1c8a8377277046774691c98d78c" title="Error code to replace exception handling, so that the code is compatible with all C++ compilers...">UErrorCode</a>& status);</div> <div class="line"><a name="l00631"></a><span class="lineno"> 631</span> </div> <div class="line"><a name="l00632"></a><span class="lineno"> 632</span> <span class="keyword">private</span>:</div> <div class="line"><a name="l00633"></a><span class="lineno"> 633</span> </div> <div class="line"><a name="l00634"></a><span class="lineno"> 634</span>  <span class="comment">// private static constants -----------------------------------------------</span></div> <div class="line"><a name="l00635"></a><span class="lineno"> 635</span> </div> <div class="line"><a name="l00636"></a><span class="lineno"> 636</span>  <span class="keyword">enum</span> {</div> <div class="line"><a name="l00637"></a><span class="lineno"> 637</span>  <span class="comment">/* need look up in .commit() */</span></div> <div class="line"><a name="l00638"></a><span class="lineno"> 638</span>  CHARINDEX = 0x70000000,</div> <div class="line"><a name="l00639"></a><span class="lineno"> 639</span>  <span class="comment">/* Expand index follows */</span></div> <div class="line"><a name="l00640"></a><span class="lineno"> 640</span>  EXPANDCHARINDEX = 0x7E000000,</div> <div class="line"><a name="l00641"></a><span class="lineno"> 641</span>  <span class="comment">/* contract indexes follows */</span></div> <div class="line"><a name="l00642"></a><span class="lineno"> 642</span>  CONTRACTCHARINDEX = 0x7F000000,</div> <div class="line"><a name="l00643"></a><span class="lineno"> 643</span>  <span class="comment">/* unmapped character values */</span></div> <div class="line"><a name="l00644"></a><span class="lineno"> 644</span>  UNMAPPED = 0xFFFFFFFF,</div> <div class="line"><a name="l00645"></a><span class="lineno"> 645</span>  <span class="comment">/* primary strength increment */</span></div> <div class="line"><a name="l00646"></a><span class="lineno"> 646</span>  PRIMARYORDERINCREMENT = 0x00010000,</div> <div class="line"><a name="l00647"></a><span class="lineno"> 647</span>  <span class="comment">/* secondary strength increment */</span></div> <div class="line"><a name="l00648"></a><span class="lineno"> 648</span>  SECONDARYORDERINCREMENT = 0x00000100,</div> <div class="line"><a name="l00649"></a><span class="lineno"> 649</span>  <span class="comment">/* tertiary strength increment */</span></div> <div class="line"><a name="l00650"></a><span class="lineno"> 650</span>  TERTIARYORDERINCREMENT = 0x00000001,</div> <div class="line"><a name="l00651"></a><span class="lineno"> 651</span>  <span class="comment">/* mask off anything but primary order */</span></div> <div class="line"><a name="l00652"></a><span class="lineno"> 652</span>  PRIMARYORDERMASK = 0xffff0000,</div> <div class="line"><a name="l00653"></a><span class="lineno"> 653</span>  <span class="comment">/* mask off anything but secondary order */</span></div> <div class="line"><a name="l00654"></a><span class="lineno"> 654</span>  SECONDARYORDERMASK = 0x0000ff00,</div> <div class="line"><a name="l00655"></a><span class="lineno"> 655</span>  <span class="comment">/* mask off anything but tertiary order */</span></div> <div class="line"><a name="l00656"></a><span class="lineno"> 656</span>  TERTIARYORDERMASK = 0x000000ff,</div> <div class="line"><a name="l00657"></a><span class="lineno"> 657</span>  <span class="comment">/* mask off ignorable char order */</span></div> <div class="line"><a name="l00658"></a><span class="lineno"> 658</span>  IGNORABLEMASK = 0x0000ffff,</div> <div class="line"><a name="l00659"></a><span class="lineno"> 659</span>  <span class="comment">/* use only the primary difference */</span></div> <div class="line"><a name="l00660"></a><span class="lineno"> 660</span>  PRIMARYDIFFERENCEONLY = 0xffff0000,</div> <div class="line"><a name="l00661"></a><span class="lineno"> 661</span>  <span class="comment">/* use only the primary and secondary difference */</span></div> <div class="line"><a name="l00662"></a><span class="lineno"> 662</span>  SECONDARYDIFFERENCEONLY = 0xffffff00,</div> <div class="line"><a name="l00663"></a><span class="lineno"> 663</span>  <span class="comment">/* primary order shift */</span></div> <div class="line"><a name="l00664"></a><span class="lineno"> 664</span>  PRIMARYORDERSHIFT = 16,</div> <div class="line"><a name="l00665"></a><span class="lineno"> 665</span>  <span class="comment">/* secondary order shift */</span></div> <div class="line"><a name="l00666"></a><span class="lineno"> 666</span>  SECONDARYORDERSHIFT = 8,</div> <div class="line"><a name="l00667"></a><span class="lineno"> 667</span>  <span class="comment">/* starting value for collation elements */</span></div> <div class="line"><a name="l00668"></a><span class="lineno"> 668</span>  COLELEMENTSTART = 0x02020202,</div> <div class="line"><a name="l00669"></a><span class="lineno"> 669</span>  <span class="comment">/* testing mask for primary low element */</span></div> <div class="line"><a name="l00670"></a><span class="lineno"> 670</span>  PRIMARYLOWZEROMASK = 0x00FF0000,</div> <div class="line"><a name="l00671"></a><span class="lineno"> 671</span>  <span class="comment">/* reseting value for secondaries and tertiaries */</span></div> <div class="line"><a name="l00672"></a><span class="lineno"> 672</span>  RESETSECONDARYTERTIARY = 0x00000202,</div> <div class="line"><a name="l00673"></a><span class="lineno"> 673</span>  <span class="comment">/* reseting value for tertiaries */</span></div> <div class="line"><a name="l00674"></a><span class="lineno"> 674</span>  RESETTERTIARY = 0x00000002,</div> <div class="line"><a name="l00675"></a><span class="lineno"> 675</span> </div> <div class="line"><a name="l00676"></a><span class="lineno"> 676</span>  PRIMIGNORABLE = 0x0202</div> <div class="line"><a name="l00677"></a><span class="lineno"> 677</span>  };</div> <div class="line"><a name="l00678"></a><span class="lineno"> 678</span> </div> <div class="line"><a name="l00679"></a><span class="lineno"> 679</span>  <span class="comment">// private data members ---------------------------------------------------</span></div> <div class="line"><a name="l00680"></a><span class="lineno"> 680</span> </div> <div class="line"><a name="l00681"></a><span class="lineno"> 681</span>  <a class="code" href="umachine_8h.html#a349ef00011f20ccd1d3b424445681aa5" title="The ICU boolean type.">UBool</a> dataIsOwned;</div> <div class="line"><a name="l00682"></a><span class="lineno"> 682</span> </div> <div class="line"><a name="l00683"></a><span class="lineno"> 683</span>  <a class="code" href="umachine_8h.html#a349ef00011f20ccd1d3b424445681aa5" title="The ICU boolean type.">UBool</a> isWriteThroughAlias;</div> <div class="line"><a name="l00684"></a><span class="lineno"> 684</span> </div> <div class="line"><a name="l00689"></a><span class="lineno"> 689</span>  <a class="code" href="ucol_8h.html#a3c4eeb412a5fd72762e6245aa75ca081" title="structure representing a collator object instance">UCollator</a> *ucollator;</div> <div class="line"><a name="l00690"></a><span class="lineno"> 690</span> </div> <div class="line"><a name="l00694"></a><span class="lineno"> 694</span>  <a class="code" href="classicu_1_1UnicodeString.html" title="UnicodeString is a string class that stores Unicode characters directly and provides similar function...">UnicodeString</a> urulestring;</div> <div class="line"><a name="l00695"></a><span class="lineno"> 695</span> </div> <div class="line"><a name="l00696"></a><span class="lineno"> 696</span>  <span class="comment">// friend classes --------------------------------------------------------</span></div> <div class="line"><a name="l00697"></a><span class="lineno"> 697</span> </div> <div class="line"><a name="l00701"></a><span class="lineno"><a class="code" href="classicu_1_1RuleBasedCollator.html#a2493a8a45ec3ae69e1bec8355c948519"> 701</a></span>  <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classicu_1_1CollationElementIterator.html" title="The CollationElementIterator class is used as an iterator to walk through each character of an intern...">CollationElementIterator</a>;</div> <div class="line"><a name="l00702"></a><span class="lineno"> 702</span> </div> <div class="line"><a name="l00707"></a><span class="lineno"><a class="code" href="classicu_1_1RuleBasedCollator.html#af22e5ffabbf5a2d4d729daa0b5d3cafd"> 707</a></span>  <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classicu_1_1Collator.html" title="The Collator class performs locale-sensitive string comparison.">Collator</a>;</div> <div class="line"><a name="l00708"></a><span class="lineno"> 708</span> </div> <div class="line"><a name="l00712"></a><span class="lineno"><a class="code" href="classicu_1_1RuleBasedCollator.html#a421a131b6330b132d67ac9582acb9886"> 712</a></span>  <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classicu_1_1StringSearch.html" title="StringSearch is a SearchIterator that provides language-sensitive text searching based on the compari...">StringSearch</a>;</div> <div class="line"><a name="l00713"></a><span class="lineno"> 713</span> </div> <div class="line"><a name="l00714"></a><span class="lineno"> 714</span>  <span class="comment">// private constructors --------------------------------------------------</span></div> <div class="line"><a name="l00715"></a><span class="lineno"> 715</span> </div> <div class="line"><a name="l00719"></a><span class="lineno"> 719</span>  <a class="code" href="classicu_1_1RuleBasedCollator.html" title="The RuleBasedCollator class provides the simple implementation of Collator, using data-driven tables...">RuleBasedCollator</a>();</div> <div class="line"><a name="l00720"></a><span class="lineno"> 720</span> </div> <div class="line"><a name="l00731"></a><span class="lineno"> 731</span>  <a class="code" href="classicu_1_1RuleBasedCollator.html" title="The RuleBasedCollator class provides the simple implementation of Collator, using data-driven tables...">RuleBasedCollator</a>(<span class="keyword">const</span> <a class="code" href="classicu_1_1Locale.html" title="A Locale object represents a specific geographical, political, or cultural region.">Locale</a>& desiredLocale, <a class="code" href="utypes_8h.html#a3343c1c8a8377277046774691c98d78c" title="Error code to replace exception handling, so that the code is compatible with all C++ compilers...">UErrorCode</a>& status);</div> <div class="line"><a name="l00732"></a><span class="lineno"> 732</span> </div> <div class="line"><a name="l00741"></a><span class="lineno"> 741</span>  <span class="keywordtype">void</span></div> <div class="line"><a name="l00742"></a><span class="lineno"> 742</span>  construct(<span class="keyword">const</span> <a class="code" href="classicu_1_1UnicodeString.html" title="UnicodeString is a string class that stores Unicode characters directly and provides similar function...">UnicodeString</a>& rules,</div> <div class="line"><a name="l00743"></a><span class="lineno"> 743</span>  <a class="code" href="ucol_8h.html#acc801048729e684bcabed328be85f77a" title="Enum containing attribute values for controling collation behavior.">UColAttributeValue</a> collationStrength,</div> <div class="line"><a name="l00744"></a><span class="lineno"> 744</span>  <a class="code" href="ucol_8h.html#acc801048729e684bcabed328be85f77a" title="Enum containing attribute values for controling collation behavior.">UColAttributeValue</a> decompositionMode,</div> <div class="line"><a name="l00745"></a><span class="lineno"> 745</span>  <a class="code" href="utypes_8h.html#a3343c1c8a8377277046774691c98d78c" title="Error code to replace exception handling, so that the code is compatible with all C++ compilers...">UErrorCode</a>& status);</div> <div class="line"><a name="l00746"></a><span class="lineno"> 746</span> </div> <div class="line"><a name="l00747"></a><span class="lineno"> 747</span>  <span class="comment">// private methods -------------------------------------------------------</span></div> <div class="line"><a name="l00748"></a><span class="lineno"> 748</span> </div> <div class="line"><a name="l00754"></a><span class="lineno"> 754</span>  <span class="keywordtype">void</span> setUCollator(<span class="keyword">const</span> <a class="code" href="classicu_1_1Locale.html" title="A Locale object represents a specific geographical, political, or cultural region.">Locale</a>& locale, <a class="code" href="utypes_8h.html#a3343c1c8a8377277046774691c98d78c" title="Error code to replace exception handling, so that the code is compatible with all C++ compilers...">UErrorCode</a>& status);</div> <div class="line"><a name="l00755"></a><span class="lineno"> 755</span> </div> <div class="line"><a name="l00761"></a><span class="lineno"> 761</span>  <span class="keywordtype">void</span> setUCollator(<span class="keyword">const</span> <span class="keywordtype">char</span>* locale, <a class="code" href="utypes_8h.html#a3343c1c8a8377277046774691c98d78c" title="Error code to replace exception handling, so that the code is compatible with all C++ compilers...">UErrorCode</a>& status);</div> <div class="line"><a name="l00762"></a><span class="lineno"> 762</span> </div> <div class="line"><a name="l00769"></a><span class="lineno"> 769</span>  <span class="keywordtype">void</span> setUCollator(<a class="code" href="ucol_8h.html#a3c4eeb412a5fd72762e6245aa75ca081" title="structure representing a collator object instance">UCollator</a> *collator);</div> <div class="line"><a name="l00770"></a><span class="lineno"> 770</span> </div> <div class="line"><a name="l00771"></a><span class="lineno"> 771</span> <span class="keyword">public</span>:</div> <div class="line"><a name="l00772"></a><span class="lineno"> 772</span> <span class="preprocessor">#ifndef U_HIDE_INTERNAL_API</span></div> <div class="line"><a name="l00773"></a><span class="lineno"> 773</span> <span class="preprocessor"></span></div> <div class="line"><a name="l00778"></a><span class="lineno"> 778</span>  <span class="keyword">const</span> <a class="code" href="ucol_8h.html#a3c4eeb412a5fd72762e6245aa75ca081" title="structure representing a collator object instance">UCollator</a> * getUCollator();</div> <div class="line"><a name="l00779"></a><span class="lineno"> 779</span> <span class="preprocessor">#endif </span><span class="comment">/* U_HIDE_INTERNAL_API */</span><span class="preprocessor"></span></div> <div class="line"><a name="l00780"></a><span class="lineno"> 780</span> <span class="preprocessor"></span></div> <div class="line"><a name="l00781"></a><span class="lineno"> 781</span> <span class="keyword">protected</span>:</div> <div class="line"><a name="l00789"></a><span class="lineno"> 789</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classicu_1_1Collator.html#a4136c816774f41452426abd922f7ab71" title="Used internally by registraton to define the requested and valid locales.">setLocales</a>(<span class="keyword">const</span> <a class="code" href="classicu_1_1Locale.html" title="A Locale object represents a specific geographical, political, or cultural region.">Locale</a>& requestedLocale, <span class="keyword">const</span> <a class="code" href="classicu_1_1Locale.html" title="A Locale object represents a specific geographical, political, or cultural region.">Locale</a>& validLocale, <span class="keyword">const</span> <a class="code" href="classicu_1_1Locale.html" title="A Locale object represents a specific geographical, political, or cultural region.">Locale</a>& actualLocale);</div> <div class="line"><a name="l00790"></a><span class="lineno"> 790</span> </div> <div class="line"><a name="l00791"></a><span class="lineno"> 791</span> <span class="keyword">private</span>:</div> <div class="line"><a name="l00792"></a><span class="lineno"> 792</span>  <span class="comment">// if not owned and not a write through alias, copy the ucollator</span></div> <div class="line"><a name="l00793"></a><span class="lineno"> 793</span>  <span class="keywordtype">void</span> checkOwned(<span class="keywordtype">void</span>);</div> <div class="line"><a name="l00794"></a><span class="lineno"> 794</span> </div> <div class="line"><a name="l00795"></a><span class="lineno"> 795</span>  <span class="comment">// utility to init rule string used by checkOwned and construct</span></div> <div class="line"><a name="l00796"></a><span class="lineno"> 796</span>  <span class="keywordtype">void</span> setRuleStringFromCollator();</div> <div class="line"><a name="l00797"></a><span class="lineno"> 797</span> </div> <div class="line"><a name="l00798"></a><span class="lineno"> 798</span> <span class="keyword">public</span>:</div> <div class="line"><a name="l00822"></a><span class="lineno"> 822</span>  <span class="keyword">virtual</span> int32_t <a class="code" href="classicu_1_1Collator.html#a088aaea714a628362839baa4cfaa516c" title="Get the short definition string for a collator.">internalGetShortDefinitionString</a>(<span class="keyword">const</span> <span class="keywordtype">char</span> *locale,</div> <div class="line"><a name="l00823"></a><span class="lineno"> 823</span>  <span class="keywordtype">char</span> *buffer,</div> <div class="line"><a name="l00824"></a><span class="lineno"> 824</span>  int32_t capacity,</div> <div class="line"><a name="l00825"></a><span class="lineno"> 825</span>  <a class="code" href="utypes_8h.html#a3343c1c8a8377277046774691c98d78c" title="Error code to replace exception handling, so that the code is compatible with all C++ compilers...">UErrorCode</a> &status) <span class="keyword">const</span>;</div> <div class="line"><a name="l00826"></a><span class="lineno"> 826</span> };</div> <div class="line"><a name="l00827"></a><span class="lineno"> 827</span> </div> <div class="line"><a name="l00828"></a><span class="lineno"> 828</span> <span class="comment">// inline method implementation ---------------------------------------------</span></div> <div class="line"><a name="l00829"></a><span class="lineno"> 829</span> </div> <div class="line"><a name="l00830"></a><span class="lineno"> 830</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> RuleBasedCollator::setUCollator(<span class="keyword">const</span> <a class="code" href="classicu_1_1Locale.html" title="A Locale object represents a specific geographical, political, or cultural region.">Locale</a> &locale,</div> <div class="line"><a name="l00831"></a><span class="lineno"> 831</span>  <a class="code" href="utypes_8h.html#a3343c1c8a8377277046774691c98d78c" title="Error code to replace exception handling, so that the code is compatible with all C++ compilers...">UErrorCode</a> &status)</div> <div class="line"><a name="l00832"></a><span class="lineno"> 832</span> {</div> <div class="line"><a name="l00833"></a><span class="lineno"> 833</span>  setUCollator(locale.<a class="code" href="classicu_1_1Locale.html#a6b76b319a1430411bbd6d3fd2268513b" title="Returns the programmatic name of the entire locale, with the language, country and variant separated ...">getName</a>(), status);</div> <div class="line"><a name="l00834"></a><span class="lineno"> 834</span> }</div> <div class="line"><a name="l00835"></a><span class="lineno"> 835</span> </div> <div class="line"><a name="l00836"></a><span class="lineno"> 836</span> </div> <div class="line"><a name="l00837"></a><span class="lineno"> 837</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> RuleBasedCollator::setUCollator(<a class="code" href="ucol_8h.html#a3c4eeb412a5fd72762e6245aa75ca081" title="structure representing a collator object instance">UCollator</a> *collator)</div> <div class="line"><a name="l00838"></a><span class="lineno"> 838</span> {</div> <div class="line"><a name="l00839"></a><span class="lineno"> 839</span> </div> <div class="line"><a name="l00840"></a><span class="lineno"> 840</span>  <span class="keywordflow">if</span> (ucollator && dataIsOwned) {</div> <div class="line"><a name="l00841"></a><span class="lineno"> 841</span>  <a class="code" href="ucol_8h.html#a68fce4fae47371bfece8a288ef05f11f" title="Close a UCollator.">ucol_close</a>(ucollator);</div> <div class="line"><a name="l00842"></a><span class="lineno"> 842</span>  }</div> <div class="line"><a name="l00843"></a><span class="lineno"> 843</span>  ucollator = collator;</div> <div class="line"><a name="l00844"></a><span class="lineno"> 844</span>  dataIsOwned = <a class="code" href="umachine_8h.html#aa93f0eb578d23995850d61f7d61c55c1" title="The FALSE value of a UBool.">FALSE</a>;</div> <div class="line"><a name="l00845"></a><span class="lineno"> 845</span>  isWriteThroughAlias = <a class="code" href="umachine_8h.html#aa8cecfc5c5c054d2875c03e77b7be15d" title="The TRUE value of a UBool.">TRUE</a>;</div> <div class="line"><a name="l00846"></a><span class="lineno"> 846</span>  setRuleStringFromCollator();</div> <div class="line"><a name="l00847"></a><span class="lineno"> 847</span> }</div> <div class="line"><a name="l00848"></a><span class="lineno"> 848</span> </div> <div class="line"><a name="l00849"></a><span class="lineno"> 849</span> <span class="preprocessor">#ifndef U_HIDE_INTERNAL_API</span></div> <div class="line"><a name="l00850"></a><span class="lineno"><a class="code" href="classicu_1_1RuleBasedCollator.html#acb7eab7a8ce047e5bdf8e8a1ad04e15e"> 850</a></span> <span class="preprocessor"></span><span class="keyword">inline</span> <span class="keyword">const</span> <a class="code" href="ucol_8h.html#a3c4eeb412a5fd72762e6245aa75ca081" title="structure representing a collator object instance">UCollator</a> * RuleBasedCollator::getUCollator()</div> <div class="line"><a name="l00851"></a><span class="lineno"> 851</span> {</div> <div class="line"><a name="l00852"></a><span class="lineno"> 852</span>  <span class="keywordflow">return</span> ucollator;</div> <div class="line"><a name="l00853"></a><span class="lineno"> 853</span> }</div> <div class="line"><a name="l00854"></a><span class="lineno"> 854</span> <span class="preprocessor">#endif </span><span class="comment">/* U_HIDE_INTERNAL_API */</span><span class="preprocessor"></span></div> <div class="line"><a name="l00855"></a><span class="lineno"> 855</span> <span class="preprocessor"></span></div> <div class="line"><a name="l00856"></a><span class="lineno"> 856</span> <a class="code" href="uversion_8h.html#a3da1f00f3b02976ac53c014a3e4c0933" title="This is used to end a declaration of a public ICU C++ API.">U_NAMESPACE_END</a></div> <div class="line"><a name="l00857"></a><span class="lineno"> 857</span> </div> <div class="line"><a name="l00858"></a><span class="lineno"> 858</span> <span class="preprocessor">#endif </span><span class="comment">/* #if !UCONFIG_NO_COLLATION */</span><span class="preprocessor"></span></div> <div class="line"><a name="l00859"></a><span class="lineno"> 859</span> <span class="preprocessor"></span></div> <div class="line"><a name="l00860"></a><span class="lineno"> 860</span> <span class="preprocessor">#endif</span></div> </div><!-- fragment --></div><!-- contents --> <!-- start footer part --> <hr class="footer"/><address class="footer"><small> Generated on Fri Oct 4 2013 14:10:21 for ICU 52.1 by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.1.2 </small></address> </body> </html>