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

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

5.2.10 属性宣言(attribute)のマッピング

(1)IDLマッピング

 IDL言語で属性宣言(attribute)を定義すると、オブジェクトのデータ設定/取得を行う関数(関数名はIDLで定義された変数名)にマッピングされます。
 以降では、以下のIDL定義例をもとに説明します。

IDL言語

  module ODsample{
      interface       attrtest{
          attribute long  para1; 
          attribute string para2; 
          readonly attribute long para3; 
      };
  };

C++言語

  CORBA::Long   para1;
  av->para1(100,*env);            // データ設定関数
  para1 = av->para1(*env);        // データ取得関数

  CORBA::Char*  p; 
  p = CORBA::string_alloc(7); 
  av->para2( p,*env );            // データ設定関数
  p = av->para2( *env );          // データ取得関数

  CORBA::Long   para3;
  para3 = av->para3(*env);        // データ取得関数

(2)クライアントアプリケーションで扱うパラメタ

 データ設定関数でデータ設定に使用するデータ域はinパラメタと同様に扱われます。また、データ取得関数でデータ取得に使用するデータ域は復帰パラメタと同様に扱われます。このため、可変長データでは、その領域が不要になった時点で領域を解放する必要があります。

  ODsample::attrtest_var  av
  env = new CORBA::Environment;

  CORBA::Long   para1; 
  para1 = av->para1(*env); 
  av->para1(100, *env); 
  para1 = av->para1(*env); 
  cout << para1 << endl; 

  CORBA::Char*  p; 
  p = CORBA::string_alloc(7); 
  strcpy( p, "STRING" ); 
  av->para2( p,*env ); 
  CORBA::string_free( p ); 

  p = av->para2( *env ); 
  cout << p << endl; 
  CORBA::string_free( p ); 

  para3 = av->para3(*env); 
  cout << para3 << endl;

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

Copyright 2006 FUJITSU LIMITED