int XwcTextListToTextProperty(display, list, count, style, text_prop_return)
Display *display;
wchar_t **list;
int count;
XICCEncodingStyle style;
XTextProperty *text_prop_return;
int XmbTextPropertyToTextList(display, text_prop, list_return, count_return)
Display *display;
XTextProperty *text_prop;
char ***list_return;
int *count_return;
int XwcTextPropertyToTextList(display, text_prop, list_return, count_return)
Display *display;
XTextProperty *text_prop;
wchar_t ***list_return;
int *count_return;
void XwcFreeStringList(list)
wchar_t **list;
これらの関数は text_prop_return の encoding フィールドに、指定した ディスプレイに対する Atom を設定する。この Atom は指定したスタイルから決まるエンコーディングを示す。 これらの関数は次に、指定したテキストリストをこのエンコーディングに変換 して text_prop_return フィールドに入れる。 スタイルとして XStringStyle あるいは XCompoundTextStyle が指示された場合は、このエンコーディングはそれぞれ ``STRING'' か ``COMPOUND_TEXT'' となる。 スタイルに XTextStyle が指定された場合には、エンコーディングは現在のロケールのエンコーディン グとなる。 スタイルに XStdICCTextStyle が指示された場合、テキストが完全に STRING に変換可能であれば エンコーディングは ``STRING'' に、そうでなければ ``COMPOUND_TEXT'' に なる。
新しい文字列(XTextProperty の value フィールド)に割り当てるメモリが十 分にない場合、関数は XNoMemory を返す。 現在のロケールがサポートされていない場合、関数は XLocaleNotSupported を返す。 どちらのエラーの場合も、関数は text_prop_return に値を設定しない。
関数が XLocaleNotSupported を返さないかどうかを確実に知るためには、関数 XSupportsLocale を利用すること。
与えられたテキストの全てが指定されたエンコーディングに変換可能でない場 合、関数は変換できない文字の数を返す。 変換できない文字はそれぞれ実装定義かつエンコーディング特有のデフォルト 文字列に変換される。 上記以外の場合には、関数は Success を返す。 XStringStyle を除く全てのスタイルに対しては、テキストを完全に変換できることが保証さ れている点に注意すること。
XTextProperty 構造体の value フィールドのメモリを解放するには、 XFree を使用すること。
関数 XmbTextPropertyToTextList および XwcTextPropertyToTextList は、与えられた XTextProperty 構造体が持つ要素(NULL 文字で区切られている)を表すテキスト文字列の リストを返す。テキスト文字列は現在のロケールとなる。 text_prop 内のデータはフォーマット 8 でなければならない。
プロパティの複数の要素(例えば、ばらばらのテキストセレクション文字列)は NULL バイトで区切られる。 プロパティの内容は NULL で終わる必要はない。 終端の NULL 文字は text_prop.nitems に含まれてはならない。
リストとその要素に割り当てる十分なメモリがない場合、関数 XmbTextPropertyToTextList と XwcTextPropertyToTextList は XNoMemory を返す。 現在のロケールがサポートされていない場合、関数は XLocaleNotSupported を返す。 それ以外の場合、もし text_prop の encoding フィールドを現在のロケール のエンコーディングに変換することができなければ、関数は XConverterNotFound を返す。 サポートされているロケールに対しては、 XSupportsLocale が現在のロケールに対して True を返すならば、COMPOUND_TEXT, STRING, 現在のロケールのエンコーディング からのコンバータの存在が保証される(ただし、実際のテキストは変換不可能 な文字を含むかもしれない)。 他のエンコーディングとの変換については実装依存である。 以上のいずれのエラーの場合も関数は返り値を設定しない。
それ以外の場合には、 XmbTextPropertyToTextList および XwcTextPropertyToTextList は list_return に NULL 文字で終わるテキスト文字列のリストを返し、 count_return にテキスト文字列の数を返す。
もし、text_prop の value フィールドを現在のロケールのエンコーディング に完全には変換できない場合には、関数は変換できない文字の数を返す。 変換できないそれぞれの文字は、現在のロケールに含まれ、かつ 現在のロケールに特有の文字列に変換される。 この文字列の値を得るには XDefaultString を使用する。 それ以外の場合、 XmbTextPropertyToTextList と XwcTextPropertyToTextList は Success を返す。
XmbTextPropertyToTextList が返したリストとその内容のためのメモリを解放するには XFreeStringList を使用する。 XwcTextPropertyToTextList が返したリストとその内容のためのメモリを解放するには XwcFreeStringList を使用する。
関数 XwcFreeStringList は、 XwcTextPropertyToTextList によって割り当てられたメモリを解放する。
関数 XDefaultString は Xlib が(例えば、 XmbTextPropertyToTextList で)テキスト変換に用いるデフォルト文字列を返す。 デフォルト文字列は現在のロケールの文字列であり、テキスト変換中に変換で きない文字が現れたときに出力される。 XDefaultString が返す文字列が空文字列("")である場合、変換されたテキストには何も出力 されない。 XDefaultString は NULL を返さない。
XDefaultString が返す文字列は、テキスト描画のデフォルト文字列とは独立である。 XFontSet に対するデフォルト文字列を得たい場合は XCreateFontSet の項を参照すること。
undefined. Xlib の全ての関数は、不正な文字コードが与えられたときの動作は未定義で ある。
返される文字列は NULL 文字で終わる。 これは Xlib が所有しているので、クライアントは変更や解放をしてはならない。 これは現在のロケールが変更された後に解放される。 解放されるまでは、Xlib によって変更されることはない。
typedef struct { unsigned char *value;/* プロパティのデータ */ Atom encoding; /* プロパティのタイプ */ int format; /* 8, 16, 32 のいずれか */ unsigned long nitems;/* value 内の要素数 */ } XTextProperty;
XICCEncodingStyle 構造体の内容を示す。
#define | XNoMemory |
-1
|
#define | XLocaleNotSupported |
-2
|
#define | XConverterNotFound |
-3
|
typedef enum { XStringStyle, /* STRING */ XCompoundTextStyle, /* COMPOUND_TEXT */ XTextStyle, /* 所有者のエンコーディングの文字列 (現在のロケール) */ XStdICCTextStyle /* STRING, さもなくば COMPOUND_TEXT */ } XICCEncodingStyle;