UIL ファイル・フォーマット
目的
ウィジェット・ベースのアプリケーションのユーザー・インターフェースに関する情報が含まれます。
説明
ユーザー・インターフェース言語 (UIL) は、ウィジェット・ベースのアプリケーションのユーザー・インターフェースの初期状態を記述するために使用されます。 UIL は、インターフェースで使用されるウィジェット、それらのウィジェットのリソース、およびそれらのウィジェットのコールバックについて説明します。 UIL ファイルは、 uil コマンドまたは Uil 呼び出し可能コンパイラー関数を使用して、ユーザー・インターフェース定義 (UID) ファイルにコンパイルされます。 コンパイルされた UID ファイルの内容は、アプリケーション・プログラム内からさまざまな Motif Resource Manager (MRM) 機能によってアクセスできます。
UIL の構文は次のとおりです。
モジュール ModuleName [ 名前 = CASE_INSENSITIVE | CASE_SENSITIVE ] [ 文字セット = CharacterSet ] [ オブジェクト = { ウィジェット名 = ガジェット | WIDGET; [...] } ] { [ [ 値セクション ] | [ プロシージャー・セクション ] | [ リスト・セクション ] | [ オブジェクト・セクション ] | [ ID_ セクション ] | [ ... ] ] } モジュール終了;
ファイル・フォーマット
UIL はフリー・フォーム言語です。 これは、オブジェクト宣言や値宣言などの上位構成体は、特定の桁から開始する必要がなく、任意の数の行にまたがることができることを意味します。 キーワードや句読文字などの下位構造体も、任意の桁から開始できます。ただし、ストリング・リテラルやコメントを除き、複数行にまたがることはできません。
UIL コンパイラーは、長さが 132 文字までの入力行を受け入れます。
| 項目 | 説明 |
|---|---|
| モジュール名 ModuleName | UID ファイル内で UIL モジュールを認識するための名前。 この名前は、後で MRM によるリソースの検索に使用するために UID ファイルに保管されます。 このモジュール名は常に大文字です。 |
| NAMES = 大文字小文字を区別しない | 大文字小文字を区別する | 名前を大/小文字を区別するか、大/小文字を区別しないかを示します。 デフォルトでは、大/小文字が区別されます。 大/小文字の区別の文節は、モジュール・ヘッダーの最初の文節でなければならず、名前を含むすべてのステートメントの前になければなりません。 UIL モジュールで名前に大/小文字の区別がある場合、そのモジュールの UIL キーワードは小文字でなければなりません。 それぞれの名前は、UIL モジュールに現れるのと同じ大/小文字で UIL ファイルに保管されます。 名前に大/小文字の区別がない場合、キーワードは大文字、小文字、または大/小文字混合にすることができ、各名前の大文字に相当するものが UID ファイルに保管されます。 |
| CHARACTER_SET = CharacterSet | 文字セットを明示的に設定しない、モジュール内のストリング・リテラルのデフォルト文字セットを指定します。 この句が指定されていない場合、デフォルトの文字セットは LANG 環境変数のコードセット成分、または LANG が設定されていないかコードセット成分を持たない XmFALLBACK_CHARSET 場合の値となります。 の値はUIL XmFALLBACK_CHARSET サプライヤーによって定義されますが、通常は ISO8859-1 (に相当 ISO_LATIN1 )です。 この節を使用すると、 -s コンパイラー・フラグまたは Uil_command_type データ構造エレメント use_setlocale_flagのいずれかによってオンにされた、ローカライズされたストリング・リテラル処理がすべてオフになります。 |
| オブジェクト = { WidgetName = GADGET | WIDGET;} | WidgetName 変数で指定されたコントロールのウィジェットまたはガジェットのフォームがデフォルトで使用されるかどうかを示します。 ウィジェット・フォームはデフォルトで使用されます。 指定するコントロールは、ウィジェット版とガジェット版の両方を持つものである必要があります。例: XmCascadeButton、 XmLabel、 XmPushButton、 XmSeparator、および XmToggleButton. 複数のコントロールの形式は、次のように区切ることによって指定できます。;(セミコロン)。 コントロールのインスタンスのガジェットまたはウィジェット形式は、特定のオブジェクト宣言で GADGET キーワードおよび WIDGET キーワードを使用して指定できます。 |
| ValueSection | 値の式またはリテラルに名前を付ける方法を提供します。 その後、値名は、値を使用できる任意のコンテキストで UIL モジュール内の他の場所にある宣言によって参照することができます。 値は順方向参照にすることができます。 詳しくは、「値のセクション」を参照してください。 |
| ProcedureSection | ウィジェットによって使用されるコールバック関数と、ユーザー定義ウィジェットの作成関数を定義します。 これらの定義はエラー検査に使用されます。 詳しくは、「プロシージャー・セクション」を参照してください。 |
| ListSection | 後で UIL モジュールで使用するために、一連の引数、制御 (子)、コールバック、またはプロシージャーをグループ化する方法を提供します。 リストには他のリストを含めることができるため、どの引数、コントロール、コールバック、およびプロシージャーがどのウィジェットに共通しているかを明確に示す階層をセットアップできます。 詳しくは、「リスト・セクション」を参照してください。 |
| ObjectSection | アプリケーションのユーザー・インターフェースを構成するオブジェクトを定義します。 オブジェクト名を使用できる任意のコンテキスト (例えば、コントロール・リスト、ウィジェット ID へのシンボリック参照、コールバック・プロシージャーの TagValue 引数) で、UIL モジュール内の他の場所にある宣言内のオブジェクト名を参照することができます。 オブジェクトは順方向参照にすることができます。 詳しくは、「オブジェクト・セクション」を参照してください。 |
| IdentifierSection | UIL モジュールに現れる名前へのデータの実行時バインディングを定義します。 詳しくは、「ID セクション」を参照してください。 |
UIL ファイルには、コメントおよびインクルード・ディレクティブを入れることもできます。 これらは、 UIL ファイル・フォーマットの主なエレメントとともに、以下のセクションで説明されています。
コメント
コメントは、以下の 2 つの形式のいずれかにすることができます。どちらもネストすることはできません。
- コメントは、/* シーケンスの後にコメントのテキストが続き、*/ シーケンスで終了します。 この形式のコメントは、複数のソース行にまたがることができます。
- このコメントは、「! (感嘆符) の後にコメントのテキストが続き、ソース行の終わりで終了します。
値セクション
値セクションは、 VALUE キーワードと、それに続く一連の値宣言で構成されます。 構文は以下のとおりです。
VALUE ValueName : [ EXPORTED | PRIVATE ] ValueExpression | IMPORTED ValueType ;
ValueExpression ValueName に割り当てられるか、または がインポートされた ValueType 値名に割り当てられる。 値宣言は、値の式またはリテラルに名前を付ける方法を提供します。 値の名前は、後で UIL モジュール内で、値を使用できる任意のコンテキストで発生する宣言によって参照することができます。 値は順方向参照にすることができます。
| 項目 | 説明 |
|---|---|
| エクスポート済み | エクスポートとして定義した値は、名前付きリソースとして UID ファイルに保管され、他の UID ファイル内の名前で参照できます。 値をエクスポートとして定義すると、MRM は、実行時に値を取得するために、エクスポートされた値が宣言されているモジュールの外部を検索します。 |
| PRIVATE | プライベート値は、インポートもエクスポートもされない値です。 専用として定義した値は、UID ファイルに別個のリソースとして保管されません。 プライベート値は、値宣言を含む UIL モジュールでのみ参照できます。 値またはオブジェクトは、宣言を参照する UIL モジュール内のすべてのものに直接組み込まれます。 |
| インポート済み | インポート時に定義する値は、UID ファイルで名前付きリソースとして定義される値です。 MRM は、アプリケーションの実行時に、対応するエクスポートされた宣言を使用してこの宣言を解決します。 |
デフォルトでは、値とオブジェクトはプライベートです。 UIL でサポートされる値タイプのリストを以下に示します。
- any
- 引数
- BOOLEAN
- カラー
- COLOR_TABLE (COLOR_TABLE)
- コンポーネント・ストリング (COMPOUND_STRING)
- FLOAT
- FONT
- オン・テーブル (FONT_TABLE)
- オンに設定
- アイコン
- INTEGER
- INTEGER_TABLE (INTEGER_TABLE)
- キー・シンボル
- REASON
- 単一浮動小数点数 (SINGLE_FLOAT)
- STRING
- ストリング・テーブル
- TRANSLATION_TABLE (TRANSLATION_TABLE)
- 「WIDE_CHARACTER」
- ウィジェット (widget)
プロシージャー・セクション
プロシージャー・セクションは、 PROCEDURE キーワードと、それに続く一連のプロシージャー宣言で構成されます。 構文は以下のとおりです。
PROCEDURE ProcedureName [ ( [ ValueType ] ) ] ;
プロシージャー宣言を使用して、以下を宣言します。
- ウィジェットのコールバック関数として使用できる関数です。
- ユーザー定義ウィジェット用の作成関数。
プロシージャー名は、プロシージャーを使用できる任意のコンテキストで UIL モジュールの後の方にある宣言の中で参照することができます。 プロシージャーは、順方向参照することができます。 別のコンテキストで使用した名前をプロシージャー名として使用することは できません 。
プロシージャー宣言では、実行時にパラメーターが対応するコールバック関数に渡されるように指定するオプションがあります。 このパラメーターは、 コールバック・タグと呼ばれます。 プロシージャー名の後にデータ・タイプを括弧で囲んで指定することにより、コールバック・タグのデータ・タイプを指定できます。 モジュールをコンパイルすると、UIL コンパイラーは、プロシージャーへの参照で指定された引数がこのタイプであるかどうかを検査します。 コールバック・タグのデータ・タイプは、有効な UIL データ・タイプのいずれかでなければならないことに注意してください。 ウィジェットがコールバックと同じウィジェット階層で定義されている限り、そのウィジェットをコールバック・タグとして使用できます。つまり、同じ UIL 階層にある共通の祖先を持っている必要があります。
以下のリストは、プロシージャー宣言に応じて、UIL コンパイラーが引数の型と引数の数を検査する方法を要約しています。
| 項目 | 説明 |
|---|---|
| パラメーターはありません。 | 引数タイプまたは引数カウントの検査は行われません。 プロシージャー参照には、0 個または 1 個の引数を指定できます。 |
| ( ) | 引数カウントが 0 であることを検査します。 |
| (任意) | 引数カウントが 1 であることを検査します。 引数の型を検査しません。 プロシージャー・タグのタイプ検査を行わないようにするには、ANY データ・タイプを使用します。 |
| (タイプ) | 指定されたタイプの引数が 1 つあるかどうかを検査します。 |
| (ClassName) | 指定されたウィジェット・クラスの 1 つのウィジェット引数を検査します。 |
任意の UIL データ・タイプを使用して、プロシージャー宣言でタグのタイプを指定することはできますが、使用するプログラミング言語でそのデータ・タイプを表すことができなければなりません。 一部のデータ・タイプ (整数、ブール、ストリングなど) は、ほとんどのプログラミング言語で認識される一般的なデータ・タイプです。 その他の UIL データ・タイプ (ストリング・テーブルなど) はより複雑であり、そのタイプのタグをコールバック関数に渡すために、アプリケーション内に対応する適切なデータ構造をセットアップする必要が生じることがあります。
プロシージャー宣言を使用して、ユーザー定義ウィジェットの作成関数を指定することもできます。 この場合、仮パラメーターは指定しません。 プロシージャーは、すべてのウィジェット作成関数に渡される標準の 3 つの引数を使用して呼び出されます。
セクションのリスト
リスト・セクションは、 LIST キーワードと、それに続く一連のリスト宣言で構成されます。 構文は以下のとおりです。
LIST ListName : { ListItem; [...] } [...]
また、リスト・セクションを使用して、後で UIL モジュールで使用する一連の引数、制御 (子)、コールバック、またはプロシージャーをグループ化することもできます。 リストには他のリストを含めることができるため、どの引数、コントロール、コールバック、およびプロシージャーがどのウィジェットに共通しているかを明確に示す階層をセットアップできます。 異なるタイプのリストを混用することはできません。特定のタイプのリストに異なるリスト・タイプの項目を含めたり、異なるリスト・タイプの名前を参照したりすることはできません。 リスト名は常に、リストを宣言する UIL モジュール専用であり、UID ファイルに名前付きリソースとして保管することはできません。
追加のリスト・タイプについては、以下のセクションで説明します。
引数リスト構造
引数リストは、特定のオブジェクトの作成関数が実行時に呼び出されるときに、引数リスト・パラメーターに指定される引数を定義します。 引数リストは、それらの引数の値も指定します。 引数リストの構文は次のとおりです。
LIST ListName : 引数 { ArgumentName = ValueExpression; [...] } [...]
引数名 (ArgumentName) は、組み込み引数名、または ARGUMENTS 関数で指定されるユーザー定義引数名のいずれかでなければなりません。
組み込み引数名をオブジェクト定義の引数リスト項目として使用する場合、UIL コンパイラーは、その引数名が定義しているオブジェクトのタイプによってサポートされていることを確認するために、引数名を検査します。 指定された引数リストに同じ引数名が複数回表示される場合、その引数名を使用する最後の項目が、その名前を持つすべての前の項目より優先され、コンパイラーはメッセージを出します。
一部の引数(例: XmNitemCount XmNitems )は、UILコンパイラによって結合されます。 結合引数の 1 つを指定すると、コンパイラーはもう 1 つの引数も設定します。 結合された引数は使用できません。
AIXwindows および X Toolkit (Intrinsics) は、 制約引数をサポートします。 制約引数とは、通常使用可能な引数を超えて、オブジェクトの子に渡される引数のことです。 例えば、 Form ウィジェットは、制約引数のセットをその子に付与します。 これらの引数は、 Form ウィジェット内の子の位置を制御します。
特定のウィジェットの属性を定義するために使用される引数とは異なり、制約引数は、特定のウィジェットの子の追加属性を定義するためにのみ使用されます。 これらの属性は、親の中の子の動作に影響します。 子に制約引数を指定するには、子の引数リストに引数を含めます。
コールバック・リスト・ストラクチャー
コールバック・リストを使用して、実行時に特定のウィジェットによって処理されるコールバック理由を定義します。 コールバック・リストの構文は次のとおりです。
LIST ListName : CALLBACKS { ReasonName = PROCEDURE ProcedureName [ ( [ ValueExpression ] ) ]; | ReasonName = ProcedureList; [...] } [...]
AIXwindows ウィジェットの場合、理由名は組み込み理由名でなければなりません。 ユーザー定義ウィジェットの場合、 REASON 関数を使用して以前に指定した理由名を使用できます。 オブジェクト定義で組み込み理由を使用する場合、UIL コンパイラーは、定義するオブジェクトのタイプによってその理由がサポートされることを確認します。
同じ理由がコールバック・リストに複数回表示される場合、その名前を参照する最後の項目が、同じ理由を使用する前のすべての項目より優先されます。 その後、UIL コンパイラーは診断メッセージを出します。
プロシージャー引数 (コールバック・タグ) に名前付きの値を指定する場合、値のデータ・タイプは、対応するプロシージャー宣言でコールバック・タグに指定されたタイプと一致している必要があります。 ウィジェット名をプロシージャー値式として指定する場合は、ウィジェットのタイプと、ウィジェット名の前にスペースも指定する必要があります。
UIL コンパイラーはオブジェクト・モジュール (.o) ではなく UID ファイルを作成するため、UIL 名のエントリー・ポイントのアドレスへのバインド、およびプロシージャーへのバインディングはローダーによって行われません。 代わりに、このバインディングは実行時に MRM MrmRegisterNames 関数によって確立されます。 オブジェクトをフェッチする前にこの関数を呼び出して、各コールバックの UIL 名とプロシージャー・アドレスの両方を指定します。 アプリケーション・プログラムで MRM に登録する名前は、UIL モジュールでプロシージャーに指定した名前と一致していなければなりません。
各コールバック・プロシージャーは 3 つの引数を受け取りました。 最初の 2 つの引数は、コールバックごとに同じ形式になります。 3 番目の引数の形式は、オブジェクトによって異なります。
最初の引数は、このオブジェクト・インスタンスの AIXwindows によって維持されるデータ構造のアドレスです。 このアドレスは、このオブジェクトのウィジェット ID と呼ばれます。
2 番目の引数は、このプロシージャーのコールバック・リストで指定した値のアドレスです。 引数を指定しない場合、アドレスはヌルになります。
3 番目の引数は、コールバック・リストで指定した理由名です。
制御リスト構造
コントロール・リストは、どのオブジェクトが特定のオブジェクトの子であるか、または特定のオブジェクトによって制御されるかを定義します。 制御リスト内の各項目の構文は、以下のとおりです。
LIST ListName : CONTROLS { [ 子要素名 ] [ 管理対象 | 非管理対象 ] オブジェクト定義; [...] } [...]
実行時に MANAGED キーワードを指定した場合、オブジェクトは作成され、管理されます。実行時に UNMANAGED キーワードを指定した場合、オブジェクトは作成されるだけです。 オブジェクトはデフォルトで管理されます。
ChildName パラメーターを使用して、特定のコントロールの自動的に作成される子のリソースを指定できます。 自動的に作成される子の名前は、子ウィジェットの名前に Xm_ を付加して形成されます。 この名前は、親ウィジェットの資料で指定されています。
引数リストおよびコールバック・リストとは異なり、前の項目と同一の制御リスト項目は、前の項目を置き換え ません 。 実行時に、各コントロール・リスト・エントリーによって、親の作成時に子が作成されます。 複数の子に同じオブジェクト定義を使用すると、実行時に子の複数インスタンスが作成されます。
プロシージャー・リスト構造
プロシージャー・リストを定義することにより、UIL でコールバック理由に対して複数のプロシージャーを指定できます。 他のリスト・タイプの場合と同様に、プロシージャー・リストはインラインで定義することも、リスト・セクションで定義して名前で参照することもできます。
理由を複数回定義した場合 (例えば、参照されるプロシージャー・リストとオブジェクトのコールバック・リストの両方に理由が定義されている場合)、前の定義は最新の定義によってオーバーライドされます。 プロシージャー・リストの構文は次のとおりです。
LIST ListName : PROCEDURES { 手順名 [ ( [ 値式 ] ) ]; [...] } [...]
ウィジェット名をプロシージャー値式として指定する場合は、ウィジェットのタイプと、ウィジェット名の前にスペースも指定する必要があります。
オブジェクト・セクション
オブジェクト・セクションは、 OBJECT キーワードと、それに続く一連のオブジェクト宣言で構成されます。 構文は以下のとおりです。
オブジェクト ObjectName : [ エクスポート済み | プライベート | インポート済み ] ObjectType [ プロシージャ CreationFunction ] [ ObjectName [ ウィジェット | ガジェット ] | { ListDefinitions } ]
UID ファイルに保管されるオブジェクトを定義するには、オブジェクト宣言を使用します。 オブジェクト名を使用できる任意のコンテキスト (例えば、コントロール・リスト、ウィジェット ID へのシンボリック参照、またはコールバック・プロシージャーの TagValue 引数) で、UIL モジュール内の他の場所にある宣言内のオブジェクト名を参照することができます。 オブジェクトは 前方参照できます。これは、オブジェクト名を参照した後に宣言できることを意味します。 オブジェクト名に対するすべての参照は、オブジェクト宣言で指定されたオブジェクトのタイプと整合している必要があります。 オブジェクトは、エクスポート、インポート、またはプライベートとして指定できます。
オブジェクト定義には、ウィジェットの引数、階層、およびコールバックを定義する一連のリストを含めることができます。 オブジェクトには、各タイプのリストを 1 つしか指定できません。 ユーザー定義ウィジェットを宣言するときには、ユーザー定義ウィジェットのウィジェット作成関数への参照を含める必要があります。
GADGET または WIDGET キーワードを使用して、オブジェクト・タイプを指定するか、このオブジェクト・タイプのデフォルト・バリアントをオーバーライドします。 ガジェットバリアントを持つオブジェクト型(例: XmLabelGadget ) のAIXwindows 名を、オブジェクト宣言の属性として使用できます。 ObjectType は、ガジェットを含む任意のオブジェクト・タイプにすることができます。 GADGET または WIDGET キーワードは、オブジェクトを参照するときではなく、オブジェクトの宣言でのみ指定する必要があります。 ユーザー定義オブジェクトに GADGET または WIDGET キーワードを指定することは できません 。ユーザー定義オブジェクトは常にウィジェットです。
ID セクション
ID セクションでは、 IDを定義できます。これは、UIL モジュールに現れる名前にデータを実行時にバインドするメカニズムです。 ID セクションは、予約済みの IDENTIFIER キーワードと、それに続く名前のリストで構成されます。 各名前の後にはセミコロン (;) が続きます。 構文は次のとおりです。
IDENTIFIER IdentifierName; [...; ]
これらの名前は、後で UIL モジュールでウィジェットへの引数の値またはコールバック・プロシージャーへのタグ値として使用できます。 実行時には、MRM MrmRegisterNamesInHierarchyMrmRegisterNames 関数とを使用して、識別子名と、その識別子に関連付けられたデータ(コールバックの場合はデータのアドレス)をバインドします。
各 UIL モジュールには単一の名前空間があります。したがって、値、オブジェクト、またはプロシージャーに使用した名前を同じモジュール内の ID 名として使用することはできません。
UIL コンパイラーは、UIL モジュール内の ID の使用に関するタイプ検査は行いません。 UIL 値とは異なり、ID には UIL タイプが関連付けられていません。 ウィジェット引数またはコールバック・プロシージャー・タグが定義されている特定のタイプに関係なく、対応するタイプの値の代わりに、そのコンテキストで ID を使用できます。
UIL モジュールでこれらの ID 名を参照するには、その値を使用する任意の場所で ID の名前を使用します。
インクルード・ディレクティブ
インクルード・ディレクティブは、指定されたファイルの内容を UIL モジュールに取り込みます。 このメカニズムにより、複数の UIL モジュールが共通定義を共用することができます。 include ディレクティブの構文は、次のとおりです。
インクルードファイル FileName ;
UIL コンパイラーはインクルード・ディレクティブをインクルード・ファイルの内容で置き換え、それらの内容が現行 UIL ソース・ファイルに表示されているかのように処理します。
インクルード・ファイルをネストすることができます。つまり、インクルード・ファイルにインクルード・ディレクティブを含めることができます。 UIL コンパイラーは、最大 100 個の参照 (UIL モジュールを含むファイルを含む) を処理できます。 したがって、ネストされたファイルを含めて、単一の UIL モジュールに最大 99 個のファイルを組み込むことができます。 ファイルが開かれるたびに、参照としてカウントされます。したがって、同じファイルを含めると、2 回の参照としてカウントされます。
文字式は、組み込まれるファイルを識別するファイル指定です。 指定されたファイルを検索するための規則は、C 言語で引用符付きストリングを持つインクルード・ディレクティブ #includeを使用して、ヘッダー・ファイルまたは .hファイルを検索するための規則と似ています。 uil コマンドは、 -I オプションを使用して、インクルード・ファイルの検索ディレクトリーを指定します。 検索ルールは以下のとおりです。
- ディレクトリーを指定すると、UIL コンパイラーはそのディレクトリーでのみインクルード・ファイルを検索します。
- ディレクトリーを指定しない場合、UIL コンパイラーはメイン・ソース・ファイルのディレクトリー内でインクルード・ファイルを検索します。
- インクルード・ファイルがメイン・ソース・ファイル・ディレクトリーに見つからない場合、コンパイラーはソース・ファイルと同じディレクトリーを検索します。
言語構文
このセクションには、以下に関する情報が記載されています。
名前とストリング
名前には、A から Z、a から z、0 から 9、$(ドル記号)、および _ (下線) の文字を使用できます。 名前の先頭を数字 (0 から 9) にすることはできません。 名前の最大長は 31 文字です。
UIL では、 MODULE ヘッダーの文節を使用して、大/小文字を区別する名前または大/小文字を区別しない名前のいずれかを選択できます。 例えば、名前に大/小文字の区別がある場合、名前「sample」と「Sample」は互いに異なります。 名前に大/小文字の区別がない場合、これらの名前は同じ名前として扱われ、区別なく使用できます。 デフォルトでは、UIL は名前に大/小文字の区別があると想定します。
大/小文字を区別しないモードでは、コンパイラーは UID ファイル内のすべての名前を大文字形式で出力します。 大/小文字の区別モードでは、名前はソース・ファイルに表示されているとおりに UIL ファイルに表示されます。
以下に、プログラマー定義の名前には使用 できない 予約キーワードをリストします。
| 項目 | 説明 | 説明 |
|---|---|---|
| 引数 | コールバック | CONTROLS |
| END | エクスポート済み | FALSE |
| ガジェット (gadget) | Identifier | インクルード |
| list | MODULE | OFF |
| オン | OBJECT | PRIVATE |
| PROCEDURE | PROCEDURES | TRUE |
| VALUE | ウィジェット (widget) |
以下に、UIL 非予約キーワードをリストします。 これらのキーワードは、プログラマー定義の名前として使用することができます。ただし、これらのキーワードのいずれかを名前として使用する場合は、UIL 提供の形式のそのキーワードを使用することはできません。
組み込み引数名(例: XmNx ) XmNheight 組み込み理由名(例: XmNactivateCallback ) XmNhelpCallback 文字セット名(例: ISO_LATIN1 ISO_HEBREW_LR )定数値名(例: XmMENU_OPTION ) XmBROWSE_SELECT オブジェクト型(例: XmPushButton ) XmBulletinBoard
| 項目 | 説明 | 説明 |
|---|---|---|
| any | File | インポート済み |
| 引数 | FLOAT | REASON |
| ASCIZ_STRING_TABLE (ASCIZ_STRING_TABLE) | FONT | RGB |
| ASCIZ_TABLE (ASCIZ_TABLE) | オンに設定 | 単一浮動小数点数 (SINGLE_FLOAT) |
| 背景 | オン・テーブル (FONT_TABLE) | STRING |
| BOOLEAN | フォアグラウンド | ストリング・テーブル |
| case_insensitive | アイコン | TRANSLATION_TABLE (TRANSLATION_TABLE) |
| CASE_SENSITIVE | INTEGER | 管理外 |
| 文字セット (CHARACTER_SET) | INTEGER_TABLE (INTEGER_TABLE) | User_Defined |
| カラー | キー・シンボル | VERSION |
| COLOR_TABLE (COLOR_TABLE) | MANAGED | 「WIDE_CHARACTER」 |
| コンポーネント・ストリング (COMPOUND_STRING) | NAMES | ウィジェット (widget) |
| 「COMPOUND_STRING_TABLE」 | オブジェクト | XBITMAPFILE |
| 右から左 (RIGHT_TO_LEFT) |
ストリング・リテラルは、大文字と小文字、数字、および句読文字で構成できます。 スペース、タブ、およびコメントは、言語内の特殊な要素です。 これらは、2 つの名前など、他のエレメントを区切る手段です。 これらのエレメントの 1 つ以上は、言語内の他のエレメントの前または後に表示できます。 ただし、ストリング・リテラルに表示されるスペース、タブ、およびコメントは、区切り文字ではなく文字シーケンスとして扱われます。
データ・タイプ
UIL は、サポートするいくつかの値タイプにリテラルを提供します。 一部の値タイプ (ピックスマップやストリング・テーブルなど) はリテラルとしてサポートされていません。 これらのタイプの値は、「関数」セクションで説明されている関数を使用して指定できます。 UIL は、以下のリテラル型を直接サポートします。
- ストリング・リテラル (string literal)
- 整数リテラル
- ブール・リテラル
- 浮動小数点リテラル
UIL には、データ・タイプのコンパイル時検査をオフにするために使用される ANY データ・タイプも含まれています。
ストリング・リテラル
ストリング・リテラルは、0 個以上の 8 ビットまたは 16 ビット文字のシーケンス、あるいは ' で区切られた組み合わせです。 (単一引用符) または " (二重引用符)。 ストリング・リテラルには、二重引用符で区切られたマルチバイト文字を含めることもできます。 ストリング・リテラルの長さは 2,000 文字以下でなければなりません。
単一引用符付きストリング・リテラルは、複数のソース行にまたがることができます。 単一引用符付きストリング・リテラルを継続するには、継続行を ¥ (円記号) で終了します。 リテラルは次の行の最初の文字から継続します。
二重引用符付きストリング・リテラルは、複数のソース行にまたがることはできません。 (二重引用符付きストリングにはエスケープ・シーケンスやその他の特殊文字を含めることができるため、円記号文字を使用してストリングの継続を指定することはできません。) 複数のソース行にまたがる必要があるストリング値を作成するには、このセクションで後述する連結演算を使用します。
ストリング・リテラルの構文は、以下のいずれかになります。
'[CharacterString]'
[#CharSet]"[CharacterString]"どちらのストリング形式も、文字セットをストリング値に関連付けます。 UIL は、以下の規則を使用して、ストリング・リテラルの文字セットとストレージ・フォーマットを決定します。
- ' String ' として宣言された文字列は、 #CurCharSet " String " に相当する。ここで CurCharSet は、 LANG 環境変数の値のコードセット部分である。 LANG 環境変数が設定されていないか、コード設定コンポーネントを持たない場合、その値 CurCharSet は です XmFALLBACK_CHARSET。 デフォルトでは、 XmFALLBACK_CHARSET は ISO8859-1 (と同等 ISO_LATIN1 )ですが、ベンダーは異なるデフォルトを定義できます。
- モジュールのデフォルト文字セットとして を CharSet 指定した場合、 として宣言された文字セット"文字列" 文字列は "文字列" # と同等である。 モジュールにデフォルト文字セットが指定されておらず、 -s オプションが uil コマンドに指定されているか、または use_setlocale_flag 値が Uil 関数呼び出し可能コンパイラーに設定されている場合、 ストリングは、現行ロケールのストリングとして解釈されます。 これは、 setlocale を呼び出してユーザーのロケールで文字列が解析され、その文字セットが の値に設定されることを XmFONTLIST_DEFAULT_TAG 意味します。 ストリングが複合ストリングに変換されると、ロケール・エンコード・テキスト・セグメントとして保管されます。 そうでない場合、 「 String 」 は #CurCharSet " String " と同等であり、ここで は一重引用符付き文字 CurCharSet 列の場合と同様に解釈される。
- " String " または " #CharSet" String " の形式の文字列は、ヌル終端文字列として格納されます。
UIL コンパイラーによってサポートされるストリング・リテラルの文字セットを以下にリストします。 複数の UIL 名が同じ文字セットにマップされることに注意してください。 場合によっては、UIL 名がストリング・リテラルの読み取り方法に影響を与えることがあります。 例えば、 _LR で終わる UIL 文字セット名で識別されるストリングは、左から右に読み取られます。 末尾が異なる番号の名前は、異なるフォントを反映します (例えば、 ISO_LATIN1 または ISO_LATIN6)。 このリスト内のすべての文字セットは、8 ビットで表されます。
| UIL 名 | 説明 |
|---|---|
| ISO_LATIN1 | GL: ASCII、GR: Latin-1 補足 |
| ISO_LATIN2 | GL: ASCII、GR: Latin-2 補足 |
| ISO_ARABIC (ISO_ARABIC) | GL: ASCII、GR: ラテン語-アラビア語補足 |
| ISO_LATIN6 | GL: ASCII、GR: ラテン語-アラビア語補足 |
| ISO_GREEK (ISO_GREEK) | GL: ASCII、GR: Latin-ギリシャ語補足 |
| ISO_LATIN7 | GL: ASCII、GR: Latin-ギリシャ語補足 |
| ISO_HEBREW (ISO_HEBREW) | GL: ASCII、GR: ラテン・ヘブライ語補足 |
| ISO_LATIN8 | GL: ASCII、GR: ラテン・ヘブライ語補足 |
| 「ISO_HEブリュー_LR」 | GL: ASCII、GR: ラテン・ヘブライ語補足 |
| ISO_LATIN8_LR | GL: ASCII、GR: ラテン・ヘブライ語補足 |
| JIS_KATAKANA (JIS_KATAKANA) | GL: JIS Roman、GR: JIS カタカナ |
以下に、各文字セットの構文解析規則を示します。
| 文字セット | 語句解析ルール |
|---|---|
| すべての文字セット | 00 から 1F、 7F、および 80 から 9F の範囲の文字コードは、16 ビット文字の両方のバイトを含む制御文字です。 コンパイラーは、これらに正しくない文字としてフラグを立てます。 |
| ISO_LATIN1、 ISO_LATIN2、 ISO_ARABIC、 ISO_LATIN6、 ISO_GREEK、 ISO_LATIN7 | これらのセットは左から右に解析されます。 ヌル終了ストリングのエスケープ・シーケンスも、これらの文字セットによってサポートされます。 |
| ISO_HEBREW、 ISO_LATIN8 | これらのセットは、右から左に解析されます。 例えば次のようなストリングがあるとします。#ISO_HEBREW"012345"プリミティブ・ストリングを生成します"543210"文字セット ISO_HEBREWを使用します。 そのようなストリングの DDIS 記述子には、右から左としてマークされたこのセグメントがあります。 ヌル終了ストリングのエスケープ・シーケンスもこれらの文字セットによってサポートされ、エスケープ・シーケンスを構成する文字は左から右の順序になります。 例えば、次のように入力します。\n、そうではないn\. |
| ISO_HE蔵_LR、 ISO_LATIN8_LR | これらのセットは左から右に解析されます。 例えば次のようなストリングがあるとします。#ISO_HEBREW"012345"プリミティブ・ストリングを生成します"012345"文字セット ISO_HEBREWを使用します。 そのようなストリングの DDIS 記述子は、このセグメントに左から右のマークを付けます。 ヌル終了ストリングのエスケープ・シーケンスも、これらの文字セットによってサポートされます。 |
| JIS_KATAKANA (JIS_KATAKANA) | このセットは左から右に解析されます。 ヌル終了ストリングのエスケープ・シーケンスも、これらの文字セットによってサポートされます。 ¥ (円記号) は円記号として表示できます。 |
文字セット情報は、ストリングの構文解析規則を指定するだけでなく、複合ストリングの属性のままです。 ストリングが複数の連結セグメントで構成されるストリングに含まれている場合、文字セット情報はそのストリング・セグメントに組み込まれます。 これにより、複合ストリングを復号し、ストリングを表示するフォントを選択するために必要な情報が AIXwindows に提供されます。
英語のみで表示されるアプリケーション・インターフェースの場合、UIL では、ストリングの 2 つの使用法の違いを無視することができます。 コンパイラーは、ストリングをヌル終了ストリングまたは複合ストリングとして渡す必要がある場合に、コンテキストによって認識します。
UIL コンパイラーは、ストリング・リテラルを正しく解析するために、さまざまな文字セットに関する十分な情報を認識します。 また、ヌル終了ストリングのみをサポートするコンテキストで複合ストリングを使用すると、コンパイラーはエラーを出します。
文字セット名はキーワードであるため、大/小文字の区別がある名前が有効な場合は、小文字で指定する必要があります。 名前に大/小文字の区別がない場合、文字セット名は大文字、小文字、または大/小文字混合にすることができます。
UIL によって認識される組み込み文字セットに加えて、 CHARACTER_SET 関数を使用して独自の文字セットを定義できます。 CHARACTER_SET 関数は、文字セットを指定できる任意の場所で使用できます。
ストリング・リテラルには、8 番目 (高位) のビット・セットを持つ文字を含めることができます。 単一引用符付きストリング・リテラルには、制御文字 (00 から 1F、 7F、および 80 から 9F) を直接入力することはできません。 ただし、これらの文字はエスケープ・シーケンスで表すことができます。 以下のリストは、特殊文字のエスケープ・シーケンスを示しています。
| 項目 | 説明 |
|---|---|
| \b | バックスペース |
| ¥ f | 用紙送り |
| ¥ n | 改行 |
| \r | 復帰 |
| \t | 水平タブ |
| \v | 垂直タブ |
| \' | 単一引用符 |
| \" | 二重引用符 |
| \\ | 円記号 |
| ¥Integer¥ | 内部表記が Integer (0 から 255 の範囲の 10 進数) によって指定される文字。 |
UIL コンパイラーは、複合ストリング内の改行文字を処理しません。 複合ストリング内の改行文字の影響は、そのストリングの文字セットによってのみ異なります。 結果が複数行ストリングであることは保証されません。
複合ストリング・リテラル
複合ストリングは、8 ビット、16 ビット、またはマルチバイト文字のストリング、名前付き文字セット、および書き込み方向で構成されます。 UIL データ・タイプは compound_stringです。
複合ストリングの書き込み方向は、ストリングに指定された文字セットによって暗黙指定されます。 COMPOUND_STRING 関数を使用して、複合ストリングの書き込み方向を明示的に設定することができます。
複合ストリングは、連結された複合ストリングのシーケンス、ヌル終了ストリング、またはその両方の組み合わせで構成することができ、それぞれが異なる文字セット・プロパティーと書き込み方向を持つことができます。 & (アンパーサンド) 連結演算子を使用して、複合ストリングのシーケンスを作成します。
文字セットおよび書き込み方向情報を含む、シーケンス内の各ストリングが保管されます。
一般に、ストリング・リテラルは、リテラルが異なる文字セットまたは書き込み方向を持つ連結されたストリングで構成されている場合、またはストリングを使用して複合ストリング値を必要とする引数の値を指定する場合に、複合ストリングとして UID ファイルに保管されます。 ストリング・リテラルが複合ストリングとして保管されることを保証したい場合は、 COMPOUND_STRING 関数を使用する 必要があります 。
ストリング・リテラルのデータ・ストレージ使用量
ストリング・リテラルが UID ファイルに保管される方法は、ストリングを宣言して使用する方法によって異なります。 UIL コンパイラーは、ストリングを使用して複合ストリングを必要とする引数の値を指定すると、自動的にヌル終了ストリングを複合ストリングに変換します。 ただし、この変換は、ストレージ使用量の点でコストがかかります。
PRIVATE、 EXPORTED、および IMPORTED ストリング・リテラルは、リテラルが宣言されると、単一割り振り用のストレージを必要とします。その後、リテラルを参照するたびにストレージが必要になります。 インラインで宣言されたリテラルは、割り振りと参照の両方のためのストレージを必要とします。
以下のリストは、ストリング・リテラルのデータ・ストレージ使用量を要約したものです。 割り振りのストレージ要件は、固定部分と可変部分で構成されます。 割り振りの固定部分は、参照のためのストレージ要件 (数バイト) とほぼ同じです。 変数部分によって消費されるストレージは、リテラル値のサイズ (ストリングの長さ) によって異なります。 ストレージ・スペースを節約するために、使用ごとの割り振りになるストリング・リテラル宣言を行わないようにしてください。
| 宣言 (およびデータ型) | 次として使用 | 使用ごとのストレージ要件 |
|---|---|---|
| インライン (In-line) (ヌル終了) | ヌル終了 | 割り振りおよび (モジュール内の) 参照 |
| Private (Null-terminated) (専用) | ヌル終了 | 参照 (モジュール内の) |
| エクスポート済み (ヌル終了) | ヌル終了 | 参照 (UID 階層内の) |
| インポート済み (ヌル終了) | ヌル終了 | 参照 (UID 階層内の) |
| インライン (In-line) (ヌル終了) | 複合 | 割り振りおよび (モジュール内の) 参照 |
| Private (Null-terminated) (専用) | 複合 | 割り振りおよび (モジュール内の) 参照 |
| エクスポート済み (ヌル終了) | 複合 | 参照 (UID 階層内の) |
| インポート済み (ヌル終了) | 複合 | 参照 (UID 階層内) |
| インライン (In-line) (複合) | 複合 | 割り振りおよび (モジュール内の) 参照 |
| Private (複合) | 複合 | 参照 (モジュール内の) |
| エクスポート済み (複合) | 複合 | 参照 (UID 階層内の) |
| インポート済み (複合) | 複合 | 参照 (UID 階層内の) |
整数リテラル
整数リテラルは、整数の値を表します。 整数リテラルには、オプションの符号と、それに続く 1 つ以上の 10 進数字の形式があります。 整数リテラルに埋め込みスペースまたはコンマを含めることはできません。
整数リテラルは、長整数として UID ファイルに保管されます。 エクスポートおよびインポートされた整数リテラルは、リテラルの宣言時に単一の割り振りを必要とします。その後、リテラルへの参照ごとに数バイトのストレージが必要になります。 専用整数リテラルおよびインラインで宣言されたリテラルは、使用ごとに割り振りおよび参照ストレージを必要とします。 ストレージ・スペースを節約するために、使用ごとに割り振りを行うことになる整数リテラル宣言を行わないようにしてください。
以下のリストは、整数リテラルのデータ・ストレージ使用量を示しています。
| 宣言 | 使用ごとのストレージ要件 |
|---|---|
| 行内 | 割り振りおよび参照 (モジュール内の)。 |
| 専用 | 割り振りおよび参照 (モジュール内の)。 |
| エクスポート済み | 参照 (UID 階層内の)。 |
| インポート済み | 参照 (UID 階層内の)。 |
ブール・リテラル
ブール・リテラルは、True 値 (予約キーワード TRUE または On) または False 値 (予約キーワード FALSE または Off) を表します。 これらのキーワードには、大/小文字の区別の規則が適用されます。
UID ファイルでは、 TRUE は整数値 1 で表され、 FALSE は整数値 0 で表されます。
ブール・リテラルのデータ・ストレージ使用量は、整数リテラルのデータ・ストレージ使用量と同じです。
浮動小数点リテラル
浮動小数点リテラルは、実数 (または浮動小数点数) の値を表します。 浮動小数点リテラルの形式は次のとおりです。
[+|-][Integer].Integer[E|e[+|-]Exponent]移植性を最大にするために、浮動小数点リテラルは、 1.0E-37 から 1.0E+37 までの範囲の値を、少なくとも 6 桁の有効数字で表すことができます。 多くのマシンでは、この範囲はより広く、より多くの有効数字を持ちます。 浮動小数点リテラルには、埋め込みスペースまたはコンマが含まれていてはなりません。
浮動小数点リテラルは、倍精度浮動小数点数として UID ファイルに保管されます。 以下に、UIL コンパイラーの有効な浮動小数点表記と無効な浮動小数点表記の例を示します。
| 有効な浮動小数点リテラル | 無効な浮動小数点リテラル |
|---|---|
| 1.0 | 1e1 (小数点なし) |
| .1 | E-1 (小数点または数字なし) |
| 3.1415E-2 (等しい .031415) | 2.87 e6 (組み込みブランク) |
| -6.29e7 (-62900000 と等しい) | 2.0e100 (範囲外) |
浮動小数点リテラルのデータ・ストレージ使用量は、整数リテラルの場合と同じです。
ANY データ・タイプ
ANY データ・タイプの目的は、UIL コンパイラーのデータ・タイプ検査機能をシャットダウンすることです。 ANY データ型は、以下のいずれかに使用できます。
- コールバック・プロシージャー・タグのタイプを指定します。
- ユーザー定義引数のタイプを指定する。
ANY データ型は、UIL コンパイラーでサポートされない型を使用する必要がある場合、またはコンパイラーによって課せられるデータ型制限を緩和したい場合に使用できます。 例えば、ランタイム環境に応じて異なるタイプの値を受け入れることができる引数を持つウィジェットを定義することができます。
引数が ANY 値を取ることを指定すると、コンパイラーはその引数に指定された値の型を検査しません。 したがって、 ANY データ型の引数に値を指定する場合は注意する必要があります。 ウィジェットがその引数に対してサポートしていないデータ型の値を渡すと、実行時に予期しない結果が生じる可能性があります。
式
UIL にはコンパイル時の値式が含まれています。 これらの式には、他の UIL 値への参照を含めることができますが、前方参照することはできません。
UIL モジュールで定義されている他の値に基づいて整数値、実数値、およびブール値を作成できる UIL の演算子のセットを以下にリストします。 このリストでは、1 の優先順位が最も高くなります。
| 演算子 (およびその意味) | オペランド・タイプ | 優先順位 |
|---|---|---|
| ~ (否定) | boolean | 1 |
| (一の補数) | 整数 | |
| - (否定) | float | 1 |
| (否定) | 整数 | |
| + (NOP) | float | 1 |
| (NOP) | 整数 | |
| * (乗算) | float、float | 2 |
| (乗算) | 整数、整数 | |
| / (除算) | float、float | 2 |
| (分割) | 整数、整数 | |
| + (追加) | float、float | 3 |
| (追加) | 整数、整数 | |
| - (減算) | float、float | 3 |
| (減算) | 整数、整数 | |
| >> (右へシフト) | 整数、整数 | 4 |
| < < (左シフト) | 整数、整数 | 4 |
| & (NOT) | ブール値、ブール値 | 5 |
| (ビット単位 AND) | 整数、整数 | |
| (Concatenate) (連結) | ストリング、ストリング | |
| | (または) | ブール値、ブール値 | 6 |
| (ビット単位 OR) | 整数、整数 | |
| ^ (排他的論理和) | ブール値、ブール値 | 6 |
| (ビット単位 XOR) | 整数、整数 |
ストリングは、単一の複合ストリングにすることも、複合ストリングのシーケンスにすることもできます。 2 つの連結ストリングに異なるプロパティー (書き込み方向や文字セットなど) がある場合、連結の結果は複数セグメントの複合ストリングになります。
連結の結果のストリングは、以下の 1 つ以上の条件が存在しない限り、ヌル終了ストリングになります。
- オペランドの 1 つが複合ストリングです。
- オペランドの文字セット・プロパティーが異なります。
- オペランドの書き方が異なります。
上記の 1 つ以上の条件が満たされると、結果のストリングは複合ストリングになります。 インポートまたはエクスポートされた値を連結演算子のオペランドとして使用することはできません。
各演算子の結果は、そのオペランドと同じ型になります。 変換関数を使用せずに式で型を混用することはできません。
括弧を使用して、通常の演算子の優先順位をオーバーライドすることができます。 単項演算子のシーケンスでは、演算は右から左の順序で実行されます。 例:- + -Aは、以下と同等です。-(+(-A)). 同じ優先順位の 2 項演算子のシーケンスでは、演算は左から右の順序で実行されます。 例:A*B/C*Dは、以下と同等です。((A*B)/c)*D.
値宣言は、値に名前を与えます。 後続の値宣言でその名前の値を再定義することはできません。 UIL モジュールで値を使用できる場所であればどこでも、演算子と関数を含む値を使用できます。 インポートされた値を式のオペランドとして使用することはできません。
いくつかの 2 項演算子は、複数のデータ・タイプに対して定義されます。 例えば、乗算 (*) の演算子は、浮動小数点オペランドと整数オペランドの両方に対して定義されます。
UIL コンパイラーがこれらの 2 進演算を実行するには、両方のオペランドが同じタイプでなければなりません。 異なるデータ型のオペランドを指定すると、UIL コンパイラーは、以下の変換規則に従って、一方のオペランドを他方の型に自動的に変換します。
- オペランドが整数とブール値の場合、ブール値は整数に変換されます。
- オペランドが整数および浮動小数点の場合、整数は浮動小数点に変換されます。
- オペランドが浮動小数点およびブール値の場合、ブール値は浮動小数点に変換されます。
INTEGER、 FLOAT、または SINGLE_FLOAT 変換関数のいずれかを使用して、値のデータ・タイプを明示的に変換することもできます。
関数
UIL は、以下のタイプの値を生成する関数を提供します。
- 文字セット
- キー・シンボル
- 色
- ピックスマップ
- 単精度、浮動小数点数
- 倍精度、浮動小数点数
- フォント
- フォント・セット
- フォント・テーブル
- 複合ストリング
- 複合ストリング表
- ASCIZ (ヌル終了) ストリング・テーブル
- ワイド文字ストリング
- ウィジェット・クラス名
- 整数表
- 引数
- 理由
- 変換テーブル。
以下のセクションのすべての例では、大/小文字を区別しないモードを想定しています。 キーワードは、ユーザー指定の名前と区別するために大文字で表示されます。ユーザー指定の名前は、大/小文字混合のイタリック体で表示されます。 大/小文字を区別しないモードでは、大文字を使用する必要はありません。 大/小文字の区別モードでは、キーワードは小文字でなければなりません。
- CHARACTER_SET( 文字列式 [, プロパティ [,...]])
- CHARACTER_SET 関数を使用して、独自の文字セットを定義できます。 CHARACTER_SET 関数は、文字セットを指定できる任意の場所で使用できます。
CHARACTER_SET 関数の結果は、 StringExpression という名前の文字セットと、指定したプロパティーになります。 StringExpression はヌル終了ストリングでなければなりません。 オプションで、以下の節のいずれかまたは両方を組み込んで、結果の文字セットのプロパティーを指定することができます。
RIGHT_TO_LEFT = BooleanExpression SIX_BIT = BooleanExpressionRIGHT_TO_LEFT 節は、文字列のデフォルトの書き込み方向を、 BooleanExpression が True の場合は右から左に、それ以外の場合は左から右に設定します。
SIXPERS_BIT 節により、 BooleanExpression が True の場合、この文字セットに関連付けられたストリングは 16 ビット文字として解釈され、それ以外の場合は 8 ビット文字として解釈されます。
- KEYSYM (StringLiteral)
- KEYSYM 関数は、ニーモニック・リソースのキー・シンボルを指定するために使用します。 StringLiteral には、正確に 1 文字が含まれている必要があります。 -s コンパイラー・フラグを使用する場合、二重引用符を使用する StringLiteral は文字セットを指定する必要があります。
- COLOR( 文字列式 [,前景色|背景色])
- COLOR 関数は、カラーの定義をサポートします。 COLOR 関数を使用すると、カラーを指定する値を指定し、カラー値を必要とする引数にその値を使用することができます。 ストリング式は、定義する色を指定します。 オプションの FOREGROUND および BACKGROUND キーワードは、カラーがカラー・テーブルの定義で使用されるときにモノクローム装置でカラーがどのように表示されるかを指定します。
UIL コンパイラーには、組み込みカラー名はありません。 色は、オブジェクトのサーバー依存属性です。 色はサーバーごとに定義され、サーバーごとに異なる赤-緑-青 (RGB) 値を持つことができます。 カラー引数として指定するストリングは、アプリケーションが実行されるサーバーによって認識される必要があります。
UID ファイルでは、UIL は文字ストリングとしてカラーを表します。 MRM は、カラー・ストリングを装置固有のピクセル値に変換する X 変換関数を呼び出します。 モノクローム・サーバーで実行している場合、すべての色はモノクロに変換されます。 カラー・サーバーを使用している場合、以下の条件が満たされると、カラー名は適切なカラーに変換されます。
- 色が定義されます。
- カラー・マップはまだいっぱいではありません。
カラー・マップがいっぱいの場合は、有効なカラーでも黒または白 (前景または背景) に変換されます。
通常、インターフェースはウィジェットの色を指定しません。 これにより、 を介してユーザーが制御する色の選択が可能になります。Xdefaults ファイル。
モノクロ・デバイスとカラー・デバイスの両方で実行されるアプリケーションを作成するには、( COLOR_TABLE 関数で定義された) カラー・テーブル内のどのカラーをバックグラウンドにマップし、どのカラーをフォアグラウンドにマップするかを指定する必要があります。 UIL では、次のように COLOR 関数を使用して、モノクローム装置の背景色に赤の色をマップできます。
VALUE c: COLOR ( 'red',BACKGROUND );マッピングが必要なのは、MRM にカラーが指定され、アプリケーションがモノクローム・デバイスに表示される場合のみです。 この場合、それぞれの色は以下の 3 つのカテゴリーのいずれかであると見なされます。
- この色は、モノクローム・デバイスの背景色にマップされます。
- カラーは、モノクローム・デバイスの前景色にマップされます。
- この色のモノクローム・マッピングは定義されていません。
色が前景色または背景色にマップされている場合、MRM はそれぞれ前景色または背景色に置換します。 カラーにモノクロ・マッピングを指定しない場合、MRM は、前景色または背景色にマッピングするために、カラー・ストリングを AIXwindows に渡します。
- RGB( 赤の整数値, 緑の整数値, BlueInteger )
- 3 つの整数は、色の赤、緑、および青のコンポーネントの値をこの順序で定義します。 これらのコンポーネントの値の範囲は、0 から 65,535 までです。
UID ファイルでは、UIL は RGB 値を 3 つの整数として表します。 MRM は、整数を装置固有のピクセル値に変換する X 変換関数を呼び出します。 モノクローム・サーバーで実行している場合、すべての色はモノクロに変換されます。 カラー・サーバーを使用している場合、カラー・マップがまだいっぱいになっていなければ、RGB 値は適切な色に変換されます。 カラー・マップが満杯の場合、値はモノクロ (前景または背景) に変換されます。
- COLOR_TABLE( Color Ex pression='文字'[,...])
- カラー式は、以前に定義されたカラー、 COLOR 関数でインラインで定義されたカラー、または BACKGROUND COLOR または FOREGROUND COLOR句です。 文字は、任意の有効な UIL 文字にすることができます。
COLOR_TABLE 関数は、色のセットを指定するための、装置に依存しない方法を提供します。 COLOR_TABLE 関数は、以前に定義された UIL カラー名またはインライン・カラー定義 ( COLOR 関数を使用) を受け入れます。 カラー・テーブルの内容は、アイコンを構成するために UIL コンパイラーによって認識される必要があるため、カラー・テーブルは専用でなければなりません。 ただし、カラー・テーブル内の色は、インポート、エクスポート、または専用にすることができます。
各色に関連付けられた単一文字は、アイコンの作成時にその色を表すために使用する文字です。 色を表すために使用される各文字は、色テーブル内で固有でなければなりません。
- ICON([ COL OR_TABLE=カラーテーブル名,] 行 [,...])
- カラー・テーブル名は、以前に定義されたカラー・テーブルを参照する必要があります。 行は、アイコンの 1 行を示す文字式です。
ICON 関数は、幅が x ピクセル、高さが y ピクセルの長方形アイコンを記述します。 単一引用符で囲まれたストリングは、アイコンを記述します。 各ストリングはアイコン内の 1 行を表し、ストリング内の各文字はピクセルを表します。
アイコン定義の最初の行によって、アイコンの幅が決まります。 すべての行の文字数は、最初の行と同じでなければなりません。 アイコンの高さは、行数によって決定されます。
ICON 関数の最初の引数 (カラー・テーブル指定) はオプションであり、このアイコンで使用可能な色を識別します。 各色に関連付けられた単一文字を使用して、アイコン内の各ピクセルの色を指定できます。 アイコンは、指定されたカラー・テーブルで定義された文字で構成する必要があります。
カラー・テーブルを指定する引数を省略すると、デフォルトのカラー・テーブルが使用されます。 デフォルトのカラー・テーブルを使用するには、アイコンの行にスペースとアスタリスクのみが含まれている必要があります。 デフォルトのカラー・テーブルは、次のように定義されます。
COLOR_TABLE( BACKGROUND COLOR = ' ', FOREGROUND COLOR = '*' )例のステートメントに示されている BACKGROUND COLOR 節と FOREGROUND COLOR 節のスペースとアスタリスクを置き換えることによって、背景色と前景色を表すその他の文字を定義することができます。 アイコンは、プライベート、インポート、またはエクスポートとして指定できます。 MRM MrmFetchIconLiteral 関数を使用して、実行時にエクスポートされたアイコンを取得します。
- XBITMAPFILE (StringExpression)
- XBITMAPFILE 関数は、 x ピクセルの幅と y ピクセルの高さの長方形アイコンを記述するという点で ICON 関数と似ています。 ただし、 XBITMAPFILE 関数を使用すると、X ビットマップの定義を含む外部ファイルを指定できますが、すべての ICON 関数定義は UIL 内に直接コーディングする必要があります。 X ビットマップ・ファイルは、多くの異なる X アプリケーションによって生成できます。 UIL は XBITMAPFILE 関数を介してこれらのファイルを読み取りますが、これらのファイルの作成はサポートしていません。 XBITMAPFILE 関数への引数として指定された X ビットマップ・ファイルは、アプリケーションの実行時に MRM によって読み取られます。
XBITMAPFILE 関数は、ピックスマップ・タイプの値を戻し、ピックスマップ・データ・タイプが予期される任意の場所で使用できます。
- シングルフロート( RealNumberLiteral )
- SINGLE_FLOAT 関数を使用すると、浮動小数点リテラルを単精度浮動小数点数として UIL ファイルに保管することができます。 単精度の浮動小数点数は、倍精度の浮動小数点数よりも少ないメモリーを使用して保管できることがよくあります。 は、整数リテラルまたは浮動 RealNumberLiteral 小数点リテラルである。 この関数を使用して定義された値を算術式で使用することはできません。
- FLOAT( RealNumberLiteral )
- FLOAT 関数を使用すると、浮動小数点リテラルを倍精度の浮動小数点数として UIL ファイルに保管できます。 は、整数リテラルまたは浮動 RealNumberLiteral 小数点リテラルである。
- FONT( 文字列式 [, 文字コードセット=文字コードセット])
- FONT 関数を使用してフォントを定義します。 FONT 関数を使用して、フォントを指定する値を指定し、フォント値を必要とする引数にその値を使用します。 UIL コンパイラーには、組み込みフォントはありません。
各フォントは、文字セットのコンテキストでのみ意味があります。 FONT 関数には、フォントの文字セットを指定できる追加パラメーターがあります。 このパラメーターはオプションです。省略した場合、デフォルトの文字セットは LANG 環境変数の値によって異なります。 LANG が設定されていない場合、デフォルトの文字セットは に設定されます XmFALLBACK_CHARSET。
文字列式はフォント名を指定し、 CHAR AC TER_SET=CharSet句はフォントの文字セットを指定します。 FONT 関数で使用されるストリング式を複合ストリングにすることはできません。
- FONTSET( 文字列式 [,...][, 文字セット=文字セット])
- フォント・セットは、 FONTSET 関数を使用して定義します。 FONTSET 関数を使用して、フォントを指定する一連の値を指定し、fontset 値を必要とする引数にそれらの値を使用します。 UIL コンパイラーには、組み込みフォントはありません。
各フォントは、文字セットのコンテキストでのみ意味があります。 FONTSET 関数には、フォントの文字セットを指定できる追加パラメーターがあります。 このパラメーターはオプションです。省略した場合、デフォルトの文字セットは LANG 環境変数の値によって異なります。 LANG が設定されていない場合、デフォルトの文字セットは に設定されます XmFALLBACK_CHARSET。
文字列式はフォント名を指定し、 CHAR AC TER_SET=CharSet句はフォントの文字セットを指定します。 FONTSET 関数で使用されるストリング式を複合ストリングにすることはできません。
- FONT_TABLE( FontExpression [,...])
- フォント・テーブルは、フォントと文字セットのペアのシーケンスです。 オブジェクトがストリングを表示する必要がある実行時に、オブジェクトはフォント・テーブルをスキャンして、表示されるストリングの文字セットと一致する文字セットを探します。 UIL には、このような引数を指定できるようにする FONT_TABLE 関数が用意されています。 フォント式は、 FONT 関数および FONTSET 関数を使用して作成されます。
単一のフォント値を指定して、フォント・テーブルを必要とする引数を指定すると、UIL コンパイラーは自動的にフォント値をフォント・テーブルに変換します。
- COMPOUND_STRING( 文字列式 [, プロパティ [,...]])
- COMPOUND_STRING 関数は、ヌル終了ストリングのプロパティーを設定し、それを複合ストリングに変換するために使用します。 設定できるプロパティーは、文字セット、書き込み方向、および区切り文字です。
COMPOUND_STRING 関数の結果は、値としてストリング式を持つ複合ストリングです。 オプションで、以下の節を 1 つ以上組み込んで、結果の複合ストリングのプロパティーを指定することができます。
CHAR ACTER_SET=文字コードセット RIGHT_TO_LEFT= ブ ール式SEPARATE=ブール式
CHARACTER_SET 節は、ストリングの文字セットを指定します。 CHARACTER_SET 節を省略すると、結果のストリングは StringExpressionと同じ文字セットになります。
RIGHT_TO_LEFT 節は、 BooleanExpression が True の場合に、ストリングの書き込み方向を右から左に設定します。 それ以外の場合、書き込み方向は左から右です。 この引数を指定しても、ストリング式の値は変更されません。 RIGHT_TO_LEFT 引数を省略した場合、結果のストリングは StringExpressionと同じ書き込み方向になります。
SEPARATE 文節は、 BooleanExpression が True の場合に、複合ストリングの末尾に分離文字を追加します。 SEPARATE 節を省略すると、結果のストリングに区切り文字は付きません。
インポートまたはエクスポートされた値を COMPOUND_STRING 関数のオペランドとして使用することはできません。
- 複合文字列テーブル( 文字列式 [,...])
- 複合ストリング・テーブルは、複合ストリングの配列です。 文字列値のリストを必要とするオブジェクト(例: List ウィジェットの`arguments` XmNitems や XmNselectedItems `arguments`引数)は、文字列テーブルの値を使用します。 COMPOUND_STRING_TABLE 関数は、 リスト ・ウィジェットのこれら 2 つの引数の値を作成します。 COMPOUND_STRING_TABLE 関数は、タイプ string_table の値を生成します。 名前 STRING_TABLE は、 COMPOUND_STRING_TABLEの同義語です。
ストリング・テーブル内のストリングは、UIL コンパイラーが自動的に複合ストリングに変換する単純ストリングにすることができます。
- ASCIZ_STRING_TABLE( 文字列式 [,...])
- ASCIZ ストリング・テーブルは、コンマで区切られた ASCIZ (ヌル終了) ストリング値の配列です。 この関数を使用すると、複数の ASCIZ ストリングをコールバック・タグ値として渡すことができます。 ASCIZ_STRING_TABLE 関数は、タイプ asciz_tableの値を生成します。 ASCIZ_TABLE という名前は、 ASCIZ_STRING_TABLEの同義語です。
- WIDE_CHARACTER (StringExpression)
- WIDE_CHARACTER 関数は、現行ロケールのヌル終了ストリングからワイド文字ストリングを生成するために使用します。
- CLASS_REC_NAME (StringExpression)
- CLASS_REC_NAME 関数は、ウィジェット・クラス名を生成するために使用します。 ツールキットによって定義されたウィジェット・クラスの場合、ストリング引数はクラスの名前です。 ユーザー定義ウィジェットの場合、文字列引数は、ウィジェットの作成関数の名前です。
- INTEGER_TABLE( 整数式 [,...])
- 整数テーブルは、コンマで区切られた整数値の配列です。 この関数を使用すると、コールバック・タグ値ごとに複数の整数を渡すことができます。 INTEGER_TABLE 関数は、 integer_tableタイプの値を生成します。
- 引数( 文字列式 [, 引数型 ])
- ARGUMENTS 関数は、ユーザー定義ウィジェットに対する引数を定義します。 UIL によって記述できる各オブジェクトは、一連の引数を許可します。 例えば、 XmNheight は、ほとんどのオブジェクトに対する引数であり、整数データ型です。 ユーザー定義ウィジェットの高さを指定するには、組み込み引数名 XmNheight を使用し、ユーザー定義ウィジェットを宣言するときに整数値を指定します。 UIL コンパイラーに組み込まれる引数を指定するために ARGUMENTS 関数を使用しないでください。
StringExpression 名は、UIL コンパイラーが UID ファイルの引数に使用する名前です。 ArgumentType は、引数に関連付けることができる値のタイプです。 2 番目の引数を省略すると、デフォルトのタイプは ANY になり、値タイプの検査は行われません。 引数の型を指定するには、以下のいずれかのキーワードを使用します。
- any
- Asciz_Table
- BOOLEAN
- カラー
- カラー・テーブル
- コンポーネント・ストリング
- 浮動小数点
- フォント
- フォント表
- フォント・セット
- アイコン
- INTEGER
- 整数表 (Integer_Table)
- REASON
- 単一浮動小数点 (Single_Float)
- STRING
- String_Table (文字列テーブル)
- 変換テーブル (Translation_Table)
- 伝送文字 (Wide_Character)
- ウィジェット (widget)
ARGUMENTS 関数を使用して、UIL コンパイラーが AIXwindowsの拡張機能を認識できるようにすることができます。 例えば、既存のウィジェットは新しい引数を受け入れることができます。 ARGUMENTS 関数を使用すると、更新されたバージョンのコンパイラーがリリースされる前に、この新しい引数を UIL コンパイラーで使用できるようにすることができます。
- REASON (StringExpression)
- REASON 関数は、ユーザー定義ウィジェットの新しい理由を定義するのに役立ちます。
AIXwindows の各オブジェクトは、ユーザー定義関数を呼び出すための一連の条件を定義します。 これらの状態は、 コールバック理由と呼ばれます。 ユーザー定義関数は、 コールバック・プロシージャーと呼ばれます。 UIL モジュールでは、コールバック・リストを使用して、どのユーザー定義関数をどの理由で呼び出すかを指定します。
ユーザー定義ウィジェットを宣言するときに、 REASON 関数を使用して、そのウィジェットのコールバック理由を定義できます。 ストリング式は、理由のために UID ファイルに保管される引数名を指定します。 この理由名は、実行時にウィジェット作成機能に提供されます。
- TRANSLATION_TABLE( 文字列式 [,...])
- 各 AIXwindows ウィジェットには、X イベント (例えば、マウス・ボタン 1 を押すなど) を一連のアクションにマップする変換テーブルがあります。 共通翻訳引数などのウィジェット引数を使用して、特定のウィジェットのイベントまたはアクションの代替セットを指定できます。 TRANSLATION_TABLE 関数は、translation_table データ・タイプの引数の値として使用できる変換テーブルを作成します。
TRANSLATION_TABLE 関数では、 #override、 #augment、または #replaceのいずれかの変換テーブル・ディレクティブを使用できます。 デフォルトは #replaceです。 これらのディレクティブのいずれかを指定する場合は、変換テーブルの最初のエントリーでなければなりません。
#override ディレクティブにより、重複する変換は無視されます。 例えば、< Btn1Down > の翻訳が現在の翻訳で既に定義されている場合、によって定義された翻訳 PushButton, が現在の NewTranslations 定義を上書きします。 #augment ディレクティブが指定されている場合は、現在の定義が優先されます。 #replace ディレクティブは、すべての現行変換を、 XmNtranslations リソースで指定された変換に置き換えます。
ファイル
- /usr/include/uil/Uil.h
- /usr/include/uil/UilDBDef.h
- /usr/include/uil/UilDef.h
- /usr/include/uil/UilSymDef.h
- /usr/include/uil/UilSymGl.h