Bool XrmQGetResource(database, quark_name, quark_class, quark_type_return, value_return)
XrmDatabase database;
XrmNameList quark_name;
XrmClassList quark_class;
XrmRepresentation *quark_type_return;
XrmValue *value_return;
typedef XrmHashTable *XrmSearchList;
Bool XrmQGetSearchList(database, names, classes, list_return, list_length)
XrmDatabase database;
XrmNameList names;
XrmClassList classes;
XrmSearchList list_return;
int list_length;
Bool XrmQGetSearchResource(list, name, class, type_return, value_return)
XrmSearchList list;
XrmName name;
XrmClass class;
XrmRepresentation *type_return;
XrmValue *value_return;
データベースは XrmPutResource, XrmQPutResource, XrmMergeDatabases のいずれかのエントリーの解放または上書きだけを行う。 新しい値をデータベースに格納しないクライアントやデータベースのマージ をしないクライアントは、返されたアドレスが存在する限り、これをいつ使っ ても安全である。 XrmGetResource と XrmQGetResource のどちらもリソースが見つかった場合には True を返す。 見つからなかった場合には False が返される。
関数 XrmQGetSearchList は、名前とクラスのリストを引き数に取り、マッチが起こったと思われるデータ ベースのレベルのリストを返す。 返されるリストは最善から最悪の順で並んでおり、順位を決定するアルゴリズ ムは XrmGetResource と同じである。 list_return が検索リストを格納できる十分な大きさならば、 XrmQGetSearchList は True を返し、そうでなければ False を返す。
関数を呼び出した側が割り当てなければならない検索リストの大きさは、 データベースに格納されているリソース指定子が含むレベル数とワイルドカー ドの数によって決まる。 最悪の場合には、この大きさは %3 sup n% である。 ここで、 n は名前やクラスが含んでいる名前やクラスのコンポーネン トの数である。
XrmQGetSearchList を用い、その後に共通の名前とクラスのプレフィックスを使って複数回リソー スを検索する場合、 XrmQGetSearchList に渡す名前やクラスのリスト中では、共通のプレフィクスだけを指定すべきで ある。
関数 XrmQGetSearchResource は、指定した名前とクラスで完全に識別されているリソースに対して、指定し たデータベースのレベルを検索する。 検索は最初にマッチした時点で終了する。 XrmQGetSearchResource はリソースが見つかった場合には True を返し、 見つからなかった場合には False を返す。
リソース名の最後のコンポーネント以外の全てを含む名前とクラスのリストを 使って XrmQGetSearchList を呼び出し、続いて 最後のコンポーネントである名前とクラスを使って XrmQGetSearchResource を呼び出すと、完全に限定された名前とクラスを使って XrmGetResource と XrmQGetResource を呼び出した場合と同じデータベースのエントリーが返される。
完全な名前とクラスのコンポーネントは、左から右へ(最も高いレベルから低 いレベルへ)向かって、一度に 1 つずつ調べられる。 各レベルでは、対応するコンポーネントかマッチするそれぞれのエントリーの 結合あるいはその両方が決定され、マッチしたコンポーネントや結合は優先順 位の規則に基づいて比較される。 全ての中から 1 つのエントリーが規則によって決まるまで、次のレベルに移動 する前に、規則の各項目がそれぞれのレベルに適用される。 このルールを優先度の順に示す。