| Interstage Application Server アプリケーション作成ガイド (CORBAサービス編) |
目次
索引
![]()
|
| 第5章 アプリケーションの開発(C++言語) | > 5.5 データ型に対するマッピング |
IDL言語で属性宣言(attribute)を定義すると、オブジェクトのデータ設定/取得を行う関数(関数名はIDLで定義された変数名)にマッピングされます。
以降では、以下のIDL定義例をもとに説明します。
module ODsample{
interface attrtest{
attribute long para1;
attribute string para2;
readonly attribute long para3;
};
};
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); // データ取得関数
データ設定関数でデータ設定に使用するデータ域は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;
データ設定関数でデータ設定に使用するデータ域はinパラメタと同様に扱われ、スケルトンで自動的に獲得/解放されます。データ取得関数でデータ取得に使用するデータ域は、復帰パラメタと同様に扱われます。このため、可変長データでは、データ域獲得関数で領域獲得する必要があります。獲得した領域はスケルトンで自動的に解放されます。
CORBA::Long
ODsample_attrtest_impl::para1( // データ取得関数
CORBA::Environment & )
throw( CORBA::Exception )
{
CORBA::Long para1;
return( para1 );
}
void
ODsample_attrtest_impl::para1( // データ設定関数
CORBA::Long data,
CORBA::Environment & )
throw( CORBA::Exception )
{
CORBA::Long para1;
para1 = data;
}
CORBA::Char*
ODsample_attrtest_impl::para2( // データ取得関数
CORBA::Environment & )
throw( CORBA::Exception )
{
static CORBA::Char* p;
p = "test";
return( p );
}
void
ODsample_attrtest_impl::para2( // データ設定関数
const CORBA::Char* data,
CORBA::Environment & )
throw( CORBA::Exception )
{
CORBA::String_var para2("");
para2 = data;
return;
}
CORBA::Long
ODsample_attrtest_impl::para3( // データ取得関数
CORBA::Environment & )
throw( CORBA::Exception )
{
CORBA::Long para3;
return( para3 );
}
目次
索引
![]()
|