型定義 | |
typedef MDatabase | MDatabase |
データベースの型宣言. | |
関数 | |
MDatabase * | mdatabase_find (MSymbol tag0, MSymbol tag1, MSymbol tag2, MSymbol tag3) |
データベース中のデータを探す. | |
MPlist * | mdatabase_list (MSymbol tag0, MSymbol tag1, MSymbol tag2, MSymbol tag3) |
m17n データベースのデータリストを返す. | |
MDatabase * | mdatabase_define (MSymbol tag0, MSymbol tag1, MSymbol tag2, MSymbol tag3, void *(*loader)(MSymbol *, void *), void *extra_info) |
m17n データベースのデータを定義する. | |
void * | mdatabase_load (MDatabase *mdb) |
データベースからデータをロードする. | |
MSymbol * | mdatabase_tag (MDatabase *mdb) |
データのタグを得る. | |
変数 | |
char * | mdatabase_dir |
アプリケーション固有のデータ用ディレクトリ. |
m17n データベースには複数の多様なデータが含まれており、各データは TAG0, TAG1, TAG2, TAG3(すべてシンボル)の4つのタグによって識別される。
TAG0 によって、データベース内のデータのタイプは次のように指定される。
アプリケーションプログラムは、まず関数 mdatabase_find() を使ってデータベースに関する情報を保持するオブジェクト(MDatabase 型)へのポインタを得る。それに成功したら、 mdatabase_load() によって実際にデータベースをロードする。構造体 MDatabase 自身がどう実装されているかは、アプリケーションプログラムからは見えない。
関数 mdatabase_find() は、 m17n 言語情報ベース中で tag0 から tag3 までのタグを持つデータを探し、それへのポインタを返す。そのようなデータがなければ NULL
を返す。
関数 mdatabase_list() は m17n データベース中から tag0 からtag3 までのタグを持つデータを探し、そのリストをplist として返す。 tagn が Mnil であった場合には、任意のタグにマッチするワイルドカードとして取り扱われる。返される plist の各要素はキー として Mt を、値として MDatabase 型へのポインタを持つ。
MDatabase* mdatabase_define | ( | MSymbol | tag0, | |
MSymbol | tag1, | |||
MSymbol | tag2, | |||
MSymbol | tag3, | |||
void *(*)(MSymbol *, void *) | loader, | |||
void * | extra_info | |||
) |
関数 mdatabase_define() は tag0 から tag3 までのタグおよび付加情報 extra_info を持つデータを定義する。
loader はそのデータのロードに用いられる関数へのポインタである。この関数は mdatabase_load() から tags と extra_info という二つの引数付きで呼び出される。ここで tags は tag0 から tag3 までの配列である。
もし loader が NULL
なら、m17n ライブラリ標準のローダが使われる。この場合には extra_info はデータを含むファイル名でなくてはならない。
NULL
を返す。
void* mdatabase_load | ( | MDatabase * | mdb | ) |
関数 mdatabase_load() は mdb が指すデータをロードし、その中身を返す。返されるものはデータのタイプによって異なる。
データが plistタイプ ならば、 plist へのポインタを返す。
データが chartableタイプ ならば文字テーブルを返す。 文字テーブルのデフォルト値は、データの第2タグによって以下のように決まる。
データが charsetタイプ ならば長さ 2 の plist を返す(キーは共にMt )。 最初の要素の値はコードポイントを対応する文字コードにマップする整数の配列である。 2番目の要素の値は逆のマップをする文字テーブルである。 この文字セットは予め定義されていなければならない。
関数 mdatabase_tag() は、データ mdb のタグ(シンボル)の配列を返す。配列の長さは 4 である。
char* mdatabase_dir |
アプリケーションプログラムが、そのプログラム固有のデータや m17n データベースを上書きするデータを提供する場合には、マクロ M17N_INIT() を呼ぶ前にこの変数をデータファイルを含むディレクトリ名にセットしなくてはならない。ディレクトリには "mdb.dir" ファイルをおくことができる。その"mdb.dir"ファイルには、 mdbDir(5) で説明されているフォーマットでデータ定義のリストを記述する。
デフォルトの値は NULL である。