XrmGetFileDatabase(3X11)

名前
XrmGetFileDatabase, XrmPutFileDatabase, XrmGetStringDatabase, XrmLocaleOfDatabase, 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 サーバへの接続を指定。

説明
関数 は指定されたファイルをオープンし、新しいリソースデータベースを作成し、 指定されたファイルから読み込んだ仕様を使ってデータベースをロードする。 指定されたファイルは、有効なリソース行形式(15.1章参照)のエントリーの列 を持たなければならない。文法的に誤りのあるファイルを読んだ結果として得 られるデータベースは、実装依存である。 このファイルは現在のロケールで展開され、データベースは現在のロケールで 作成される。 指定されたファイルをオープンできない場合、 は NULL を返す。

関数 は、指定されたデータベースのコピーを指定されたファイルに格納する。 テキストは、有効なリソース行形式(15.1章参照)のエントリーの列としてファ イルに書かれる。 ファイルはデータベースのロケールで書かれる。 エンコーディングがホストポータブル文字エンコーディングでないリソース名 を持つエントリーや、データベースのロケールのエンコーディングでない値を 持つエントリーは、実装依存の方法で出力される。 エントリーが書かれる順序は実装依存である。 ``String'' 以外の表現タイプのエントリーは無視される。

関数 は、新しいデータベースを生成し、NULL で終わる指定された文字列で指定さ れたリソースを格納する。 は と似ているが、ファイルからの情報ではなく文字列からの情報を読む点が異な る。 文字列は、有効なリソース行形式(15.1章参照)のエントリー列を持たなくては ならない。また、この文字列は NULL で終わる。 文法的に誤りのある文字列を用いた結果のデータベースは、実装依存である。 文字列は現在のロケールで展開され、データベースは現在のロケールで生成さ れる。

データベースが NULL ならば、 はすぐに戻ってくる。

関数 は、指定したデータベースに関連づけられたロケールの名前を返す。これは NULL で終わる文字列である。 返されたロケール名文字列は Xlib が所有しており、クライアントはこれを変 更したり解放したりしてはならない。 データベースが破棄されるまで、Xlib はこの文字列を解放してはならない。 文字列は開放されるまで Xlib によって変更されることはない。

関数 は、指定したディスプレイに関連づけされたデータベースを返す。 データベースがまだセットされていない場合は、この関数は NULL を返す。

関数 は、指定したデータベース(あるいは 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 文字と改行文字以外の任意の文字>}

垂直バー(|)で区切られた要素は、どれか一つを選ぶことを示す。 中括弧({...})は、括弧で括られた要素の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つのバックスラッシュに 置き換えられる。

関連項目
XrmGetResource(3X11), XrmInitialize(3X11), XrmPutResource(3X11)
Xlib - C Language X Interface