(1)IDLマッピング
IDL言語でインタフェース宣言を定義すると、C++言語ではクラスにマッピングされます。
以降では、以下のIDL定義例をもとに説明します。
interface A {
... // オペレーション定義
};typedef A *A_ptr;
class A : public virutual CORBA::Object {
public:
static A_ptr _duplicate( A_ptr );
static A_ptr _narrow( CORBA::Object_ptr );
static A_ptr _nil();
// オペレーション定義
...
};CORBA::Objectクラスを継承しているため、CORBA::Objectクラスのメンバ関数も使用できます。
メソッド | 意味 |
|---|---|
_duplicate() | パラメタで指定されたインタフェースオブジェクトの複製を作成します。 |
_narrow() | パラメタで指定されたオブジェクトの情報を複製し、そのオブジェクトをインタフェースオブジェクト型に変換して返します。 |
_nil() | NILオブジェクトを返します。 |
is_nil() | 指定されたオブジェクトがNILかを調べます(CORBA::Objectクラス継承関数)。 |
release() | 指定されたオブジェクトを解放します(CORBA::Objectクラス継承関数)。 |
(2)インタフェースクラスのメソッドの使用方法
パラメタで指定されたインタフェースオブジェクトの複製を作成します。メモリ不足により複製の作成に失敗した場合、_duplicate()はNULLを返します。
// 使用例 A_ptr obj; obj ... // objectを何らかの方法で獲得 A_ptr obj_copy = A::_duplicate( obj );
パラメタで指定されたオブジェクトの情報を複製し、そのオブジェクトをインタフェースオブジェクト型に変換して返します。メモリ不足により複製の作成に失敗した場合、_narrow()はNULLを返します。
// 使用例
CORBA::Object_ptr obj = NamingContext_obj->resolve( *name , env );
// NamingServiceからオブジェクトを取得
A_ptr target = A::_narrow( obj ); // CORBA::Object_ptr型をA_ptrに変換NILオブジェクトリファレンスを返します。
// 使用例 A_ptr obj; obj = A::_nil(); // NILを設定
指定されたオブジェクトがNILかを調べます。NILであればCORBA_TRUEを、そうでない場合はCORBA_FALSEを返します。
// 使用例 A_ptr obj; CORBA::Environment env; ... obj->is_nil(env);
指定されたオブジェクトを解放します。
A_ptr obj; CORBA::Environment env; ... obj->release(env);