1e9fcaa8aSmrg<?xml version="1.0" encoding="UTF-8" ?> 2e9fcaa8aSmrg<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.3//EN" 3eb411b4bSmrg "http://www.oasis-open.org/docbook/xml/4.3/docbookx.dtd" 4eb411b4bSmrg[ 5eb411b4bSmrg<!ENTITY % defs SYSTEM "defs.ent"> %defs; 6eb411b4bSmrg]> 7e9fcaa8aSmrg 8e9fcaa8aSmrg<book id="framework"> 9e9fcaa8aSmrg 10e9fcaa8aSmrg<bookinfo> 11e9fcaa8aSmrg <title>X11R6 Sample Implementation Frame Work</title> 12eb411b4bSmrg <releaseinfo>X Version 11, Release &fullrelvers;</releaseinfo> 13e9fcaa8aSmrg <authorgroup> 14e9fcaa8aSmrg <othercredit> 15e9fcaa8aSmrg <firstname>Katsuhisa</firstname><surname>Yano</surname> 16e9fcaa8aSmrg <affiliation><orgname>TOSHIBA Corporation</orgname></affiliation> 17e9fcaa8aSmrg </othercredit> 18e9fcaa8aSmrg <othercredit> 19e9fcaa8aSmrg <firstname>Yoshio</firstname><surname>Horiuchi</surname> 20e9fcaa8aSmrg <affiliation><orgname>IBM Japan</orgname></affiliation> 21e9fcaa8aSmrg </othercredit> 22e9fcaa8aSmrg </authorgroup> 23eb411b4bSmrg <copyright><year>1994</year> 24eb411b4bSmrg <holder>TOSHIBA Corporation</holder> 25eb411b4bSmrg <holder>IBM Corporation</holder> 26eb411b4bSmrg </copyright> 27e9fcaa8aSmrg 28e9fcaa8aSmrg<legalnotice> 29e9fcaa8aSmrg 30e9fcaa8aSmrg<para> 31e9fcaa8aSmrgPermission to use, copy, modify, and distribute this documentation for any purpose and without fee is hereby granted, 32e9fcaa8aSmrgprovided that the above copyright notice and this permission notice appear in all copies. TOSHIBA Corporation and 33e9fcaa8aSmrgIBM Corporation make no representations about the suitability for any purpose of the information in this document. 34e9fcaa8aSmrgThis documentation is provided as is without express or implied warranty. 35e9fcaa8aSmrg</para> 36e9fcaa8aSmrg 37eb411b4bSmrg<para role="multiLicensing">Copyright © 1994 X Consortium</para> 38e9fcaa8aSmrg<para> 39e9fcaa8aSmrgPermission is hereby granted, free of charge, to any person obtaining a copy 40e9fcaa8aSmrgof this software and associated documentation files 41e9fcaa8aSmrg(the "Software"), to deal in the Software without restriction, 42e9fcaa8aSmrgincluding without limitation the rights to use, copy, modify, merge, publish, 43e9fcaa8aSmrgdistribute, sublicense, and/or sell copies of the Software, and to permit 44e9fcaa8aSmrgpersons to whom the Software is furnished to do so, subject to the following 45e9fcaa8aSmrgconditions: 46e9fcaa8aSmrg</para> 47e9fcaa8aSmrg 48e9fcaa8aSmrg<para> 49e9fcaa8aSmrgThe above copyright notice and this permission notice shall be included in all 50e9fcaa8aSmrgcopies or substantial portions of the Software. 51e9fcaa8aSmrg</para> 52e9fcaa8aSmrg 53e9fcaa8aSmrg<para> 54e9fcaa8aSmrgTHE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, 55e9fcaa8aSmrgEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 56e9fcaa8aSmrgMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN 57e9fcaa8aSmrgNO EVENT SHALL THE X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 58e9fcaa8aSmrgLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 59e9fcaa8aSmrgOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 60e9fcaa8aSmrgTHE SOFTWARE. 61e9fcaa8aSmrg</para> 62e9fcaa8aSmrg 63e9fcaa8aSmrg<para> 64eb411b4bSmrgExcept as contained in this notice, the name of X Consortium shall not 65e9fcaa8aSmrgbe used in advertising or otherwise to promote the sale, use or other dealings 66e9fcaa8aSmrgin this Software without prior written authorization from X Consortium. 67e9fcaa8aSmrg</para> 68e9fcaa8aSmrg 69e9fcaa8aSmrg<para>X Window System is a trademark of The Open Group.</para> 70e9fcaa8aSmrg 71e9fcaa8aSmrg</legalnotice> 72e9fcaa8aSmrg</bookinfo> 73e9fcaa8aSmrg 74eb411b4bSmrg<chapter id='Framework'> 75e9fcaa8aSmrg<title>Framework</title> 76eb411b4bSmrg<sect1 id='Preface'> 77e9fcaa8aSmrg<title>Preface</title> 78e9fcaa8aSmrg<para> 79e9fcaa8aSmrgThis document proposes to define the structures, methods and their 80e9fcaa8aSmrgsignatures that are expected to be common to all locale dependent 81e9fcaa8aSmrgfunctions within the Xlib sample implementation. The following 82e9fcaa8aSmrgillustration (Fig.1) <!-- xref --> is proposed to outline the separating of 83e9fcaa8aSmrgthe components within the sample implementation. 84e9fcaa8aSmrg</para> 85e9fcaa8aSmrg 86e9fcaa8aSmrg<para> 87e9fcaa8aSmrgPreface drawing. 88e9fcaa8aSmrg</para> 89e9fcaa8aSmrg 90e9fcaa8aSmrg<mediaobject id="framework_locale_service_api_proposal"> 91e9fcaa8aSmrg <imageobject> 92e9fcaa8aSmrg <imagedata width="540px" depth="530px" contentwidth="560px" contentdepth="550px" format="SVG" fileref="framework.svg"/> 93e9fcaa8aSmrg </imageobject> 94e9fcaa8aSmrg <caption>Frame work of Locale Service API Proposal</caption> 95e9fcaa8aSmrg</mediaobject> 96e9fcaa8aSmrg 97e9fcaa8aSmrg<para> 98e9fcaa8aSmrgGenerally speaking, the internationalized portion of Xlib (Locale 99e9fcaa8aSmrgDependent X, LDX) consists of three objects; 100e9fcaa8aSmrglocale (LC) , input method (IM) and output method (OM). 101e9fcaa8aSmrgThe LC provides a set of information that depends on user's language 102e9fcaa8aSmrgenvironment. The IM manages text inputing, and the OM manages text 103e9fcaa8aSmrgdrawing. Both IM and OM highly depend on LC data. 104e9fcaa8aSmrg</para> 105e9fcaa8aSmrg 106e9fcaa8aSmrg<para> 107e9fcaa8aSmrgIn X11R5, there are two sample implementations, Ximp and Xsi, for 108e9fcaa8aSmrgXlib internationalization. But in both implementations, IM and OM 109e9fcaa8aSmrgactually refer the private extension of LC. It breaks coexistence 110e9fcaa8aSmrgof these two sample implementations. For example, if a user creates 111e9fcaa8aSmrga new OM for special purpose as a part of Ximp, it will not work with 112e9fcaa8aSmrgXsi. 113e9fcaa8aSmrg</para> 114e9fcaa8aSmrg 115e9fcaa8aSmrg<para> 116e9fcaa8aSmrgAs a solution of this problem, we propose to define the standard 117e9fcaa8aSmrgAPIs between these three objects, and define the structure that are 118e9fcaa8aSmrgcommon to these objects. 119e9fcaa8aSmrg</para> 120e9fcaa8aSmrg</sect1> 121e9fcaa8aSmrg 122e9fcaa8aSmrg<sect1 id="Objective"> 123e9fcaa8aSmrg<title>Objective</title> 124e9fcaa8aSmrg 125e9fcaa8aSmrg<itemizedlist> 126e9fcaa8aSmrg <listitem> 127e9fcaa8aSmrg <para> 128e9fcaa8aSmrgExplain the current X11R6 sample implementation 129e9fcaa8aSmrg </para> 130e9fcaa8aSmrg </listitem> 131e9fcaa8aSmrg <listitem> 132e9fcaa8aSmrg <para> 133e9fcaa8aSmrgDocument the common set of locale dependent interfaces 134e9fcaa8aSmrg </para> 135e9fcaa8aSmrg </listitem> 136e9fcaa8aSmrg <listitem> 137e9fcaa8aSmrg <para> 138e9fcaa8aSmrgProvide more flexible pluggable layer 139e9fcaa8aSmrg </para> 140e9fcaa8aSmrg </listitem> 141e9fcaa8aSmrg</itemizedlist> 142e9fcaa8aSmrg</sect1> 143e9fcaa8aSmrg 144e9fcaa8aSmrg<sect1 id="Locale_Object_Binding_Functions"> 145e9fcaa8aSmrg<title>Locale Object Binding Functions</title> 146e9fcaa8aSmrg<!-- .XS (SN Locale Object Binding Functions --> 147e9fcaa8aSmrg<!-- .XE --> 148e9fcaa8aSmrg<para> 149e9fcaa8aSmrgThis chapter describes functions related locale object binding for 150e9fcaa8aSmrgimplementing the pluggable layer. 151e9fcaa8aSmrg</para> 152e9fcaa8aSmrg 153e9fcaa8aSmrg<para> 154e9fcaa8aSmrgA locale loader is an entry point for locale object, which 155e9fcaa8aSmrginstantiates XLCd object and binds locale methods with specified 156e9fcaa8aSmrglocale name. The behavior of loader is implementation dependent. 157e9fcaa8aSmrgAnd, what kind of loaders are available is also implementation 158e9fcaa8aSmrgdependent. 159e9fcaa8aSmrg</para> 160e9fcaa8aSmrg 161e9fcaa8aSmrg<para> 162e9fcaa8aSmrg<!-- .LP --> 163e9fcaa8aSmrgThe loader is called in 164e9fcaa8aSmrg<function>_XOpenLC, </function> 165e9fcaa8aSmrgbut caller of 166eb411b4bSmrg<xref linkend='_XOpenLC' xrefstyle='select: title'/> 167e9fcaa8aSmrgdoes not need to care about its inside. For example, if the loader is 168e9fcaa8aSmrgimplemented with dynamic load functions, and the dynamic module is 169e9fcaa8aSmrgexpected to be unloaded when the corresponding XLCd is freed, 170e9fcaa8aSmrgclose methods of XLCdMethods should handle unloading. 171e9fcaa8aSmrg</para> 172e9fcaa8aSmrg 173e9fcaa8aSmrg<para> 174e9fcaa8aSmrg<emphasis role="bold">Initializing a locale loader list</emphasis> 175e9fcaa8aSmrg</para> 176e9fcaa8aSmrg 177e9fcaa8aSmrg<para>void _XlcInitLoader</para> 178e9fcaa8aSmrg 179e9fcaa8aSmrg 180e9fcaa8aSmrg<para> 181e9fcaa8aSmrgThe 182e9fcaa8aSmrg<function>_XlcInitLoader</function> 183e9fcaa8aSmrgfunction initializes the locale loader list with vendor specific 184e9fcaa8aSmrgmanner. Each loader is registered with calling 185e9fcaa8aSmrg<function>_XlcAddLoader.</function> 186e9fcaa8aSmrgThe number of loaders and their order in the loader list is 187e9fcaa8aSmrgimplementation dependent. 188e9fcaa8aSmrg</para> 189e9fcaa8aSmrg 190e9fcaa8aSmrg<para> 191e9fcaa8aSmrg<emphasis role="bold">Add a loader</emphasis> 192e9fcaa8aSmrg</para> 193e9fcaa8aSmrg 194e9fcaa8aSmrg<literallayout> 195e9fcaa8aSmrgtypedef XLCd (*XLCdLoadProc)(<emphasis remap='I'>name</emphasis>); 196e9fcaa8aSmrg char <emphasis remap='I'>*name</emphasis>; 197e9fcaa8aSmrg 198e9fcaa8aSmrgtypedef int XlcPosition; 199e9fcaa8aSmrg 200e9fcaa8aSmrg#define XlcHead 201e9fcaa8aSmrg#define XlcTail 202e9fcaa8aSmrg</literallayout> 203e9fcaa8aSmrg 204eb411b4bSmrg<funcsynopsis id='_XlcAddLoader'> 205e9fcaa8aSmrg<funcprototype> 206e9fcaa8aSmrg <funcdef>Bool <function> _XlcAddLoader</function></funcdef> 207e9fcaa8aSmrg <paramdef>XLCdLoadProc<parameter> proc</parameter></paramdef> 208e9fcaa8aSmrg <paramdef>XlcPosition<parameter> position</parameter></paramdef> 209e9fcaa8aSmrg</funcprototype> 210e9fcaa8aSmrg</funcsynopsis> 211e9fcaa8aSmrg 212e9fcaa8aSmrg<para> 213e9fcaa8aSmrgThe 214eb411b4bSmrg<xref linkend='_XlcAddLoader' xrefstyle='select: title'/> 215e9fcaa8aSmrgfunction registers the specified locale loader "<emphasis remap='I'>proc</emphasis>" to the 216e9fcaa8aSmrginternal loader list. The position specifies that the loader 217e9fcaa8aSmrg"<emphasis remap='I'>proc</emphasis>" should be placed in the top of the loader list(XlcHead) 218e9fcaa8aSmrgor last(XlcTail). 219e9fcaa8aSmrg</para> 220e9fcaa8aSmrg 221e9fcaa8aSmrg<para> 222e9fcaa8aSmrgThe object loader is called from the top of the loader list in order, 223e9fcaa8aSmrgwhen calling time. 224e9fcaa8aSmrg</para> 225e9fcaa8aSmrg 226e9fcaa8aSmrg<para> 227e9fcaa8aSmrg<function>Remove a loader</function> 228e9fcaa8aSmrg</para> 229e9fcaa8aSmrg 230eb411b4bSmrg<funcsynopsis id='_XlcRemoveLoader'> 231e9fcaa8aSmrg<funcprototype> 232e9fcaa8aSmrg <funcdef>void <function> _XlcRemoveLoader</function></funcdef> 233e9fcaa8aSmrg <paramdef>XLCdLoadProc<parameter> proc</parameter></paramdef> 234e9fcaa8aSmrg</funcprototype> 235e9fcaa8aSmrg</funcsynopsis> 236e9fcaa8aSmrg 237e9fcaa8aSmrg<para> 238e9fcaa8aSmrgThe 239eb411b4bSmrg<xref linkend='_XlcRemoveLoader' xrefstyle='select: title'/> 240e9fcaa8aSmrgfunction removes the locale loader specified by "<emphasis remap='I'>proc</emphasis>" from the 241e9fcaa8aSmrgloader list. 242e9fcaa8aSmrg</para> 243e9fcaa8aSmrg 244e9fcaa8aSmrg<para> 245e9fcaa8aSmrgCurrent implementation provides following locale loaders; 246e9fcaa8aSmrg</para> 247e9fcaa8aSmrg 248e9fcaa8aSmrg<literallayout> 249e9fcaa8aSmrg<function>_XlcDefaultLoader</function> 250e9fcaa8aSmrg<function>_XlcGenericLoader</function> 251e9fcaa8aSmrg<function>_XlcUtfLoader</function> 252e9fcaa8aSmrg<function>_XaixOsDynamicLoad</function> 253e9fcaa8aSmrg</literallayout> 254e9fcaa8aSmrg 255e9fcaa8aSmrg</sect1> 256e9fcaa8aSmrg 257e9fcaa8aSmrg<sect1 id="Locale_Method_Interface"> 258e9fcaa8aSmrg<title>Locale Method Interface</title> 259e9fcaa8aSmrg 260e9fcaa8aSmrg<para> 261e9fcaa8aSmrgThis chapter describes the locale method API, which is a set of 262e9fcaa8aSmrgaccessible functions from both IM and OM parts. 263e9fcaa8aSmrgThe locale method API provides the functionalities; obtaining locale 264e9fcaa8aSmrgdependent information, handling charset, converting text, etc. 265e9fcaa8aSmrg</para> 266e9fcaa8aSmrg 267e9fcaa8aSmrg<para> 2689c019ec5SmayaAs a result of using these APIs instead of accessing vendor private 269e9fcaa8aSmrgextension of the locale object, we can keep locale, IM and OM 270e9fcaa8aSmrgindependently each other. 271e9fcaa8aSmrg</para> 272e9fcaa8aSmrg 273e9fcaa8aSmrg</sect1> 274e9fcaa8aSmrg 275e9fcaa8aSmrg<sect1 id="Locale_Method_Functions"> 276e9fcaa8aSmrg<title>Locale Method Functions</title> 277e9fcaa8aSmrg<para> 278e9fcaa8aSmrg<function>Open a Locale Method</function> 279e9fcaa8aSmrg</para> 280e9fcaa8aSmrg 281eb411b4bSmrg<funcsynopsis id='_XOpenLC'> 282e9fcaa8aSmrg<funcprototype> 283e9fcaa8aSmrg <funcdef>XLCd <function> _XOpenLC</function></funcdef> 284e9fcaa8aSmrg <paramdef>char<parameter> *name</parameter></paramdef> 285e9fcaa8aSmrg</funcprototype> 286e9fcaa8aSmrg</funcsynopsis> 287e9fcaa8aSmrg 288e9fcaa8aSmrg<para> 289e9fcaa8aSmrgThe 290eb411b4bSmrg<xref linkend='_XOpenLC' xrefstyle='select: title'/> 291e9fcaa8aSmrgfunction opens a locale method which corresponds to the 292e9fcaa8aSmrgspecified locale name. 293eb411b4bSmrg<xref linkend='_XOpenLC' xrefstyle='select: title'/> 294e9fcaa8aSmrgcalls a locale object loader, which is registered via 295e9fcaa8aSmrg<function>_XlcAddLoader into the internal loader list. If the called loader </function> 296e9fcaa8aSmrgis valid and successfully opens a locale, 297eb411b4bSmrg<xref linkend='_XOpenLC' xrefstyle='select: title'/> 298e9fcaa8aSmrgreturns the XLCd. If the loader is invalid or failed to open a locale, 299eb411b4bSmrg<xref linkend='_XOpenLC' xrefstyle='select: title'/> 300e9fcaa8aSmrgcalls the next loader. If all registered loaders cannot open a locale, 301eb411b4bSmrg<xref linkend='_XOpenLC' xrefstyle='select: title'/> 302e9fcaa8aSmrgreturns NULL. 303e9fcaa8aSmrg</para> 304e9fcaa8aSmrg 305e9fcaa8aSmrg<para>XLCd _XlcCurrentLC</para> 306e9fcaa8aSmrg 307e9fcaa8aSmrg<para> 308e9fcaa8aSmrgThe 309e9fcaa8aSmrg<function>_XlcCurrentLC</function> 310e9fcaa8aSmrgfunction returns an XLCd that are bound to current locale. 311e9fcaa8aSmrg</para> 312e9fcaa8aSmrg 313e9fcaa8aSmrg<para> 314e9fcaa8aSmrg<emphasis role="bold">Close a Locale Method</emphasis> 315e9fcaa8aSmrg</para> 316e9fcaa8aSmrg 317eb411b4bSmrg<funcsynopsis id='_XCloseLC'> 318e9fcaa8aSmrg<funcprototype> 319e9fcaa8aSmrg <funcdef>void <function> _XCloseLC</function></funcdef> 320e9fcaa8aSmrg <paramdef>XLCd<parameter> lcd</parameter></paramdef> 321e9fcaa8aSmrg</funcprototype> 322e9fcaa8aSmrg</funcsynopsis> 323e9fcaa8aSmrg 324e9fcaa8aSmrg<para> 325e9fcaa8aSmrg<!-- .LP --> 326e9fcaa8aSmrgThe 327eb411b4bSmrg<xref linkend='_XCloseLC' xrefstyle='select: title'/> 328e9fcaa8aSmrgfunction close a locale method the specified lcd. 329e9fcaa8aSmrg</para> 330e9fcaa8aSmrg 331e9fcaa8aSmrg<para> 332e9fcaa8aSmrg<emphasis role="bold">Obtain Locale Method values</emphasis> 333e9fcaa8aSmrg</para> 334e9fcaa8aSmrg 335eb411b4bSmrg<funcsynopsis id='_XGetLCValues'> 336e9fcaa8aSmrg<funcprototype> 337e9fcaa8aSmrg <funcdef>char *<function>_XGetLCValues</function></funcdef> 338e9fcaa8aSmrg <paramdef>XLCd<parameter> lcd</parameter></paramdef> 339e9fcaa8aSmrg</funcprototype> 340e9fcaa8aSmrg</funcsynopsis> 341e9fcaa8aSmrg 342e9fcaa8aSmrg<para> 343e9fcaa8aSmrgThe 344eb411b4bSmrg<xref linkend='_XGetLCValues' xrefstyle='select: title'/> 345e9fcaa8aSmrgfunction returns NULL if no error occurred; otherwise, it returns the 346e9fcaa8aSmrgname of the first argument that could not be obtained. 347e9fcaa8aSmrgThe following values are defined as standard arguments. Other values 348e9fcaa8aSmrgare implementation dependent. 349e9fcaa8aSmrg</para> 350e9fcaa8aSmrg 351eb411b4bSmrg<informaltable frame="topbot"> 352eb411b4bSmrg <?dbfo keep-together="always" ?> 353eb411b4bSmrg <tgroup cols='3' align='left' colsep='0' rowsep='0'> 354eb411b4bSmrg <colspec colname='c1' colwidth="3.0*"/> 355eb411b4bSmrg <colspec colname='c2' colwidth="1.0*"/> 356eb411b4bSmrg <colspec colname='c3' colwidth="3.0*"/> 357e9fcaa8aSmrg <thead> 358eb411b4bSmrg <row rowsep='1'> 359e9fcaa8aSmrg <entry>Name</entry> 360e9fcaa8aSmrg <entry>Type</entry> 361e9fcaa8aSmrg <entry>Description</entry> 362e9fcaa8aSmrg </row> 363e9fcaa8aSmrg </thead> 364e9fcaa8aSmrg <tbody> 365eb411b4bSmrg <row> 366e9fcaa8aSmrg <entry>XlcNCodeset</entry> 367e9fcaa8aSmrg <entry>char*</entry> 368e9fcaa8aSmrg <entry>codeset part of locale name</entry> 369e9fcaa8aSmrg </row> 370eb411b4bSmrg <row> 371e9fcaa8aSmrg <entry>XlcNDefaultString</entry> 372e9fcaa8aSmrg <entry>char*</entry> 373e9fcaa8aSmrg <entry>XDefaultString()</entry> 374e9fcaa8aSmrg </row> 375eb411b4bSmrg <row> 376e9fcaa8aSmrg <entry>XlcNEncodingName</entry> 377e9fcaa8aSmrg <entry>char*</entry> 378e9fcaa8aSmrg <entry>encoding name</entry> 379e9fcaa8aSmrg </row> 380eb411b4bSmrg <row> 381e9fcaa8aSmrg <entry>XlcNLanguage</entry> 382e9fcaa8aSmrg <entry>char*</entry> 383e9fcaa8aSmrg <entry>language part of locale name</entry> 384e9fcaa8aSmrg </row> 385eb411b4bSmrg <row> 386e9fcaa8aSmrg <entry>XlcNMbCurMax</entry> 387e9fcaa8aSmrg <entry>int</entry> 388e9fcaa8aSmrg <entry>ANSI C MB_CUR_MAX</entry> 389e9fcaa8aSmrg </row> 390eb411b4bSmrg <row> 391e9fcaa8aSmrg <entry>XlcNStateDependentEncoding</entry> 392e9fcaa8aSmrg <entry>Bool</entry> 393e9fcaa8aSmrg <entry>is state-dependent encoding or not</entry> 394e9fcaa8aSmrg </row> 395eb411b4bSmrg <row> 396e9fcaa8aSmrg <entry>XlcNTerritory</entry> 397e9fcaa8aSmrg <entry>char*</entry> 398e9fcaa8aSmrg <entry>territory part of locale name</entry> 399e9fcaa8aSmrg </row> 400e9fcaa8aSmrg </tbody> 401e9fcaa8aSmrg </tgroup> 402e9fcaa8aSmrg</informaltable> 403e9fcaa8aSmrg 404e9fcaa8aSmrg</sect1> 405e9fcaa8aSmrg 406e9fcaa8aSmrg<sect1 id="Charset_functions"> 407e9fcaa8aSmrg<title>Charset functions</title> 408e9fcaa8aSmrg<para> 409e9fcaa8aSmrgThe XlcCharSet is an identifier which represents a subset of characters 410e9fcaa8aSmrg(character set) in the locale object. 411e9fcaa8aSmrg</para> 412e9fcaa8aSmrg 413e9fcaa8aSmrg<literallayout class="monospaced"> 414e9fcaa8aSmrgtypedef enum { 415e9fcaa8aSmrg XlcUnknown, XlcC0, XlcGL, XlcC1, XlcGR, XlcGLGR, XlcOther 416e9fcaa8aSmrg} XlcSide; 417e9fcaa8aSmrg 418e9fcaa8aSmrgtypedef struct _XlcCharSetRec *XlcCharSet; 419e9fcaa8aSmrg 420e9fcaa8aSmrgtypedef struct { 421e9fcaa8aSmrg char *name; 422e9fcaa8aSmrg XPointer value; 423e9fcaa8aSmrg} XlcArg, *XlcArgList; 424e9fcaa8aSmrg 425e9fcaa8aSmrgtypedef char* (*XlcGetCSValuesProc)(<emphasis remap='I'>charset</emphasis>, <emphasis remap='I'>args</emphasis>, <emphasis remap='I'>num_args</emphasis>); 426e9fcaa8aSmrg XlcCharSet <emphasis remap='I'>charset</emphasis>; 427e9fcaa8aSmrg XlcArgList <emphasis remap='I'>args</emphasis>; 428e9fcaa8aSmrg int <emphasis remap='I'>num_args</emphasis>; 429e9fcaa8aSmrg 430e9fcaa8aSmrgtypedef struct _XlcCharSetRec { 431e9fcaa8aSmrg char *name; 432e9fcaa8aSmrg XrmQuark xrm_name; 433e9fcaa8aSmrg char *encoding_name; 434e9fcaa8aSmrg XrmQuark xrm_encoding_name; 435e9fcaa8aSmrg XlcSide side; 436e9fcaa8aSmrg int char_size; 437e9fcaa8aSmrg int set_size; 438e9fcaa8aSmrg char *ct_sequence; 439e9fcaa8aSmrg XlcGetCSValuesProc get_values; 440e9fcaa8aSmrg} XlcCharSetRec; 441e9fcaa8aSmrg</literallayout> 442e9fcaa8aSmrg 443e9fcaa8aSmrg<para> 444e9fcaa8aSmrg<emphasis role="bold">Get an XlcCharSet</emphasis> 445e9fcaa8aSmrg</para> 446e9fcaa8aSmrg 447eb411b4bSmrg<funcsynopsis id='_XlcGetCharSet'> 448e9fcaa8aSmrg<funcprototype> 449e9fcaa8aSmrg <funcdef>XlcCharSet <function> _XlcGetCharSet</function></funcdef> 450e9fcaa8aSmrg <paramdef>char<parameter> *name</parameter></paramdef> 451e9fcaa8aSmrg</funcprototype> 452e9fcaa8aSmrg</funcsynopsis> 453e9fcaa8aSmrg 454e9fcaa8aSmrg<para> 455e9fcaa8aSmrgThe 456eb411b4bSmrg<xref linkend='_XlcGetCharSet' xrefstyle='select: title'/> 457e9fcaa8aSmrgfunction gets an XlcCharSet which corresponds to the charset name 458e9fcaa8aSmrgspecified by "<emphasis remap='I'>name</emphasis>". 459eb411b4bSmrg<xref linkend='_XlcGetCharSet' xrefstyle='select: title'/> 460e9fcaa8aSmrgreturns NULL, if no XlcCharSet bound to specified "<emphasis remap='I'>name</emphasis>". 461e9fcaa8aSmrg</para> 462e9fcaa8aSmrg 463e9fcaa8aSmrg<para> 464e9fcaa8aSmrgThe following character sets are pre-registered. 465e9fcaa8aSmrg</para> 466e9fcaa8aSmrg 467eb411b4bSmrg<informaltable frame="topbot"> 468eb411b4bSmrg <?dbfo keep-together="auto" ?> 469eb411b4bSmrg <tgroup cols='2' align='left' colsep='0' rowsep='0'> 470eb411b4bSmrg <colspec colname='c1' colwidth="1.0*"/> 471eb411b4bSmrg <colspec colname='c2' colwidth="2.0*"/> 472e9fcaa8aSmrg <thead> 473eb411b4bSmrg <row rowsep='1'> 474e9fcaa8aSmrg <entry>Name</entry> 475e9fcaa8aSmrg <entry>Description</entry> 476e9fcaa8aSmrg </row> 477e9fcaa8aSmrg </thead> 478e9fcaa8aSmrg <tbody> 479eb411b4bSmrg <row> 480e9fcaa8aSmrg <entry>ISO8859-1:GL</entry> 481e9fcaa8aSmrg <entry>7-bit ASCII graphics (ANSI X3.4-1968),</entry> 482e9fcaa8aSmrg </row> 483eb411b4bSmrg <row> 484e9fcaa8aSmrg <entry></entry> 485e9fcaa8aSmrg <entry>Left half of ISO 8859 sets</entry> 486e9fcaa8aSmrg </row> 487eb411b4bSmrg <row> 488e9fcaa8aSmrg <entry>JISX0201.1976-0:GL</entry> 489e9fcaa8aSmrg <entry>Left half of JIS X0201-1976 (reaffirmed 1984),</entry> 490e9fcaa8aSmrg </row> 491eb411b4bSmrg <row> 492e9fcaa8aSmrg <entry></entry> 493e9fcaa8aSmrg <entry>8-Bit Alphanumeric-Katakana Code</entry> 494e9fcaa8aSmrg </row> 495eb411b4bSmrg <row> 496e9fcaa8aSmrg <entry>ISO8859-1:GR</entry> 497e9fcaa8aSmrg <entry>Right half of ISO 8859-1, Latin alphabet No. 1</entry> 498e9fcaa8aSmrg </row> 499eb411b4bSmrg <row> 500e9fcaa8aSmrg <entry>ISO8859-2:GR</entry> 501e9fcaa8aSmrg <entry>Right half of ISO 8859-2, Latin alphabet No. 2</entry> 502e9fcaa8aSmrg </row> 503eb411b4bSmrg <row> 504e9fcaa8aSmrg <entry>ISO8859-3:GR</entry> 505e9fcaa8aSmrg <entry>Right half of ISO 8859-3, Latin alphabet No. 3</entry> 506e9fcaa8aSmrg </row> 507eb411b4bSmrg <row> 508e9fcaa8aSmrg <entry>ISO8859-4:GR</entry> 509e9fcaa8aSmrg <entry>Right half of ISO 8859-4, Latin alphabet No. 4</entry> 510e9fcaa8aSmrg </row> 511eb411b4bSmrg <row> 512e9fcaa8aSmrg <entry>ISO8859-7:GR</entry> 513e9fcaa8aSmrg <entry>Right half of ISO 8859-7, Latin/Greek alphabet</entry> 514e9fcaa8aSmrg </row> 515eb411b4bSmrg <row> 516e9fcaa8aSmrg <entry>ISO8859-6:GR</entry> 517e9fcaa8aSmrg <entry>Right half of ISO 8859-6, Latin/Arabic alphabet</entry> 518e9fcaa8aSmrg </row> 519eb411b4bSmrg <row> 520e9fcaa8aSmrg <entry>ISO8859-8:GR</entry> 521e9fcaa8aSmrg <entry>Right half of ISO 8859-8, Latin/Hebrew alphabet</entry> 522e9fcaa8aSmrg </row> 523eb411b4bSmrg <row> 524e9fcaa8aSmrg <entry>ISO8859-5:GR</entry> 525e9fcaa8aSmrg <entry>Right half of ISO 8859-5, Latin/Cyrillic alphabet</entry> 526e9fcaa8aSmrg </row> 527eb411b4bSmrg <row> 528e9fcaa8aSmrg <entry>ISO8859-9:GR</entry> 529e9fcaa8aSmrg <entry>Right half of ISO 8859-9, Latin alphabet No. 5</entry> 530e9fcaa8aSmrg </row> 531eb411b4bSmrg <row> 532e9fcaa8aSmrg <entry>JISX0201.1976-0:GR</entry> 533e9fcaa8aSmrg <entry>Right half of JIS X0201-1976 (reaffirmed 1984),</entry> 534e9fcaa8aSmrg </row> 535eb411b4bSmrg <row> 536e9fcaa8aSmrg <entry></entry> 537e9fcaa8aSmrg <entry>8-Bit Alphanumeric-Katakana Code</entry> 538e9fcaa8aSmrg </row> 539eb411b4bSmrg <row> 540e9fcaa8aSmrg <entry>GB2312.1980-0:GL</entry> 541e9fcaa8aSmrg <entry>GB2312-1980, China (PRC) Hanzi defined as GL</entry> 542e9fcaa8aSmrg </row> 543eb411b4bSmrg <row> 544e9fcaa8aSmrg <entry>GB2312.1980-0:GR</entry> 545e9fcaa8aSmrg <entry>GB2312-1980, China (PRC) Hanzi defined as GR</entry> 546e9fcaa8aSmrg </row> 547eb411b4bSmrg <row> 548e9fcaa8aSmrg <entry>JISX0208.1983-0:GL</entry> 549e9fcaa8aSmrg <entry>JIS X0208-1983, Japanese Graphic Character Set</entry> 550e9fcaa8aSmrg </row> 551eb411b4bSmrg <row> 552e9fcaa8aSmrg <entry></entry> 553e9fcaa8aSmrg <entry>defined as GL</entry> 554e9fcaa8aSmrg </row> 555eb411b4bSmrg <row> 556e9fcaa8aSmrg <entry>JISX0208.1983-0:GR</entry> 557e9fcaa8aSmrg <entry>JIS X0208-1983, Japanese Graphic Character Set</entry> 558e9fcaa8aSmrg </row> 559eb411b4bSmrg <row> 560e9fcaa8aSmrg <entry></entry> 561e9fcaa8aSmrg <entry>defined as GR</entry> 562e9fcaa8aSmrg </row> 563eb411b4bSmrg <row> 564e9fcaa8aSmrg <entry>KSC5601.1987-0:GL</entry> 565e9fcaa8aSmrg <entry>KS C5601-1987, Korean Graphic Character Set</entry> 566e9fcaa8aSmrg </row> 567eb411b4bSmrg <row> 568e9fcaa8aSmrg <entry></entry> 569e9fcaa8aSmrg <entry>defined as GL</entry> 570e9fcaa8aSmrg </row> 571eb411b4bSmrg <row> 572e9fcaa8aSmrg <entry>KSC5601.1987-0:GR</entry> 573e9fcaa8aSmrg <entry>KS C5601-1987, Korean Graphic Character Set</entry> 574e9fcaa8aSmrg </row> 575eb411b4bSmrg <row> 576e9fcaa8aSmrg <entry></entry> 577e9fcaa8aSmrg <entry>defined as GR</entry> 578e9fcaa8aSmrg </row> 579eb411b4bSmrg <row> 580e9fcaa8aSmrg <entry>JISX0212.1990-0:GL</entry> 581e9fcaa8aSmrg <entry>JIS X0212-1990, Japanese Graphic Character Set</entry> 582e9fcaa8aSmrg </row> 583eb411b4bSmrg <row> 584e9fcaa8aSmrg <entry></entry> 585e9fcaa8aSmrg <entry>defined as GL</entry> 586e9fcaa8aSmrg </row> 587eb411b4bSmrg <row> 588e9fcaa8aSmrg <entry>JISX0212.1990-0:GR</entry> 589e9fcaa8aSmrg <entry>JIS X0212-1990, Japanese Graphic Character Set</entry> 590e9fcaa8aSmrg </row> 591eb411b4bSmrg <row> 592e9fcaa8aSmrg <entry></entry> 593e9fcaa8aSmrg <entry>defined as GR</entry> 594e9fcaa8aSmrg </row> 595e9fcaa8aSmrg </tbody> 596e9fcaa8aSmrg </tgroup> 597e9fcaa8aSmrg</informaltable> 598e9fcaa8aSmrg 599e9fcaa8aSmrg<para> 600e9fcaa8aSmrg<emphasis role="bold">Add an XlcCharSet</emphasis> 601e9fcaa8aSmrg</para> 602e9fcaa8aSmrg 603eb411b4bSmrg<funcsynopsis id='_XlcAddCharSet'> 604e9fcaa8aSmrg<funcprototype> 605e9fcaa8aSmrg <funcdef>Bool <function> _XlcAddCharSet</function></funcdef> 606e9fcaa8aSmrg <paramdef>XlcCharSet<parameter> charset</parameter></paramdef> 607e9fcaa8aSmrg</funcprototype> 608e9fcaa8aSmrg</funcsynopsis> 609e9fcaa8aSmrg 610e9fcaa8aSmrg<para> 611e9fcaa8aSmrgThe 612eb411b4bSmrg<xref linkend='_XlcAddCharSet' xrefstyle='select: title'/> 613e9fcaa8aSmrgfunction registers XlcCharSet specified by "<emphasis remap='I'>charset</emphasis>". 614e9fcaa8aSmrg</para> 615e9fcaa8aSmrg 616e9fcaa8aSmrg<para> 617e9fcaa8aSmrg<!-- .LP --> 618e9fcaa8aSmrg<!-- .sp --> 619e9fcaa8aSmrg<function>Obtain Character Set values</function> 620e9fcaa8aSmrg</para> 621e9fcaa8aSmrg 622eb411b4bSmrg<funcsynopsis id='_XlcGetCSValues'> 623e9fcaa8aSmrg<funcprototype> 624e9fcaa8aSmrg <funcdef>char * <function> _XlcGetCSValues</function></funcdef> 625e9fcaa8aSmrg <paramdef>XlcCharSet<parameter> charset</parameter></paramdef> 626e9fcaa8aSmrg <paramdef><parameter> ...</parameter></paramdef> 627e9fcaa8aSmrg</funcprototype> 628e9fcaa8aSmrg</funcsynopsis> 629e9fcaa8aSmrg 630e9fcaa8aSmrg<para> 631e9fcaa8aSmrgThe 632eb411b4bSmrg<xref linkend='_XlcGetCSValues' xrefstyle='select: title'/> 633e9fcaa8aSmrgfunction returns NULL if no error occurred; 634e9fcaa8aSmrgotherwise, it returns the name of the first argument that could not 635e9fcaa8aSmrgbe obtained. The following values are defined as standard arguments. 636e9fcaa8aSmrgOther values are implementation dependent. 637e9fcaa8aSmrg</para> 638e9fcaa8aSmrg 639eb411b4bSmrg<informaltable frame="topbot"> 640eb411b4bSmrg <?dbfo keep-together="always" ?> 641eb411b4bSmrg <tgroup cols='3' align='left' colsep='0' rowsep='0'> 642eb411b4bSmrg <colspec colname='c1' colwidth="2.0*"/> 643eb411b4bSmrg <colspec colname='c2' colwidth="1.0*"/> 644eb411b4bSmrg <colspec colname='c3' colwidth="3.0*"/> 645e9fcaa8aSmrg <thead> 646eb411b4bSmrg <row rowsep='1'> 647e9fcaa8aSmrg <entry>Name</entry> 648e9fcaa8aSmrg <entry>Type</entry> 649e9fcaa8aSmrg <entry>Description</entry> 650e9fcaa8aSmrg </row> 651e9fcaa8aSmrg </thead> 652e9fcaa8aSmrg <tbody> 653eb411b4bSmrg <row> 654e9fcaa8aSmrg <entry>XlcNName</entry> 655e9fcaa8aSmrg <entry>char*</entry> 656e9fcaa8aSmrg <entry>charset name</entry> 657e9fcaa8aSmrg </row> 658eb411b4bSmrg <row> 659e9fcaa8aSmrg <entry>XlcNEncodingName</entry> 660e9fcaa8aSmrg <entry>char*</entry> 661e9fcaa8aSmrg <entry>XLFD CharSet Registry and Encoding</entry> 662e9fcaa8aSmrg </row> 663eb411b4bSmrg <row> 664e9fcaa8aSmrg <entry>XlcNSide</entry> 665e9fcaa8aSmrg <entry>XlcSide</entry> 666e9fcaa8aSmrg <entry>charset side (GL, GR, ...)</entry> 667e9fcaa8aSmrg </row> 668eb411b4bSmrg <row> 669e9fcaa8aSmrg <entry>XlcNCharSize</entry> 670e9fcaa8aSmrg <entry>int</entry> 671e9fcaa8aSmrg <entry>number of octets per character</entry> 672e9fcaa8aSmrg </row> 673eb411b4bSmrg <row> 674e9fcaa8aSmrg <entry>XlcNSetSize</entry> 675e9fcaa8aSmrg <entry>int</entry> 676e9fcaa8aSmrg <entry>number of character sets</entry> 677e9fcaa8aSmrg </row> 678eb411b4bSmrg <row> 679e9fcaa8aSmrg <entry>XlcNControlSequence</entry> 680e9fcaa8aSmrg <entry>char*</entry> 681e9fcaa8aSmrg <entry>control sequence of Compound Text</entry> 682e9fcaa8aSmrg </row> 683e9fcaa8aSmrg </tbody> 684e9fcaa8aSmrg </tgroup> 685e9fcaa8aSmrg</informaltable> 686e9fcaa8aSmrg 687e9fcaa8aSmrg</sect1> 688e9fcaa8aSmrg 689e9fcaa8aSmrg<sect1 id="Converter_Functions"> 690e9fcaa8aSmrg<title>Converter Functions</title> 691e9fcaa8aSmrg<para> 692e9fcaa8aSmrgWe provide a set of the common converter APIs, that are independent 693e9fcaa8aSmrgfrom both of source and destination text type. 694e9fcaa8aSmrg</para> 695e9fcaa8aSmrg 696e9fcaa8aSmrg<literallayout class="monospaced"> 697e9fcaa8aSmrgtypedef struct _XlcConvRec *XlcConv; 698e9fcaa8aSmrg 699e9fcaa8aSmrgtypedef void (*XlcCloseConverterProc)(<emphasis remap='I'>conv</emphasis>); 700e9fcaa8aSmrg XlcConv <emphasis remap='I'>conv</emphasis>; 701e9fcaa8aSmrg 702e9fcaa8aSmrgtypedef int (*XlcConvertProc)(<emphasis remap='I'>conv</emphasis>, <emphasis remap='I'>from</emphasis>, <emphasis remap='I'>from_left</emphasis>, <emphasis remap='I'>to</emphasis>, <emphasis remap='I'>to_left</emphasis>, <emphasis remap='I'>args</emphasis>, <emphasis remap='I'>num_args</emphasis>); 703e9fcaa8aSmrg XlcConv <emphasis remap='I'>conv</emphasis>; 704e9fcaa8aSmrg XPointer <emphasis remap='I'>*from</emphasis>; 705e9fcaa8aSmrg int <emphasis remap='I'>*from_left</emphasis>; 706e9fcaa8aSmrg XPointer <emphasis remap='I'>*to</emphasis>; 707e9fcaa8aSmrg int <emphasis remap='I'>*to_left</emphasis>; 708e9fcaa8aSmrg XPointer <emphasis remap='I'>*args</emphasis>; 709e9fcaa8aSmrg int <emphasis remap='I'>num_args</emphasis>; 710e9fcaa8aSmrg 711e9fcaa8aSmrgtypedef void (*XlcResetConverterProc)(<emphasis remap='I'>conv</emphasis>); 712e9fcaa8aSmrg XlcConv <emphasis remap='I'>conv</emphasis>; 713e9fcaa8aSmrg 714e9fcaa8aSmrgtypedef struct _XlcConvMethodsRec { 715e9fcaa8aSmrg XlcCloseConverterProc close; 716e9fcaa8aSmrg XlcConvertProc convert; 717e9fcaa8aSmrg XlcResetConverterProc reset; 718e9fcaa8aSmrg} XlcConvMethodsRec, *XlcConvMethods; 719e9fcaa8aSmrg 720e9fcaa8aSmrgtypedef struct _XlcConvRec { 721e9fcaa8aSmrg XlcConvMethods methods; 722e9fcaa8aSmrg XPointer state; 723e9fcaa8aSmrg} XlcConvRec; 724e9fcaa8aSmrg</literallayout> 725e9fcaa8aSmrg 726e9fcaa8aSmrg<para> 727e9fcaa8aSmrg<function>Open a converter</function> 728e9fcaa8aSmrg</para> 729e9fcaa8aSmrg 730eb411b4bSmrg<funcsynopsis id='_XlcOpenConverter'> 731e9fcaa8aSmrg<funcprototype> 732e9fcaa8aSmrg <funcdef>XlcConv <function> _XlcOpenConverter</function></funcdef> 733e9fcaa8aSmrg <paramdef>XLCd<parameter> from_lcd</parameter></paramdef> 734e9fcaa8aSmrg <paramdef>char<parameter> *from_type</parameter></paramdef> 735e9fcaa8aSmrg <paramdef>XLCd<parameter> to_lcd</parameter></paramdef> 736e9fcaa8aSmrg <paramdef>char<parameter> *to_type</parameter></paramdef> 737e9fcaa8aSmrg</funcprototype> 738e9fcaa8aSmrg</funcsynopsis> 739e9fcaa8aSmrg 740e9fcaa8aSmrg<para> 741eb411b4bSmrg<xref linkend='_XlcOpenConverter' xrefstyle='select: title'/> 742e9fcaa8aSmrgfunction opens the converter which converts a text from specified 743e9fcaa8aSmrg"<emphasis remap='I'>from_type</emphasis>" to specified "<emphasis remap='I'>to_type</emphasis>" encoding. If the 744e9fcaa8aSmrgfunction cannot find proper converter or cannot open a corresponding 745e9fcaa8aSmrgconverter, it returns NULL. Otherwise, it returns the conversion 746e9fcaa8aSmrgdescriptor. 747e9fcaa8aSmrg</para> 748e9fcaa8aSmrg 749e9fcaa8aSmrg<para> 750e9fcaa8aSmrgThe following types are pre-defined. Other types are implementation 751e9fcaa8aSmrgdependent. 752e9fcaa8aSmrg</para> 753e9fcaa8aSmrg 754eb411b4bSmrg<informaltable frame="topbot"> 755eb411b4bSmrg <?dbfo keep-together="always" ?> 756eb411b4bSmrg <tgroup cols='4' align='left' colsep='0' rowsep='0'> 757eb411b4bSmrg <colspec colname='c1' colwidth="2.0*"/> 758eb411b4bSmrg <colspec colname='c2' colwidth="1.0*"/> 759eb411b4bSmrg <colspec colname='c3' colwidth="2.0*"/> 760eb411b4bSmrg <colspec colname='c4' colwidth="3.0*"/> 761e9fcaa8aSmrg <thead> 762eb411b4bSmrg <row rowsep='1'> 763e9fcaa8aSmrg <entry>Name</entry> 764e9fcaa8aSmrg <entry>Type</entry> 765e9fcaa8aSmrg <entry>Description</entry> 766e9fcaa8aSmrg <entry>Arguments</entry> 767e9fcaa8aSmrg </row> 768e9fcaa8aSmrg </thead> 769e9fcaa8aSmrg <tbody> 770eb411b4bSmrg <row> 771e9fcaa8aSmrg <entry>XlcNMultiByte</entry> 772e9fcaa8aSmrg <entry>char *</entry> 773e9fcaa8aSmrg <entry>multibyte</entry> 774e9fcaa8aSmrg <entry>-</entry> 775e9fcaa8aSmrg </row> 776eb411b4bSmrg <row> 777e9fcaa8aSmrg <entry>XlcNWideChar</entry> 778e9fcaa8aSmrg <entry>wchar_t *</entry> 779e9fcaa8aSmrg <entry>wide character</entry> 780e9fcaa8aSmrg <entry>-</entry> 781e9fcaa8aSmrg </row> 782eb411b4bSmrg <row> 783e9fcaa8aSmrg <entry>XlcNCompoundText</entry> 784e9fcaa8aSmrg <entry>char *</entry> 785e9fcaa8aSmrg <entry>COMPOUND_TEXT</entry> 786e9fcaa8aSmrg <entry>-</entry> 787e9fcaa8aSmrg </row> 788eb411b4bSmrg <row> 789e9fcaa8aSmrg <entry>XlcNString</entry> 790e9fcaa8aSmrg <entry>char *</entry> 791e9fcaa8aSmrg <entry>STRING</entry> 792e9fcaa8aSmrg <entry>-</entry> 793e9fcaa8aSmrg </row> 794eb411b4bSmrg <row> 795e9fcaa8aSmrg <entry>XlcNCharSet</entry> 796e9fcaa8aSmrg <entry>char *</entry> 797e9fcaa8aSmrg <entry>per charset</entry> 798e9fcaa8aSmrg <entry>XlcCharSet</entry> 799e9fcaa8aSmrg </row> 800eb411b4bSmrg <row> 801e9fcaa8aSmrg <entry>XlcNChar</entry> 802e9fcaa8aSmrg <entry>char *</entry> 803e9fcaa8aSmrg <entry>per character</entry> 804e9fcaa8aSmrg <entry>XlcCharSet</entry> 805e9fcaa8aSmrg </row> 806e9fcaa8aSmrg </tbody> 807e9fcaa8aSmrg </tgroup> 808e9fcaa8aSmrg</informaltable> 809e9fcaa8aSmrg 810e9fcaa8aSmrg<para> 811e9fcaa8aSmrg<emphasis role="bold">Close a converter</emphasis> 812e9fcaa8aSmrg</para> 813e9fcaa8aSmrg 814eb411b4bSmrg<funcsynopsis id='_XlcCloseConverter'> 815e9fcaa8aSmrg<funcprototype> 816e9fcaa8aSmrg <funcdef>void <function> _XlcCloseConverter</function></funcdef> 817e9fcaa8aSmrg <paramdef>XlcConv<parameter> conv</parameter></paramdef> 818e9fcaa8aSmrg</funcprototype> 819e9fcaa8aSmrg</funcsynopsis> 820e9fcaa8aSmrg 821e9fcaa8aSmrg<para> 822e9fcaa8aSmrgThe 823eb411b4bSmrg<xref linkend='_XlcCloseConverter' xrefstyle='select: title'/> 824e9fcaa8aSmrgfunction closes the specified converter "<emphasis remap='I'>conv</emphasis>". 825e9fcaa8aSmrg</para> 826e9fcaa8aSmrg 827e9fcaa8aSmrg<para> 828e9fcaa8aSmrg<emphasis role="bold">Code conversion</emphasis> 829e9fcaa8aSmrg</para> 830e9fcaa8aSmrg 831eb411b4bSmrg<funcsynopsis id='_XlcConvert'> 832e9fcaa8aSmrg<funcprototype> 833e9fcaa8aSmrg <funcdef>int <function> _XlcConvert</function></funcdef> 834e9fcaa8aSmrg <paramdef>XlcConv<parameter> conv</parameter></paramdef> 835e9fcaa8aSmrg <paramdef>XPointer<parameter> *from</parameter></paramdef> 836e9fcaa8aSmrg <paramdef>int<parameter> *from_left</parameter></paramdef> 837e9fcaa8aSmrg <paramdef>XPointer<parameter> *to</parameter></paramdef> 838e9fcaa8aSmrg <paramdef>int<parameter> *to_left</parameter></paramdef> 839e9fcaa8aSmrg <paramdef>XPointer<parameter> *args</parameter></paramdef> 840e9fcaa8aSmrg <paramdef>int<parameter> num_args</parameter></paramdef> 841e9fcaa8aSmrg</funcprototype> 842e9fcaa8aSmrg</funcsynopsis> 843e9fcaa8aSmrg 844e9fcaa8aSmrg<para> 845e9fcaa8aSmrgThe 846eb411b4bSmrg<xref linkend='_XlcConvert' xrefstyle='select: title'/> 847e9fcaa8aSmrgfunction converts a sequence of characters from one type, in the array 848e9fcaa8aSmrgspecified by "<emphasis remap='I'>from</emphasis>", into a sequence of corresponding characters 849e9fcaa8aSmrgin another type, in the array specified by "<emphasis remap='I'>to</emphasis>". The types are 850e9fcaa8aSmrgthose specified in the 851e9fcaa8aSmrg<function>_XlcOpenConverter() </function> 852e9fcaa8aSmrgcall that returned the conversion descriptor, "<emphasis remap='I'>conv</emphasis>". 853e9fcaa8aSmrgThe arguments "<emphasis remap='I'>from</emphasis>", "<emphasis remap='I'>from_left</emphasis>", "<emphasis remap='I'>to</emphasis>" and 854e9fcaa8aSmrg"<emphasis remap='I'>to_left</emphasis>" have the same specification of XPG4 iconv function. 855e9fcaa8aSmrg</para> 856e9fcaa8aSmrg 857e9fcaa8aSmrg<para> 858e9fcaa8aSmrgFor state-dependent encodings, the conversion descriptor "<emphasis remap='I'>conv</emphasis>" 859e9fcaa8aSmrgis placed into its initial shift state by a call for which "<emphasis remap='I'>from</emphasis>" 860e9fcaa8aSmrgis a NULL pointer, or for which "<emphasis remap='I'>from</emphasis>" points to a null pointer. 861e9fcaa8aSmrg</para> 862e9fcaa8aSmrg 863e9fcaa8aSmrg<para> 864e9fcaa8aSmrgThe following 2 converters prepared by locale returns appropriate 865e9fcaa8aSmrgcharset (XlcCharSet) in an area pointed by args[0]. 866e9fcaa8aSmrg</para> 867e9fcaa8aSmrg 868eb411b4bSmrg<informaltable frame="topbot"> 869eb411b4bSmrg <?dbfo keep-together="always" ?> 870eb411b4bSmrg <tgroup cols='3' align='left' colsep='0' rowsep='0'> 871eb411b4bSmrg <colspec colname='c1' colwidth="1.0*"/> 872eb411b4bSmrg <colspec colname='c2' colwidth="1.0*"/> 873eb411b4bSmrg <colspec colname='c3' colwidth="2.0*"/> 874e9fcaa8aSmrg <thead> 875eb411b4bSmrg <row rowsep='1'> 876e9fcaa8aSmrg <entry>From</entry> 877e9fcaa8aSmrg <entry>To</entry> 878e9fcaa8aSmrg <entry>Description</entry> 879e9fcaa8aSmrg </row> 880e9fcaa8aSmrg </thead> 881e9fcaa8aSmrg <tbody> 882eb411b4bSmrg <row> 883e9fcaa8aSmrg <entry>XlcNMultiByte</entry> 884e9fcaa8aSmrg <entry>XlcNCharSet</entry> 885e9fcaa8aSmrg <entry>Segmentation (Decomposing)</entry> 886e9fcaa8aSmrg </row> 887eb411b4bSmrg <row> 888e9fcaa8aSmrg <entry>XlcNWideChar</entry> 889e9fcaa8aSmrg <entry>XlcNCharSet</entry> 890e9fcaa8aSmrg <entry>Segmentation (Decomposing)</entry> 891e9fcaa8aSmrg </row> 892e9fcaa8aSmrg </tbody> 893e9fcaa8aSmrg </tgroup> 894e9fcaa8aSmrg</informaltable> 895e9fcaa8aSmrg 896e9fcaa8aSmrg<para> 897e9fcaa8aSmrgThe conversion, from XlcNMultiByte/XlcNWideChar to XlcNCharSet, 898e9fcaa8aSmrgextracts a segment which has same charset encoding characters. 899e9fcaa8aSmrgMore than one segment cannot be converted in a call. 900e9fcaa8aSmrg</para> 901e9fcaa8aSmrg 902e9fcaa8aSmrg<para> 903e9fcaa8aSmrg<emphasis role="bold">Reset a converter</emphasis> 904e9fcaa8aSmrg</para> 905e9fcaa8aSmrg 906eb411b4bSmrg<funcsynopsis id='_XlcResetConverter'> 907e9fcaa8aSmrg<funcprototype> 908e9fcaa8aSmrg <funcdef>void <function> _XlcResetConverter</function></funcdef> 909e9fcaa8aSmrg <paramdef>XlcConv<parameter> conv</parameter></paramdef> 910e9fcaa8aSmrg</funcprototype> 911e9fcaa8aSmrg</funcsynopsis> 912e9fcaa8aSmrg 913e9fcaa8aSmrg<para> 914e9fcaa8aSmrgThe 915eb411b4bSmrg<xref linkend='_XlcResetConverter' xrefstyle='select: title'/> 916e9fcaa8aSmrgfunction reset the specified converter "<emphasis remap='I'>conv</emphasis>". 917e9fcaa8aSmrg</para> 918e9fcaa8aSmrg 919e9fcaa8aSmrg<para> 920e9fcaa8aSmrg<emphasis role="bold">Register a converter</emphasis> 921e9fcaa8aSmrg</para> 922e9fcaa8aSmrg 923e9fcaa8aSmrg<literallayout class="monospaced"> 924e9fcaa8aSmrgtypedef XlcConv (*XlcOpenConverterProc)(<emphasis remap='I'>from_lcd</emphasis>, <emphasis remap='I'>from_type</emphasis>, <emphasis remap='I'>to_lcd</emphasis>, <emphasis remap='I'>to_type</emphasis>); 925e9fcaa8aSmrg XLCd <emphasis remap='I'>from_lcd</emphasis>; 926e9fcaa8aSmrg char <emphasis remap='I'>*from_type</emphasis>; 927e9fcaa8aSmrg XLCd <emphasis remap='I'>to_lcd</emphasis>; 928e9fcaa8aSmrg char <emphasis remap='I'>*to_type</emphasis>; 929e9fcaa8aSmrg</literallayout> 930e9fcaa8aSmrg 931eb411b4bSmrg<funcsynopsis id='_XlcSetConverter'> 932e9fcaa8aSmrg<funcprototype> 933e9fcaa8aSmrg <funcdef>Bool <function> _XlcSetConverter</function></funcdef> 934e9fcaa8aSmrg <paramdef>XLCd<parameter> from_lcd</parameter></paramdef> 935e9fcaa8aSmrg <paramdef>char<parameter> *from</parameter></paramdef> 936e9fcaa8aSmrg <paramdef>XLCd<parameter> to_lcd</parameter></paramdef> 937e9fcaa8aSmrg <paramdef>char<parameter> *to</parameter></paramdef> 938e9fcaa8aSmrg <paramdef>XlcOpenConverterProc<parameter> converter</parameter></paramdef> 939e9fcaa8aSmrg</funcprototype> 940e9fcaa8aSmrg</funcsynopsis> 941e9fcaa8aSmrg 942e9fcaa8aSmrg<para> 943e9fcaa8aSmrgThe <function>XlcSetConverter</function> function registers a converter which convert 944e9fcaa8aSmrgfrom "<emphasis remap='I'>from_type</emphasis>" to "<emphasis remap='I'>to_type</emphasis>" into the converter list 945e9fcaa8aSmrg(in the specified XLCd). 946e9fcaa8aSmrg</para> 947e9fcaa8aSmrg</sect1> 948e9fcaa8aSmrg 949e9fcaa8aSmrg<sect1 id="X_Locale_Database_functions"> 950e9fcaa8aSmrg<title>X Locale Database functions</title> 951e9fcaa8aSmrg<para> 952e9fcaa8aSmrgX Locale Database contains the subset of user's environment that 953e9fcaa8aSmrgdepends on language. The following APIs are provided for accessing 954e9fcaa8aSmrgX Locale Database and other locale relative files. 955e9fcaa8aSmrg</para> 956e9fcaa8aSmrg 957e9fcaa8aSmrg<para> 958e9fcaa8aSmrgFor more detail about X Locale Database, please refer 959e9fcaa8aSmrgX Locale Database Definition document. 960e9fcaa8aSmrg</para> 961e9fcaa8aSmrg 962e9fcaa8aSmrg<para> 963e9fcaa8aSmrg<emphasis role="bold">Get a resource from database</emphasis> 964e9fcaa8aSmrg</para> 965e9fcaa8aSmrg 966eb411b4bSmrg<funcsynopsis id='_XlcGetResource'> 967e9fcaa8aSmrg<funcprototype> 968e9fcaa8aSmrg <funcdef>void <function> _XlcGetResource</function></funcdef> 969e9fcaa8aSmrg <paramdef>XLCd<parameter> lcd</parameter></paramdef> 970e9fcaa8aSmrg <paramdef>char<parameter> *category</parameter></paramdef> 971e9fcaa8aSmrg <paramdef>char<parameter> *class</parameter></paramdef> 972e9fcaa8aSmrg <paramdef>char<parameter> ***value</parameter></paramdef> 973e9fcaa8aSmrg <paramdef>int<parameter> *count</parameter></paramdef> 974e9fcaa8aSmrg</funcprototype> 975e9fcaa8aSmrg</funcsynopsis> 976e9fcaa8aSmrg 977e9fcaa8aSmrg<para> 978e9fcaa8aSmrgThe 979eb411b4bSmrg<xref linkend='_XlcGetResource' xrefstyle='select: title'/> 980e9fcaa8aSmrgfunction obtains a locale dependent data which is associated with the 981e9fcaa8aSmrglocale of specified "<emphasis remap='I'>lcd</emphasis>". 982e9fcaa8aSmrgThe locale data is provided by system locale or by X Locale Database 983e9fcaa8aSmrgfile, and what kind of data is available is implementation dependent. 984e9fcaa8aSmrg</para> 985e9fcaa8aSmrg 986e9fcaa8aSmrg<para> 987e9fcaa8aSmrgThe specified "<emphasis remap='I'>category</emphasis>" and "<emphasis remap='I'>class</emphasis>" are used for 988e9fcaa8aSmrgfinding out the objective locale data. 989e9fcaa8aSmrg</para> 990e9fcaa8aSmrg 991e9fcaa8aSmrg<para> 992e9fcaa8aSmrgThe returned value is returned in value argument in string list form, 993e9fcaa8aSmrgand the returned count shows the number of strings in the value. 994e9fcaa8aSmrg</para> 995e9fcaa8aSmrg 996e9fcaa8aSmrg<para> 997e9fcaa8aSmrgThe returned value is owned by locale method, and should not be modified 998e9fcaa8aSmrgor freed by caller. 999e9fcaa8aSmrg</para> 1000e9fcaa8aSmrg 1001e9fcaa8aSmrg<para> 1002e9fcaa8aSmrg<emphasis role="bold">Get a locale relative file name</emphasis> 1003e9fcaa8aSmrg</para> 1004e9fcaa8aSmrg 1005eb411b4bSmrg<funcsynopsis id='_XlcFileName'> 1006e9fcaa8aSmrg<funcprototype> 1007e9fcaa8aSmrg <funcdef>char *<function>_XlcFileName</function></funcdef> 1008e9fcaa8aSmrg <paramdef>XLCd<parameter> lcd</parameter></paramdef> 1009e9fcaa8aSmrg <paramdef>char<parameter> *category</parameter></paramdef> 1010e9fcaa8aSmrg</funcprototype> 1011e9fcaa8aSmrg</funcsynopsis> 1012e9fcaa8aSmrg 1013e9fcaa8aSmrg<para> 1014e9fcaa8aSmrgThe 1015eb411b4bSmrg<xref linkend='_XlcFileName' xrefstyle='select: title'/> 1016e9fcaa8aSmrgfunctions returns a file name which is bound to the specified "<emphasis remap='I'>lcd</emphasis>" 1017e9fcaa8aSmrgand "<emphasis remap='I'>category</emphasis>", as a null-terminated string. If no file name can 1018e9fcaa8aSmrgbe found, or there is no readable file for the found file name, 1019eb411b4bSmrg<xref linkend='_XlcFileName' xrefstyle='select: title'/> 1020e9fcaa8aSmrgreturns NULL. The returned file name should be freed by caller. 1021e9fcaa8aSmrg</para> 1022e9fcaa8aSmrg 1023e9fcaa8aSmrg<para> 1024e9fcaa8aSmrgThe rule for searching a file name is implementation dependent. 1025e9fcaa8aSmrgIn current implementation, 1026eb411b4bSmrg<xref linkend='_XlcFileName' xrefstyle='select: title'/> 1027e9fcaa8aSmrguses "{category}.dir" file as mapping table, which has pairs of 1028e9fcaa8aSmrgstrings, a full locale name and a corresponding file name. 1029e9fcaa8aSmrg</para> 1030e9fcaa8aSmrg 1031e9fcaa8aSmrg</sect1> 1032e9fcaa8aSmrg 1033e9fcaa8aSmrg<sect1 id="Utility_Functions"> 1034e9fcaa8aSmrg<title>Utility Functions</title> 1035e9fcaa8aSmrg 1036e9fcaa8aSmrg<para> 1037e9fcaa8aSmrg<emphasis role="bold">Compare Latin-1 strings</emphasis> 1038e9fcaa8aSmrg</para> 1039e9fcaa8aSmrg 1040eb411b4bSmrg<funcsynopsis id='_XlcCompareISOLatin1'> 1041e9fcaa8aSmrg<funcprototype> 1042e9fcaa8aSmrg <funcdef>int <function> _XlcCompareISOLatin1</function></funcdef> 1043e9fcaa8aSmrg <paramdef>char*str1,<parameter> *str2</parameter></paramdef> 1044e9fcaa8aSmrg</funcprototype> 1045e9fcaa8aSmrg</funcsynopsis> 1046e9fcaa8aSmrg 1047eb411b4bSmrg<funcsynopsis id='_XlcNCompareISOLatin1'> 1048e9fcaa8aSmrg<funcprototype> 1049e9fcaa8aSmrg <funcdef>int <function> _XlcNCompareISOLatin1</function></funcdef> 1050e9fcaa8aSmrg <paramdef>char*str1,<parameter> *str2</parameter></paramdef> 1051e9fcaa8aSmrg <paramdef>int<parameter> len</parameter></paramdef> 1052e9fcaa8aSmrg</funcprototype> 1053e9fcaa8aSmrg</funcsynopsis> 1054e9fcaa8aSmrg 1055e9fcaa8aSmrg<para> 1056e9fcaa8aSmrgThe 1057e9fcaa8aSmrg<function>_XlcCompareIsoLatin1 </function> 1058e9fcaa8aSmrgfunction to compares two ISO-8859-1 strings. Bytes representing ASCII lower 1059e9fcaa8aSmrgcase letters are converted to upper case before making the comparison. 1060e9fcaa8aSmrgThe value returned is an integer less than, equal to, or greater than 1061e9fcaa8aSmrgzero, depending on whether "<emphasis remap='I'>str1</emphasis>" is lexicographicly less than, 1062e9fcaa8aSmrgequal to, or greater than "<emphasis remap='I'>str2</emphasis>". 1063e9fcaa8aSmrg</para> 1064e9fcaa8aSmrg 1065e9fcaa8aSmrg<para> 1066e9fcaa8aSmrgThe 1067e9fcaa8aSmrg<function>_XlcNCompareIsoLatin1</function> 1068e9fcaa8aSmrgfunction is identical to 1069e9fcaa8aSmrg<function>_XlcCompareISOLatin1,</function> 1070e9fcaa8aSmrgexcept that at most "<emphasis remap='I'>len</emphasis>" bytes are compared. 1071e9fcaa8aSmrg</para> 1072e9fcaa8aSmrg 1073e9fcaa8aSmrg<para> 1074e9fcaa8aSmrg<emphasis role="bold">Resource Utility</emphasis> 1075e9fcaa8aSmrg</para> 1076e9fcaa8aSmrg 1077eb411b4bSmrg<funcsynopsis id='XlcNumber'> 1078e9fcaa8aSmrg<funcprototype> 1079e9fcaa8aSmrg <funcdef>int <function> XlcNumber</function></funcdef> 1080e9fcaa8aSmrg <paramdef>ArrayType<parameter> array</parameter></paramdef> 1081e9fcaa8aSmrg</funcprototype> 1082e9fcaa8aSmrg</funcsynopsis> 1083e9fcaa8aSmrg 1084e9fcaa8aSmrg<para> 1085e9fcaa8aSmrgSimilar to XtNumber. 1086e9fcaa8aSmrg</para> 1087e9fcaa8aSmrg 1088eb411b4bSmrg<funcsynopsis id='_XlcCopyFromArg'> 1089e9fcaa8aSmrg<funcprototype> 1090e9fcaa8aSmrg <funcdef>void <function> _XlcCopyFromArg</function></funcdef> 1091e9fcaa8aSmrg <paramdef>char<parameter> *src</parameter></paramdef> 1092e9fcaa8aSmrg <paramdef>char<parameter> *dst</parameter></paramdef> 1093e9fcaa8aSmrg <paramdef>int<parameter> size</parameter></paramdef> 1094e9fcaa8aSmrg</funcprototype> 1095e9fcaa8aSmrg</funcsynopsis> 1096e9fcaa8aSmrg 1097eb411b4bSmrg<funcsynopsis id='_XlcCopyToArg'> 1098e9fcaa8aSmrg<funcprototype> 1099e9fcaa8aSmrg <funcdef>void <function> _XlcCopyToArg</function></funcdef> 1100e9fcaa8aSmrg <paramdef>char<parameter> *src</parameter></paramdef> 1101e9fcaa8aSmrg <paramdef>char<parameter> **dst</parameter></paramdef> 1102e9fcaa8aSmrg <paramdef>int<parameter> size</parameter></paramdef> 1103e9fcaa8aSmrg</funcprototype> 1104e9fcaa8aSmrg</funcsynopsis> 1105e9fcaa8aSmrg 1106e9fcaa8aSmrg<para> 1107e9fcaa8aSmrgSimilar to 1108e9fcaa8aSmrg<function>_XtCopyFromArg </function> 1109e9fcaa8aSmrgand 1110e9fcaa8aSmrg<function>_XtCopyToArg.</function> 1111e9fcaa8aSmrg</para> 1112e9fcaa8aSmrg 1113eb411b4bSmrg<funcsynopsis id='_XlcCountVaList'> 1114e9fcaa8aSmrg<funcprototype> 1115e9fcaa8aSmrg <funcdef>void <function> _XlcCountVaList</function></funcdef> 1116e9fcaa8aSmrg <paramdef>va_list<parameter> var</parameter></paramdef> 1117e9fcaa8aSmrg <paramdef>int<parameter> *count_ret</parameter></paramdef> 1118e9fcaa8aSmrg</funcprototype> 1119e9fcaa8aSmrg</funcsynopsis> 1120e9fcaa8aSmrg 1121e9fcaa8aSmrg<para> 1122e9fcaa8aSmrgSimilar to 1123e9fcaa8aSmrg<function>_XtCountVaList.</function> 1124e9fcaa8aSmrg</para> 1125e9fcaa8aSmrg 1126eb411b4bSmrg<funcsynopsis id='_XlcVaToArgList'> 1127e9fcaa8aSmrg<funcprototype> 1128e9fcaa8aSmrg <funcdef>void <function> _XlcVaToArgList</function></funcdef> 1129e9fcaa8aSmrg <paramdef>va_list<parameter> var</parameter></paramdef> 1130e9fcaa8aSmrg <paramdef>int<parameter> count</parameter></paramdef> 1131e9fcaa8aSmrg <paramdef>XlcArgList<parameter> *args_ret</parameter></paramdef> 1132e9fcaa8aSmrg</funcprototype> 1133e9fcaa8aSmrg</funcsynopsis> 1134e9fcaa8aSmrg 1135e9fcaa8aSmrg<para> 1136e9fcaa8aSmrgSimilar to 1137e9fcaa8aSmrg<function>_XtVaToArgList.</function> 1138e9fcaa8aSmrg</para> 1139e9fcaa8aSmrg 1140e9fcaa8aSmrg<literallayout class="monospaced"> 1141e9fcaa8aSmrgtypedef struct _XlcResource { 1142e9fcaa8aSmrg char *name; 1143e9fcaa8aSmrg XrmQuark xrm_name; 1144e9fcaa8aSmrg int size; 1145e9fcaa8aSmrg int offset; 1146e9fcaa8aSmrg unsigned long mask; 1147e9fcaa8aSmrg} XlcResource, *XlcResourceList; 1148e9fcaa8aSmrg</literallayout> 1149e9fcaa8aSmrg 1150e9fcaa8aSmrg<literallayout class="monospaced"> 1151e9fcaa8aSmrg#define XlcCreateMask (1L<<0) 1152e9fcaa8aSmrg#define XlcDefaultMask (1L<<1) 1153e9fcaa8aSmrg#define XlcGetMask (1L<<2) 1154e9fcaa8aSmrg#define XlcSetMask (1L<<3) 1155e9fcaa8aSmrg#define XlcIgnoreMask (1L<<4) 1156e9fcaa8aSmrg</literallayout> 1157e9fcaa8aSmrg 1158eb411b4bSmrg<funcsynopsis id='_XlcCompileResourceList'> 1159e9fcaa8aSmrg<funcprototype> 1160e9fcaa8aSmrg <funcdef>void <function> _XlcCompileResourceList</function></funcdef> 1161e9fcaa8aSmrg <paramdef>XlcResourceList<parameter> resources</parameter></paramdef> 1162e9fcaa8aSmrg <paramdef>int<parameter> num_resources</parameter></paramdef> 1163e9fcaa8aSmrg</funcprototype> 1164e9fcaa8aSmrg</funcsynopsis> 1165e9fcaa8aSmrg 1166e9fcaa8aSmrg<para> 1167e9fcaa8aSmrgSimilar to 1168e9fcaa8aSmrg<function>_XtCompileResourceList.</function> 1169e9fcaa8aSmrg</para> 1170e9fcaa8aSmrg 1171eb411b4bSmrg<funcsynopsis id='_XlcGetValues'> 1172e9fcaa8aSmrg<funcprototype> 1173e9fcaa8aSmrg <funcdef>char * <function> _XlcGetValues</function></funcdef> 1174e9fcaa8aSmrg <paramdef>XPointer<parameter> base</parameter></paramdef> 1175e9fcaa8aSmrg <paramdef>XlcResourceList<parameter> resources</parameter></paramdef> 1176e9fcaa8aSmrg <paramdef>int<parameter> num_resources</parameter></paramdef> 1177e9fcaa8aSmrg <paramdef>XlcArgList<parameter> args</parameter></paramdef> 1178e9fcaa8aSmrg <paramdef>int<parameter> num_args</parameter></paramdef> 1179e9fcaa8aSmrg <paramdef>unsignedlong<parameter> mask</parameter></paramdef> 1180e9fcaa8aSmrg</funcprototype> 1181e9fcaa8aSmrg</funcsynopsis> 1182e9fcaa8aSmrg 1183e9fcaa8aSmrg<para> 1184e9fcaa8aSmrgSimilar to XtGetSubvalues. 1185e9fcaa8aSmrg</para> 1186e9fcaa8aSmrg 1187eb411b4bSmrg<funcsynopsis id='_XlcSetValues'> 1188e9fcaa8aSmrg<funcprototype> 1189e9fcaa8aSmrg <funcdef>char * <function> _XlcSetValues</function></funcdef> 1190e9fcaa8aSmrg <paramdef>XPointer<parameter> base</parameter></paramdef> 1191e9fcaa8aSmrg <paramdef>XlcResourceList<parameter> resources</parameter></paramdef> 1192e9fcaa8aSmrg <paramdef>int<parameter> num_resources</parameter></paramdef> 1193e9fcaa8aSmrg <paramdef>XlcArgList<parameter> args</parameter></paramdef> 1194e9fcaa8aSmrg <paramdef>int<parameter> num_args</parameter></paramdef> 1195e9fcaa8aSmrg <paramdef>unsignedlong<parameter> mask</parameter></paramdef> 1196e9fcaa8aSmrg</funcprototype> 1197e9fcaa8aSmrg</funcsynopsis> 1198e9fcaa8aSmrg 1199e9fcaa8aSmrg<para> 1200e9fcaa8aSmrgSimilar to XtSetSubvalues. 1201e9fcaa8aSmrg</para> 1202e9fcaa8aSmrg 1203e9fcaa8aSmrg<para> 1204e9fcaa8aSmrg<emphasis role="bold">ANSI C Compatible Functions</emphasis> 1205e9fcaa8aSmrg</para> 1206e9fcaa8aSmrg 1207e9fcaa8aSmrg<para> 1208e9fcaa8aSmrgThe following are ANSI C/MSE Compatible Functions for non-ANSI C environment. 1209e9fcaa8aSmrg</para> 1210e9fcaa8aSmrg 1211eb411b4bSmrg<funcsynopsis id='_Xmblen'> 1212e9fcaa8aSmrg<funcprototype> 1213e9fcaa8aSmrg <funcdef>int <function> _Xmblen</function></funcdef> 1214e9fcaa8aSmrg <paramdef>char<parameter> *str</parameter></paramdef> 1215e9fcaa8aSmrg <paramdef>int<parameter> len</parameter></paramdef> 1216e9fcaa8aSmrg</funcprototype> 1217e9fcaa8aSmrg</funcsynopsis> 1218e9fcaa8aSmrg 1219e9fcaa8aSmrg<para> 1220e9fcaa8aSmrgThe 1221eb411b4bSmrg<xref linkend='_Xmblen' xrefstyle='select: title'/> 1222e9fcaa8aSmrgfunction returns the number of characters pointed to by "<emphasis remap='I'>str</emphasis>". 1223e9fcaa8aSmrgOnly "<emphasis remap='I'>len</emphasis>" bytes in "<emphasis remap='I'>str</emphasis>" are used in determining the 1224e9fcaa8aSmrgcharacter count returned. "<emphasis remap='I'>Str</emphasis>" may point at characters from 1225e9fcaa8aSmrgany valid codeset in the current locale. 1226e9fcaa8aSmrg</para> 1227e9fcaa8aSmrg 1228e9fcaa8aSmrg<para> 1229e9fcaa8aSmrgThe call 1230eb411b4bSmrg<xref linkend='_Xmblen' xrefstyle='select: title'/> 1231e9fcaa8aSmrgis equivalent to 1232e9fcaa8aSmrg_Xmbtowc(_Xmbtowc((<emphasis remap='I'>wchar_t*</emphasis>)NULL, <emphasis remap='I'>str</emphasis>, <emphasis remap='I'>len</emphasis>)) 1233e9fcaa8aSmrg</para> 1234e9fcaa8aSmrg 1235eb411b4bSmrg<funcsynopsis id='_Xmbtowc'> 1236e9fcaa8aSmrg<funcprototype> 1237e9fcaa8aSmrg <funcdef>int <function> _Xmbtowc</function></funcdef> 1238e9fcaa8aSmrg <paramdef>wchar_t<parameter> *wstr</parameter></paramdef> 1239e9fcaa8aSmrg <paramdef>char<parameter> *str</parameter></paramdef> 1240e9fcaa8aSmrg <paramdef>int<parameter> len</parameter></paramdef> 1241e9fcaa8aSmrg</funcprototype> 1242e9fcaa8aSmrg</funcsynopsis> 1243e9fcaa8aSmrg 1244e9fcaa8aSmrg<para> 1245e9fcaa8aSmrgThe 1246eb411b4bSmrg<xref linkend='_Xmbtowc' xrefstyle='select: title'/> 1247e9fcaa8aSmrgfunction converts the character(s) pointed to by "<emphasis remap='I'>str</emphasis>" 1248e9fcaa8aSmrgto their wide character representation(s) pointed to by "<emphasis remap='I'>wstr</emphasis>". 1249e9fcaa8aSmrg"<emphasis remap='I'>Len</emphasis>" is the number of bytes in "<emphasis remap='I'>str</emphasis>" to be converted. 1250e9fcaa8aSmrgThe return value is the number of characters converted. 1251e9fcaa8aSmrg</para> 1252e9fcaa8aSmrg 1253e9fcaa8aSmrg<para> 1254e9fcaa8aSmrgThe call 1255eb411b4bSmrg<xref linkend='_Xmbtowc' xrefstyle='select: title'/> 1256e9fcaa8aSmrgis equivalent to 1257e9fcaa8aSmrg_Xlcmbtowc((XLCd)NULL, <emphasis remap='I'>wstr</emphasis>, <emphasis remap='I'>str</emphasis>, <emphasis remap='I'>len</emphasis>) 1258e9fcaa8aSmrg</para> 1259e9fcaa8aSmrg 1260eb411b4bSmrg<funcsynopsis id='_Xlcmbtowc'> 1261e9fcaa8aSmrg<funcprototype> 1262e9fcaa8aSmrg <funcdef>int <function> _Xlcmbtowc</function></funcdef> 1263e9fcaa8aSmrg <paramdef>XLCd<parameter> lcd</parameter></paramdef> 1264e9fcaa8aSmrg <paramdef>wchar_t<parameter> *wstr</parameter></paramdef> 1265e9fcaa8aSmrg <paramdef>char<parameter> *str</parameter></paramdef> 1266e9fcaa8aSmrg <paramdef>int<parameter> len</parameter></paramdef> 1267e9fcaa8aSmrg</funcprototype> 1268e9fcaa8aSmrg</funcsynopsis> 1269e9fcaa8aSmrg 1270e9fcaa8aSmrg<para> 1271e9fcaa8aSmrgThe 1272eb411b4bSmrg<xref linkend='_Xlcmbtowc' xrefstyle='select: title'/> 1273e9fcaa8aSmrgfunction is identical to 1274e9fcaa8aSmrg<function>_Xmbtowc, </function> 1275e9fcaa8aSmrgexcept that it requires the "<emphasis remap='I'>lcd</emphasis>" argument. If "<emphasis remap='I'>lcd</emphasis>" 1276e9fcaa8aSmrgis (XLCd) NULL, 1277e9fcaa8aSmrg<function>_Xlcmbtowc, </function> 1278e9fcaa8aSmrgcalls 1279e9fcaa8aSmrg<function>_XlcCurrentLC </function> 1280e9fcaa8aSmrgto determine the current locale. 1281e9fcaa8aSmrg</para> 1282e9fcaa8aSmrg 1283eb411b4bSmrg<funcsynopsis id='_Xwctomb'> 1284e9fcaa8aSmrg<funcprototype> 1285e9fcaa8aSmrg <funcdef>int <function> _Xwctomb</function></funcdef> 1286e9fcaa8aSmrg <paramdef>char<parameter> *str</parameter></paramdef> 1287e9fcaa8aSmrg <paramdef>wchar_t<parameter> wc</parameter></paramdef> 1288e9fcaa8aSmrg</funcprototype> 1289e9fcaa8aSmrg</funcsynopsis> 1290e9fcaa8aSmrg 1291e9fcaa8aSmrg<para> 1292e9fcaa8aSmrgThe 1293eb411b4bSmrg<xref linkend='_Xwctomb' xrefstyle='select: title'/> 1294e9fcaa8aSmrgfunction converts a single wide character pointed to by "<emphasis remap='I'>wc</emphasis>" to 1295e9fcaa8aSmrgits multibyte representation pointed to by "<emphasis remap='I'>str</emphasis>". 1296e9fcaa8aSmrgOn success, the return value is 1. 1297e9fcaa8aSmrg</para> 1298e9fcaa8aSmrg 1299e9fcaa8aSmrg<para> 1300e9fcaa8aSmrgThe call 1301eb411b4bSmrg<xref linkend='_Xwctomb' xrefstyle='select: title'/> 1302e9fcaa8aSmrgis equivalent to 1303e9fcaa8aSmrg_Xlcwctomb((XLCd)NULL, <emphasis remap='I'>str</emphasis>, <emphasis remap='I'>wstr</emphasis>) 1304e9fcaa8aSmrg</para> 1305e9fcaa8aSmrg 1306eb411b4bSmrg<funcsynopsis id='_Xlcwctomb'> 1307e9fcaa8aSmrg<funcprototype> 1308e9fcaa8aSmrg <funcdef>int <function> _Xlcwctomb</function></funcdef> 1309e9fcaa8aSmrg <paramdef>XLCd<parameter> lcd</parameter></paramdef> 1310e9fcaa8aSmrg <paramdef>char<parameter> *str</parameter></paramdef> 1311e9fcaa8aSmrg <paramdef>wchar_t<parameter> wc</parameter></paramdef> 1312e9fcaa8aSmrg</funcprototype> 1313e9fcaa8aSmrg</funcsynopsis> 1314e9fcaa8aSmrg 1315e9fcaa8aSmrg<para> 1316e9fcaa8aSmrgThe 1317eb411b4bSmrg<xref linkend='_Xlcwctomb' xrefstyle='select: title'/> 1318e9fcaa8aSmrgfunction is identical to _Xwctomb, except that it requires the 1319e9fcaa8aSmrg"<emphasis remap='I'>lcd</emphasis>" argument. If "<emphasis remap='I'>lcd</emphasis>" is (XLCd) NULL, 1320e9fcaa8aSmrg<function>_Xlcwctomb, </function> 1321e9fcaa8aSmrgcalls 1322e9fcaa8aSmrg<function>_XlcCurrentLC </function> 1323e9fcaa8aSmrgto determine the current locale. 1324e9fcaa8aSmrg</para> 1325e9fcaa8aSmrg 1326eb411b4bSmrg<funcsynopsis id='_Xmbstowcs'> 1327e9fcaa8aSmrg<funcprototype> 1328e9fcaa8aSmrg <funcdef>int <function> _Xmbstowcs</function></funcdef> 1329e9fcaa8aSmrg <paramdef>wchar_t<parameter> *wstr</parameter></paramdef> 1330e9fcaa8aSmrg <paramdef>char<parameter> *str</parameter></paramdef> 1331e9fcaa8aSmrg <paramdef>int<parameter> len</parameter></paramdef> 1332e9fcaa8aSmrg</funcprototype> 1333e9fcaa8aSmrg</funcsynopsis> 1334e9fcaa8aSmrg 1335e9fcaa8aSmrg<para> 1336e9fcaa8aSmrgThe 1337eb411b4bSmrg<xref linkend='_Xmbstowcs' xrefstyle='select: title'/> 1338e9fcaa8aSmrgfunction converts the NULL-terminated string pointed to by "<emphasis remap='I'>str</emphasis>" 1339e9fcaa8aSmrgto its wide character string representation pointed to by "<emphasis remap='I'>wstr</emphasis>". 1340e9fcaa8aSmrg"<emphasis remap='I'>Len</emphasis>" is the number of characters in "<emphasis remap='I'>str</emphasis>" to be converted. 1341e9fcaa8aSmrg</para> 1342e9fcaa8aSmrg 1343e9fcaa8aSmrg<para> 1344e9fcaa8aSmrgThe call 1345eb411b4bSmrg<xref linkend='_Xmbstowcs' xrefstyle='select: title'/> 1346e9fcaa8aSmrgis equivalent to 1347e9fcaa8aSmrg_Xlcmbstowcs((XLCd)NULL, <emphasis remap='I'>wstr</emphasis>, <emphasis remap='I'>str</emphasis>, <emphasis remap='I'>len</emphasis>) 1348e9fcaa8aSmrg</para> 1349e9fcaa8aSmrg 1350eb411b4bSmrg<funcsynopsis id='_Xlcmbstowcs'> 1351e9fcaa8aSmrg<funcprototype> 1352e9fcaa8aSmrg <funcdef>int <function> _Xlcmbstowcs</function></funcdef> 1353e9fcaa8aSmrg <paramdef>XLCd<parameter> lcd</parameter></paramdef> 1354e9fcaa8aSmrg <paramdef>wchar_t<parameter> *wstr</parameter></paramdef> 1355e9fcaa8aSmrg <paramdef>char<parameter> *str</parameter></paramdef> 1356e9fcaa8aSmrg <paramdef>int<parameter> len</parameter></paramdef> 1357e9fcaa8aSmrg</funcprototype> 1358e9fcaa8aSmrg</funcsynopsis> 1359e9fcaa8aSmrg 1360e9fcaa8aSmrg<para> 1361e9fcaa8aSmrgThe 1362eb411b4bSmrg<xref linkend='_Xlcmbstowcs' xrefstyle='select: title'/> 1363e9fcaa8aSmrgfunction is identical to _Xmbstowcs, except that it requires the 1364e9fcaa8aSmrg"<emphasis remap='I'>lcd</emphasis>" argument. If "<emphasis remap='I'>lcd</emphasis>" is (XLCd) NULL, 1365e9fcaa8aSmrg<function>_Xlcmbstowcs, </function> 1366e9fcaa8aSmrgcalls 1367e9fcaa8aSmrg<function>_XlcCurrentLC</function> 1368e9fcaa8aSmrgto determine the current locale. 1369e9fcaa8aSmrg</para> 1370e9fcaa8aSmrg 1371eb411b4bSmrg<funcsynopsis id='_Xwcstombs'> 1372e9fcaa8aSmrg<funcprototype> 1373e9fcaa8aSmrg <funcdef>int <function> _Xwcstombs</function></funcdef> 1374e9fcaa8aSmrg <paramdef>char<parameter> *str</parameter></paramdef> 1375e9fcaa8aSmrg <paramdef>wchar_t<parameter> *wstr</parameter></paramdef> 1376e9fcaa8aSmrg <paramdef>int<parameter> len</parameter></paramdef> 1377e9fcaa8aSmrg</funcprototype> 1378e9fcaa8aSmrg</funcsynopsis> 1379e9fcaa8aSmrg 1380e9fcaa8aSmrg<para> 1381e9fcaa8aSmrgThe 1382eb411b4bSmrg<xref linkend='_Xwcstombs' xrefstyle='select: title'/> 1383e9fcaa8aSmrgfunction converts the (wchar_t) NULL terminated wide character string 1384e9fcaa8aSmrgpointed to by "<emphasis remap='I'>wstr</emphasis>" to the NULL terminated multibyte string 1385e9fcaa8aSmrgpointed to by "<emphasis remap='I'>str</emphasis>". 1386e9fcaa8aSmrg</para> 1387e9fcaa8aSmrg 1388e9fcaa8aSmrg<para> 1389e9fcaa8aSmrgThe call 1390eb411b4bSmrg<xref linkend='_Xwcstombs' xrefstyle='select: title'/> 1391e9fcaa8aSmrgis equivalent to 1392e9fcaa8aSmrg_Xlcwcstombs((XLCd)NULL, <emphasis remap='I'>str</emphasis>, <emphasis remap='I'>wstr</emphasis>, <emphasis remap='I'>len</emphasis>) 1393e9fcaa8aSmrg</para> 1394e9fcaa8aSmrg 1395eb411b4bSmrg<funcsynopsis id='_Xlcwcstombs'> 1396e9fcaa8aSmrg<funcprototype> 1397e9fcaa8aSmrg <funcdef>int <function> _Xlcwcstombs</function></funcdef> 1398e9fcaa8aSmrg <paramdef>XLCd<parameter> lcd</parameter></paramdef> 1399e9fcaa8aSmrg <paramdef>char<parameter> *str</parameter></paramdef> 1400e9fcaa8aSmrg <paramdef>wchar_t<parameter> *wstr</parameter></paramdef> 1401e9fcaa8aSmrg <paramdef>int<parameter> len</parameter></paramdef> 1402e9fcaa8aSmrg</funcprototype> 1403e9fcaa8aSmrg</funcsynopsis> 1404e9fcaa8aSmrg 1405e9fcaa8aSmrg<para> 1406e9fcaa8aSmrgThe 1407eb411b4bSmrg<xref linkend='_Xlcwcstombs' xrefstyle='select: title'/> 1408e9fcaa8aSmrgfunction is identical to _Xwcstombs, except that it requires the 1409e9fcaa8aSmrg"<emphasis remap='I'>lcd</emphasis>" argument. If "<emphasis remap='I'>lcd</emphasis>" is (XLCd) NULL, 1410e9fcaa8aSmrg<function>_Xlcwcstombs, </function> 1411e9fcaa8aSmrgcalls 1412e9fcaa8aSmrg<function>_XlcCurrentLC </function> 1413e9fcaa8aSmrgto determine the current locale. 1414e9fcaa8aSmrg</para> 1415e9fcaa8aSmrg 1416eb411b4bSmrg<funcsynopsis id='_Xwcslen'> 1417e9fcaa8aSmrg<funcprototype> 1418e9fcaa8aSmrg <funcdef>int <function> _Xwcslen</function></funcdef> 1419e9fcaa8aSmrg <paramdef>wchar_t<parameter> *wstr</parameter></paramdef> 1420e9fcaa8aSmrg</funcprototype> 1421e9fcaa8aSmrg</funcsynopsis> 1422e9fcaa8aSmrg 1423e9fcaa8aSmrg<para> 1424e9fcaa8aSmrgThe 1425eb411b4bSmrg<xref linkend='_Xwcslen' xrefstyle='select: title'/> 1426e9fcaa8aSmrgfunction returns the count of wide characters in the (wchar_t) NULL 1427e9fcaa8aSmrgterminated wide character string pointed to by "<emphasis remap='I'>wstr</emphasis>". 1428e9fcaa8aSmrg</para> 1429e9fcaa8aSmrg 1430eb411b4bSmrg<funcsynopsis id='_Xwcscpy'> 1431e9fcaa8aSmrg<funcprototype> 1432e9fcaa8aSmrg <funcdef>wchar_t *<function> _Xwcscpy</function></funcdef> 1433e9fcaa8aSmrg <paramdef>wchar_t<parameter> *wstr1</parameter></paramdef> 1434e9fcaa8aSmrg <paramdef>wchar_t<parameter> *wstr2</parameter></paramdef> 1435e9fcaa8aSmrg</funcprototype> 1436e9fcaa8aSmrg</funcsynopsis> 1437e9fcaa8aSmrg 1438eb411b4bSmrg<funcsynopsis id='_Xwcsncpy'> 1439e9fcaa8aSmrg<funcprototype> 1440e9fcaa8aSmrg <funcdef>wchar_t * <function> _Xwcsncpy</function></funcdef> 1441e9fcaa8aSmrg <paramdef>wchar_t<parameter> *wstr1</parameter></paramdef> 1442e9fcaa8aSmrg <paramdef>wchar_t<parameter> *wstr2</parameter></paramdef> 1443e9fcaa8aSmrg <paramdef>int<parameter> len</parameter></paramdef> 1444e9fcaa8aSmrg</funcprototype> 1445e9fcaa8aSmrg</funcsynopsis> 1446e9fcaa8aSmrg 1447e9fcaa8aSmrg<para> 1448e9fcaa8aSmrgThe 1449eb411b4bSmrg<xref linkend='_Xwcscpy' xrefstyle='select: title'/> 1450e9fcaa8aSmrgfunction copies the (wchar_t) NULL terminated wide character string 1451e9fcaa8aSmrgpointed to by "<emphasis remap='I'>wstr2</emphasis>" to the object pointed at by "<emphasis remap='I'>wstr1</emphasis>". 1452e9fcaa8aSmrg"<emphasis remap='I'>Wstr1</emphasis>" is (wchar_t) NULL terminated. The return value is a 1453e9fcaa8aSmrgpointer to "<emphasis remap='I'>wstr1</emphasis>". 1454e9fcaa8aSmrg</para> 1455e9fcaa8aSmrg 1456e9fcaa8aSmrg<para> 1457e9fcaa8aSmrgThe 1458eb411b4bSmrg<xref linkend='_Xwcsncpy' xrefstyle='select: title'/> 1459e9fcaa8aSmrgfunction is identical to 1460e9fcaa8aSmrg<function>_Xwcscpy, </function> 1461e9fcaa8aSmrgexcept that it copies "<emphasis remap='I'>len</emphasis>" wide characters from the object 1462e9fcaa8aSmrgpointed to by "<emphasis remap='I'>wstr2</emphasis>" to the object pointed to "<emphasis remap='I'>wstr1</emphasis>". 1463e9fcaa8aSmrg</para> 1464e9fcaa8aSmrg 1465eb411b4bSmrg<funcsynopsis id='_Xwcscmp'> 1466e9fcaa8aSmrg<funcprototype> 1467e9fcaa8aSmrg <funcdef>int <function> _Xwcscmp</function></funcdef> 1468e9fcaa8aSmrg <paramdef>wchar_t*wstr1,<parameter> *wstr2</parameter></paramdef> 1469e9fcaa8aSmrg</funcprototype> 1470e9fcaa8aSmrg</funcsynopsis> 1471e9fcaa8aSmrg 1472eb411b4bSmrg<funcsynopsis id='_Xwcsncmp'> 1473e9fcaa8aSmrg<funcprototype> 1474e9fcaa8aSmrg <funcdef>int <function> _Xwcsncmp</function></funcdef> 1475e9fcaa8aSmrg <paramdef>wchar_t*wstr1,<parameter> *wstr2</parameter></paramdef> 1476e9fcaa8aSmrg <paramdef>int<parameter> len</parameter></paramdef> 1477e9fcaa8aSmrg</funcprototype> 1478e9fcaa8aSmrg</funcsynopsis> 1479e9fcaa8aSmrg 1480e9fcaa8aSmrg<para> 1481e9fcaa8aSmrgThe 1482eb411b4bSmrg<xref linkend='_Xwcscmp' xrefstyle='select: title'/> 1483e9fcaa8aSmrgfunction compares two (wchar_t) NULL terminated wide character strings. 1484e9fcaa8aSmrgThe value returned is an integer less than, equal to, or greater than zero, 1485e9fcaa8aSmrgdepending on whether "<emphasis remap='I'>wstr1</emphasis>" is lexicographicly less then, equal to, 1486e9fcaa8aSmrgor greater than "<emphasis remap='I'>str2</emphasis>". 1487e9fcaa8aSmrg</para> 1488e9fcaa8aSmrg 1489e9fcaa8aSmrg<para> 1490e9fcaa8aSmrgThe 1491eb411b4bSmrg<xref linkend='_Xwcsncmp' xrefstyle='select: title'/> 1492e9fcaa8aSmrgfunction is identical to 1493e9fcaa8aSmrg<function>_XlcCompareISOLatin1, </function> 1494e9fcaa8aSmrgexcept that at most "<emphasis remap='I'>len</emphasis>" wide characters are compared. 1495e9fcaa8aSmrg</para> 1496e9fcaa8aSmrg 1497e9fcaa8aSmrg 1498e9fcaa8aSmrg<!-- .sp --> 1499e9fcaa8aSmrg<!-- .\" .LP --> 1500e9fcaa8aSmrg<!-- .\" <function>Locale Method Internal Functions</function> --> 1501e9fcaa8aSmrg<!-- .\" .LP --> 1502e9fcaa8aSmrg<!-- .\" .FD 0 --> 1503e9fcaa8aSmrg<!-- .\" XlcCharSet _XlcCreateDefaultCharSet(<emphasis remap='I'>name</emphasis>, <emphasis remap='I'>ct_sequence</emphasis>) --> 1504e9fcaa8aSmrg<!-- .\" .br --> 1505e9fcaa8aSmrg<!-- .\" char <emphasis remap='I'>*name</emphasis>; --> 1506e9fcaa8aSmrg<!-- .\" .br --> 1507e9fcaa8aSmrg<!-- .\" char <emphasis remap='I'>*ct_sequence</emphasis>; --> 1508e9fcaa8aSmrg<!-- .\" .FN --> 1509e9fcaa8aSmrg<!-- .\" .FD 0 --> 1510e9fcaa8aSmrg<!-- .\" Bool _XlcParseCharSet(<emphasis remap='I'>charset</emphasis>) --> 1511e9fcaa8aSmrg<!-- .\" .br --> 1512e9fcaa8aSmrg<!-- .\" XlcCharSet <emphasis remap='I'>charset</emphasis>; --> 1513e9fcaa8aSmrg<!-- .\" .FN --> 1514e9fcaa8aSmrg<!-- .\" .FD 0 --> 1515e9fcaa8aSmrg<!-- .\" void _XlcGetLocaleDataBase(<emphasis remap='I'>lcd</emphasis>, <emphasis remap='I'>category</emphasis>, <emphasis remap='I'>name</emphasis>, <emphasis remap='I'>value</emphasis>, <emphasis remap='I'>count</emphasis>) --> 1516e9fcaa8aSmrg<!-- .\" .br --> 1517e9fcaa8aSmrg<!-- .\" XLCd <emphasis remap='I'>lcd</emphasis>; --> 1518e9fcaa8aSmrg<!-- .\" .br --> 1519e9fcaa8aSmrg<!-- .\" char <emphasis remap='I'>*category</emphasis>; --> 1520e9fcaa8aSmrg<!-- .\" .br --> 1521e9fcaa8aSmrg<!-- .\" char <emphasis remap='I'>*name</emphasis>; --> 1522e9fcaa8aSmrg<!-- .\" .br --> 1523e9fcaa8aSmrg<!-- .\" char <emphasis remap='I'>***value</emphasis>; --> 1524e9fcaa8aSmrg<!-- .\" .br --> 1525e9fcaa8aSmrg<!-- .\" int <emphasis remap='I'>*count</emphasis>; --> 1526e9fcaa8aSmrg<!-- .\" .FN --> 1527e9fcaa8aSmrg<!-- .\" .FD 0 --> 1528e9fcaa8aSmrg<!-- .\" void _XlcDestroyLocaleDataBase(<emphasis remap='I'>lcd</emphasis>) --> 1529e9fcaa8aSmrg<!-- .\" .br --> 1530e9fcaa8aSmrg<!-- .\" XLCd <emphasis remap='I'>lcd</emphasis>; --> 1531e9fcaa8aSmrg<!-- .\" .FN --> 1532e9fcaa8aSmrg<!-- .\" .FD 0 --> 1533e9fcaa8aSmrg<!-- .\" XPointer _XlcCreateLocaleDataBase(<emphasis remap='I'>lcd</emphasis>) --> 1534e9fcaa8aSmrg<!-- .\" .br --> 1535e9fcaa8aSmrg<!-- .\" XLCd <emphasis remap='I'>lcd</emphasis>; --> 1536e9fcaa8aSmrg<!-- .\" .FN --> 1537e9fcaa8aSmrg<!-- .\" .LP --> 1538e9fcaa8aSmrg<!-- .\" .sp --> 1539e9fcaa8aSmrg<!-- .\" <function>Obtain an locale database path</function> --> 1540e9fcaa8aSmrg<!-- .\" .LP --> 1541e9fcaa8aSmrg<!-- .\" .FD 0 --> 1542e9fcaa8aSmrg<!-- .\" int _XlcResolveI18NPath(<emphasis remap='I'>dir</emphasis>) --> 1543e9fcaa8aSmrg<!-- .\" .br --> 1544e9fcaa8aSmrg<!-- .\" char <emphasis remap='I'>*dir</emphasis>; --> 1545e9fcaa8aSmrg<!-- .\" .FN --> 1546e9fcaa8aSmrg<!-- .\" .LP --> 1547e9fcaa8aSmrg<!-- .\" The --> 1548e9fcaa8aSmrg<!-- .\" .PN _XlcResolveI18NPath --> 1549e9fcaa8aSmrg<!-- .\" function returns path name list that is related to X Locale Database. --> 1550e9fcaa8aSmrg<!-- .\" The obtained path is stored into the array which is pointed by --> 1551e9fcaa8aSmrg<!-- .\" specified "<emphasis remap='I'>dir</emphasis>". The path consists of directory paths which --> 1552e9fcaa8aSmrg<!-- .\" are separated with colon. --> 1553e9fcaa8aSmrg<!-- .\" If the environment variable XLOCALEDIR is specified, the path --> 1554e9fcaa8aSmrg<!-- .\" contains its contents. --> 1555e9fcaa8aSmrg<!-- .\" .LP --> 1556e9fcaa8aSmrg<!-- .\" The default path of X Locale Database is implementation dependent. --> 1557e9fcaa8aSmrg<!-- .\" In current implementation, it's determined in build time. --> 1558e9fcaa8aSmrg<!-- .\" .LP --> 1559e9fcaa8aSmrg<!-- .\" .PN _XlcResolveI18NPath --> 1560e9fcaa8aSmrg<!-- .\" does not check overflow of the array to which the "<emphasis remap='I'>dir</emphasis>" --> 1561e9fcaa8aSmrg<!-- .\" parameter points. Caller should provide enough buffer to store this --> 1562e9fcaa8aSmrg<!-- .\" string. --> 1563e9fcaa8aSmrg<!-- .\" .LP --> 1564e9fcaa8aSmrg<!-- .\" .sp --> 1565e9fcaa8aSmrg<!-- .\" <function>Obtain a full locale name</function> --> 1566e9fcaa8aSmrg<!-- .\" .LP --> 1567e9fcaa8aSmrg<!-- .\" .FD 0 --> 1568e9fcaa8aSmrg<!-- .\" int _XlcResolveLocaleName(<emphasis remap='I'>lc_name</emphasis>, <emphasis remap='I'>full_name</emphasis>, <emphasis remap='I'>language</emphasis>, <emphasis remap='I'>territory</emphasis>, <emphasis remap='I'>codeset</emphasis>) --> 1569e9fcaa8aSmrg<!-- .\" .br --> 1570e9fcaa8aSmrg<!-- .\" char <emphasis remap='I'>*lc_name</emphasis>; --> 1571e9fcaa8aSmrg<!-- .\" .br --> 1572e9fcaa8aSmrg<!-- .\" char <emphasis remap='I'>*full_name</emphasis>; --> 1573e9fcaa8aSmrg<!-- .\" .br --> 1574e9fcaa8aSmrg<!-- .\" char <emphasis remap='I'>*language</emphasis>; --> 1575e9fcaa8aSmrg<!-- .\" .br --> 1576e9fcaa8aSmrg<!-- .\" char <emphasis remap='I'>*territory</emphasis>; --> 1577e9fcaa8aSmrg<!-- .\" .br --> 1578e9fcaa8aSmrg<!-- .\" char <emphasis remap='I'>*codeset</emphasis>; --> 1579e9fcaa8aSmrg<!-- .\" .FN --> 1580e9fcaa8aSmrg<!-- .\" .LP --> 1581e9fcaa8aSmrg<!-- .\" The --> 1582e9fcaa8aSmrg<!-- .\" .PN _XlcResolveLocaleName --> 1583e9fcaa8aSmrg<!-- .\" function returns a full locale name. --> 1584e9fcaa8aSmrg<!-- .\" The obtained full locale name is stored into the array which is --> 1585e9fcaa8aSmrg<!-- .\" pointed by specified "<emphasis remap='I'>full_name</emphasis>". --> 1586e9fcaa8aSmrg<!-- .\" The language, territory and codeset part of the full locale name --> 1587e9fcaa8aSmrg<!-- .\" are copied to the return arguments, "<emphasis remap='I'>language</emphasis>", --> 1588e9fcaa8aSmrg<!-- .\" "<emphasis remap='I'>territory</emphasis>" and "<emphasis remap='I'>codeset</emphasis>", respectively. --> 1589e9fcaa8aSmrg<!-- .\" NULL can be specified for these arguments. --> 1590e9fcaa8aSmrg<!-- .\" .LP --> 1591e9fcaa8aSmrg<!-- .\" The rule for mapping from locale name to full locale name is --> 1592e9fcaa8aSmrg<!-- .\" implementation dependent. --> 1593e9fcaa8aSmrg<!-- .\" .LP --> 1594e9fcaa8aSmrg<!-- .\" .PN _XlcResolveLocaleName --> 1595e9fcaa8aSmrg<!-- .\" does not check overflow of the array to which --> 1596e9fcaa8aSmrg<!-- .\" "<emphasis remap='I'>full_name</emphasis>", "<emphasis remap='I'>language</emphasis>", "<emphasis remap='I'>territory</emphasis>" and --> 1597e9fcaa8aSmrg<!-- .\" "<emphasis remap='I'>codeset</emphasis>" parameter point. --> 1598e9fcaa8aSmrg<!-- .\" Caller should provide enough buffer to store those string. --> 1599e9fcaa8aSmrg<!-- .\" .LP --> 1600e9fcaa8aSmrg<!-- .\" In current implementation, --> 1601e9fcaa8aSmrg<!-- .\" .PN _XlcResolveLocaleName --> 1602e9fcaa8aSmrg<!-- .\" uses locale.alias file as mapping table, which has pairs of strings, --> 1603e9fcaa8aSmrg<!-- .\" a locale name and a full locale name. --> 1604e9fcaa8aSmrg<!-- .\" .LP --> 1605e9fcaa8aSmrg<!-- .\" .FD 0 --> 1606e9fcaa8aSmrg<!-- .\" int _XlcResolveDBName(<emphasis remap='I'>lc_name</emphasis>, <emphasis remap='I'>file_name</emphasis>) --> 1607e9fcaa8aSmrg<!-- .\" .br --> 1608e9fcaa8aSmrg<!-- .\" char <emphasis remap='I'>*lc_name</emphasis>; --> 1609e9fcaa8aSmrg<!-- .\" .br --> 1610e9fcaa8aSmrg<!-- .\" char <emphasis remap='I'>*file_name</emphasis>; --> 1611e9fcaa8aSmrg<!-- .\" .FN --> 1612e9fcaa8aSmrg<!-- .\" .FD 0 --> 1613e9fcaa8aSmrg<!-- .\" XLCd _XlcCreateLC(<emphasis remap='I'>name</emphasis>, <emphasis remap='I'>methods</emphasis>) --> 1614e9fcaa8aSmrg<!-- .\" .br --> 1615e9fcaa8aSmrg<!-- .\" char <emphasis remap='I'>*name</emphasis>; --> 1616e9fcaa8aSmrg<!-- .\" .br --> 1617e9fcaa8aSmrg<!-- .\" XLCdMethods <emphasis remap='I'>methods</emphasis>; --> 1618e9fcaa8aSmrg<!-- .\" .FN --> 1619e9fcaa8aSmrg<!-- .\" .FD 0 --> 1620e9fcaa8aSmrg<!-- .\" void _XlcDestroyLC(<emphasis remap='I'>lcd</emphasis>) --> 1621e9fcaa8aSmrg<!-- .\" .br --> 1622e9fcaa8aSmrg<!-- .\" XLCd <emphasis remap='I'>lcd</emphasis>; --> 1623e9fcaa8aSmrg<!-- .\" .FN --> 1624e9fcaa8aSmrg<!-- .\" .LP --> 1625e9fcaa8aSmrg<!-- .\" --> 1626e9fcaa8aSmrg 1627e9fcaa8aSmrg</sect1> 1628e9fcaa8aSmrg</chapter> 1629e9fcaa8aSmrg</book> 1630