Sophie

Sophie

distrib > Mandriva > current > i586 > media > main-updates > by-pkgid > f51238514e2abe817779ad2fe01b0759 > files > 748

icu-doc-4.4-2.1mdv2010.2.i586.rpm

<!-- 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: 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.1 -->
<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&nbsp;Page</span></a></li>
      <li><a href="pages.html"><span>Related&nbsp;Pages</span></a></li>
      <li><a href="modules.html"><span>Modules</span></a></li>
      <li><a href="annotated.html"><span>Data&nbsp;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&nbsp;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 &quot;<a class="el" href="utypes_8h_source.html">unicode/utypes.h</a>&quot;</code><br/>
<code>#include &quot;<a class="el" href="localpointer_8h_source.html">unicode/localpointer.h</a>&quot;</code><br/>
<code>#include &quot;<a class="el" href="uset_8h_source.html">unicode/uset.h</a>&quot;</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 struct <a class="el" href="unorm2_8h.html#af6cec882b8db0db15e33e6f21c51919e">UNormalizer2</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="unorm2_8h.html#af6cec882b8db0db15e33e6f21c51919e">UNormalizer2</a></td></tr>
<tr><td class="mdescLeft">&nbsp;</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 &nbsp;</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">&nbsp;</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 &nbsp;</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">&nbsp;</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> *&nbsp;</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">&nbsp;</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> *&nbsp;</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">&nbsp;</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&nbsp;</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">&nbsp;</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&nbsp;</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">&nbsp;</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&nbsp;</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">&nbsp;</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&nbsp;</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">&nbsp;</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>&nbsp;</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">&nbsp;</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>&nbsp;</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">&nbsp;</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&nbsp;</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">&nbsp;</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>&nbsp;</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">&nbsp;</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>&nbsp;</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">&nbsp;</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>&nbsp;</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">&nbsp;</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="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>&nbsp;</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>&nbsp;</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>&nbsp;</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>&nbsp;</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>&nbsp;</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>&nbsp;</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>&nbsp;</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> *&nbsp;</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> *&nbsp;</td>
          <td class="paramname"> <em>first</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int32_t&nbsp;</td>
          <td class="paramname"> <em>firstLength</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int32_t&nbsp;</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> *&nbsp;</td>
          <td class="paramname"> <em>second</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int32_t&nbsp;</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> *&nbsp;</td>
          <td class="paramname"> <em>pErrorCode</em></td><td>&nbsp;</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>&nbsp;</td><td>UNormalizer2 instance </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>first</em>&nbsp;</td><td>string, should be normalized </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>firstLength</em>&nbsp;</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>&nbsp;</td><td>number of UChars that can be written to first </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>second</em>&nbsp;</td><td>string, should be normalized </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>secondLength</em>&nbsp;</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>&nbsp;</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> *&nbsp;</td>
          <td class="paramname"> <em>norm2</em></td>
          <td>&nbsp;)&nbsp;</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>&nbsp;</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 *&nbsp;</td>
          <td class="paramname"> <em>packageName</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&nbsp;</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>&nbsp;</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> *&nbsp;</td>
          <td class="paramname"> <em>pErrorCode</em></td><td>&nbsp;</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>&nbsp;</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>&nbsp;</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>&nbsp;</td><td>normalization mode (compose or decompose etc.) </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>pErrorCode</em>&nbsp;</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> *&nbsp;</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>&nbsp;</td>
          <td class="paramname"> <em>c</em></td><td>&nbsp;</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>&nbsp;</td><td>UNormalizer2 instance </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>c</em>&nbsp;</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> *&nbsp;</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>&nbsp;</td>
          <td class="paramname"> <em>c</em></td><td>&nbsp;</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>&nbsp;</td><td>UNormalizer2 instance </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>c</em>&nbsp;</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> *&nbsp;</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>&nbsp;</td>
          <td class="paramname"> <em>c</em></td><td>&nbsp;</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>&nbsp;</td><td>UNormalizer2 instance </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>c</em>&nbsp;</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> *&nbsp;</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> *&nbsp;</td>
          <td class="paramname"> <em>s</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int32_t&nbsp;</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> *&nbsp;</td>
          <td class="paramname"> <em>pErrorCode</em></td><td>&nbsp;</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>&nbsp;</td><td>UNormalizer2 instance </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>s</em>&nbsp;</td><td>input string </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>length</em>&nbsp;</td><td>length of the string, or -1 if NUL-terminated </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>pErrorCode</em>&nbsp;</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> *&nbsp;</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> *&nbsp;</td>
          <td class="paramname"> <em>src</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int32_t&nbsp;</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> *&nbsp;</td>
          <td class="paramname"> <em>dest</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int32_t&nbsp;</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> *&nbsp;</td>
          <td class="paramname"> <em>pErrorCode</em></td><td>&nbsp;</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>&nbsp;</td><td>UNormalizer2 instance </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>src</em>&nbsp;</td><td>source string </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>length</em>&nbsp;</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>&nbsp;</td><td>destination string; its contents is replaced with normalized src </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>capacity</em>&nbsp;</td><td>number of UChars that can be written to dest </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>pErrorCode</em>&nbsp;</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> *&nbsp;</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> *&nbsp;</td>
          <td class="paramname"> <em>first</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int32_t&nbsp;</td>
          <td class="paramname"> <em>firstLength</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int32_t&nbsp;</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> *&nbsp;</td>
          <td class="paramname"> <em>second</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int32_t&nbsp;</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> *&nbsp;</td>
          <td class="paramname"> <em>pErrorCode</em></td><td>&nbsp;</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>&nbsp;</td><td>UNormalizer2 instance </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>first</em>&nbsp;</td><td>string, should be normalized </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>firstLength</em>&nbsp;</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>&nbsp;</td><td>number of UChars that can be written to first </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>second</em>&nbsp;</td><td>string, will be normalized </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>secondLength</em>&nbsp;</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>&nbsp;</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> *&nbsp;</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> *&nbsp;</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> *&nbsp;</td>
          <td class="paramname"> <em>pErrorCode</em></td><td>&nbsp;</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>&nbsp;</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>&nbsp;</td><td>USet which determines the characters to be normalized </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>pErrorCode</em>&nbsp;</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> *&nbsp;</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> *&nbsp;</td>
          <td class="paramname"> <em>s</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int32_t&nbsp;</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> *&nbsp;</td>
          <td class="paramname"> <em>pErrorCode</em></td><td>&nbsp;</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>&nbsp;</td><td>UNormalizer2 instance </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>s</em>&nbsp;</td><td>input string </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>length</em>&nbsp;</td><td>length of the string, or -1 if NUL-terminated </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>pErrorCode</em>&nbsp;</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> *&nbsp;</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> *&nbsp;</td>
          <td class="paramname"> <em>s</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int32_t&nbsp;</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> *&nbsp;</td>
          <td class="paramname"> <em>pErrorCode</em></td><td>&nbsp;</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>&nbsp;</td><td>UNormalizer2 instance </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>s</em>&nbsp;</td><td>input string </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>length</em>&nbsp;</td><td>length of the string, or -1 if NUL-terminated </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>pErrorCode</em>&nbsp;</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">&nbsp;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&nbsp;</span>Data Structures</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&nbsp;</span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&nbsp;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&nbsp;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&nbsp;</span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&nbsp;</span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&nbsp;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&nbsp;</span>Friends</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&nbsp;</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 size="1"/><address style="text-align: right;"><small>Generated on 16 Mar 2010 for ICU 4.4 by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.1 </small></address>
</body>
</html>