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

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

型定義

typedef struct 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)
 データベースからデータをロードする.
 
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

typedef struct MDatabase MDatabase

データベースの型宣言.

MDatabase 型はデータベースオブジェクト用の構造体である。 内部構造はアプリケーションプログラムからは見えない。

関数詳解

◆ mdatabase_find()

MDatabase * mdatabase_find ( MSymbol  tag0,
MSymbol  tag1,
MSymbol  tag2,
MSymbol  tag3 
)

データベース中のデータを探す.

関数 mdatabase_find() は、 m17n 言語情報ベース中で tag0 から tag3 までのタグを持つデータを探し、それへのポインタを返す。そのようなデータがなければ NULL を返す。

◆ mdatabase_list()

MPlist * mdatabase_list ( MSymbol  tag0,
MSymbol  tag1,
MSymbol  tag2,
MSymbol  tag3 
)

m17n データベースのデータリストを返す.

関数 mdatabase_list() は m17n データベース中から tag0 からtag3 までのタグを持つデータを探し、そのリストをplist として返す。 tagnMnil であった場合には、任意のタグにマッチするワイルドカードとして取り扱われる。返される plist の各要素はキー として Mt を、値として MDatabase 型へのポインタを持つ。

◆ mdatabase_define()

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() から tagsextra_info という二つの引数付きで呼び出される。ここで tagstag0 から tag3 までの配列である。

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

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

◆ mdatabase_load()

void * mdatabase_load ( MDatabase mdb)

データベースからデータをロードする.

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

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

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

  • タグが Msymbol なら、デフォルト値は Mnil
  • タグが Minteger なら、デフォルト値は -1
  • それ以外なら、デフォルト値は NULL

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

参照:
mdatabase_load(), mdatabase_define()

◆ mdatabase_tag()

MSymbol * mdatabase_tag ( MDatabase mdb)

データのタグを得る.

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

変数詳解

◆ mdatabase_dir

char* mdatabase_dir

m17n-lib Home