2.8.14. __LC_COLLATE_DEF

このマクロを使用すると、ASCII 文字のソート時に使用される照合ブロックを作成できます。 rt_locale.h に保存されている定義と空テーブルの作成に使用されるマクロの定義、さらにサンプルコードについては、Example 2.17およびExample 2.18を参照して下さい。 これらのサンプルは完全なものではないため、詳細については rt_locale.h インクルードファイルを参照して下さい。

すべてのマクロで、最初の 2 つの引数はシンボルの接頭文字とロケール名です。 求められるロケールブロックは、式 &symprefix_start でアドレス指定され、そのインデクスエントリは式 &symprefix_index でアドレス指定されます。

Example 2.17. 配列に使用されるマクロ

#define __LC_COLLATE_DEF(sym,ln) \
static const int sym##_index = ~3&(3+(268+(~3&(3+sizeof(ln))))); \
static const char sym##_lname[~3 & (3 + sizeof(ln))] = ln; \
static const int sym##_pname = -4-(~3 & (3 + sizeof(ln))); \
static const int sym##_start = 4; \
static const char sym##_table[] =

Example 2.18. デフォルトテーブル生成マクロ

#define __LC_COLLATE_TRIVIAL_DEF(sym,ln) \
static const int sym##_index = ~3&(3+(12+(~3&(3+sizeof(ln))))); \
static const char sym##_lname[~3 & (3 + sizeof(ln))] = ln; \
static const int sym##_pname = -4-(~3 & (3 + sizeof(ln))); \
static const int sym##_start = 0;

使用法

_get_lc_collate()を参照して下さい。 また、コンパイラの最適化による副作用については、__LC_CTYPE_DEFを参照して下さい。

Copyright © 2007 ARM Limited. All rights reserved.ARM DUI 0349AJ
Non-Confidential