Interstage Application Server アプリケーション作成ガイド (CORBAサービス編)
目次 索引 前ページ次ページ

第5章 アプリケーションの開発(C++言語)> 5.5 データ型に対するマッピング

5.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()

 パラメタで指定されたインタフェースオブジェクトの複製を作成します。

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

_narrow()

 パラメタで指定されたオブジェクトの情報を複製し、そのオブジェクトをインタフェースオブジェクト型に変換して返します。

  // 使用例
  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);

目次 索引 前ページ次ページ

All Rights Reserved, Copyright(C) 富士通株式会社 2005