m17n ライブラリ 1.8.4
読み取り中…
検索中…
一致する文字列を見つけられません
型定義 | 関数 | 変数
文字テーブル

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

型定義

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

関数

MCharTablemchartable (MSymbol key, void *default_value)
 新しい文字テーブルを作る.
 
int mchartable_min_char (MCharTable *table)
 
int mchartable_max_char (MCharTable *table)
 
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
 

詳解

文字テーブルとそれに関する API.

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

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

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

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

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

型定義詳解

◆ MCharTable

typedef struct MCharTable MCharTable

文字テーブルの型宣言.

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

関数詳解

◆ mchartable()

MCharTable * mchartable ( MSymbol  key,
void *  default_value 
)

新しい文字テーブルを作る.

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

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

◆ mchartable_min_char()

int mchartable_min_char ( MCharTable table)

◆ mchartable_max_char()

int mchartable_max_char ( MCharTable table)

◆ mchartable_lookup()

void * mchartable_lookup ( MCharTable table,
int  c 
)

文字テーブル中で文字に割り当てられた値を返す.

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

エラー:
MERROR_CHAR
参照:
mchartable_set()

◆ 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()

◆ 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()

◆ mchartable_range()

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

値がデフォルトと異なる文字を探す.

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

◆ mchartable_map()

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を返す。

変数詳解

◆ Mchar_table

MSymbol Mchar_table

m17n-lib Home