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