Main Page   Modules   Data Structures   Globals   Appendix  

文字テーブル
[コア API]

文字テーブルとそれに関する API. [詳細]

型定義

typedef MCharTable MCharTable
 文字テーブルの型宣言.

関数

MCharTablemchartable (MSymbol key, void *default_value)
 新しい文字テーブルを作る.
void * mchartable_lookup (MCharTable *table, int c)
 文字テーブル中で文字に割り当てられた値を返す.
int mchartable_set (MCharTable *table, int c, void *val)
 文字テーブル中での文字の値を設定する.
int mchartable_set_range (MCharTable *table, int from, int to, void *val)
 指定範囲の文字に値を設定する.
void mchartable_range (MCharTable *table, int *from, int *to)
 値がデフォルトと異なる文字を探す.
int mchartable_map (MCharTable *table, void *ignore, void(*func)(int, int, void *, void *), void *func_arg)
 文字テーブル中の文字に対して指定の関数を呼ぶ.

変数

MSymbol Mchar_table
 "char-table" という名前を持つシンボル.

説明

m17n ライブラリが扱う文字の空間は広大であるため、文字毎の情報を単 純な配列に格納しようとすると、その配列は巨大になりすぎ、非実用的で ある。しかし通常必要となる文字についての情報は、ある特定の範囲の文 字にのみ付いていることが多い。全文字に関して情報がある場合にも、連 続した文字コードを持つ文字は同じ情報を持つことが多い。

このような傾向を利用して文字とその付加情報を効率的に格納するために、 m17n ライブラリは 文字テーブル (chartable) と呼ぶオブジェクトを 用いる。文字テーブルは配列ではないが、アプリケーションプログラムは 文字テーブルを配列の一種として扱うことができる。ある文字についての特 定の情報は、その情報を持つ文字テーブルをその文字のコードで引くこと で得られる。

文字テーブルは管理下オブジェクトである。


型定義

typedef struct MCharTable MCharTable
 

MCharTable文字テーブル (chartable) オブジェクトの型である。 内部構造はアプリケーションプログラムからは見えない。


関数

MCharTable* mchartable MSymbol  key,
void *  default_value
 

関数 mchartable() はキーが key で要素のデフォルト値が default_value である新しい文字テーブルを作る。もし key が管理キー であれば、このテーブルの要素は(デフォルト値を含めて)管理下オブジェ クトか NULL のいずれかである。

戻り値:
処理が成功すれば mchartable() は作成された文字テーブルへのポイン タを返す。失敗した場合は NULL を返し、外部変数 merror_code にエ ラーコードを設定する。

void* mchartable_lookup MCharTable table,
int  c
 

関数 mchartable_lookup() は文字テーブル table 中で文字 c に割り 当てられた値を返す。c に対する明示的な値がなければ、table のデフォ ルト値を返す。c が妥当な文字でなければ、mchartable_lookup() は NULL を返し、外部変数 merror_code にエラーコードを設定する。

エラー:
MERROR_CHAR
参照:
mchartable_set()

int mchartable_set MCharTable table,
int  c,
void *  val
 

関数 mchartable_set() は、文字テーブル table 中の文字 c に 値 val を割り当てる。

戻り値:
処理が成功すれば、mchartable_set() は 0 を返す。そうでなければ -1 を返し、外部変数 merror_code にエラーコードを設定する。
エラー:
MERROR_CHAR
参照:
mchartable_lookup(), mchartable_set_range()

int mchartable_set_range MCharTable table,
int  from,
int  to,
void *  val
 

関数 mchartable_set_range() は、文字テーブル table 中の from か ら to まで(両端を含む)の文字に、値として val を設定する。

戻り値:
処理が成功すれば mchartable_set_range() は 0 を返す。そうでなければ -1 を返し、外部変数 merror_code にエラーコードを設定する。fromto より大きいときには、 mchartable_set_range() は何もせず、エラー も起こさない。
エラー:
MERROR_CHAR
参照:
mchartable_set()

void mchartable_range MCharTable table,
int *  from,
int *  to
 

関数 mchartable_range() は文字テーブル table 中で、table のデフォ ルト値以外の値を持つ最初と最後の文字を探し、それぞれを fromto に設定する。すべての文字がデフォルト値を値として持っていれば、 fromto を -1に設定する。

int mchartable_map MCharTable table,
void *  ignore,
void(*)(int, int, void *, void *)  func,
void *  func_arg
 

関数 mchartable_map() は、文字テーブル table 中の文字に対して関 数 func を呼ぶ。ただしtable 中でも値が ignore である文字につい ては関数呼び出しを行なわない。ignore と文字の値の比較は == で 行なうので、文字列リテラルやポインタを使う際には注意を要する。

mchartable_map() は、一文字ごとに func を呼ぶのではなく、関数呼 び出しの回数を最適化しようとする。すなわち、連続した文字が同じ値を 持っていた場合には、その文字のまとまり全体について一度の関数呼び出 ししか行なわない。

文字のまとまりの大きさにかかわらず、funcfrom, to, val, arg の4引数で呼ばれる。fromto (両端を含む)は val を値として 持つ文字の範囲を示し、argfunc_arg そのものである。

戻り値:
この関数は常に0を返す。


変数

MSymbol Mchar_table
 

シンボル Mchar_table は名前 "char-table" を持つ。


このページの先頭

Main Page   Modules   Data Structures   Globals   Appendix  

mulemark mule-aist@m17n.org