<!-- This comment will put IE 6, 7 and 8 in quirks mode --> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> <title>ICU 4.4.1: unorm2.h File Reference</title> <link href="tabs.css" rel="stylesheet" type="text/css"/> <link href="search/search.css" rel="stylesheet" type="text/css"/> <script type="text/javaScript" src="search/search.js"></script> <link href="doxygen.css" rel="stylesheet" type="text/css"/> </head> <body onload='searchBox.OnSelectItem(0);'> <!-- Generated by Doxygen 1.6.2-20100208 --> <script type="text/javascript"><!-- var searchBox = new SearchBox("searchBox", "search",false,'Search'); --></script> <div class="navigation" id="top"> <div class="tabs"> <ul> <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="annotated.html"><span>Data Structures</span></a></li> <li class="current"><a href="files.html"><span>Files</span></a></li> <li> <div id="MSearchBox" class="MSearchBoxInactive"> <img id="MSearchSelect" src="search/search.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)"/> <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a> </div> </li> </ul> </div> <div class="tabs"> <ul> <li><a href="files.html"><span>File List</span></a></li> <li><a href="globals.html"><span>Globals</span></a></li> </ul> </div> </div> <div class="contents"> <h1>unorm2.h File Reference</h1> <p>C API: New API for Unicode Normalization. <a href="#_details">More...</a></p> <code>#include "<a class="el" href="utypes_8h_source.html">unicode/utypes.h</a>"</code><br/> <code>#include "<a class="el" href="localpointer_8h_source.html">unicode/localpointer.h</a>"</code><br/> <code>#include "<a class="el" href="uset_8h_source.html">unicode/uset.h</a>"</code><br/> <p><a href="unorm2_8h_source.html">Go to the source code of this file.</a></p> <table border="0" cellpadding="0" cellspacing="0"> <tr><td colspan="2"><h2>Typedefs</h2></td></tr> <tr><td class="memItemLeft" align="right" valign="top">typedef enum <br class="typebreak"/> <a class="el" href="unorm2_8h.html#a01b7464189aef5dae63c0c759e84bece">UNormalizationCheckResult</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="unorm2_8h.html#a31b4684d696c9b9c6eb3e0509245535b">UNormalizationCheckResult</a></td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Result values for normalization quick check functions. <a href="#a31b4684d696c9b9c6eb3e0509245535b"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">typedef struct <a class="el" href="unorm2_8h.html#af6cec882b8db0db15e33e6f21c51919e">UNormalizer2</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="unorm2_8h.html#af6cec882b8db0db15e33e6f21c51919e">UNormalizer2</a></td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">C typedef for struct UNormalizer2. <a href="#af6cec882b8db0db15e33e6f21c51919e"></a><br/></td></tr> <tr><td colspan="2"><h2>Enumerations</h2></td></tr> <tr><td class="memItemLeft" align="right" valign="top">enum </td><td class="memItemRight" valign="bottom"><a class="el" href="unorm2_8h.html#a3cf189b046fe90ca167d2294275f4ab5">UNormalization2Mode</a> { <a class="el" href="unorm2_8h.html#a3cf189b046fe90ca167d2294275f4ab5a4038a316229eef7d76901b704b0148bf">UNORM2_COMPOSE</a>, <a class="el" href="unorm2_8h.html#a3cf189b046fe90ca167d2294275f4ab5ab176fcf0362623fb45b1b0f1ae22e7ac">UNORM2_DECOMPOSE</a>, <a class="el" href="unorm2_8h.html#a3cf189b046fe90ca167d2294275f4ab5a6dbe9da1d7d77d2902d7ef197cb1619b">UNORM2_FCD</a>, <a class="el" href="unorm2_8h.html#a3cf189b046fe90ca167d2294275f4ab5aa8a0f3c152f66297036c8fbfd955f9b8">UNORM2_COMPOSE_CONTIGUOUS</a> }</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Constants for normalization modes. </p> <a href="unorm2_8h.html#a3cf189b046fe90ca167d2294275f4ab5">More...</a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">enum </td><td class="memItemRight" valign="bottom"><a class="el" href="unorm2_8h.html#a01b7464189aef5dae63c0c759e84bece">UNormalizationCheckResult</a> { <a class="el" href="unorm2_8h.html#a01b7464189aef5dae63c0c759e84becea17a2e3aec6aef936136f04cf8af29de3">UNORM_NO</a>, <a class="el" href="unorm2_8h.html#a01b7464189aef5dae63c0c759e84becea055e9208c9a15913ed2849243fb617c4">UNORM_YES</a>, <a class="el" href="unorm2_8h.html#a01b7464189aef5dae63c0c759e84becea05c9a1f19c022c5399e64ff8cb852558">UNORM_MAYBE</a> }</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Result values for normalization quick check functions. </p> <a href="unorm2_8h.html#a01b7464189aef5dae63c0c759e84bece">More...</a><br/></td></tr> <tr><td colspan="2"><h2>Functions</h2></td></tr> <tr><td class="memItemLeft" align="right" valign="top">const <a class="el" href="unorm2_8h.html#af6cec882b8db0db15e33e6f21c51919e">UNormalizer2</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="unorm2_8h.html#aada0d2d95913d0cc3329e9e7fd571630">unorm2_getInstance</a> (const char *packageName, const char *name, <a class="el" href="unorm2_8h.html#a3cf189b046fe90ca167d2294275f4ab5">UNormalization2Mode</a> mode, <a class="el" href="utypes_8h.html#a3343c1c8a8377277046774691c98d78c">UErrorCode</a> *pErrorCode)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Returns a UNormalizer2 instance which uses the specified data file (packageName/name similar to <a class="el" href="ucnv_8h.html#a7e3fc1e59ac1404120f242b8911cadbb">ucnv_openPackage()</a> and <a class="el" href="ures_8h.html#ac4d72fc9f7cc63a05f646cabee4be167" title="Opens a UResourceBundle, from which users can extract strings by using their corresponding...">ures_open()</a>/ResourceBundle) and which composes or decomposes text according to the specified mode. <a href="#aada0d2d95913d0cc3329e9e7fd571630"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="unorm2_8h.html#af6cec882b8db0db15e33e6f21c51919e">UNormalizer2</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="unorm2_8h.html#a7f6ce2fa8c5e5fa3b1b9a141e1032e15">unorm2_openFiltered</a> (const <a class="el" href="unorm2_8h.html#af6cec882b8db0db15e33e6f21c51919e">UNormalizer2</a> *norm2, const <a class="el" href="uset_8h.html#adce3fef7c15d7c78196bf977ac96ec9c">USet</a> *filterSet, <a class="el" href="utypes_8h.html#a3343c1c8a8377277046774691c98d78c">UErrorCode</a> *pErrorCode)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Constructs a filtered normalizer wrapping any UNormalizer2 instance and a filter set. <a href="#a7f6ce2fa8c5e5fa3b1b9a141e1032e15"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="unorm2_8h.html#aa8b1599dfe72053c3b1c217aba1d8aac">unorm2_close</a> (<a class="el" href="unorm2_8h.html#af6cec882b8db0db15e33e6f21c51919e">UNormalizer2</a> *norm2)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Closes a UNormalizer2 instance from <a class="el" href="unorm2_8h.html#a7f6ce2fa8c5e5fa3b1b9a141e1032e15" title="Constructs a filtered normalizer wrapping any UNormalizer2 instance and a filter...">unorm2_openFiltered()</a>. <a href="#aa8b1599dfe72053c3b1c217aba1d8aac"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">int32_t </td><td class="memItemRight" valign="bottom"><a class="el" href="unorm2_8h.html#a0a596802db767da410b4b04cb75cbc53">unorm2_normalize</a> (const <a class="el" href="unorm2_8h.html#af6cec882b8db0db15e33e6f21c51919e">UNormalizer2</a> *norm2, const <a class="el" href="umachine_8h.html#a6bb9fad572d65b305324ef288165e2ac">UChar</a> *src, int32_t length, <a class="el" href="umachine_8h.html#a6bb9fad572d65b305324ef288165e2ac">UChar</a> *dest, int32_t capacity, <a class="el" href="utypes_8h.html#a3343c1c8a8377277046774691c98d78c">UErrorCode</a> *pErrorCode)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Writes the normalized form of the source string to the destination string (replacing its contents) and returns the length of the destination string. <a href="#a0a596802db767da410b4b04cb75cbc53"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">int32_t </td><td class="memItemRight" valign="bottom"><a class="el" href="unorm2_8h.html#aa10f3463975d69064234452d6fc82234">unorm2_normalizeSecondAndAppend</a> (const <a class="el" href="unorm2_8h.html#af6cec882b8db0db15e33e6f21c51919e">UNormalizer2</a> *norm2, <a class="el" href="umachine_8h.html#a6bb9fad572d65b305324ef288165e2ac">UChar</a> *first, int32_t firstLength, int32_t firstCapacity, const <a class="el" href="umachine_8h.html#a6bb9fad572d65b305324ef288165e2ac">UChar</a> *second, int32_t secondLength, <a class="el" href="utypes_8h.html#a3343c1c8a8377277046774691c98d78c">UErrorCode</a> *pErrorCode)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Appends the normalized form of the second string to the first string (merging them at the boundary) and returns the length of the first string. <a href="#aa10f3463975d69064234452d6fc82234"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">int32_t </td><td class="memItemRight" valign="bottom"><a class="el" href="unorm2_8h.html#afd6fb5de5d9f989980a1d6a81b04f0ee">unorm2_append</a> (const <a class="el" href="unorm2_8h.html#af6cec882b8db0db15e33e6f21c51919e">UNormalizer2</a> *norm2, <a class="el" href="umachine_8h.html#a6bb9fad572d65b305324ef288165e2ac">UChar</a> *first, int32_t firstLength, int32_t firstCapacity, const <a class="el" href="umachine_8h.html#a6bb9fad572d65b305324ef288165e2ac">UChar</a> *second, int32_t secondLength, <a class="el" href="utypes_8h.html#a3343c1c8a8377277046774691c98d78c">UErrorCode</a> *pErrorCode)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Appends the second string to the first string (merging them at the boundary) and returns the length of the first string. <a href="#afd6fb5de5d9f989980a1d6a81b04f0ee"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="umachine_8h.html#a349ef00011f20ccd1d3b424445681aa5">UBool</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="unorm2_8h.html#aff442b2c792244e95f1649bf31d36426">unorm2_isNormalized</a> (const <a class="el" href="unorm2_8h.html#af6cec882b8db0db15e33e6f21c51919e">UNormalizer2</a> *norm2, const <a class="el" href="umachine_8h.html#a6bb9fad572d65b305324ef288165e2ac">UChar</a> *s, int32_t length, <a class="el" href="utypes_8h.html#a3343c1c8a8377277046774691c98d78c">UErrorCode</a> *pErrorCode)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Tests if the string is normalized. <a href="#aff442b2c792244e95f1649bf31d36426"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="unorm2_8h.html#a01b7464189aef5dae63c0c759e84bece">UNormalizationCheckResult</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="unorm2_8h.html#ad81711834f00bbeb97738004f4f08450">unorm2_quickCheck</a> (const <a class="el" href="unorm2_8h.html#af6cec882b8db0db15e33e6f21c51919e">UNormalizer2</a> *norm2, const <a class="el" href="umachine_8h.html#a6bb9fad572d65b305324ef288165e2ac">UChar</a> *s, int32_t length, <a class="el" href="utypes_8h.html#a3343c1c8a8377277046774691c98d78c">UErrorCode</a> *pErrorCode)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Tests if the string is normalized. <a href="#ad81711834f00bbeb97738004f4f08450"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">int32_t </td><td class="memItemRight" valign="bottom"><a class="el" href="unorm2_8h.html#a04d7c52b719cfaceba3657d1340114e1">unorm2_spanQuickCheckYes</a> (const <a class="el" href="unorm2_8h.html#af6cec882b8db0db15e33e6f21c51919e">UNormalizer2</a> *norm2, const <a class="el" href="umachine_8h.html#a6bb9fad572d65b305324ef288165e2ac">UChar</a> *s, int32_t length, <a class="el" href="utypes_8h.html#a3343c1c8a8377277046774691c98d78c">UErrorCode</a> *pErrorCode)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Returns the end of the normalized substring of the input string. <a href="#a04d7c52b719cfaceba3657d1340114e1"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="umachine_8h.html#a349ef00011f20ccd1d3b424445681aa5">UBool</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="unorm2_8h.html#aa96a430bda580fb3551e0f5adc0aa6b1">unorm2_hasBoundaryBefore</a> (const <a class="el" href="unorm2_8h.html#af6cec882b8db0db15e33e6f21c51919e">UNormalizer2</a> *norm2, <a class="el" href="umachine_8h.html#a09fff5c3b5a5b015324dc3ec3cf92809">UChar32</a> c)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Tests if the character always has a normalization boundary before it, regardless of context. <a href="#aa96a430bda580fb3551e0f5adc0aa6b1"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="umachine_8h.html#a349ef00011f20ccd1d3b424445681aa5">UBool</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="unorm2_8h.html#a0653490112118874c8dc23f2c33bc785">unorm2_hasBoundaryAfter</a> (const <a class="el" href="unorm2_8h.html#af6cec882b8db0db15e33e6f21c51919e">UNormalizer2</a> *norm2, <a class="el" href="umachine_8h.html#a09fff5c3b5a5b015324dc3ec3cf92809">UChar32</a> c)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Tests if the character always has a normalization boundary after it, regardless of context. <a href="#a0653490112118874c8dc23f2c33bc785"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="umachine_8h.html#a349ef00011f20ccd1d3b424445681aa5">UBool</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="unorm2_8h.html#a356cb1f20b745293e262b9ef6378fe16">unorm2_isInert</a> (const <a class="el" href="unorm2_8h.html#af6cec882b8db0db15e33e6f21c51919e">UNormalizer2</a> *norm2, <a class="el" href="umachine_8h.html#a09fff5c3b5a5b015324dc3ec3cf92809">UChar32</a> c)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Tests if the character is normalization-inert. <a href="#a356cb1f20b745293e262b9ef6378fe16"></a><br/></td></tr> </table> <hr/><a name="_details"></a><h2>Detailed Description</h2> <p>C API: New API for Unicode Normalization. </p> <p>Unicode normalization functionality for standard Unicode normalization or for using custom mapping tables. All instances of UNormalizer2 are unmodifiable/immutable. Instances returned by <a class="el" href="unorm2_8h.html#aada0d2d95913d0cc3329e9e7fd571630" title="Returns a UNormalizer2 instance which uses the specified data file (packageName/name...">unorm2_getInstance()</a> are singletons that must not be deleted by the caller. For more details see the <a class="el" href="classNormalizer2.html" title="Unicode normalization functionality for standard Unicode normalization or for using...">Normalizer2</a> C++ class. </p> <p>Definition in file <a class="el" href="unorm2_8h_source.html">unorm2.h</a>.</p> <hr/><h2>Typedef Documentation</h2> <a class="anchor" id="a31b4684d696c9b9c6eb3e0509245535b"></a><!-- doxytag: member="unorm2.h::UNormalizationCheckResult" ref="a31b4684d696c9b9c6eb3e0509245535b" args="" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">typedef enum <a class="el" href="unorm2_8h.html#a01b7464189aef5dae63c0c759e84bece">UNormalizationCheckResult</a> <a class="el" href="unorm2_8h.html#a01b7464189aef5dae63c0c759e84bece">UNormalizationCheckResult</a></td> </tr> </table> </div> <div class="memdoc"> <p>Result values for normalization quick check functions. </p> <p>For details see <a href="http://www.unicode.org/reports/tr15/#Detecting_Normalization_Forms">http://www.unicode.org/reports/tr15/#Detecting_Normalization_Forms</a> </p> <dl class="stable"><dt><b><a class="el" href="stable.html#_stable001654">Stable:</a></b></dt><dd>ICU 2.0 </dd></dl> </div> </div> <a class="anchor" id="af6cec882b8db0db15e33e6f21c51919e"></a><!-- doxytag: member="unorm2.h::UNormalizer2" ref="af6cec882b8db0db15e33e6f21c51919e" args="" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">typedef struct <a class="el" href="unorm2_8h.html#af6cec882b8db0db15e33e6f21c51919e">UNormalizer2</a> <a class="el" href="unorm2_8h.html#af6cec882b8db0db15e33e6f21c51919e">UNormalizer2</a></td> </tr> </table> </div> <div class="memdoc"> <p>C typedef for struct UNormalizer2. </p> <dl class="draft"><dt><b><a class="el" href="draft.html#_draft000086">Draft:</a></b></dt><dd>This API may be changed in the future versions and was introduced in ICU 4.4 </dd></dl> <p>Definition at line <a class="el" href="unorm2_8h_source.html#l00117">117</a> of file <a class="el" href="unorm2_8h_source.html">unorm2.h</a>.</p> </div> </div> <hr/><h2>Enumeration Type Documentation</h2> <a class="anchor" id="a3cf189b046fe90ca167d2294275f4ab5"></a><!-- doxytag: member="unorm2.h::UNormalization2Mode" ref="a3cf189b046fe90ca167d2294275f4ab5" args="" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">enum <a class="el" href="unorm2_8h.html#a3cf189b046fe90ca167d2294275f4ab5">UNormalization2Mode</a></td> </tr> </table> </div> <div class="memdoc"> <p>Constants for normalization modes. </p> <p>For details about standard Unicode normalization forms and about the algorithms which are also used with custom mapping tables see <a href="http://www.unicode.org/unicode/reports/tr15/">http://www.unicode.org/unicode/reports/tr15/</a> </p> <dl class="draft"><dt><b><a class="el" href="draft.html#_draft000084">Draft:</a></b></dt><dd>This API may be changed in the future versions and was introduced in ICU 4.4 </dd></dl> <dl><dt><b>Enumerator: </b></dt><dd><table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"><em><a class="anchor" id="a3cf189b046fe90ca167d2294275f4ab5a4038a316229eef7d76901b704b0148bf"></a><!-- doxytag: member="UNORM2_COMPOSE" ref="a3cf189b046fe90ca167d2294275f4ab5a4038a316229eef7d76901b704b0148bf" args="" -->UNORM2_COMPOSE</em> </td><td> <p>Decomposition followed by composition. </p> <p>Same as standard NFC when using an "nfc" instance. Same as standard NFKC when using an "nfkc" instance. For details about standard Unicode normalization forms see <a href="http://www.unicode.org/unicode/reports/tr15/">http://www.unicode.org/unicode/reports/tr15/</a> </p> <dl class="draft"><dt><b><a class="el" href="draft.html#_draft000099">Draft:</a></b></dt><dd>This API may be changed in the future versions and was introduced in ICU 4.4 </dd></dl> </td></tr> <tr><td valign="top"><em><a class="anchor" id="a3cf189b046fe90ca167d2294275f4ab5ab176fcf0362623fb45b1b0f1ae22e7ac"></a><!-- doxytag: member="UNORM2_DECOMPOSE" ref="a3cf189b046fe90ca167d2294275f4ab5ab176fcf0362623fb45b1b0f1ae22e7ac" args="" -->UNORM2_DECOMPOSE</em> </td><td> <p>Map, and reorder canonically. </p> <p>Same as standard NFD when using an "nfc" instance. Same as standard NFKD when using an "nfkc" instance. For details about standard Unicode normalization forms see <a href="http://www.unicode.org/unicode/reports/tr15/">http://www.unicode.org/unicode/reports/tr15/</a> </p> <dl class="draft"><dt><b><a class="el" href="draft.html#_draft000100">Draft:</a></b></dt><dd>This API may be changed in the future versions and was introduced in ICU 4.4 </dd></dl> </td></tr> <tr><td valign="top"><em><a class="anchor" id="a3cf189b046fe90ca167d2294275f4ab5a6dbe9da1d7d77d2902d7ef197cb1619b"></a><!-- doxytag: member="UNORM2_FCD" ref="a3cf189b046fe90ca167d2294275f4ab5a6dbe9da1d7d77d2902d7ef197cb1619b" args="" -->UNORM2_FCD</em> </td><td> <p>"Fast C or D" form. </p> <p>If a string is in this form, then further decomposition <em>without reordering</em> would yield the same form as DECOMPOSE. Text in "Fast C or D" form can be processed efficiently with data tables that are "canonically closed", that is, that provide equivalent data for equivalent text, without having to be fully normalized. Not a standard Unicode normalization form. Not a unique form: Different FCD strings can be canonically equivalent. For details see <a href="http://www.unicode.org/notes/tn5/#FCD">http://www.unicode.org/notes/tn5/#FCD</a> </p> <dl class="draft"><dt><b><a class="el" href="draft.html#_draft000101">Draft:</a></b></dt><dd>This API may be changed in the future versions and was introduced in ICU 4.4 </dd></dl> </td></tr> <tr><td valign="top"><em><a class="anchor" id="a3cf189b046fe90ca167d2294275f4ab5aa8a0f3c152f66297036c8fbfd955f9b8"></a><!-- doxytag: member="UNORM2_COMPOSE_CONTIGUOUS" ref="a3cf189b046fe90ca167d2294275f4ab5aa8a0f3c152f66297036c8fbfd955f9b8" args="" -->UNORM2_COMPOSE_CONTIGUOUS</em> </td><td> <p>Compose only contiguously. </p> <p>Also known as "FCC" or "Fast C Contiguous". The result will often but not always be in NFC. The result will conform to FCD which is useful for processing. Not a standard Unicode normalization form. For details see <a href="http://www.unicode.org/notes/tn5/#FCC">http://www.unicode.org/notes/tn5/#FCC</a> </p> <dl class="draft"><dt><b><a class="el" href="draft.html#_draft000102">Draft:</a></b></dt><dd>This API may be changed in the future versions and was introduced in ICU 4.4 </dd></dl> </td></tr> </table> </dd> </dl> <p>Definition at line <a class="el" href="unorm2_8h_source.html#l00042">42</a> of file <a class="el" href="unorm2_8h_source.html">unorm2.h</a>.</p> </div> </div> <a class="anchor" id="a01b7464189aef5dae63c0c759e84bece"></a><!-- doxytag: member="unorm2.h::UNormalizationCheckResult" ref="a01b7464189aef5dae63c0c759e84bece" args="" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">enum <a class="el" href="unorm2_8h.html#a01b7464189aef5dae63c0c759e84bece">UNormalizationCheckResult</a></td> </tr> </table> </div> <div class="memdoc"> <p>Result values for normalization quick check functions. </p> <p>For details see <a href="http://www.unicode.org/reports/tr15/#Detecting_Normalization_Forms">http://www.unicode.org/reports/tr15/#Detecting_Normalization_Forms</a> </p> <dl class="stable"><dt><b><a class="el" href="stable.html#_stable001654">Stable:</a></b></dt><dd>ICU 2.0 </dd></dl> <dl><dt><b>Enumerator: </b></dt><dd><table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"><em><a class="anchor" id="a01b7464189aef5dae63c0c759e84becea17a2e3aec6aef936136f04cf8af29de3"></a><!-- doxytag: member="UNORM_NO" ref="a01b7464189aef5dae63c0c759e84becea17a2e3aec6aef936136f04cf8af29de3" args="" -->UNORM_NO</em> </td><td> <p>The input string is not in the normalization form. </p> <dl class="stable"><dt><b><a class="el" href="stable.html#_stable001655">Stable:</a></b></dt><dd>ICU 2.0 </dd></dl> </td></tr> <tr><td valign="top"><em><a class="anchor" id="a01b7464189aef5dae63c0c759e84becea055e9208c9a15913ed2849243fb617c4"></a><!-- doxytag: member="UNORM_YES" ref="a01b7464189aef5dae63c0c759e84becea055e9208c9a15913ed2849243fb617c4" args="" -->UNORM_YES</em> </td><td> <p>The input string is in the normalization form. </p> <dl class="stable"><dt><b><a class="el" href="stable.html#_stable001656">Stable:</a></b></dt><dd>ICU 2.0 </dd></dl> </td></tr> <tr><td valign="top"><em><a class="anchor" id="a01b7464189aef5dae63c0c759e84becea05c9a1f19c022c5399e64ff8cb852558"></a><!-- doxytag: member="UNORM_MAYBE" ref="a01b7464189aef5dae63c0c759e84becea05c9a1f19c022c5399e64ff8cb852558" args="" -->UNORM_MAYBE</em> </td><td> <p>The input string may or may not be in the normalization form. </p> <p>This value is only returned for composition forms like NFC and FCC, when a backward-combining character is found for which the surrounding text would have to be analyzed further. </p> <dl class="stable"><dt><b><a class="el" href="stable.html#_stable001657">Stable:</a></b></dt><dd>ICU 2.0 </dd></dl> </td></tr> </table> </dd> </dl> <p>Definition at line <a class="el" href="unorm2_8h_source.html#l00091">91</a> of file <a class="el" href="unorm2_8h_source.html">unorm2.h</a>.</p> </div> </div> <hr/><h2>Function Documentation</h2> <a class="anchor" id="afd6fb5de5d9f989980a1d6a81b04f0ee"></a><!-- doxytag: member="unorm2.h::unorm2_append" ref="afd6fb5de5d9f989980a1d6a81b04f0ee" args="(const UNormalizer2 *norm2, UChar *first, int32_t firstLength, int32_t firstCapacity, const UChar *second, int32_t secondLength, UErrorCode *pErrorCode)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">int32_t unorm2_append </td> <td>(</td> <td class="paramtype">const <a class="el" href="unorm2_8h.html#af6cec882b8db0db15e33e6f21c51919e">UNormalizer2</a> * </td> <td class="paramname"> <em>norm2</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"><a class="el" href="umachine_8h.html#a6bb9fad572d65b305324ef288165e2ac">UChar</a> * </td> <td class="paramname"> <em>first</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">int32_t </td> <td class="paramname"> <em>firstLength</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">int32_t </td> <td class="paramname"> <em>firstCapacity</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const <a class="el" href="umachine_8h.html#a6bb9fad572d65b305324ef288165e2ac">UChar</a> * </td> <td class="paramname"> <em>second</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">int32_t </td> <td class="paramname"> <em>secondLength</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"><a class="el" href="utypes_8h.html#a3343c1c8a8377277046774691c98d78c">UErrorCode</a> * </td> <td class="paramname"> <em>pErrorCode</em></td><td> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td><td></td> </tr> </table> </div> <div class="memdoc"> <p>Appends the second string to the first string (merging them at the boundary) and returns the length of the first string. </p> <p>The result is normalized if both the strings were normalized. The first and second strings must be different buffers. </p> <dl><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>norm2</em> </td><td>UNormalizer2 instance </td></tr> <tr><td valign="top"></td><td valign="top"><em>first</em> </td><td>string, should be normalized </td></tr> <tr><td valign="top"></td><td valign="top"><em>firstLength</em> </td><td>length of the first string, or -1 if NUL-terminated </td></tr> <tr><td valign="top"></td><td valign="top"><em>firstCapacity</em> </td><td>number of UChars that can be written to first </td></tr> <tr><td valign="top"></td><td valign="top"><em>second</em> </td><td>string, should be normalized </td></tr> <tr><td valign="top"></td><td valign="top"><em>secondLength</em> </td><td>length of the source string, or -1 if NUL-terminated </td></tr> <tr><td valign="top"></td><td valign="top"><em>pErrorCode</em> </td><td>Standard ICU error code. Its input value must pass the <a class="el" href="utypes_8h.html#a527f2c69e6b2e3b2c53ad8a99fb36711" title="Does the error code indicate success?">U_SUCCESS()</a> test, or else the function returns immediately. Check for <a class="el" href="utypes_8h.html#a4d202200b6aa6f3c965ea370e0c8155f" title="Does the error code indicate a failure?">U_FAILURE()</a> on output or use with function chaining. (See User Guide for details.) </td></tr> </table> </dd> </dl> <dl class="return"><dt><b>Returns:</b></dt><dd>first </dd></dl> <dl class="draft"><dt><b><a class="el" href="draft.html#_draft000092">Draft:</a></b></dt><dd>This API may be changed in the future versions and was introduced in ICU 4.4 </dd></dl> </div> </div> <a class="anchor" id="aa8b1599dfe72053c3b1c217aba1d8aac"></a><!-- doxytag: member="unorm2.h::unorm2_close" ref="aa8b1599dfe72053c3b1c217aba1d8aac" args="(UNormalizer2 *norm2)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">void unorm2_close </td> <td>(</td> <td class="paramtype"><a class="el" href="unorm2_8h.html#af6cec882b8db0db15e33e6f21c51919e">UNormalizer2</a> * </td> <td class="paramname"> <em>norm2</em></td> <td> ) </td> <td></td> </tr> </table> </div> <div class="memdoc"> <p>Closes a UNormalizer2 instance from <a class="el" href="unorm2_8h.html#a7f6ce2fa8c5e5fa3b1b9a141e1032e15" title="Constructs a filtered normalizer wrapping any UNormalizer2 instance and a filter...">unorm2_openFiltered()</a>. </p> <p>Do not close instances from <a class="el" href="unorm2_8h.html#aada0d2d95913d0cc3329e9e7fd571630" title="Returns a UNormalizer2 instance which uses the specified data file (packageName/name...">unorm2_getInstance()</a>! </p> <dl><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>norm2</em> </td><td>UNormalizer2 instance to be closed </td></tr> </table> </dd> </dl> <dl class="draft"><dt><b><a class="el" href="draft.html#_draft000089">Draft:</a></b></dt><dd>This API may be changed in the future versions and was introduced in ICU 4.4 </dd></dl> </div> </div> <a class="anchor" id="aada0d2d95913d0cc3329e9e7fd571630"></a><!-- doxytag: member="unorm2.h::unorm2_getInstance" ref="aada0d2d95913d0cc3329e9e7fd571630" args="(const char *packageName, const char *name, UNormalization2Mode mode, UErrorCode *pErrorCode)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">const <a class="el" href="unorm2_8h.html#af6cec882b8db0db15e33e6f21c51919e">UNormalizer2</a>* unorm2_getInstance </td> <td>(</td> <td class="paramtype">const char * </td> <td class="paramname"> <em>packageName</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const char * </td> <td class="paramname"> <em>name</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"><a class="el" href="unorm2_8h.html#a3cf189b046fe90ca167d2294275f4ab5">UNormalization2Mode</a> </td> <td class="paramname"> <em>mode</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"><a class="el" href="utypes_8h.html#a3343c1c8a8377277046774691c98d78c">UErrorCode</a> * </td> <td class="paramname"> <em>pErrorCode</em></td><td> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td><td></td> </tr> </table> </div> <div class="memdoc"> <p>Returns a UNormalizer2 instance which uses the specified data file (packageName/name similar to <a class="el" href="ucnv_8h.html#a7e3fc1e59ac1404120f242b8911cadbb">ucnv_openPackage()</a> and <a class="el" href="ures_8h.html#ac4d72fc9f7cc63a05f646cabee4be167" title="Opens a UResourceBundle, from which users can extract strings by using their corresponding...">ures_open()</a>/ResourceBundle) and which composes or decomposes text according to the specified mode. </p> <p>Returns an unmodifiable singleton instance. Do not delete it.</p> <p>Use packageName=NULL for data files that are part of ICU's own data. Use name="nfc" and UNORM2_COMPOSE/UNORM2_DECOMPOSE for Unicode standard NFC/NFD. Use name="nfkc" and UNORM2_COMPOSE/UNORM2_DECOMPOSE for Unicode standard NFKC/NFKD. Use name="nfkc_cf" and UNORM2_COMPOSE for Unicode standard NFKC_CF=NFKC_Casefold.</p> <dl><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>packageName</em> </td><td>NULL for ICU built-in data, otherwise application data package name </td></tr> <tr><td valign="top"></td><td valign="top"><em>name</em> </td><td>"nfc" or "nfkc" or "nfkc_cf" or name of custom data file </td></tr> <tr><td valign="top"></td><td valign="top"><em>mode</em> </td><td>normalization mode (compose or decompose etc.) </td></tr> <tr><td valign="top"></td><td valign="top"><em>pErrorCode</em> </td><td>Standard ICU error code. Its input value must pass the <a class="el" href="utypes_8h.html#a527f2c69e6b2e3b2c53ad8a99fb36711" title="Does the error code indicate success?">U_SUCCESS()</a> test, or else the function returns immediately. Check for <a class="el" href="utypes_8h.html#a4d202200b6aa6f3c965ea370e0c8155f" title="Does the error code indicate a failure?">U_FAILURE()</a> on output or use with function chaining. (See User Guide for details.) </td></tr> </table> </dd> </dl> <dl class="return"><dt><b>Returns:</b></dt><dd>the requested UNormalizer2, if successful </dd></dl> <dl class="draft"><dt><b><a class="el" href="draft.html#_draft000087">Draft:</a></b></dt><dd>This API may be changed in the future versions and was introduced in ICU 4.4 </dd></dl> </div> </div> <a class="anchor" id="a0653490112118874c8dc23f2c33bc785"></a><!-- doxytag: member="unorm2.h::unorm2_hasBoundaryAfter" ref="a0653490112118874c8dc23f2c33bc785" args="(const UNormalizer2 *norm2, UChar32 c)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="umachine_8h.html#a349ef00011f20ccd1d3b424445681aa5">UBool</a> unorm2_hasBoundaryAfter </td> <td>(</td> <td class="paramtype">const <a class="el" href="unorm2_8h.html#af6cec882b8db0db15e33e6f21c51919e">UNormalizer2</a> * </td> <td class="paramname"> <em>norm2</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"><a class="el" href="umachine_8h.html#a09fff5c3b5a5b015324dc3ec3cf92809">UChar32</a> </td> <td class="paramname"> <em>c</em></td><td> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td><td></td> </tr> </table> </div> <div class="memdoc"> <p>Tests if the character always has a normalization boundary after it, regardless of context. </p> <p>For details see the <a class="el" href="classNormalizer2.html" title="Unicode normalization functionality for standard Unicode normalization or for using...">Normalizer2</a> base class documentation. </p> <dl><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>norm2</em> </td><td>UNormalizer2 instance </td></tr> <tr><td valign="top"></td><td valign="top"><em>c</em> </td><td>character to test </td></tr> </table> </dd> </dl> <dl class="return"><dt><b>Returns:</b></dt><dd>TRUE if c has a normalization boundary after it </dd></dl> <dl class="draft"><dt><b><a class="el" href="draft.html#_draft000097">Draft:</a></b></dt><dd>This API may be changed in the future versions and was introduced in ICU 4.4 </dd></dl> </div> </div> <a class="anchor" id="aa96a430bda580fb3551e0f5adc0aa6b1"></a><!-- doxytag: member="unorm2.h::unorm2_hasBoundaryBefore" ref="aa96a430bda580fb3551e0f5adc0aa6b1" args="(const UNormalizer2 *norm2, UChar32 c)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="umachine_8h.html#a349ef00011f20ccd1d3b424445681aa5">UBool</a> unorm2_hasBoundaryBefore </td> <td>(</td> <td class="paramtype">const <a class="el" href="unorm2_8h.html#af6cec882b8db0db15e33e6f21c51919e">UNormalizer2</a> * </td> <td class="paramname"> <em>norm2</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"><a class="el" href="umachine_8h.html#a09fff5c3b5a5b015324dc3ec3cf92809">UChar32</a> </td> <td class="paramname"> <em>c</em></td><td> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td><td></td> </tr> </table> </div> <div class="memdoc"> <p>Tests if the character always has a normalization boundary before it, regardless of context. </p> <p>For details see the <a class="el" href="classNormalizer2.html" title="Unicode normalization functionality for standard Unicode normalization or for using...">Normalizer2</a> base class documentation. </p> <dl><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>norm2</em> </td><td>UNormalizer2 instance </td></tr> <tr><td valign="top"></td><td valign="top"><em>c</em> </td><td>character to test </td></tr> </table> </dd> </dl> <dl class="return"><dt><b>Returns:</b></dt><dd>TRUE if c has a normalization boundary before it </dd></dl> <dl class="draft"><dt><b><a class="el" href="draft.html#_draft000096">Draft:</a></b></dt><dd>This API may be changed in the future versions and was introduced in ICU 4.4 </dd></dl> </div> </div> <a class="anchor" id="a356cb1f20b745293e262b9ef6378fe16"></a><!-- doxytag: member="unorm2.h::unorm2_isInert" ref="a356cb1f20b745293e262b9ef6378fe16" args="(const UNormalizer2 *norm2, UChar32 c)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="umachine_8h.html#a349ef00011f20ccd1d3b424445681aa5">UBool</a> unorm2_isInert </td> <td>(</td> <td class="paramtype">const <a class="el" href="unorm2_8h.html#af6cec882b8db0db15e33e6f21c51919e">UNormalizer2</a> * </td> <td class="paramname"> <em>norm2</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"><a class="el" href="umachine_8h.html#a09fff5c3b5a5b015324dc3ec3cf92809">UChar32</a> </td> <td class="paramname"> <em>c</em></td><td> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td><td></td> </tr> </table> </div> <div class="memdoc"> <p>Tests if the character is normalization-inert. </p> <p>For details see the <a class="el" href="classNormalizer2.html" title="Unicode normalization functionality for standard Unicode normalization or for using...">Normalizer2</a> base class documentation. </p> <dl><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>norm2</em> </td><td>UNormalizer2 instance </td></tr> <tr><td valign="top"></td><td valign="top"><em>c</em> </td><td>character to test </td></tr> </table> </dd> </dl> <dl class="return"><dt><b>Returns:</b></dt><dd>TRUE if c is normalization-inert </dd></dl> <dl class="draft"><dt><b><a class="el" href="draft.html#_draft000098">Draft:</a></b></dt><dd>This API may be changed in the future versions and was introduced in ICU 4.4 </dd></dl> </div> </div> <a class="anchor" id="aff442b2c792244e95f1649bf31d36426"></a><!-- doxytag: member="unorm2.h::unorm2_isNormalized" ref="aff442b2c792244e95f1649bf31d36426" args="(const UNormalizer2 *norm2, const UChar *s, int32_t length, UErrorCode *pErrorCode)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="umachine_8h.html#a349ef00011f20ccd1d3b424445681aa5">UBool</a> unorm2_isNormalized </td> <td>(</td> <td class="paramtype">const <a class="el" href="unorm2_8h.html#af6cec882b8db0db15e33e6f21c51919e">UNormalizer2</a> * </td> <td class="paramname"> <em>norm2</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const <a class="el" href="umachine_8h.html#a6bb9fad572d65b305324ef288165e2ac">UChar</a> * </td> <td class="paramname"> <em>s</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">int32_t </td> <td class="paramname"> <em>length</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"><a class="el" href="utypes_8h.html#a3343c1c8a8377277046774691c98d78c">UErrorCode</a> * </td> <td class="paramname"> <em>pErrorCode</em></td><td> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td><td></td> </tr> </table> </div> <div class="memdoc"> <p>Tests if the string is normalized. </p> <p>Internally, in cases where the quickCheck() method would return "maybe" (which is only possible for the two COMPOSE modes) this method resolves to "yes" or "no" to provide a definitive result, at the cost of doing more work in those cases. </p> <dl><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>norm2</em> </td><td>UNormalizer2 instance </td></tr> <tr><td valign="top"></td><td valign="top"><em>s</em> </td><td>input string </td></tr> <tr><td valign="top"></td><td valign="top"><em>length</em> </td><td>length of the string, or -1 if NUL-terminated </td></tr> <tr><td valign="top"></td><td valign="top"><em>pErrorCode</em> </td><td>Standard ICU error code. Its input value must pass the <a class="el" href="utypes_8h.html#a527f2c69e6b2e3b2c53ad8a99fb36711" title="Does the error code indicate success?">U_SUCCESS()</a> test, or else the function returns immediately. Check for <a class="el" href="utypes_8h.html#a4d202200b6aa6f3c965ea370e0c8155f" title="Does the error code indicate a failure?">U_FAILURE()</a> on output or use with function chaining. (See User Guide for details.) </td></tr> </table> </dd> </dl> <dl class="return"><dt><b>Returns:</b></dt><dd>TRUE if s is normalized </dd></dl> <dl class="draft"><dt><b><a class="el" href="draft.html#_draft000093">Draft:</a></b></dt><dd>This API may be changed in the future versions and was introduced in ICU 4.4 </dd></dl> </div> </div> <a class="anchor" id="a0a596802db767da410b4b04cb75cbc53"></a><!-- doxytag: member="unorm2.h::unorm2_normalize" ref="a0a596802db767da410b4b04cb75cbc53" args="(const UNormalizer2 *norm2, const UChar *src, int32_t length, UChar *dest, int32_t capacity, UErrorCode *pErrorCode)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">int32_t unorm2_normalize </td> <td>(</td> <td class="paramtype">const <a class="el" href="unorm2_8h.html#af6cec882b8db0db15e33e6f21c51919e">UNormalizer2</a> * </td> <td class="paramname"> <em>norm2</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const <a class="el" href="umachine_8h.html#a6bb9fad572d65b305324ef288165e2ac">UChar</a> * </td> <td class="paramname"> <em>src</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">int32_t </td> <td class="paramname"> <em>length</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"><a class="el" href="umachine_8h.html#a6bb9fad572d65b305324ef288165e2ac">UChar</a> * </td> <td class="paramname"> <em>dest</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">int32_t </td> <td class="paramname"> <em>capacity</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"><a class="el" href="utypes_8h.html#a3343c1c8a8377277046774691c98d78c">UErrorCode</a> * </td> <td class="paramname"> <em>pErrorCode</em></td><td> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td><td></td> </tr> </table> </div> <div class="memdoc"> <p>Writes the normalized form of the source string to the destination string (replacing its contents) and returns the length of the destination string. </p> <p>The source and destination strings must be different buffers. </p> <dl><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>norm2</em> </td><td>UNormalizer2 instance </td></tr> <tr><td valign="top"></td><td valign="top"><em>src</em> </td><td>source string </td></tr> <tr><td valign="top"></td><td valign="top"><em>length</em> </td><td>length of the source string, or -1 if NUL-terminated </td></tr> <tr><td valign="top"></td><td valign="top"><em>dest</em> </td><td>destination string; its contents is replaced with normalized src </td></tr> <tr><td valign="top"></td><td valign="top"><em>capacity</em> </td><td>number of UChars that can be written to dest </td></tr> <tr><td valign="top"></td><td valign="top"><em>pErrorCode</em> </td><td>Standard ICU error code. Its input value must pass the <a class="el" href="utypes_8h.html#a527f2c69e6b2e3b2c53ad8a99fb36711" title="Does the error code indicate success?">U_SUCCESS()</a> test, or else the function returns immediately. Check for <a class="el" href="utypes_8h.html#a4d202200b6aa6f3c965ea370e0c8155f" title="Does the error code indicate a failure?">U_FAILURE()</a> on output or use with function chaining. (See User Guide for details.) </td></tr> </table> </dd> </dl> <dl class="return"><dt><b>Returns:</b></dt><dd>dest </dd></dl> <dl class="draft"><dt><b><a class="el" href="draft.html#_draft000090">Draft:</a></b></dt><dd>This API may be changed in the future versions and was introduced in ICU 4.4 </dd></dl> </div> </div> <a class="anchor" id="aa10f3463975d69064234452d6fc82234"></a><!-- doxytag: member="unorm2.h::unorm2_normalizeSecondAndAppend" ref="aa10f3463975d69064234452d6fc82234" args="(const UNormalizer2 *norm2, UChar *first, int32_t firstLength, int32_t firstCapacity, const UChar *second, int32_t secondLength, UErrorCode *pErrorCode)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">int32_t unorm2_normalizeSecondAndAppend </td> <td>(</td> <td class="paramtype">const <a class="el" href="unorm2_8h.html#af6cec882b8db0db15e33e6f21c51919e">UNormalizer2</a> * </td> <td class="paramname"> <em>norm2</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"><a class="el" href="umachine_8h.html#a6bb9fad572d65b305324ef288165e2ac">UChar</a> * </td> <td class="paramname"> <em>first</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">int32_t </td> <td class="paramname"> <em>firstLength</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">int32_t </td> <td class="paramname"> <em>firstCapacity</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const <a class="el" href="umachine_8h.html#a6bb9fad572d65b305324ef288165e2ac">UChar</a> * </td> <td class="paramname"> <em>second</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">int32_t </td> <td class="paramname"> <em>secondLength</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"><a class="el" href="utypes_8h.html#a3343c1c8a8377277046774691c98d78c">UErrorCode</a> * </td> <td class="paramname"> <em>pErrorCode</em></td><td> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td><td></td> </tr> </table> </div> <div class="memdoc"> <p>Appends the normalized form of the second string to the first string (merging them at the boundary) and returns the length of the first string. </p> <p>The result is normalized if the first string was normalized. The first and second strings must be different buffers. </p> <dl><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>norm2</em> </td><td>UNormalizer2 instance </td></tr> <tr><td valign="top"></td><td valign="top"><em>first</em> </td><td>string, should be normalized </td></tr> <tr><td valign="top"></td><td valign="top"><em>firstLength</em> </td><td>length of the first string, or -1 if NUL-terminated </td></tr> <tr><td valign="top"></td><td valign="top"><em>firstCapacity</em> </td><td>number of UChars that can be written to first </td></tr> <tr><td valign="top"></td><td valign="top"><em>second</em> </td><td>string, will be normalized </td></tr> <tr><td valign="top"></td><td valign="top"><em>secondLength</em> </td><td>length of the source string, or -1 if NUL-terminated </td></tr> <tr><td valign="top"></td><td valign="top"><em>pErrorCode</em> </td><td>Standard ICU error code. Its input value must pass the <a class="el" href="utypes_8h.html#a527f2c69e6b2e3b2c53ad8a99fb36711" title="Does the error code indicate success?">U_SUCCESS()</a> test, or else the function returns immediately. Check for <a class="el" href="utypes_8h.html#a4d202200b6aa6f3c965ea370e0c8155f" title="Does the error code indicate a failure?">U_FAILURE()</a> on output or use with function chaining. (See User Guide for details.) </td></tr> </table> </dd> </dl> <dl class="return"><dt><b>Returns:</b></dt><dd>first </dd></dl> <dl class="draft"><dt><b><a class="el" href="draft.html#_draft000091">Draft:</a></b></dt><dd>This API may be changed in the future versions and was introduced in ICU 4.4 </dd></dl> </div> </div> <a class="anchor" id="a7f6ce2fa8c5e5fa3b1b9a141e1032e15"></a><!-- doxytag: member="unorm2.h::unorm2_openFiltered" ref="a7f6ce2fa8c5e5fa3b1b9a141e1032e15" args="(const UNormalizer2 *norm2, const USet *filterSet, UErrorCode *pErrorCode)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="unorm2_8h.html#af6cec882b8db0db15e33e6f21c51919e">UNormalizer2</a>* unorm2_openFiltered </td> <td>(</td> <td class="paramtype">const <a class="el" href="unorm2_8h.html#af6cec882b8db0db15e33e6f21c51919e">UNormalizer2</a> * </td> <td class="paramname"> <em>norm2</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const <a class="el" href="uset_8h.html#adce3fef7c15d7c78196bf977ac96ec9c">USet</a> * </td> <td class="paramname"> <em>filterSet</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"><a class="el" href="utypes_8h.html#a3343c1c8a8377277046774691c98d78c">UErrorCode</a> * </td> <td class="paramname"> <em>pErrorCode</em></td><td> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td><td></td> </tr> </table> </div> <div class="memdoc"> <p>Constructs a filtered normalizer wrapping any UNormalizer2 instance and a filter set. </p> <p>Both are aliased and must not be modified or deleted while this object is used. The filter set should be frozen; otherwise the performance will suffer greatly. </p> <dl><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>norm2</em> </td><td>wrapped <a class="el" href="classNormalizer2.html" title="Unicode normalization functionality for standard Unicode normalization or for using...">Normalizer2</a> instance </td></tr> <tr><td valign="top"></td><td valign="top"><em>filterSet</em> </td><td>USet which determines the characters to be normalized </td></tr> <tr><td valign="top"></td><td valign="top"><em>pErrorCode</em> </td><td>Standard ICU error code. Its input value must pass the <a class="el" href="utypes_8h.html#a527f2c69e6b2e3b2c53ad8a99fb36711" title="Does the error code indicate success?">U_SUCCESS()</a> test, or else the function returns immediately. Check for <a class="el" href="utypes_8h.html#a4d202200b6aa6f3c965ea370e0c8155f" title="Does the error code indicate a failure?">U_FAILURE()</a> on output or use with function chaining. (See User Guide for details.) </td></tr> </table> </dd> </dl> <dl class="return"><dt><b>Returns:</b></dt><dd>the requested UNormalizer2, if successful </dd></dl> <dl class="draft"><dt><b><a class="el" href="draft.html#_draft000088">Draft:</a></b></dt><dd>This API may be changed in the future versions and was introduced in ICU 4.4 </dd></dl> </div> </div> <a class="anchor" id="ad81711834f00bbeb97738004f4f08450"></a><!-- doxytag: member="unorm2.h::unorm2_quickCheck" ref="ad81711834f00bbeb97738004f4f08450" args="(const UNormalizer2 *norm2, const UChar *s, int32_t length, UErrorCode *pErrorCode)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="unorm2_8h.html#a01b7464189aef5dae63c0c759e84bece">UNormalizationCheckResult</a> unorm2_quickCheck </td> <td>(</td> <td class="paramtype">const <a class="el" href="unorm2_8h.html#af6cec882b8db0db15e33e6f21c51919e">UNormalizer2</a> * </td> <td class="paramname"> <em>norm2</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const <a class="el" href="umachine_8h.html#a6bb9fad572d65b305324ef288165e2ac">UChar</a> * </td> <td class="paramname"> <em>s</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">int32_t </td> <td class="paramname"> <em>length</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"><a class="el" href="utypes_8h.html#a3343c1c8a8377277046774691c98d78c">UErrorCode</a> * </td> <td class="paramname"> <em>pErrorCode</em></td><td> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td><td></td> </tr> </table> </div> <div class="memdoc"> <p>Tests if the string is normalized. </p> <p>For the two COMPOSE modes, the result could be "maybe" in cases that would take a little more work to resolve definitively. Use spanQuickCheckYes() and normalizeSecondAndAppend() for a faster combination of quick check + normalization, to avoid re-checking the "yes" prefix. </p> <dl><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>norm2</em> </td><td>UNormalizer2 instance </td></tr> <tr><td valign="top"></td><td valign="top"><em>s</em> </td><td>input string </td></tr> <tr><td valign="top"></td><td valign="top"><em>length</em> </td><td>length of the string, or -1 if NUL-terminated </td></tr> <tr><td valign="top"></td><td valign="top"><em>pErrorCode</em> </td><td>Standard ICU error code. Its input value must pass the <a class="el" href="utypes_8h.html#a527f2c69e6b2e3b2c53ad8a99fb36711" title="Does the error code indicate success?">U_SUCCESS()</a> test, or else the function returns immediately. Check for <a class="el" href="utypes_8h.html#a4d202200b6aa6f3c965ea370e0c8155f" title="Does the error code indicate a failure?">U_FAILURE()</a> on output or use with function chaining. (See User Guide for details.) </td></tr> </table> </dd> </dl> <dl class="return"><dt><b>Returns:</b></dt><dd>UNormalizationCheckResult </dd></dl> <dl class="draft"><dt><b><a class="el" href="draft.html#_draft000094">Draft:</a></b></dt><dd>This API may be changed in the future versions and was introduced in ICU 4.4 </dd></dl> </div> </div> <a class="anchor" id="a04d7c52b719cfaceba3657d1340114e1"></a><!-- doxytag: member="unorm2.h::unorm2_spanQuickCheckYes" ref="a04d7c52b719cfaceba3657d1340114e1" args="(const UNormalizer2 *norm2, const UChar *s, int32_t length, UErrorCode *pErrorCode)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">int32_t unorm2_spanQuickCheckYes </td> <td>(</td> <td class="paramtype">const <a class="el" href="unorm2_8h.html#af6cec882b8db0db15e33e6f21c51919e">UNormalizer2</a> * </td> <td class="paramname"> <em>norm2</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const <a class="el" href="umachine_8h.html#a6bb9fad572d65b305324ef288165e2ac">UChar</a> * </td> <td class="paramname"> <em>s</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">int32_t </td> <td class="paramname"> <em>length</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"><a class="el" href="utypes_8h.html#a3343c1c8a8377277046774691c98d78c">UErrorCode</a> * </td> <td class="paramname"> <em>pErrorCode</em></td><td> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td><td></td> </tr> </table> </div> <div class="memdoc"> <p>Returns the end of the normalized substring of the input string. </p> <p>In other words, with <code>end=spanQuickCheckYes(s, ec);</code> the substring <code>UnicodeString(s, 0, end)</code> will pass the quick check with a "yes" result.</p> <p>The returned end index is usually one or more characters before the "no" or "maybe" character: The end index is at a normalization boundary. (See the class documentation for more about normalization boundaries.)</p> <p>When the goal is a normalized string and most input strings are expected to be normalized already, then call this method, and if it returns a prefix shorter than the input string, copy that prefix and use normalizeSecondAndAppend() for the remainder. </p> <dl><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>norm2</em> </td><td>UNormalizer2 instance </td></tr> <tr><td valign="top"></td><td valign="top"><em>s</em> </td><td>input string </td></tr> <tr><td valign="top"></td><td valign="top"><em>length</em> </td><td>length of the string, or -1 if NUL-terminated </td></tr> <tr><td valign="top"></td><td valign="top"><em>pErrorCode</em> </td><td>Standard ICU error code. Its input value must pass the <a class="el" href="utypes_8h.html#a527f2c69e6b2e3b2c53ad8a99fb36711" title="Does the error code indicate success?">U_SUCCESS()</a> test, or else the function returns immediately. Check for <a class="el" href="utypes_8h.html#a4d202200b6aa6f3c965ea370e0c8155f" title="Does the error code indicate a failure?">U_FAILURE()</a> on output or use with function chaining. (See User Guide for details.) </td></tr> </table> </dd> </dl> <dl class="return"><dt><b>Returns:</b></dt><dd>"yes" span end index </dd></dl> <dl class="draft"><dt><b><a class="el" href="draft.html#_draft000095">Draft:</a></b></dt><dd>This API may be changed in the future versions and was introduced in ICU 4.4 </dd></dl> </div> </div> </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>Defines</a></div> <!-- iframe showing the search results (closed by default) --> <div id="MSearchResultsWindow"> <iframe src="" frameborder="0" name="MSearchResults" id="MSearchResults"> </iframe> </div> <hr class="footer"/><address style="text-align: right;"><small>Generated by <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.2-20100208 </small></address> </body> </html>