Main Page   Modules   Data Structures   Globals   Appendix  

データベース
[シェル API]

m17n データベースにとそれに関する API. [詳細]

型定義

typedef MDatabase MDatabase
 データベースの型宣言.

関数

MDatabasemdatabase_find (MSymbol tag0, MSymbol tag1, MSymbol tag2, MSymbol tag3)
 データベース中のデータを探す.
MPlistmdatabase_list (MSymbol tag0, MSymbol tag1, MSymbol tag2, MSymbol tag3)
 m17n データベースのデータリストを返す.
MDatabasemdatabase_define (MSymbol tag0, MSymbol tag1, MSymbol tag2, MSymbol tag3, void *(*loader)(MSymbol *, void *), void *extra_info)
 m17n データベースのデータを定義する.
void * mdatabase_load (MDatabase *mdb)
 データベースからデータをロードする.
MSymbolmdatabase_tag (MDatabase *mdb)
 データのタグを得る.

変数

char * mdatabase_dir
 アプリケーション固有のデータ用ディレクトリ.

説明

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 自身がどう実装されているかは、アプリケーションプログラムからは見えない。


型定義

typedef struct MDatabase MDatabase

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 
)

関数 mdatabase_list() は m17n データベース中から tag0 からtag3 までのタグを持つデータを探し、そのリストをplist として返す。 tagnMnil であった場合には、任意のタグにマッチするワイルドカードとして取り扱われる。返される 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() から tagsextra_info という二つの引数付きで呼び出される。ここで tagstag0 から tag3 までの配列である。

もし loaderNULL なら、m17n ライブラリ標準のローダが使われる。この場合には extra_info はデータを含むファイル名でなくてはならない。

戻り値:
処理に成功すれば mdatabase_define() は定義されたデータベースへのポインタを返す。このポインタは関数 mdatabase_load() の引数として用いることができる。そうでなければ NULL を返す。

参照:
mdatabase_load(), mdatabase_define()

void* mdatabase_load ( MDatabase mdb  ) 

関数 mdatabase_load()mdb が指すデータをロードし、その中身を返す。返されるものはデータのタイプによって異なる。

データが plistタイプ ならば、 plist へのポインタを返す。

データが chartableタイプ ならば文字テーブルを返す。 文字テーブルのデフォルト値は、データの第2タグによって以下のように決まる。

データが charsetタイプ ならば長さ 2 の plist を返す(キーは共にMt )。 最初の要素の値はコードポイントを対応する文字コードにマップする整数の配列である。 2番目の要素の値は逆のマップをする文字テーブルである。 この文字セットは予め定義されていなければならない。

参照:
mdatabase_load(), mdatabase_define()

MSymbol* mdatabase_tag ( MDatabase mdb  ) 

関数 mdatabase_tag() は、データ mdb のタグ(シンボル)の配列を返す。配列の長さは 4 である。


変数

char* mdatabase_dir

アプリケーションプログラムが、そのプログラム固有のデータや m17n データベースを上書きするデータを提供する場合には、マクロ M17N_INIT() を呼ぶ前にこの変数をデータファイルを含むディレクトリ名にセットしなくてはならない。ディレクトリには "mdb.dir" ファイルをおくことができる。その"mdb.dir"ファイルには、 mdbDir(5) で説明されているフォーマットでデータ定義のリストを記述する。

デフォルトの値は NULL である。


このページの先頭

Main Page   Modules   Data Structures   Globals   Appendix  

mulemark