bea ホーム | 製品 | dev2dev | support | askBEA
BEA Logo Tuxedo
 ドキュメントのダウンロード   サイトマップ   用語集 
検索
0

Tuxedo コマンド・リファレンス

 Previous Next Contents View as PDF  

idl(1)

名前

idl−Object Management Group (OMG) のインターフェイス定義言語ファイル (IDL) をコンパイルし、インターフェイスに必要なファイルを生成

形式

idl [-i] [-D identifier[=value]] [-I pathname][-h] [-P] [-T]
idl-filename... [ icf-filename...]

機能説明

提供されている idl-filename() ファイルおよびオプションの icf-filename() ファイルを指定すると、idl コマンドは以下のファイルを生成します。

idl-filename_c.cpp

クライアント・スタブ。ユーザ定義のデータ型の関数が埋め込まれます。

idl-filename_c.h

インターフェイスのクラス定義。

idl-filename_s.cpp

POA_skeleton クラスのインプリメンテーションを含むサーバ・スケルトン。

idl-filename_s.h

POA_skeleton クラス定義。

idl-filename_i.cpp

インプリメンテーションの例。このファイルは、-i オプションが指定されている場合にのみ生成されます。

idl-filename_i.h

POA_skeleton クラスから継承される、インプリメンテーションの例のクラス定義。このファイルは、-i オプションが指定されている場合にのみ生成されます。

注記 ICF ファイルが指定されている場合は、その ICF ファイル内の情報を基に、デフォルト値を変更するインターフェイス/インプリメンテーションに関する情報がコード・ジェネレータに渡されます。通常、インプリメンテーションの活性化方針およびトランザクション方針は ICF ファイルに指定されます。ICF ファイルが指定されていない場合は、OMG IDL ファイルで指定されるすべてのインターフェイスに対してデフォルトの方針が有効になり、すべてのインターフェイスに対してスケルトン・コードが生成されます。icf-filename ファイルを idl コマンドへの入力として指定すると、icf-filename に指定されたインプリメンテーション/インターフェイスのペアのみが、サーバの一部として生成されます。

IDL コンパイラは、生成するクライアント・スタブの情報を filename_c.cpp ファイルおよび filename_c.h ファイルに格納します。生成されたサーバ・スケルトンの情報は、filename_s.cpp ファイルおよび filename_s.h ファイルに格納されます。

IDL コンパイラは、既に生成されているクライアント・スタブ・ファイル (filename_c.cpp および filename_c.h)、および既に生成されているサーバ・スケルトン・ファイル (filename_s.cpp および filename_s.h) を上書きします。以前のバージョンのファイルはすべて破棄されます。

-i オプションを使用すると、IDL コンパイラはサンプルのインプリメンテーション・クラス定義ファイル (filename_i.h) を上書きします。以前のバージョンのファイルは破棄されます。サンプルのインプリメンテーション・ファイル (filename_i.cpp) も上書きされますが、コード保護ブロック内のコードは上書きされず、新しく生成されるファイルに復元されます。データが失われるのを避けるために、サンプルのインプリメンテーション・ファイル (filename_i.h および filename_i.cpp) を再生成する場合は、あらかじめそれらのファイルを安全な場所にコピーしておくことをお勧めします。

不明なオプションがこのコマンドに渡されると、そのオプションおよび使用方法を通知するメッセージがユーザに表示され、コンパイルは実行されません。

パラメータ

idl filename

OMG IDL 文を含む 1 つまたは複数のファイルの名前。

オプション

-D identifier[=definition]

C++ プリプロセッサ・ディレクティブの #define と同じ働きをします。つまり、-D オプションは、定義ファイル内にある特定の識別子の代わりに使用するトークン文字列またはマクロを定義します。definition が指定されていない場合、identifier は 1 に定義されます。複数の -D オプションを指定することができます。-D オプションと名前との間の空白はなくてもかまいません。

-I pathname

OMG IDL プリプロセッサ・ディレクティブ #include で指定するディレクトリのほか、インクルード・ファイルを検索するディレクトリを指定します。複数のディレクトリを指定する場合は、複数の -I オプションを指定します。

OMG IDL プリプロセッサ・ディレクティブ #include には、システム (<a.idl> など) およびユーザ ("a.idl" など) の 2 種類があります。システム・ディレクティブ #include のパスは、システム・インクルード・ディレクトリおよび -I オプションで指定されるディレクトリで構成されます。ユーザ・ディレクティブ #include のパスは、#include ディレクティブを含むファイルの場所と、その後に続く、システム・ディレクティブ #include に指定されたパスで構成されます。

デフォルトでは、#include ディレクティブで取り込むファイル内のテキストは、クライアント・コードおよびサーバ・コードには取り込まれません。

-i

idl-filename_i.cpp ファイルを生成します。これらのファイルには、OMG IDL ファイルで指定されたインターフェイスをインプリメントするインプリメンテーション用のサンプル・テンプレートが入っています。

注記 idl コマンドに -i オプションを使用してインプリメンテーション・ファイルを更新する手順は以下のとおりです。

  1. インプリメンテーション・ファイルをバックアップします。

  2. BEA ObjectBroker から BEA Tuxedo に移行する場合は、生成されているインプリメンテーション・ファイルでコード保護ブロックの区切り文字の “OBB_PRESERVE_BEGIN” および “OBB_PRESERVE_END”“M3_PRESERVE_BEGIN” および “M3_PRESERVE_END” に変更します。

  3. インクルード・ファイルをメソッド・インプリメンテーション・ファイル (*_i.cpp) に追加した場合は、そのファイルを編集して、取り込んだ要素を INCLUDES 保護ブロック内に移動します。

  4. idl コマンドで -i オプションを使用して、編集したインプリメンテーション・ファイルを再生成します。

  5. 再生成する前のインプリメンテーション定義ファイル (*_i.h) に修正を加えていた場合は、新しく生成された定義ファイルにその修正箇所を反映させます。修正箇所はコード保護ブロック内に配置します。これにより、以降更新を行ってもその修正箇所は自動的に保護されるようになります。BEA Tuxedo リリース 7.1 では、インプリメンテーションのコンストラクタ関数およびデストラクタ関数の文法が変更されているため注意が必要です。

  6. メソッド・インプリメンテーション・ファイル (*_i.cpp) の保護ブロックの外側に、またはインプリメンテーションのコンストラクタ関数またはデストラクタ関数に修正を加えていた場合は、新しく生成されたファイルを編集して、その修正箇所を反映させます。修正箇所はコード保護ブロック内に配置します。これにより、以降更新を行ってもその修正箇所は自動的に保護されるようになります。

-P

TP フレームワークの代わりに POA を使用するサーバ・コードを生成します。このオプションを指定すると、スケルトン・クラスは TP フレームワークの Tobj_ServantBase クラスからは継承されず、PortableServer::ServantBase クラスから直接継承されます。デフォルトでは、スケルトン・クラスには TP フレームワークが使用されます。したがって、共同クライアント/サーバを開発する場合、これらのサーバは TP フレームワークを使用しないので、このスイッチを使用する必要があります。

サーバントの継承ツリー内に Tobj_ServantBase クラスがない場合、そのサーバントには activate_object メソッドおよび deactivate_object メソッドはありません。CORBA サーバの場合、これらのメソッドは、サーバントでのメソッド呼び出しの前に TP フレームワークによって呼び出されて、動的にサーバントを初期化して保存するために使用されます。CORBA 共同クライアント/サーバでは、ユーザが記述するコードで明示的にサーバントを作成して、サーバントの状態を初期化する必要があるため、Tobj_ServantBase 操作は不要です。-P オプションを指定した場合は、TP フレームワークが使用できないので、ICF ファイルが使用されることはありません。

-T

tie ベースのサーバント・コードを生成します。このコードでは、デレゲーションを使用して C++ インプリメンテーション・クラスのインスタンスをサーバントに結合できます。このオプションを使用すると、継承によるスケルトンに関係しないクラスで CORBA オブジェクト操作をインプリメントできます。デフォルトでは、このオプションはオフに設定されます。

-h または -?

idl コマンドの使用方法に関するヘルプを提供します。それ以外に行われるアクションはありません。

使用例

idl emp.idl
idl emp.idl emp.icf

関連項目

genicf(1)

 

Back to Top Previous Next
Contact e-docsContact BEAwebmasterprivacy