m17n ライブラリ 1.8.4
|
m17n データベースにとそれに関する API. [詳解]
型定義 | |
typedef struct 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 データベースにとそれに関する API.
アプリケーション固有のデータ用ディレクトリ.
m17n ライブラリは必要に応じて動的に m17n データベース から情報を取得する。またアプリケーションプログラムも、独自のデータを m17n データベースに追加し、それを動的に取得することができる。 アプリケーションプログラムが独自のデータを追加・取得するには、変数 mdatabase_dir にそのアプリケーション固有のディレクトリをセットし、 その中にデータを格納する。ユーザがそのデータをオーバーライトしたい ときは、環境変数 "M17NDIR" で指定されるディレクトリ(指定されていな いときは "~/.m17n.d" というディレクトリ)に別のデータを置く。
m17n データベースには複数の多様なデータが含まれており、各データは TAG0, TAG1, TAG2, TAG3(すべてシンボル)の4つのタグによって識別される。
TAG0 によって、データベース内のデータのタイプは次のように指定される。
特定のタグを持つデータベースを <TAG0, TAG1, TAG2, TAG3> という形式で表す。
アプリケーションプログラムは、まず関数 mdatabase_find() を使ってデータベースに関する情報を保持するオブジェクト(::MDatabase 型)へのポインタを得る。それに成功したら、 mdatabase_load() によって実際にデータベースをロードする。構造体 MDatabase 自身がどう実装されているかは、アプリケーションプログラムからは見えない。
アプリケーションプログラムが、そのプログラム固有のデータや m17n データベースを上書きするデータを提供する場合には、マクロ M17N_INIT() を呼ぶ前にこの変数をデータファイルを含むディレクトリ名にセットしなくてはならない。ディレクトリには "mdb.dir" ファイルをおくことができる。その"mdb.dir"ファイルには、 mdbDir(5) で説明されているフォーマットでデータ定義のリストを記述する。
デフォルトの値は NULL である。
データベースの型宣言.
MDatabase 型はデータベースオブジェクト用の構造体である。 内部構造はアプリケーションプログラムからは見えない。
MDatabase * mdatabase_find | ( | MSymbol | tag0, |
MSymbol | tag1, | ||
MSymbol | tag2, | ||
MSymbol | tag3 | ||
) |
データベース中のデータを探す.
関数 mdatabase_find() は、 m17n 言語情報ベース中で tag0 から tag3 までのタグを持つデータを探し、それへのポインタを返す。そのようなデータがなければ NULL
を返す。
MPlist * mdatabase_list | ( | MSymbol | tag0, |
MSymbol | tag1, | ||
MSymbol | tag2, | ||
MSymbol | tag3 | ||
) |
m17n データベースのデータリストを返す.
関数 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 | ||
) |
m17n データベースのデータを定義する.
関数 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番目の要素の値は逆のマップをする文字テーブルである。 この文字セットは予め定義されていなければならない。
MSymbol * mdatabase_tag | ( | MDatabase * | mdb | ) |
char* mdatabase_dir |