Sophie

Sophie

distrib > Mageia > 6 > armv5tl > media > core-release > by-pkgid > 3a4e91bde08970529a0aa07935652fe8 > files > 767

icu-doc-58.2-3.mga6.noarch.rpm

<!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: icuplug.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
   &#160;<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&#160;Page</span></a></li>
      <li><a href="pages.html"><span>Related&#160;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&#160;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&#160;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="#define-members">Macros</a> &#124;
<a href="#typedef-members">Typedefs</a> &#124;
<a href="#enum-members">Enumerations</a> &#124;
<a href="#func-members">Functions</a>  </div>
  <div class="headertitle">
<div class="title">icuplug.h File Reference</div>  </div>
</div><!--header-->
<div class="contents">

<p>C API: ICU Plugin API.  
<a href="#details">More...</a></p>
<div class="textblock"><code>#include &quot;<a class="el" href="utypes_8h_source.html">unicode/utypes.h</a>&quot;</code><br />
</div>
<p><a href="icuplug_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="define-members"></a>
Macros</h2></td></tr>
<tr class="memitem:a9ebfab37dc49e05e92c2855d9f535499"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="icuplug_8h.html#a9ebfab37dc49e05e92c2855d9f535499">UPLUG_TOKEN</a>&#160;&#160;&#160;0x54762486</td></tr>
<tr class="memdesc:a9ebfab37dc49e05e92c2855d9f535499"><td class="mdescLeft">&#160;</td><td class="mdescRight">Random Token to identify a valid ICU plugin.  <a href="#a9ebfab37dc49e05e92c2855d9f535499">More...</a><br /></td></tr>
<tr class="separator:a9ebfab37dc49e05e92c2855d9f535499"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a997e2042a74e315546a530cfcfa2c689"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="icuplug_8h.html#a997e2042a74e315546a530cfcfa2c689">UPLUG_NAME_MAX</a>&#160;&#160;&#160;100</td></tr>
<tr class="memdesc:a997e2042a74e315546a530cfcfa2c689"><td class="mdescLeft">&#160;</td><td class="mdescRight">Max width of names, symbols, and configuration strings.  <a href="#a997e2042a74e315546a530cfcfa2c689">More...</a><br /></td></tr>
<tr class="separator:a997e2042a74e315546a530cfcfa2c689"><td class="memSeparator" colspan="2">&#160;</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 class="memitem:a06027633088210b16f97fe8808354690"><td class="memItemLeft" align="right" valign="top">typedef uint32_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="icuplug_8h.html#a06027633088210b16f97fe8808354690">UPlugTokenReturn</a></td></tr>
<tr class="memdesc:a06027633088210b16f97fe8808354690"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return value from a plugin entrypoint.  <a href="#a06027633088210b16f97fe8808354690">More...</a><br /></td></tr>
<tr class="separator:a06027633088210b16f97fe8808354690"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9f763f2c2f75edb77f69ce9ca1425357"><td class="memItemLeft" align="right" valign="top">typedef <a class="el" href="icuplug_8h.html#a06027633088210b16f97fe8808354690">UPlugTokenReturn</a>(&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="icuplug_8h.html#a9f763f2c2f75edb77f69ce9ca1425357">UPlugEntrypoint</a>) (UPlugData *plug, <a class="el" href="icuplug_8h.html#a1bbc55ed156cb76a839cb73c03b37e51">UPlugReason</a> reason, <a class="el" href="utypes_8h.html#a3343c1c8a8377277046774691c98d78c">UErrorCode</a> *status)</td></tr>
<tr class="memdesc:a9f763f2c2f75edb77f69ce9ca1425357"><td class="mdescLeft">&#160;</td><td class="mdescRight">Entrypoint for an ICU plugin.  <a href="#a9f763f2c2f75edb77f69ce9ca1425357">More...</a><br /></td></tr>
<tr class="separator:a9f763f2c2f75edb77f69ce9ca1425357"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr><td colspan="2"><div class="groupHeader"></div></td></tr>
<tr class="memitem:a8ab87ad6fbdd4ebaeb84be954deeefe5"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a8ab87ad6fbdd4ebaeb84be954deeefe5"></a>
typedef struct UPlugData&#160;</td><td class="memItemRight" valign="bottom"><b>UPlugData</b></td></tr>
<tr class="separator:a8ab87ad6fbdd4ebaeb84be954deeefe5"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="enum-members"></a>
Enumerations</h2></td></tr>
<tr class="memitem:a1bbc55ed156cb76a839cb73c03b37e51"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="icuplug_8h.html#a1bbc55ed156cb76a839cb73c03b37e51">UPlugReason</a> { <a class="el" href="icuplug_8h.html#a1bbc55ed156cb76a839cb73c03b37e51a9bd7f50a704eba1e0dac10ea2a9de8f9">UPLUG_REASON_QUERY</a> = 0, 
<a class="el" href="icuplug_8h.html#a1bbc55ed156cb76a839cb73c03b37e51a33a9555aa913e2962b4d12b775cd51e9">UPLUG_REASON_LOAD</a> = 1, 
<a class="el" href="icuplug_8h.html#a1bbc55ed156cb76a839cb73c03b37e51a4f4e402d6a3de8486c642ba3ed708b0d">UPLUG_REASON_UNLOAD</a> = 2, 
<a class="el" href="icuplug_8h.html#a1bbc55ed156cb76a839cb73c03b37e51a1ad486aa416e71df0b1932ff75cf46f4">UPLUG_REASON_COUNT</a>
 }<tr class="memdesc:a1bbc55ed156cb76a839cb73c03b37e51"><td class="mdescLeft">&#160;</td><td class="mdescRight">Reason code for the entrypoint's call.  <a href="icuplug_8h.html#a1bbc55ed156cb76a839cb73c03b37e51">More...</a><br /></td></tr>
</td></tr>
<tr class="separator:a1bbc55ed156cb76a839cb73c03b37e51"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aea40d2ad75165edeca98e5ba28fccf9c"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="icuplug_8h.html#aea40d2ad75165edeca98e5ba28fccf9c">UPlugLevel</a> { <br />
&#160;&#160;<a class="el" href="icuplug_8h.html#aea40d2ad75165edeca98e5ba28fccf9ca07af9c4da9ef4dda7756ecb3ce0e39ec">UPLUG_LEVEL_INVALID</a> = 0, 
<a class="el" href="icuplug_8h.html#aea40d2ad75165edeca98e5ba28fccf9ca859ce6b48afa0293b7efd40c10b2c1ae">UPLUG_LEVEL_UNKNOWN</a> = 1, 
<a class="el" href="icuplug_8h.html#aea40d2ad75165edeca98e5ba28fccf9cafa33c66cbc81f460ff15a344988bf40e">UPLUG_LEVEL_LOW</a> = 2, 
<a class="el" href="icuplug_8h.html#aea40d2ad75165edeca98e5ba28fccf9caa8959468203b731fe6976ca4cfa696e1">UPLUG_LEVEL_HIGH</a> = 3, 
<br />
&#160;&#160;<a class="el" href="icuplug_8h.html#aea40d2ad75165edeca98e5ba28fccf9ca2ce23f95ec3831d2740c3f953cf485da">UPLUG_LEVEL_COUNT</a>
<br />
 }<tr class="memdesc:aea40d2ad75165edeca98e5ba28fccf9c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Level of plugin loading INITIAL: UNKNOWN QUERY: INVALID -&gt; { LOW | HIGH } ERR -&gt; INVALID.  <a href="icuplug_8h.html#aea40d2ad75165edeca98e5ba28fccf9c">More...</a><br /></td></tr>
</td></tr>
<tr class="separator:aea40d2ad75165edeca98e5ba28fccf9c"><td class="memSeparator" colspan="2">&#160;</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:a33226a66ae91b6a0f42a036c83f60318"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="icuplug_8h.html#a33226a66ae91b6a0f42a036c83f60318">uplug_setPlugNoUnload</a> (UPlugData *plug, <a class="el" href="umachine_8h.html#a349ef00011f20ccd1d3b424445681aa5">UBool</a> dontUnload)</td></tr>
<tr class="memdesc:a33226a66ae91b6a0f42a036c83f60318"><td class="mdescLeft">&#160;</td><td class="mdescRight">Request that this plugin not be unloaded at cleanup time.  <a href="#a33226a66ae91b6a0f42a036c83f60318">More...</a><br /></td></tr>
<tr class="separator:a33226a66ae91b6a0f42a036c83f60318"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:add743706906c9c29f9469ba1195f6b65"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="icuplug_8h.html#add743706906c9c29f9469ba1195f6b65">uplug_setPlugLevel</a> (UPlugData *plug, <a class="el" href="icuplug_8h.html#aea40d2ad75165edeca98e5ba28fccf9c">UPlugLevel</a> level)</td></tr>
<tr class="memdesc:add743706906c9c29f9469ba1195f6b65"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set the level of this plugin.  <a href="#add743706906c9c29f9469ba1195f6b65">More...</a><br /></td></tr>
<tr class="separator:add743706906c9c29f9469ba1195f6b65"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5ba44152d2d98b7ec87f770110c9aff4"><td class="memItemLeft" align="right" valign="top"><a class="el" href="icuplug_8h.html#aea40d2ad75165edeca98e5ba28fccf9c">UPlugLevel</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="icuplug_8h.html#a5ba44152d2d98b7ec87f770110c9aff4">uplug_getPlugLevel</a> (UPlugData *plug)</td></tr>
<tr class="memdesc:a5ba44152d2d98b7ec87f770110c9aff4"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the level of this plugin.  <a href="#a5ba44152d2d98b7ec87f770110c9aff4">More...</a><br /></td></tr>
<tr class="separator:a5ba44152d2d98b7ec87f770110c9aff4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:afc7aeaa736c86a9a1748a364327cfe63"><td class="memItemLeft" align="right" valign="top"><a class="el" href="icuplug_8h.html#aea40d2ad75165edeca98e5ba28fccf9c">UPlugLevel</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="icuplug_8h.html#afc7aeaa736c86a9a1748a364327cfe63">uplug_getCurrentLevel</a> (void)</td></tr>
<tr class="memdesc:afc7aeaa736c86a9a1748a364327cfe63"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the lowest level of plug which can currently load.  <a href="#afc7aeaa736c86a9a1748a364327cfe63">More...</a><br /></td></tr>
<tr class="separator:afc7aeaa736c86a9a1748a364327cfe63"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0b2f678c117bf14e399fb5b387856a84"><td class="memItemLeft" align="right" valign="top"><a class="el" href="utypes_8h.html#a3343c1c8a8377277046774691c98d78c">UErrorCode</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="icuplug_8h.html#a0b2f678c117bf14e399fb5b387856a84">uplug_getPlugLoadStatus</a> (UPlugData *plug)</td></tr>
<tr class="memdesc:a0b2f678c117bf14e399fb5b387856a84"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get plug load status.  <a href="#a0b2f678c117bf14e399fb5b387856a84">More...</a><br /></td></tr>
<tr class="separator:a0b2f678c117bf14e399fb5b387856a84"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae950185aea52d1d156884234f3aa87b1"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="icuplug_8h.html#ae950185aea52d1d156884234f3aa87b1">uplug_setPlugName</a> (UPlugData *plug, const char *name)</td></tr>
<tr class="memdesc:ae950185aea52d1d156884234f3aa87b1"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set the human-readable name of this plugin.  <a href="#ae950185aea52d1d156884234f3aa87b1">More...</a><br /></td></tr>
<tr class="separator:ae950185aea52d1d156884234f3aa87b1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0ee4dea13fb998e619e3e9f957d1661a"><td class="memItemLeft" align="right" valign="top">const char *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="icuplug_8h.html#a0ee4dea13fb998e619e3e9f957d1661a">uplug_getPlugName</a> (UPlugData *plug)</td></tr>
<tr class="memdesc:a0ee4dea13fb998e619e3e9f957d1661a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the human-readable name of this plugin.  <a href="#a0ee4dea13fb998e619e3e9f957d1661a">More...</a><br /></td></tr>
<tr class="separator:a0ee4dea13fb998e619e3e9f957d1661a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aec49d8d5bc3dc5c5e4150179752aa97e"><td class="memItemLeft" align="right" valign="top">const char *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="icuplug_8h.html#aec49d8d5bc3dc5c5e4150179752aa97e">uplug_getSymbolName</a> (UPlugData *plug)</td></tr>
<tr class="memdesc:aec49d8d5bc3dc5c5e4150179752aa97e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return the symbol name for this plugin, if known.  <a href="#aec49d8d5bc3dc5c5e4150179752aa97e">More...</a><br /></td></tr>
<tr class="separator:aec49d8d5bc3dc5c5e4150179752aa97e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a17f479d23a4469b55c30c7a86d018799"><td class="memItemLeft" align="right" valign="top">const char *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="icuplug_8h.html#a17f479d23a4469b55c30c7a86d018799">uplug_getLibraryName</a> (UPlugData *plug, <a class="el" href="utypes_8h.html#a3343c1c8a8377277046774691c98d78c">UErrorCode</a> *status)</td></tr>
<tr class="memdesc:a17f479d23a4469b55c30c7a86d018799"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return the library name for this plugin, if known.  <a href="#a17f479d23a4469b55c30c7a86d018799">More...</a><br /></td></tr>
<tr class="separator:a17f479d23a4469b55c30c7a86d018799"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:add2bbbaf8104bfbbeac0a647970f1129"><td class="memItemLeft" align="right" valign="top">void *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="icuplug_8h.html#add2bbbaf8104bfbbeac0a647970f1129">uplug_getLibrary</a> (UPlugData *plug)</td></tr>
<tr class="memdesc:add2bbbaf8104bfbbeac0a647970f1129"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return the library used for this plugin, if known.  <a href="#add2bbbaf8104bfbbeac0a647970f1129">More...</a><br /></td></tr>
<tr class="separator:add2bbbaf8104bfbbeac0a647970f1129"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2437c8d84c526461ac0a3fc33e802862"><td class="memItemLeft" align="right" valign="top">void *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="icuplug_8h.html#a2437c8d84c526461ac0a3fc33e802862">uplug_getContext</a> (UPlugData *plug)</td></tr>
<tr class="memdesc:a2437c8d84c526461ac0a3fc33e802862"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return the plugin-specific context data.  <a href="#a2437c8d84c526461ac0a3fc33e802862">More...</a><br /></td></tr>
<tr class="separator:a2437c8d84c526461ac0a3fc33e802862"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a75dea887a134177913c9e994a3c49a68"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="icuplug_8h.html#a75dea887a134177913c9e994a3c49a68">uplug_setContext</a> (UPlugData *plug, void *context)</td></tr>
<tr class="memdesc:a75dea887a134177913c9e994a3c49a68"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set the plugin-specific context data.  <a href="#a75dea887a134177913c9e994a3c49a68">More...</a><br /></td></tr>
<tr class="separator:a75dea887a134177913c9e994a3c49a68"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8c42deb99ef0a2dd0a515afb523e1e4c"><td class="memItemLeft" align="right" valign="top">const char *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="icuplug_8h.html#a8c42deb99ef0a2dd0a515afb523e1e4c">uplug_getConfiguration</a> (UPlugData *plug)</td></tr>
<tr class="memdesc:a8c42deb99ef0a2dd0a515afb523e1e4c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the configuration string, if available.  <a href="#a8c42deb99ef0a2dd0a515afb523e1e4c">More...</a><br /></td></tr>
<tr class="separator:a8c42deb99ef0a2dd0a515afb523e1e4c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3ea214634391286a656dac34f787cc53"><td class="memItemLeft" align="right" valign="top">UPlugData *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="icuplug_8h.html#a3ea214634391286a656dac34f787cc53">uplug_nextPlug</a> (UPlugData *prior)</td></tr>
<tr class="memdesc:a3ea214634391286a656dac34f787cc53"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return all currently installed plugins, from newest to oldest Usage Example:  <a href="#a3ea214634391286a656dac34f787cc53">More...</a><br /></td></tr>
<tr class="separator:a3ea214634391286a656dac34f787cc53"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a49c7cf66f925963292b903104b4f5207"><td class="memItemLeft" align="right" valign="top">UPlugData *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="icuplug_8h.html#a49c7cf66f925963292b903104b4f5207">uplug_loadPlugFromEntrypoint</a> (<a class="el" href="icuplug_8h.html#a9f763f2c2f75edb77f69ce9ca1425357">UPlugEntrypoint</a> *entrypoint, const char *config, <a class="el" href="utypes_8h.html#a3343c1c8a8377277046774691c98d78c">UErrorCode</a> *status)</td></tr>
<tr class="memdesc:a49c7cf66f925963292b903104b4f5207"><td class="mdescLeft">&#160;</td><td class="mdescRight">Inject a plugin as if it were loaded from a library.  <a href="#a49c7cf66f925963292b903104b4f5207">More...</a><br /></td></tr>
<tr class="separator:a49c7cf66f925963292b903104b4f5207"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:adf9663689fd6fd21af236dec7cf17109"><td class="memItemLeft" align="right" valign="top">UPlugData *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="icuplug_8h.html#adf9663689fd6fd21af236dec7cf17109">uplug_loadPlugFromLibrary</a> (const char *libName, const char *sym, const char *config, <a class="el" href="utypes_8h.html#a3343c1c8a8377277046774691c98d78c">UErrorCode</a> *status)</td></tr>
<tr class="memdesc:adf9663689fd6fd21af236dec7cf17109"><td class="mdescLeft">&#160;</td><td class="mdescRight">Inject a plugin from a library, as if the information came from a config file.  <a href="#adf9663689fd6fd21af236dec7cf17109">More...</a><br /></td></tr>
<tr class="separator:adf9663689fd6fd21af236dec7cf17109"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8540b4e19bfcbce9c0035838398d6079"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="icuplug_8h.html#a8540b4e19bfcbce9c0035838398d6079">uplug_removePlug</a> (UPlugData *plug, <a class="el" href="utypes_8h.html#a3343c1c8a8377277046774691c98d78c">UErrorCode</a> *status)</td></tr>
<tr class="memdesc:a8540b4e19bfcbce9c0035838398d6079"><td class="mdescLeft">&#160;</td><td class="mdescRight">Remove a plugin.  <a href="#a8540b4e19bfcbce9c0035838398d6079">More...</a><br /></td></tr>
<tr class="separator:a8540b4e19bfcbce9c0035838398d6079"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>C API: ICU Plugin API. </p>
<h2>C API: ICU Plugin API</h2>
<p>C API allowing run-time loadable modules that extend or modify ICU functionality.</p>
<h3>Loading and Configuration</h3>
<p>At ICU startup time, the environment variable "ICU_PLUGINS" will be queried for a directory name. If it is not set, the preprocessor symbol "DEFAULT_ICU_PLUGINS" will be checked for a default value.</p>
<p>Within the above-named directory, the file "icuplugins##.txt" will be opened, if present, where ## is the major+minor number of the currently running ICU (such as, 44 for ICU 4.4, thus icuplugins44.txt)</p>
<p>The configuration file has this format:</p>
<ul>
<li>
<p class="startli">Hash (#) begins a comment line</p>
<p class="endli"></p>
</li>
<li>
<p class="startli">Non-comment lines have two or three components: LIBRARYNAME ENTRYPOINT [ CONFIGURATION .. ]</p>
<p class="endli"></p>
</li>
<li>
<p class="startli">Tabs or spaces separate the three items.</p>
<p class="endli"></p>
</li>
<li>
<p class="startli">LIBRARYNAME is the name of a shared library, either a short name if it is on the loader path, or a full pathname.</p>
<p class="endli"></p>
</li>
<li>
<p class="startli">ENTRYPOINT is the short (undecorated) symbol name of the plugin's entrypoint, as above.</p>
<p class="endli"></p>
</li>
<li>
CONFIGURATION is the entire rest of the line . It's passed as-is to the plugin. </li>
</ul>
<p>An example configuration file is, in its entirety:</p>
<div class="fragment"><div class="line"><span class="preprocessor"># this is icuplugins44.txt</span></div><div class="line"><span class="preprocessor">testplug.dll    myPlugin        hello=world</span></div></div><!-- fragment --> <p>Plugins are categorized as "high" or "low" level. Low level are those which must be run BEFORE high level plugins, and before any operations which cause ICU to be 'initialized'. If a plugin is low level but causes ICU to allocate memory or become initialized, that plugin is said to cause a 'level change'. </p>
<p>At load time, ICU first queries all plugins to determine their level, then loads all 'low' plugins first, and then loads all 'high' plugins. Plugins are otherwise loaded in the order listed in the configuration file.</p>
<h3>Implementing a Plugin</h3>
<div class="fragment"><div class="line"><a class="code" href="umachine_8h.html#a676114b1a64bb7c2de15c919a00b28df">U_CAPI</a> <a class="code" href="icuplug_8h.html#a06027633088210b16f97fe8808354690">UPlugTokenReturn</a> U_EXPORT2 </div><div class="line">myPlugin (UPlugData *plug, <a class="code" href="icuplug_8h.html#a1bbc55ed156cb76a839cb73c03b37e51">UPlugReason</a> reason, <a class="code" href="utypes_8h.html#a3343c1c8a8377277046774691c98d78c">UErrorCode</a> *status) {</div><div class="line">  <span class="keywordflow">if</span>(reason==<a class="code" href="icuplug_8h.html#a1bbc55ed156cb76a839cb73c03b37e51a9bd7f50a704eba1e0dac10ea2a9de8f9">UPLUG_REASON_QUERY</a>) {</div><div class="line">     <a class="code" href="icuplug_8h.html#ae950185aea52d1d156884234f3aa87b1">uplug_setPlugName</a>(plug, <span class="stringliteral">&quot;Simple Plugin&quot;</span>);</div><div class="line">     <a class="code" href="icuplug_8h.html#add743706906c9c29f9469ba1195f6b65">uplug_setPlugLevel</a>(plug, <a class="code" href="icuplug_8h.html#aea40d2ad75165edeca98e5ba28fccf9caa8959468203b731fe6976ca4cfa696e1">UPLUG_LEVEL_HIGH</a>);</div><div class="line">   } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(reason==<a class="code" href="icuplug_8h.html#a1bbc55ed156cb76a839cb73c03b37e51a33a9555aa913e2962b4d12b775cd51e9">UPLUG_REASON_LOAD</a>) {</div><div class="line">      ... Set up some ICU things here.... </div><div class="line">   } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(reason==<a class="code" href="icuplug_8h.html#a1bbc55ed156cb76a839cb73c03b37e51a4f4e402d6a3de8486c642ba3ed708b0d">UPLUG_REASON_UNLOAD</a>) {</div><div class="line">      ... unload, clean up ...</div><div class="line">   }</div><div class="line">  <span class="keywordflow">return</span> <a class="code" href="icuplug_8h.html#a9ebfab37dc49e05e92c2855d9f535499">UPLUG_TOKEN</a>;</div><div class="line"> }</div></div><!-- fragment --><p>The UPlugData* is an opaque pointer to the plugin-specific data, and is used in all other API calls.</p>
<p>The API contract is:</p>
<ol>
<li>
<p class="startli">The plugin MUST always return UPLUG_TOKEN as a return value- to indicate that it is a valid plugin.</p>
<p class="endli"></p>
</li>
<li>
<p class="startli">When the 'reason' parameter is set to UPLUG_REASON_QUERY, the plugin MUST call <a class="el" href="icuplug_8h.html#add743706906c9c29f9469ba1195f6b65" title="Set the level of this plugin. ">uplug_setPlugLevel()</a> to indicate whether it is a high level or low level plugin.</p>
<p class="endli"></p>
</li>
<li>
When the 'reason' parameter is UPLUG_REASON_QUERY, the plugin SHOULD call uplug_setPlugName to indicate a human readable plugin name.</li>
</ol>
<dl class="internal"><dt><b><a class="el" href="internal.html#_internal000011">Internal:</a></b></dt><dd>Do not use. This API is for internal use only. ICU 4.4 Technology Preview </dd></dl>

<p>Definition in file <a class="el" href="icuplug_8h_source.html">icuplug.h</a>.</p>
</div><h2 class="groupheader">Macro Definition Documentation</h2>
<a class="anchor" id="a997e2042a74e315546a530cfcfa2c689"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define UPLUG_NAME_MAX&#160;&#160;&#160;100</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Max width of names, symbols, and configuration strings. </p>
<dl class="internal"><dt><b><a class="el" href="internal.html#_internal000014">Internal:</a></b></dt><dd>Do not use.</dd></dl>
<p>This API is for internal use only. ICU 4.4 Technology Preview </p>

<p>Definition at line <a class="el" href="icuplug_8h_source.html#l00143">143</a> of file <a class="el" href="icuplug_8h_source.html">icuplug.h</a>.</p>

</div>
</div>
<a class="anchor" id="a9ebfab37dc49e05e92c2855d9f535499"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define UPLUG_TOKEN&#160;&#160;&#160;0x54762486</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Random Token to identify a valid ICU plugin. </p>
<p>Plugins must return this from the entrypoint. </p><dl class="internal"><dt><b><a class="el" href="internal.html#_internal000013">Internal:</a></b></dt><dd>Do not use. This API is for internal use only. ICU 4.4 Technology Preview </dd></dl>

<p>Definition at line <a class="el" href="icuplug_8h_source.html#l00137">137</a> of file <a class="el" href="icuplug_8h_source.html">icuplug.h</a>.</p>

</div>
</div>
<h2 class="groupheader">Typedef Documentation</h2>
<a class="anchor" id="a9f763f2c2f75edb77f69ce9ca1425357"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">typedef <a class="el" href="icuplug_8h.html#a06027633088210b16f97fe8808354690">UPlugTokenReturn</a>( UPlugEntrypoint) (UPlugData *plug, <a class="el" href="icuplug_8h.html#a1bbc55ed156cb76a839cb73c03b37e51">UPlugReason</a> reason, <a class="el" href="utypes_8h.html#a3343c1c8a8377277046774691c98d78c">UErrorCode</a> *status)</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Entrypoint for an ICU plugin. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">plug</td><td>the UPlugData handle. </td></tr>
    <tr><td class="paramname">status</td><td>the plugin's extended status code. </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>A valid plugin must return UPLUG_TOKEN </dd></dl>
<dl class="internal"><dt><b><a class="el" href="internal.html#_internal000018">Internal:</a></b></dt><dd>Do not use. This API is for internal use only. ICU 4.4 Technology Preview </dd></dl>

<p>Definition at line <a class="el" href="icuplug_8h_source.html#l00196">196</a> of file <a class="el" href="icuplug_8h_source.html">icuplug.h</a>.</p>

</div>
</div>
<a class="anchor" id="a06027633088210b16f97fe8808354690"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">typedef uint32_t <a class="el" href="icuplug_8h.html#a06027633088210b16f97fe8808354690">UPlugTokenReturn</a></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Return value from a plugin entrypoint. </p>
<p>Must always be set to UPLUG_TOKEN </p><dl class="section see"><dt>See also</dt><dd><a class="el" href="icuplug_8h.html#a9ebfab37dc49e05e92c2855d9f535499" title="Random Token to identify a valid ICU plugin. ">UPLUG_TOKEN</a> </dd></dl>
<dl class="internal"><dt><b><a class="el" href="internal.html#_internal000015">Internal:</a></b></dt><dd>Do not use. This API is for internal use only. ICU 4.4 Technology Preview </dd></dl>

<p>Definition at line <a class="el" href="icuplug_8h_source.html#l00152">152</a> of file <a class="el" href="icuplug_8h_source.html">icuplug.h</a>.</p>

</div>
</div>
<h2 class="groupheader">Enumeration Type Documentation</h2>
<a class="anchor" id="aea40d2ad75165edeca98e5ba28fccf9c"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">enum <a class="el" href="icuplug_8h.html#aea40d2ad75165edeca98e5ba28fccf9c">UPlugLevel</a></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Level of plugin loading INITIAL: UNKNOWN QUERY: INVALID -&gt; { LOW | HIGH } ERR -&gt; INVALID. </p>
<dl class="internal"><dt><b><a class="el" href="internal.html#_internal000017">Internal:</a></b></dt><dd>Do not use.</dd></dl>
<p>This API is for internal use only. ICU 4.4 Technology Preview </p>
<table class="fieldtable">
<tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><a class="anchor" id="aea40d2ad75165edeca98e5ba28fccf9ca07af9c4da9ef4dda7756ecb3ce0e39ec"></a>UPLUG_LEVEL_INVALID&#160;</td><td class="fielddoc">
<p>The plugin is invalid, hasn't called uplug_setLevel, or can't load. </p>
</td></tr>
<tr><td class="fieldname"><a class="anchor" id="aea40d2ad75165edeca98e5ba28fccf9ca859ce6b48afa0293b7efd40c10b2c1ae"></a>UPLUG_LEVEL_UNKNOWN&#160;</td><td class="fielddoc">
<p>The plugin is waiting to be installed. </p>
</td></tr>
<tr><td class="fieldname"><a class="anchor" id="aea40d2ad75165edeca98e5ba28fccf9cafa33c66cbc81f460ff15a344988bf40e"></a>UPLUG_LEVEL_LOW&#160;</td><td class="fielddoc">
<p>The plugin must be called before u_init completes. </p>
</td></tr>
<tr><td class="fieldname"><a class="anchor" id="aea40d2ad75165edeca98e5ba28fccf9caa8959468203b731fe6976ca4cfa696e1"></a>UPLUG_LEVEL_HIGH&#160;</td><td class="fielddoc">
<p>The plugin can run at any time. </p>
</td></tr>
<tr><td class="fieldname"><a class="anchor" id="aea40d2ad75165edeca98e5ba28fccf9ca2ce23f95ec3831d2740c3f953cf485da"></a>UPLUG_LEVEL_COUNT&#160;</td><td class="fielddoc">
<p>Number of known levels. </p>
<dl class="internal"><dt><b><a class="el" href="internal.html#_internal000037">Internal:</a></b></dt><dd>Do not use. This API is for internal use only. The numeric value may change over time, see ICU ticket #12420. </dd></dl>
</td></tr>
</table>

<p>Definition at line <a class="el" href="icuplug_8h_source.html#l00177">177</a> of file <a class="el" href="icuplug_8h_source.html">icuplug.h</a>.</p>

</div>
</div>
<a class="anchor" id="a1bbc55ed156cb76a839cb73c03b37e51"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">enum <a class="el" href="icuplug_8h.html#a1bbc55ed156cb76a839cb73c03b37e51">UPlugReason</a></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Reason code for the entrypoint's call. </p>
<dl class="internal"><dt><b><a class="el" href="internal.html#_internal000016">Internal:</a></b></dt><dd>Do not use.</dd></dl>
<p>This API is for internal use only. ICU 4.4 Technology Preview </p>
<table class="fieldtable">
<tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><a class="anchor" id="a1bbc55ed156cb76a839cb73c03b37e51a9bd7f50a704eba1e0dac10ea2a9de8f9"></a>UPLUG_REASON_QUERY&#160;</td><td class="fielddoc">
<p>The plugin is being queried for info. </p>
</td></tr>
<tr><td class="fieldname"><a class="anchor" id="a1bbc55ed156cb76a839cb73c03b37e51a33a9555aa913e2962b4d12b775cd51e9"></a>UPLUG_REASON_LOAD&#160;</td><td class="fielddoc">
<p>The plugin is being loaded. </p>
</td></tr>
<tr><td class="fieldname"><a class="anchor" id="a1bbc55ed156cb76a839cb73c03b37e51a4f4e402d6a3de8486c642ba3ed708b0d"></a>UPLUG_REASON_UNLOAD&#160;</td><td class="fielddoc">
<p>The plugin is being unloaded. </p>
</td></tr>
<tr><td class="fieldname"><a class="anchor" id="a1bbc55ed156cb76a839cb73c03b37e51a1ad486aa416e71df0b1932ff75cf46f4"></a>UPLUG_REASON_COUNT&#160;</td><td class="fielddoc">
<p>Number of known reasons. </p>
<dl class="internal"><dt><b><a class="el" href="internal.html#_internal000036">Internal:</a></b></dt><dd>Do not use. This API is for internal use only. The numeric value may change over time, see ICU ticket #12420. </dd></dl>
</td></tr>
</table>

<p>Definition at line <a class="el" href="icuplug_8h_source.html#l00158">158</a> of file <a class="el" href="icuplug_8h_source.html">icuplug.h</a>.</p>

</div>
</div>
<h2 class="groupheader">Function Documentation</h2>
<a class="anchor" id="a8c42deb99ef0a2dd0a515afb523e1e4c"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">const char* uplug_getConfiguration </td>
          <td>(</td>
          <td class="paramtype">UPlugData *&#160;</td>
          <td class="paramname"><em>plug</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Get the configuration string, if available. </p>
<p>The string is in the platform default codepage. </p><dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">plug</td><td>plugin data handle </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>configuration string, or else null. </dd></dl>
<dl class="internal"><dt><b><a class="el" href="internal.html#_internal000031">Internal:</a></b></dt><dd>Do not use. This API is for internal use only. ICU 4.4 Technology Preview </dd></dl>

</div>
</div>
<a class="anchor" id="a2437c8d84c526461ac0a3fc33e802862"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void* uplug_getContext </td>
          <td>(</td>
          <td class="paramtype">UPlugData *&#160;</td>
          <td class="paramname"><em>plug</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Return the plugin-specific context data. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">plug</td><td>plugin data handle </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>the context, or NULL if not set </dd></dl>
<dl class="internal"><dt><b><a class="el" href="internal.html#_internal000029">Internal:</a></b></dt><dd>Do not use. This API is for internal use only. ICU 4.4 Technology Preview </dd></dl>

</div>
</div>
<a class="anchor" id="afc7aeaa736c86a9a1748a364327cfe63"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="icuplug_8h.html#aea40d2ad75165edeca98e5ba28fccf9c">UPlugLevel</a> uplug_getCurrentLevel </td>
          <td>(</td>
          <td class="paramtype">void&#160;</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Get the lowest level of plug which can currently load. </p>
<p>For example, if UPLUG_LEVEL_LOW is returned, then low level plugins may load if UPLUG_LEVEL_HIGH is returned, then only high level plugins may load. </p><dl class="section return"><dt>Returns</dt><dd>the lowest level of plug which can currently load </dd></dl>
<dl class="internal"><dt><b><a class="el" href="internal.html#_internal000022">Internal:</a></b></dt><dd>Do not use. This API is for internal use only. ICU 4.4 Technology Preview </dd></dl>

</div>
</div>
<a class="anchor" id="add2bbbaf8104bfbbeac0a647970f1129"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void* uplug_getLibrary </td>
          <td>(</td>
          <td class="paramtype">UPlugData *&#160;</td>
          <td class="paramname"><em>plug</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Return the library used for this plugin, if known. </p>
<p>Plugins could use this to load data out of their </p><dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">plug</td><td>plugin data handle </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>the library, or NULL </dd></dl>
<dl class="internal"><dt><b><a class="el" href="internal.html#_internal000028">Internal:</a></b></dt><dd>Do not use. This API is for internal use only. ICU 4.4 Technology Preview </dd></dl>

</div>
</div>
<a class="anchor" id="a17f479d23a4469b55c30c7a86d018799"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">const char* uplug_getLibraryName </td>
          <td>(</td>
          <td class="paramtype">UPlugData *&#160;</td>
          <td class="paramname"><em>plug</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="utypes_8h.html#a3343c1c8a8377277046774691c98d78c">UErrorCode</a> *&#160;</td>
          <td class="paramname"><em>status</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Return the library name for this plugin, if known. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">plug</td><td>plugin data handle </td></tr>
    <tr><td class="paramname">status</td><td>error code </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>the library name, or NULL </dd></dl>
<dl class="internal"><dt><b><a class="el" href="internal.html#_internal000027">Internal:</a></b></dt><dd>Do not use. This API is for internal use only. ICU 4.4 Technology Preview </dd></dl>

</div>
</div>
<a class="anchor" id="a5ba44152d2d98b7ec87f770110c9aff4"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="icuplug_8h.html#aea40d2ad75165edeca98e5ba28fccf9c">UPlugLevel</a> uplug_getPlugLevel </td>
          <td>(</td>
          <td class="paramtype">UPlugData *&#160;</td>
          <td class="paramname"><em>plug</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Get the level of this plugin. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">plug</td><td>plugin data handle </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>the level of this plugin </dd></dl>
<dl class="internal"><dt><b><a class="el" href="internal.html#_internal000021">Internal:</a></b></dt><dd>Do not use. This API is for internal use only. ICU 4.4 Technology Preview </dd></dl>

</div>
</div>
<a class="anchor" id="a0b2f678c117bf14e399fb5b387856a84"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="utypes_8h.html#a3343c1c8a8377277046774691c98d78c">UErrorCode</a> uplug_getPlugLoadStatus </td>
          <td>(</td>
          <td class="paramtype">UPlugData *&#160;</td>
          <td class="paramname"><em>plug</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Get plug load status. </p>
<dl class="section return"><dt>Returns</dt><dd>The error code of this plugin's load attempt. </dd></dl>
<dl class="internal"><dt><b><a class="el" href="internal.html#_internal000023">Internal:</a></b></dt><dd>Do not use. This API is for internal use only. ICU 4.4 Technology Preview </dd></dl>

</div>
</div>
<a class="anchor" id="a0ee4dea13fb998e619e3e9f957d1661a"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">const char* uplug_getPlugName </td>
          <td>(</td>
          <td class="paramtype">UPlugData *&#160;</td>
          <td class="paramname"><em>plug</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Get the human-readable name of this plugin. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">plug</td><td>plugin data handle </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>the name of this plugin </dd></dl>
<dl class="internal"><dt><b><a class="el" href="internal.html#_internal000025">Internal:</a></b></dt><dd>Do not use. This API is for internal use only. ICU 4.4 Technology Preview </dd></dl>

</div>
</div>
<a class="anchor" id="aec49d8d5bc3dc5c5e4150179752aa97e"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">const char* uplug_getSymbolName </td>
          <td>(</td>
          <td class="paramtype">UPlugData *&#160;</td>
          <td class="paramname"><em>plug</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Return the symbol name for this plugin, if known. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">plug</td><td>plugin data handle </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>the symbol name, or NULL </dd></dl>
<dl class="internal"><dt><b><a class="el" href="internal.html#_internal000026">Internal:</a></b></dt><dd>Do not use. This API is for internal use only. ICU 4.4 Technology Preview </dd></dl>

</div>
</div>
<a class="anchor" id="a49c7cf66f925963292b903104b4f5207"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">UPlugData* uplug_loadPlugFromEntrypoint </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="icuplug_8h.html#a9f763f2c2f75edb77f69ce9ca1425357">UPlugEntrypoint</a> *&#160;</td>
          <td class="paramname"><em>entrypoint</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>config</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="utypes_8h.html#a3343c1c8a8377277046774691c98d78c">UErrorCode</a> *&#160;</td>
          <td class="paramname"><em>status</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Inject a plugin as if it were loaded from a library. </p>
<p>This is useful for testing plugins. Note that it will have a 'NULL' library pointer associated with it, and therefore no llibrary will be closed at cleanup time. Low level plugins may not be able to load, as ordering can't be enforced. </p><dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">entrypoint</td><td>entrypoint to install </td></tr>
    <tr><td class="paramname">config</td><td>user specified configuration string, if available, or NULL. </td></tr>
    <tr><td class="paramname">status</td><td>error result </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>the new UPlugData associated with this plugin, or NULL if error. </dd></dl>
<dl class="internal"><dt><b><a class="el" href="internal.html#_internal000033">Internal:</a></b></dt><dd>Do not use. This API is for internal use only. ICU 4.4 Technology Preview </dd></dl>

</div>
</div>
<a class="anchor" id="adf9663689fd6fd21af236dec7cf17109"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">UPlugData* uplug_loadPlugFromLibrary </td>
          <td>(</td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>libName</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>sym</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>config</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="utypes_8h.html#a3343c1c8a8377277046774691c98d78c">UErrorCode</a> *&#160;</td>
          <td class="paramname"><em>status</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Inject a plugin from a library, as if the information came from a config file. </p>
<p>Low level plugins may not be able to load, and ordering can't be enforced. </p><dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">libName</td><td>DLL name to load </td></tr>
    <tr><td class="paramname">sym</td><td>symbol of plugin (UPlugEntrypoint function) </td></tr>
    <tr><td class="paramname">config</td><td>configuration string, or NULL </td></tr>
    <tr><td class="paramname">status</td><td>error result </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>the new UPlugData associated with this plugin, or NULL if error. </dd></dl>
<dl class="internal"><dt><b><a class="el" href="internal.html#_internal000034">Internal:</a></b></dt><dd>Do not use. This API is for internal use only. ICU 4.4 Technology Preview </dd></dl>

</div>
</div>
<a class="anchor" id="a3ea214634391286a656dac34f787cc53"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">UPlugData* uplug_nextPlug </td>
          <td>(</td>
          <td class="paramtype">UPlugData *&#160;</td>
          <td class="paramname"><em>prior</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Return all currently installed plugins, from newest to oldest Usage Example: </p>
<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span>&#160;UPlugData *plug = NULL;</div><div class="line"><a name="l00002"></a><span class="lineno">    2</span>&#160;while(plug=uplug_nextPlug(plug)) {</div><div class="line"><a name="l00003"></a><span class="lineno">    3</span>&#160;    ... do something with &#39;plug&#39; ...</div><div class="line"><a name="l00004"></a><span class="lineno">    4</span>&#160;}</div></div><!-- fragment --><p> Not thread safe- do not call while plugs are added or removed. </p><dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">prior</td><td>pass in 'NULL' to get the first (most recent) plug, otherwise pass the value returned on a prior call to uplug_nextPlug </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>the next oldest plugin, or NULL if no more. </dd></dl>
<dl class="internal"><dt><b><a class="el" href="internal.html#_internal000032">Internal:</a></b></dt><dd>Do not use. This API is for internal use only. ICU 4.4 Technology Preview </dd></dl>

</div>
</div>
<a class="anchor" id="a8540b4e19bfcbce9c0035838398d6079"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void uplug_removePlug </td>
          <td>(</td>
          <td class="paramtype">UPlugData *&#160;</td>
          <td class="paramname"><em>plug</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="utypes_8h.html#a3343c1c8a8377277046774691c98d78c">UErrorCode</a> *&#160;</td>
          <td class="paramname"><em>status</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Remove a plugin. </p>
<p>Will request the plugin to be unloaded, and close the library if needed </p><dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">plug</td><td>plugin handle to close </td></tr>
    <tr><td class="paramname">status</td><td>error result </td></tr>
  </table>
  </dd>
</dl>
<dl class="internal"><dt><b><a class="el" href="internal.html#_internal000035">Internal:</a></b></dt><dd>Do not use. This API is for internal use only. ICU 4.4 Technology Preview </dd></dl>

</div>
</div>
<a class="anchor" id="a75dea887a134177913c9e994a3c49a68"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void uplug_setContext </td>
          <td>(</td>
          <td class="paramtype">UPlugData *&#160;</td>
          <td class="paramname"><em>plug</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">void *&#160;</td>
          <td class="paramname"><em>context</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Set the plugin-specific context data. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">plug</td><td>plugin data handle </td></tr>
    <tr><td class="paramname">context</td><td>new context to set </td></tr>
  </table>
  </dd>
</dl>
<dl class="internal"><dt><b><a class="el" href="internal.html#_internal000030">Internal:</a></b></dt><dd>Do not use. This API is for internal use only. ICU 4.4 Technology Preview </dd></dl>

</div>
</div>
<a class="anchor" id="add743706906c9c29f9469ba1195f6b65"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void uplug_setPlugLevel </td>
          <td>(</td>
          <td class="paramtype">UPlugData *&#160;</td>
          <td class="paramname"><em>plug</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="icuplug_8h.html#aea40d2ad75165edeca98e5ba28fccf9c">UPlugLevel</a>&#160;</td>
          <td class="paramname"><em>level</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Set the level of this plugin. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">plug</td><td>plugin data handle </td></tr>
    <tr><td class="paramname">level</td><td>the level of this plugin </td></tr>
  </table>
  </dd>
</dl>
<dl class="internal"><dt><b><a class="el" href="internal.html#_internal000020">Internal:</a></b></dt><dd>Do not use. This API is for internal use only. ICU 4.4 Technology Preview </dd></dl>

</div>
</div>
<a class="anchor" id="ae950185aea52d1d156884234f3aa87b1"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void uplug_setPlugName </td>
          <td>(</td>
          <td class="paramtype">UPlugData *&#160;</td>
          <td class="paramname"><em>plug</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>name</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Set the human-readable name of this plugin. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">plug</td><td>plugin data handle </td></tr>
    <tr><td class="paramname">name</td><td>the name of this plugin. The first UPLUG_NAME_MAX characters willi be copied into a new buffer. </td></tr>
  </table>
  </dd>
</dl>
<dl class="internal"><dt><b><a class="el" href="internal.html#_internal000024">Internal:</a></b></dt><dd>Do not use. This API is for internal use only. ICU 4.4 Technology Preview </dd></dl>

</div>
</div>
<a class="anchor" id="a33226a66ae91b6a0f42a036c83f60318"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void uplug_setPlugNoUnload </td>
          <td>(</td>
          <td class="paramtype">UPlugData *&#160;</td>
          <td class="paramname"><em>plug</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="umachine_8h.html#a349ef00011f20ccd1d3b424445681aa5">UBool</a>&#160;</td>
          <td class="paramname"><em>dontUnload</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Request that this plugin not be unloaded at cleanup time. </p>
<p>This is appropriate for plugins which cannot be cleaned up. </p><dl class="section see"><dt>See also</dt><dd><a class="el" href="uclean_8h.html#a93f27d0ddc7c196a1da864763f2d8920" title="Clean up the system resources, such as allocated memory or open files, used in all ICU libraries...">u_cleanup()</a> </dd></dl>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">plug</td><td>plugin </td></tr>
    <tr><td class="paramname">dontUnload</td><td>set true if this plugin can't be unloaded </td></tr>
  </table>
  </dd>
</dl>
<dl class="internal"><dt><b><a class="el" href="internal.html#_internal000019">Internal:</a></b></dt><dd>Do not use. This API is for internal use only. ICU 4.4 Technology Preview </dd></dl>

</div>
</div>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.11
</small></address>
</body>
</html>