Museum

Home

Lab Overview

Retrotechnology Articles

Online Manuals

⇒ XrmQGetResource(3X11) — NEWS-os 4.2.1R

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

XrmInitialize(3X11)

XrmMergeDatabases(3X11)

XrmPutResource(3X11)

XrmUniqueQuark(3X11)

XrmGetResource(3X11)  —  NEWS-OS Programmer’s Manual

名称

XrmGetResource, XrmQGetResource, XrmQGetSearchList, XrmQGetSearchResource − データベースリソースおよびサーチリストを検索する

形式

Bool XrmGetResource(database, str_name, str_class, str_type_return, value_return)
     XrmDatabase database;
     char ∗str_name;
     char ∗str_class;
     char ∗∗str_type_return;
     XrmValue ∗value_return; 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;

引数

classリソースクラスを指定します。

classesリソースクラスリストを指定します。

database使用するデータベースを指定します。

listXrmQGetSearchList によって返されるサーチリストを指定します。

list_lengthlist_return のため割り当てられたエントリ数 (バイトサイズではない) を指定します。

list_return後で使用するためのサーチリストを返します。

nameリソース名を指定します。

namesリソース名リストを指定します。

quark_class検索中の値の完全修飾クラスを指定します (クォークとして)。

quark_name検索中の値の完全修飾名を指定します (クォークとして)。

quark_type_return
デスティネーションの表現タイプを返します (クォークとして)。

str_class検索中の値の完全修飾クラスを指定します (文字列として)。

str_name検索中の値の完全修飾名を指定します (文字列として)。

str_type_return
デスティネーションの表現タイプを返します (文字列として)。

type_returnデータ表現タイプを返します。

value_returnデータベースの値を返します。

解説

XrmGetResource および XrmQGetResource 関数は、指定されたデータベースからリソースを検索します。 両関数は、完全修飾名 / クラスペア、デスティネーションリソース表現 および値のアドレス (サイズ / アドレスペア) をとります。 値と返されるタイプは、データベースメモリ中におかれます。 したがって、データベースを変更してはなりません。 XrmPutResource、 XrmQPutResource または XrmMergeDatabases は、データベースのエントリを解放するかまたは重ね書きするにすぎません。 新しい値をデータベースに登録したりデータベースをマージしたりしていない クライアントは、終了するまでいつでも、安全のため返された アドレスを使用しなければなりません。 リソースがあれば、 XrmGetResource と XrmQGetResource は True を返します。なければ、 False を返します。 XrmQGetSearchList 関数は、名前およびクラスリストを受け取り、 一致したデータベースレベルのリストを返します。 返されたリストは最良のものから最悪のものの順になっており、 XrmGetResource と同じアルゴリズムを使用し、優先順位を決めます。 list_return がサーチリストに十分な大きさであれば、 XrmQGetSearchList は True を返します。 十分な大きさでなければ、 False を返します。 割り当てるサーチリストのサイズは、データベースに登録されている リソース指定子のワイルドカードおよびレベル数に左右されます。 最悪のケースでは長さは3n です。 ここで n は 名前の数か、クラスまたは名前のクラスコンポーネント数です。 XrmQGetSearchList を共通の名前およびクラスプレフィックスをもつリソースの複数の 検索の次に使用する場合、 XrmQGetSearchList に対して名前およびクラスリストで共通のプレフィックスだけを 指定しなければなりません。 XrmQGetSearchResource 関数は、指定された名前とクラスで完全に識別されるリソースの、 指定されたデータベースレベルを検索します。 検索は、最初に一致した時停止します。 XrmQGetSearchResource は、リソースがあれば、 True を返します。 なければ、 False を返します。 リソース名の最後のコンポーネントの名前とクラスで XrmQGetSearchResource をコールしたあとで、リソース名の最後のコンポーネント以外のすべてを含む 名前とクラスのリストで XrmQGetSearchList をコールすると、完全修飾名とクラスで XrmGetResource および XrmQGetResource をコールした場合と同じデータベースエントリが返されます。

マッチングルール

与えられた要求と どのリソースデータベースのエントリがマッチするかを決めるアルゴリズムは、 リソースマネージャによります。 全ての要求は、希望するリソースの名前とクラスを略さずに 指定しなければいけません (“∗” および “?” は使用できません)。 ライブラリは、 各名前またはクラス (略していないもの) に、100 個までのコンポーネントを サポートしています。 リソースは、パターンマッチを使用して、 部分的に指定した名前およびクラスで、 データベースに格納されています。 アスタリスク (∗) は、バインディングがあまく、 間に、いくつかのコンポーネント (ゼロ個も含む) が来ることを表します。 ピリオド (.) は、バインディングが厳しく、 隣接のコンポーネントを分けるのに使用されます。 クエッションマーク (?) は、 任意の名前またはクラスの 1 コンポーネントとマッチされます。 データベースのエントリは、曖昧なバインディングで終了することはできず、 最後のコンポーネントを指定しなければいけません (“?” は使用できません)。 検索アルゴリズムは、 データベースの中で、 フルネームで要求された名前およびクラスと 最もよくマッチするエントリを検索します。 2 つ以上のデータベースのエントリが フルネームの名前およびクラスにマッチする場合は、 1 つのみ選択するのに、優先順位のルールが使用されます。 フルネームの名前およびクラスは、左から右へ (最も高いレベルの階級から 低いほうへ)、コンポーネントごとにスキャンされます。 各レベルで、 各エントリにマッチするコンポーネントとバインディングが決定され、 マッチしたコンポーネントとバインディングが優先順位のルールに従って、 比較されます。 各ルールは、 次のレベルに移る前に、 全てのエントリから 1 つのエントリを選択するまで、 各レベルで適用されます。 ルール (優先順位の順) は、以下のとおりです。

1.マッチするコンポーネント (名前、クラス、または "?") を持つエントリは、 省略形のレベルのエントリ (つまり、曖昧なバインディングでレベルとマッチするエントリ) より優先順位があります。

2.名前がマッチするエントリは、 クラスがマッチするエントリおよび "?" を使用してマッチするエントリより 優先順位があります。 また、クラスがマッチするエントリは、 "?" を使用してマッチするエントリより 優先順位があります。

3.厳しいバインディングから始まるエントリは、 曖昧なバインディングで始まるエントリより 優先順位があります。

関連事項

XrmInitialize(3X11), XrmMergeDatabases(3X11), XrmPutResource(3X11), XrmUniqueQuark(3X11)
Xlib − C Language X Interface

NEWS-OSRelease 4.2.1R

Typewritten Software • bear@typewritten.org • Edmonds, WA 98026