Other Alias
XrmGetFileDatabase, XrmPutFileDatabase, XrmGetStringDatabase, XrmGetDatabase, XrmSetDatabase, XrmDestroyDatabase書式
XrmDatabase XrmGetFileDatabase(filename)char *filename;
void XrmPutFileDatabase(database, stored_db)
XrmDatabase database;
char *stored_db;
XrmDatabase XrmGetStringDatabase(data)
char *data;
char *XrmLocaleOfDatabase(database)
XrmDatabase database;
XrmDatabase XrmGetDatabase(display)
Display *display;
void XrmSetDatabase(display, database)
Display *display;
XrmDatabase database;
void XrmDestroyDatabase(database)
XrmDatabase database;
引き数
- filename
- リソースデータベースのファイル名を指定する。
- database
- 使用するデータベースを指定する。
- stored_db
- データベースが格納されるファイル名を指定する。
- data
- 文字列を使ってデータベースの内容を指定する。
- database
- リソースデータベースを指定する。
- display
- X サーバへの接続を指定する。
説明
関数 XrmGetFileDatabase は指定されたファイルをオープンし、新しいリソースデータベースを作成し、 指定されたファイルから読み込んだ仕様を使ってデータベースをロードする。 指定されたファイルは、有効なリソース行形式(15.1 節を参照)のエントリーの列 を持たなければならない。文法的に誤りのあるファイルを読んだ結果として得 られるデータベースは実装依存である。 このファイルは現在のロケールで展開され、データベースは現在のロケールで 作成される。 指定されたファイルをオープンできない場合、 XrmGetFileDatabase は NULL を返す。関数 XrmPutFileDatabase は、指定されたデータベースのコピーを指定されたファイルに格納する。 テキストは有効なリソース行形式(15.1 節参照)のエントリーの列として ファイルに書かれる。 ファイルはデータベースのロケールで書かれる。 エンコーディングがホストポータブル文字エンコーディングでないリソース名 を持つエントリーや、データベースのロケールのエンコーディングでない値を 持つエントリーは、実装依存の方法で出力される。 エントリーが書かれる順序は実装依存である。 ``String'' 以外の表現型のエントリーは無視される。
関数 XrmGetStringDatabase は、新しいデータベースを生成し、NULL で終わる指定された文字列で指定さ れたリソースを格納する。 XrmGetStringDatabase は XrmGetFileDatabase と似ているが、ファイルからの情報ではなく文字列からの情報を読む点が異な る。 文字列は、有効なリソース行形式(15.1 節参照)のエントリー列を持たなくては ならない。また、この文字列は NULL で終わる。 文法的に誤りのある文字列を用いた結果のデータベースは実装依存である。 文字列は現在のロケールで展開され、データベースは現在のロケールで生成さ れる。
データベースが NULL ならば、 XrmDestroyDatabase はすぐに復帰する。
関数 XrmLocaleOfDatabase は、指定したデータベースに関連づけられたロケールの名前を返す。これは NULL で終わる文字列である。 返されたロケール名文字列は Xlib が所有しているので、クライアントは変更 や解放をしてはならない。 データベースが破棄されるまで、Xlib はこの文字列を解放してはならない。 文字列は解放されるまで Xlib によって変更されることはない。
関数 XrmGetDatabase は、指定したディスプレイに関連づけされたデータベースを返す。 データベースがまだ設定されていない場合は、この関数は NULL を返す。
関数 XrmSetDatabase は、指定したデータベース(あるいは NULL)を指定したディスプレイに関連づ ける。 以前にこのディスプレイに関連づけされたデータベースは(もしあっても)破棄 されない。 クライアントやツールキットにとって、この関数は一度生成したデータベース を保持するために便利だと思われる。
ファイルの書式
リソースファイルの書式は、改行かファイル末尾で終わるリソース行の列であ る。 個別のリソースについての文法は以下の通りである:
ResourceLine = Comment | IncludeFile | ResourceSpec | <空行> Comment = "!" {<NULL 文字と改行文字以外の任意の文字>} IncludeFile = "#" WhiteSpace "include" WhiteSpace FileName WhiteSpace FileName = <OS にとって有効なファイル名> ResourceSpec = WhiteSpace ResourceName WhiteSpace ":" WhiteSpace Value ResourceName = [Binding] {Component Binding} ComponentName Binding = "." | "*" WhiteSpace = {<空白文字> | <水平タブ>} Component = "?" | ComponentName ComponentName = NameChar {NameChar} NameChar = "a"-"z" | "A"-"Z" | "0"-"9" | "_" | "-" Value = {<NULL 文字と改行文字以外の任意の文字>}
垂直バー(|)で区切られた要素は、どれか 1 つを選ぶことを示す。 中括弧({...})は、括弧で括られた要素の 0 回以上のくり返しを示す。 大括弧([...])は、括弧で括られた要素がなくてもよいことを示す。 クォート("...")は、リテラル文字の前後で用いられる。
IncludeFile 行は、指定したファイルの内容でその行を置き換えることと解釈 される。 ``include'' の語は小文字でなければならない。 ファイル名は、その行が現われたファイルのディレクトリに対して相対的に解 釈される(例えば、ファイル名がディレクトリを含まない場合や相対ディレク トリ指定を含む場合)。
ResourceName が2つ以上の Binding を連続して含む場合、このシーケンスが ``.'' しか含まないならば、このシーケンスは 1 つの``.'' 文字で置き換 えられる。 そうでない場合、このシーケンスは 1 つの ``*'' 文字に置き換えられる。
リソースデータベースは、与えられた ResourceName に対して 1 つより多くの エントリーを含むことは決してない。リソースファイルが同じ ResourceName について複数の行を含む場合、ファイル中で後に現われた方が用いられる。
ResourceSpec では、名前やコロンの後の空白文字は全て無視される。 Value を空白で始めることができるように、2 文字からなるシーケンス ``\space''(スペースの前にバックスラッシュがある)は、1 つの 空白として得認識され、``\tab''(水平タブの前にバックスラッシュ がある)は、1 つの水平タブ文字として認識される。 途中に改行文字を含む Value が使えるように、2 文字からなるシーケンス ``\n'' は 1 つの改行文字として認識される。 テキストファイル中で複数行にまたがる Value が使えるように、2 文字からな るシーケンス ``\newline'' (改行の前にバックスラッシュ)は、 Valuse から取り除かれる。 任意の文字コードが使えるように、4 文字からなるシーケンス ``\nnn'' は、シーケンスで指定された 8 進数の値を含む 1 つの バイトデータに置き換えられる。ここで、それぞれの n は範囲が ``0''-``7'' である数字である。 最後に、2 文字からなるシーケンス ``\\'' は、1 つのバックスラッシュに 置き換えられる。