<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> <meta http-equiv="X-UA-Compatible" content="IE=9"/> <meta name="generator" content="Doxygen 1.8.11"/> <title>ICU 58.2: ucnvsel.h File Reference</title> <link href="tabs.css" rel="stylesheet" type="text/css"/> <script type="text/javascript" src="jquery.js"></script> <script type="text/javascript" src="dynsections.js"></script> <link href="doxygen.css" rel="stylesheet" type="text/css" /> </head> <body> <div id="top"><!-- do not remove this div, it is closed by doxygen! --> <div id="titlearea"> <table cellspacing="0" cellpadding="0"> <tbody> <tr style="height: 56px;"> <td id="projectalign" style="padding-left: 0.5em;"> <div id="projectname">ICU 58.2  <span id="projectnumber">58.2</span> </div> </td> </tr> </tbody> </table> </div> <!-- end header part --> <!-- Generated by Doxygen 1.8.11 --> <div id="navrow1" class="tabs"> <ul class="tablist"> <li><a href="index.html"><span>Main Page</span></a></li> <li><a href="pages.html"><span>Related Pages</span></a></li> <li><a href="modules.html"><span>Modules</span></a></li> <li><a href="namespaces.html"><span>Namespaces</span></a></li> <li><a href="annotated.html"><span>Data Structures</span></a></li> <li class="current"><a href="files.html"><span>Files</span></a></li> </ul> </div> <div id="navrow2" class="tabs2"> <ul class="tablist"> <li><a href="files.html"><span>File List</span></a></li> <li><a href="globals.html"><span>Globals</span></a></li> </ul> </div> <div id="nav-path" class="navpath"> <ul> <li class="navelem"><a class="el" href="dir_b2f33c71d4aa5e7af42a1ca61ff5af1b.html">source</a></li><li class="navelem"><a class="el" href="dir_30087b5439e04c85304dbcf15650710b.html">common</a></li><li class="navelem"><a class="el" href="dir_8bf9c54ed6ca2fd1e2117fb037e4ad06.html">unicode</a></li> </ul> </div> </div><!-- top --> <div class="header"> <div class="summary"> <a href="#namespaces">Namespaces</a> | <a href="#func-members">Functions</a> </div> <div class="headertitle"> <div class="title">ucnvsel.h File Reference</div> </div> </div><!--header--> <div class="contents"> <p>A converter selector is built with a set of encoding/charset names and given an input string returns the set of names of the corresponding converters which can convert the string. <a href="#details">More...</a></p> <div class="textblock"><code>#include "<a class="el" href="utypes_8h_source.html">unicode/utypes.h</a>"</code><br /> <code>#include "<a class="el" href="uset_8h_source.html">unicode/uset.h</a>"</code><br /> <code>#include "<a class="el" href="utf16_8h_source.html">unicode/utf16.h</a>"</code><br /> <code>#include "<a class="el" href="uenum_8h_source.html">unicode/uenum.h</a>"</code><br /> <code>#include "<a class="el" href="ucnv_8h_source.html">unicode/ucnv.h</a>"</code><br /> <code>#include "<a class="el" href="localpointer_8h_source.html">unicode/localpointer.h</a>"</code><br /> </div> <p><a href="ucnvsel_8h_source.html">Go to the source code of this file.</a></p> <table class="memberdecls"> <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="namespaces"></a> Namespaces</h2></td></tr> <tr class="memitem:namespaceicu"><td class="memItemLeft" align="right" valign="top">  </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceicu.html">icu</a></td></tr> <tr class="memdesc:namespaceicu"><td class="mdescLeft"> </td><td class="mdescRight">File <a class="el" href="coll_8h.html" title="C++ API: Collation Service. ">coll.h</a>. <br /></td></tr> <tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr> </table><table class="memberdecls"> <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="typedef-members"></a> Typedefs</h2></td></tr> <tr><td colspan="2"><div class="groupHeader"></div></td></tr> <tr class="memitem:a4bc48420c52373dc8016be5391bcc723"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a4bc48420c52373dc8016be5391bcc723"></a> typedef struct UConverterSelector </td><td class="memItemRight" valign="bottom"><b>UConverterSelector</b></td></tr> <tr class="separator:a4bc48420c52373dc8016be5391bcc723"><td class="memSeparator" colspan="2"> </td></tr> </table><table class="memberdecls"> <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a> Functions</h2></td></tr> <tr class="memitem:a0b2460b9690ded5c739a77d25b68383b"><td class="memItemLeft" align="right" valign="top">UConverterSelector * </td><td class="memItemRight" valign="bottom"><a class="el" href="ucnvsel_8h.html#a0b2460b9690ded5c739a77d25b68383b">ucnvsel_open</a> (const char *const *converterList, int32_t converterListSize, const <a class="el" href="ucnv_8h.html#adce3fef7c15d7c78196bf977ac96ec9c">USet</a> *excludedCodePoints, const <a class="el" href="ucnv_8h.html#a402221896b6d7153b14a5ff8dadde806">UConverterUnicodeSet</a> whichSet, <a class="el" href="utypes_8h.html#a3343c1c8a8377277046774691c98d78c">UErrorCode</a> *status)</td></tr> <tr class="memdesc:a0b2460b9690ded5c739a77d25b68383b"><td class="mdescLeft"> </td><td class="mdescRight">Open a selector. <a href="#a0b2460b9690ded5c739a77d25b68383b">More...</a><br /></td></tr> <tr class="separator:a0b2460b9690ded5c739a77d25b68383b"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a2866ab1e5b479153d8c9ea4d0b2eee1a"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="ucnvsel_8h.html#a2866ab1e5b479153d8c9ea4d0b2eee1a">ucnvsel_close</a> (UConverterSelector *sel)</td></tr> <tr class="memdesc:a2866ab1e5b479153d8c9ea4d0b2eee1a"><td class="mdescLeft"> </td><td class="mdescRight">Closes a selector. <a href="#a2866ab1e5b479153d8c9ea4d0b2eee1a">More...</a><br /></td></tr> <tr class="separator:a2866ab1e5b479153d8c9ea4d0b2eee1a"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:ae7dd7980455be33af8a36c8559915b78"><td class="memItemLeft" align="right" valign="top">UConverterSelector * </td><td class="memItemRight" valign="bottom"><a class="el" href="ucnvsel_8h.html#ae7dd7980455be33af8a36c8559915b78">ucnvsel_openFromSerialized</a> (const void *buffer, int32_t length, <a class="el" href="utypes_8h.html#a3343c1c8a8377277046774691c98d78c">UErrorCode</a> *status)</td></tr> <tr class="memdesc:ae7dd7980455be33af8a36c8559915b78"><td class="mdescLeft"> </td><td class="mdescRight">Open a selector from its serialized form. <a href="#ae7dd7980455be33af8a36c8559915b78">More...</a><br /></td></tr> <tr class="separator:ae7dd7980455be33af8a36c8559915b78"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a9b173a92d3e5206f3fc965523483ddc5"><td class="memItemLeft" align="right" valign="top">int32_t </td><td class="memItemRight" valign="bottom"><a class="el" href="ucnvsel_8h.html#a9b173a92d3e5206f3fc965523483ddc5">ucnvsel_serialize</a> (const UConverterSelector *sel, void *buffer, int32_t bufferCapacity, <a class="el" href="utypes_8h.html#a3343c1c8a8377277046774691c98d78c">UErrorCode</a> *status)</td></tr> <tr class="memdesc:a9b173a92d3e5206f3fc965523483ddc5"><td class="mdescLeft"> </td><td class="mdescRight">Serialize a selector into a linear buffer. <a href="#a9b173a92d3e5206f3fc965523483ddc5">More...</a><br /></td></tr> <tr class="separator:a9b173a92d3e5206f3fc965523483ddc5"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:ab3e9d09c18b3c0955fa9c1117cec24c6"><td class="memItemLeft" align="right" valign="top"><a class="el" href="uenum_8h.html#a32b7253b2148022535be36a9fcdb5a8d">UEnumeration</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="ucnvsel_8h.html#ab3e9d09c18b3c0955fa9c1117cec24c6">ucnvsel_selectForString</a> (const UConverterSelector *sel, 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> *status)</td></tr> <tr class="memdesc:ab3e9d09c18b3c0955fa9c1117cec24c6"><td class="mdescLeft"> </td><td class="mdescRight">Select converters that can map all characters in a UTF-16 string, ignoring the excluded code points. <a href="#ab3e9d09c18b3c0955fa9c1117cec24c6">More...</a><br /></td></tr> <tr class="separator:ab3e9d09c18b3c0955fa9c1117cec24c6"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a8542180e560702a880255314d226c30d"><td class="memItemLeft" align="right" valign="top"><a class="el" href="uenum_8h.html#a32b7253b2148022535be36a9fcdb5a8d">UEnumeration</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="ucnvsel_8h.html#a8542180e560702a880255314d226c30d">ucnvsel_selectForUTF8</a> (const UConverterSelector *sel, const char *s, int32_t length, <a class="el" href="utypes_8h.html#a3343c1c8a8377277046774691c98d78c">UErrorCode</a> *status)</td></tr> <tr class="memdesc:a8542180e560702a880255314d226c30d"><td class="mdescLeft"> </td><td class="mdescRight">Select converters that can map all characters in a UTF-8 string, ignoring the excluded code points. <a href="#a8542180e560702a880255314d226c30d">More...</a><br /></td></tr> <tr class="separator:a8542180e560702a880255314d226c30d"><td class="memSeparator" colspan="2"> </td></tr> </table> <a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2> <div class="textblock"><p>A converter selector is built with a set of encoding/charset names and given an input string returns the set of names of the corresponding converters which can convert the string. </p> <p>A converter selector can be serialized into a buffer and reopened from the serialized form. </p> <p>Definition in file <a class="el" href="ucnvsel_8h_source.html">ucnvsel.h</a>.</p> </div><h2 class="groupheader">Function Documentation</h2> <a class="anchor" id="a2866ab1e5b479153d8c9ea4d0b2eee1a"></a> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">void ucnvsel_close </td> <td>(</td> <td class="paramtype">UConverterSelector * </td> <td class="paramname"><em>sel</em></td><td>)</td> <td></td> </tr> </table> </div><div class="memdoc"> <p>Closes a selector. </p> <p>If any Enumerations were returned by ucnv_select*, they become invalid. They can be closed before or after calling ucnv_closeSelector, but should never be used after the selector is closed.</p> <dl class="section see"><dt>See also</dt><dd>ucnv_selectForString </dd> <dd> ucnv_selectForUTF8</dd></dl> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">sel</td><td>selector to close</td></tr> </table> </dd> </dl> <dl class="stable"><dt><b><a class="el" href="stable.html#_stable001628">Stable:</a></b></dt><dd>ICU 4.2 </dd></dl> </div> </div> <a class="anchor" id="a0b2460b9690ded5c739a77d25b68383b"></a> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">UConverterSelector* ucnvsel_open </td> <td>(</td> <td class="paramtype">const char *const * </td> <td class="paramname"><em>converterList</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">int32_t </td> <td class="paramname"><em>converterListSize</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const <a class="el" href="ucnv_8h.html#adce3fef7c15d7c78196bf977ac96ec9c">USet</a> * </td> <td class="paramname"><em>excludedCodePoints</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const <a class="el" href="ucnv_8h.html#a402221896b6d7153b14a5ff8dadde806">UConverterUnicodeSet</a> </td> <td class="paramname"><em>whichSet</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>status</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td> </tr> </table> </div><div class="memdoc"> <p>Open a selector. </p> <p>If converterListSize is 0, build for all available converters. If excludedCodePoints is NULL, don't exclude any code points.</p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">converterList</td><td>a pointer to encoding names needed to be involved. Can be NULL if converterListSize==0. The list and the names will be cloned, and the caller retains ownership of the original. </td></tr> <tr><td class="paramname">converterListSize</td><td>number of encodings in above list. If 0, builds a selector for all available converters. </td></tr> <tr><td class="paramname">excludedCodePoints</td><td>a set of code points to be excluded from consideration. That is, excluded code points in a string do not change the selection result. (They might be handled by a callback.) Use NULL to exclude nothing. </td></tr> <tr><td class="paramname">whichSet</td><td>what converter set to use? Use this to determine whether to consider only roundtrip mappings or also fallbacks. </td></tr> <tr><td class="paramname">status</td><td>an in/out ICU UErrorCode </td></tr> </table> </dd> </dl> <dl class="section return"><dt>Returns</dt><dd>the new selector</dd></dl> <dl class="stable"><dt><b><a class="el" href="stable.html#_stable001627">Stable:</a></b></dt><dd>ICU 4.2 </dd></dl> </div> </div> <a class="anchor" id="ae7dd7980455be33af8a36c8559915b78"></a> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">UConverterSelector* ucnvsel_openFromSerialized </td> <td>(</td> <td class="paramtype">const void * </td> <td class="paramname"><em>buffer</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>status</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td> </tr> </table> </div><div class="memdoc"> <p>Open a selector from its serialized form. </p> <p>The buffer must remain valid and unchanged for the lifetime of the selector. This is much faster than creating a selector from scratch. Using a serialized form from a different machine (endianness/charset) is supported.</p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">buffer</td><td>pointer to the serialized form of a converter selector; must be 32-bit-aligned </td></tr> <tr><td class="paramname">length</td><td>the capacity of this buffer (can be equal to or larger than the actual data length) </td></tr> <tr><td class="paramname">status</td><td>an in/out ICU UErrorCode </td></tr> </table> </dd> </dl> <dl class="section return"><dt>Returns</dt><dd>the new selector</dd></dl> <dl class="stable"><dt><b><a class="el" href="stable.html#_stable001629">Stable:</a></b></dt><dd>ICU 4.2 </dd></dl> </div> </div> <a class="anchor" id="ab3e9d09c18b3c0955fa9c1117cec24c6"></a> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="uenum_8h.html#a32b7253b2148022535be36a9fcdb5a8d">UEnumeration</a>* ucnvsel_selectForString </td> <td>(</td> <td class="paramtype">const UConverterSelector * </td> <td class="paramname"><em>sel</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>status</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td> </tr> </table> </div><div class="memdoc"> <p>Select converters that can map all characters in a UTF-16 string, ignoring the excluded code points. </p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">sel</td><td>a selector </td></tr> <tr><td class="paramname">s</td><td>UTF-16 string </td></tr> <tr><td class="paramname">length</td><td>length of the string, or -1 if NUL-terminated </td></tr> <tr><td class="paramname">status</td><td>an in/out ICU UErrorCode </td></tr> </table> </dd> </dl> <dl class="section return"><dt>Returns</dt><dd>an enumeration containing encoding names. The returned encoding names and their order will be the same as supplied when building the selector.</dd></dl> <dl class="stable"><dt><b><a class="el" href="stable.html#_stable001631">Stable:</a></b></dt><dd>ICU 4.2 </dd></dl> </div> </div> <a class="anchor" id="a8542180e560702a880255314d226c30d"></a> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="uenum_8h.html#a32b7253b2148022535be36a9fcdb5a8d">UEnumeration</a>* ucnvsel_selectForUTF8 </td> <td>(</td> <td class="paramtype">const UConverterSelector * </td> <td class="paramname"><em>sel</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const char * </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>status</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td> </tr> </table> </div><div class="memdoc"> <p>Select converters that can map all characters in a UTF-8 string, ignoring the excluded code points. </p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">sel</td><td>a selector </td></tr> <tr><td class="paramname">s</td><td>UTF-8 string </td></tr> <tr><td class="paramname">length</td><td>length of the string, or -1 if NUL-terminated </td></tr> <tr><td class="paramname">status</td><td>an in/out ICU UErrorCode </td></tr> </table> </dd> </dl> <dl class="section return"><dt>Returns</dt><dd>an enumeration containing encoding names. The returned encoding names and their order will be the same as supplied when building the selector.</dd></dl> <dl class="stable"><dt><b><a class="el" href="stable.html#_stable001632">Stable:</a></b></dt><dd>ICU 4.2 </dd></dl> </div> </div> <a class="anchor" id="a9b173a92d3e5206f3fc965523483ddc5"></a> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">int32_t ucnvsel_serialize </td> <td>(</td> <td class="paramtype">const UConverterSelector * </td> <td class="paramname"><em>sel</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">void * </td> <td class="paramname"><em>buffer</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">int32_t </td> <td class="paramname"><em>bufferCapacity</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>status</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td> </tr> </table> </div><div class="memdoc"> <p>Serialize a selector into a linear buffer. </p> <p>The serialized form is portable to different machines.</p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">sel</td><td>selector to consider </td></tr> <tr><td class="paramname">buffer</td><td>pointer to 32-bit-aligned memory to be filled with the serialized form of this converter selector </td></tr> <tr><td class="paramname">bufferCapacity</td><td>the capacity of this buffer </td></tr> <tr><td class="paramname">status</td><td>an in/out ICU UErrorCode </td></tr> </table> </dd> </dl> <dl class="section return"><dt>Returns</dt><dd>the required buffer capacity to hold serialize data (even if the call fails with a U_BUFFER_OVERFLOW_ERROR, it will return the required capacity)</dd></dl> <dl class="stable"><dt><b><a class="el" href="stable.html#_stable001630">Stable:</a></b></dt><dd>ICU 4.2 </dd></dl> </div> </div> </div><!-- contents --> <!-- start footer part --> <hr class="footer"/><address class="footer"><small> Generated by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.11 </small></address> </body> </html>