ページの先頭行へ戻る
Interstage Application Server V13.0.0 アプリケーション作成ガイド(CORBAサービス編)
FUJITSU Software

4.5.9 インタフェース宣言(interface)のマッピング

(1)IDLマッピング

IDL言語でインタフェース宣言を定義すると、C++言語ではクラスにマッピングされます。
以降では、以下のIDL定義例をもとに説明します。


IDL言語
interface A {
    ...    // オペレーション定義
};

C++言語
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()

パラメタで指定されたインタフェースオブジェクトの複製を作成します。メモリ不足により複製の作成に失敗した場合、_duplicate()はNULLを返します。

// 使用例
A_ptr  obj; 
obj ...      // objectを何らかの方法で獲得
A_ptr obj_copy = A::_duplicate( obj );

_narrow()

パラメタで指定されたオブジェクトの情報を複製し、そのオブジェクトをインタフェースオブジェクト型に変換して返します。メモリ不足により複製の作成に失敗した場合、_narrow()はNULLを返します。

// 使用例
CORBA::Object_ptr obj = NamingContext_obj->resolve( *name , env ); 
                                  // NamingServiceからオブジェクトを取得
A_ptr target = A::_narrow( obj ); // CORBA::Object_ptr型をA_ptrに変換

_nil()

NILオブジェクトリファレンスを返します。

// 使用例
A_ptr obj; 
obj = A::_nil(); // NILを設定

is_nil()

指定されたオブジェクトがNILかを調べます。NILであればCORBA_TRUEを、そうでない場合はCORBA_FALSEを返します。

// 使用例
A_ptr obj; 
CORBA::Environment env; 
... 
obj->is_nil(env);

release()

指定されたオブジェクトを解放します。

A_ptr obj; 
CORBA::Environment env; 
... 
obj->release(env);