EN JA
XLOCALE(3)
XLOCALE(3) FreeBSD Library Functions Manual XLOCALE(3)

名称

xlocaleスレッドセーフな拡張されたロケールのサポート

ライブラリ

Standard C Library (libc, -lc)

書式

#include < xlocale.h>

解説

拡張されたロケールのサポートは、指定されたロケールでロケール知っている (locale-aware) 呼び出しを行なうための便利な関数群と同様に、スレッドローカルなロケールを設定のために 1 組の関数群を含んでいます。

xlocale API の中心は、 locale_t タイプです。これは、ロケールをカプセル化する不透明な (サイズおよび形がわからない) タイプです。特有のスレッドのためのロケールとして設定されるか、または様々な標準 C 関数の _l と接尾辞を付けられた変異型に直接渡された、このインスタンスをロケールとして設定することができます。 2 つの特別な locale_t が利用可能です:

  • NULL は、スレッドのための現在のロケール、またはロケールがこのスレッドに対して設定されていないなら、グローバルなロケールを参照します。
  • LC_GLOBAL_LOCALE は、グローバルなロケールを参照します。

グローバルなロケールは、 setlocale(3) 関数で設定されたロケールです。

便利関数

xlocale API は、多くの _l の接尾辞が付けられた便利な関数を含んでいます。これらは、最終の引数として、または可変個引数の関数の場合に、書式文字列の直前に追加された引数として、明示的な locale_t パラメータを取るために修正された標準 C 関数の変異型です。これらの機能のそれぞれは、NULL または LC_GLOBAL_LOCALE のいずれかを受け付けます。これらの関数では、NULL は、スレッドの現在のロケールではなく、C ロケールを参照します。スレッドの現在のロケールを使用したいなら、関数の接尾辞のないバージョンを使用します。

これらの関数は、標準の変異型のための適切なヘッダを含んだ 後に < xlocale.h> をインクルードすることによって見えるようになります。例えば、 strtol_l(3) 関数は、 strtol(3) を定義している < stdlib.h> の後に < xlocale.h> をインクルードすることによって見えるようになります。

参考のために、この形式で利用可能なロケールを知っている (locale-aware) 関数の完全なリストは、それらを公開するヘッダとともに、次に提供されています:

< wctype.h>
iswalnum_l(3), iswalpha_l(3), iswcntrl_l(3), iswctype_l(3), iswdigit_l(3), iswgraph_l(3), iswlower_l(3), iswprint_l(3), iswpunct_l(3), iswspace_l(3), iswupper_l(3), iswxdigit_l(3), towlower_l(3), towupper_l(3), wctype_l(3),
< ctype.h>
digittoint_l(3), isalnum_l(3), isalpha_l(3), isblank_l(3), iscntrl_l(3), isdigit_l(3), isgraph_l(3), ishexnumber_l(3), isideogram_l(3), islower_l(3), isnumber_l(3), isphonogram_l(3), isprint_l(3), ispunct_l(3), isrune_l(3), isspace_l(3), isspecial_l(3), isupper_l(3), isxdigit_l(3), tolower_l(3), toupper_l(3)
< inttypes.h>
strtoimax_l(3), strtoumax_l(3), wcstoimax_l(3), wcstoumax_l(3)
< langinfo.h>
nl_langinfo_l(3)
< monetary.h>
strfmon_l(3)
< stdio.h>
asprintf_l(3), fprintf_l(3), fscanf_l(3), printf_l(3), scanf_l(3), snprintf_l(3), sprintf_l(3), sscanf_l(3), vasprintf_l(3), vfprintf_l(3), vfscanf_l(3), vprintf_l(3), vscanf_l(3), vsnprintf_l(3), vsprintf_l(3), vsscanf_l(3)
< stdlib.h>
atof_l(3), atoi_l(3), atol_l(3), atoll_l(3), mblen_l(3), mbstowcs_l(3), mbtowc_l(3), strtod_l(3), strtof_l(3), strtol_l(3), strtold_l(3), strtoll_l(3), strtoq_l(3), strtoul_l(3), strtoull_l(3), strtouq_l(3), wcstombs_l(3), wctomb_l(3)
< string.h>
strcoll_l(3), strxfrm_l(3), strcasecmp_l(3), strcasestr_l(3), strncasecmp_l(3)
< time.h>
strftime_l(3) strptime_l(3)
< wchar.h>
btowc_l(3), fgetwc_l(3), fgetws_l(3), fputwc_l(3), fputws_l(3), fwprintf_l(3), fwscanf_l(3), getwc_l(3), getwchar_l(3), mbrlen_l(3), mbrtowc_l(3), mbsinit_l(3), mbsnrtowcs_l(3), mbsrtowcs_l(3), putwc_l(3), putwchar_l(3), swprintf_l(3), swscanf_l(3), ungetwc_l(3), vfwprintf_l(3), vfwscanf_l(3), vswprintf_l(3), vswscanf_l(3), vwprintf_l(3), vwscanf_l(3), wcrtomb_l(3), wcscoll_l(3), wcsftime_l(3), wcsnrtombs_l(3), wcsrtombs_l(3), wcstod_l(3), wcstof_l(3), wcstol_l(3), wcstold_l(3), wcstoll_l(3), wcstoul_l(3), wcstoull_l(3), wcswidth_l(3), wcsxfrm_l(3), wctob_l(3), wcwidth_l(3), wprintf_l(3), wscanf_l(3)
< wctype.h>
iswblank_l(3), iswhexnumber_l(3), iswideogram_l(3), iswnumber_l(3), iswphonogram_l(3), iswrune_l(3), iswspecial_l(3), nextwctype_l(3), towctrans_l(3), wctrans_l(3)
< xlocale.h>
localeconv_l(3)

規格

この関数は、 IEEE Std 1003.1-2008 (“POSIX.1”) に適合しています。

歴史

xlocale API は、Darwin 8.0 ではじめて登場しました。この実装は、FreeBSD 財団の資金提供の下で、David Chisnall によって書かれ、 FreeBSD 9.1 ではじめて登場しました。

警告

setlocale(3) 関数と他のファミリは、グローバルなロケールを参照します。しかしながら、ロケールに依存する他の関数は、それが設定されているなら、スレッドローカルなロケールを取ります。 setlocale(3) を使用してロケールを設定する表現は、ロケール依存の関数を呼び出し、次に、復元されたロケールは、現在のスレッドが uselocale(3) を使用してロケールの設定があるなら、予期された振る舞いをしないことを、これは、意味します。利用者は、この表現を避けて、 _l の接尾辞が付けられたバージョンを代わりに使用することを選ぶべきです。
September 17, 2011 FreeBSD