9.3.2 OTMで文字や文字列を扱う場合
OTMで文字列を扱う場合のデータ型を次の表に示します。
項番 |
リモートインタフェースでの定義 |
クライアントで使用するデータ型 |
---|---|---|
1 |
string |
::TSC::TSCWStringValue |
2 |
char |
::TSC::TSCWChar |
(1) ::TSC::TSCWStringValue
::TSC::TSCWStringValueはIDLで次のように定義しています。
module TSC { typedef sequence<octet> TSCWString; struct TSCWStringValue { TSCWString value; }; };
実際にwchar_t*の文字列として使用するために,次の機能を提供します。
(a) C++インタフェース
-
インクルードファイル
#include “Converter_TSC_c.hh”(スタブヘッダ)
-
提供関数
- void TSCsetWString( ::TSC::TSCWString&, const ::CORBA::WChar* )
-
【用途】
ワイド文字列を::TSC::TSCWStringに設定します。
【IO】
::TSC::TSCWString& :out :設定する::TSC::TSCWString型の変数
const ::CORBA::WChar*:in :設定したいワイド文字列
- ::CORBA::WChar* TSCgetWString( ::TSC::TSCWString )
-
【用途】
::TSC::TSCWStringに設定されているワイド文字列を取り出します。
【IO】
::TSC::TSCWString :in :ワイド文字列を持つオブジェクト
【戻り値】
::TSC::TSCWStringから取り出したワイド文字列
【注意事項】
OTM V3で使用する場合,戻り値はdelete[]を使用して解放してください。
-
サンプルコード
CORBA::WChar* wstr_data = new CORBA::WChar[5]; wstr_data[0] = L’さ’; wstr_data[1] = L’ん’; wstr_data[2] = L’ぷ’; wstr_data[3] = L’る’; wstr_data[4] = 0; ::TSC::TSCWStringValue tsc_wstr_value_data; // ワイド文字列の設定 TSCsetWString( tsc_wstr_value_data.value, wstr_data ); // 使い終わった領域の解放 delete[] wstr_data; // ワイド文字列の取り出し wstr_data = TSCgetWString( tsc_wstr_data.value ); // 取り出した領域の解放 delete[] wstr_data;
(b) Javaインタフェース
Javaインタフェースは提供されません。
-
サンプルコード
String wstr_data = new String("さんぷる"); System.out.println(wstr_data); TSC.TSCWStringValue tsc_wstr_value_data = new TSC.TSCWStringValue(); // ワイド文字列の設定 tsc_wstr_value_data.value = wstr_data.getBytes("UTF-16"); // ワイド文字列の取り出し wstr_data = new String( tsc_wstr_value_data.value );
(2) ::TSC::TSCWChar
::TSC::TSCWCharはIDLで次のように定義しています。
module TSC { typedef octet TSCWChar[3]; };
実際にwchar_tの文字として使用するために,次の機能を提供します。
(a) C++インタフェース
-
インクルードファイル
#include “Converter_TSC_c.hh”(スタブヘッダ)
-
提供関数
- void TSCsetWChar( ::TSC::TSCWChar , ::CORBA::WChar )
-
【用途】
ワイド文字を::TSC::TSCWCharに設定します。
【IO】
::TSC::TSCWChar :out: 設定する領域
const ::CORBA::WChar :in : 設定したいワイド文字
【戻り】
なし
- ::CORBA::WChar TSCgetWChar( ::TSC::TSCWChar )
-
【用途】
::TSC::TSCWCharに設定されているワイド文字を取り出します。
【IO】
const ::TSC::TSCWChar :in :ワイド文字を持つオブジェクト
【戻り】
::TSC::TSCWCharから取り出したワイド文字
-
サンプルコード
::TSC::TSCWChar tsc_wchar_data; // ワイド文字の設定 TSCsetWChar( tsc_wchar_data, L'あ' ); // ワイド文字の取り出し CORBA::WChar wchar_data = TSCgetWChar( tsc_wchar_data );
(b) Javaインタフェース
Javaインタフェースは提供されません。
-
サンプルコード
TSC.TSCWCharHolder tsc_wchar_data = new TSC.TSCWCharHolder(); tsc_wchar_data.value = new byte[3]; char wch_data = 'あ'; // ワイド文字の設定 tsc_wchar_data.value[0] = (byte)2; tsc_wchar_data.value[1] = (byte)((wch_data >> 8) & 0xff); tsc_wchar_data.value[2] = (byte)( wch_data & 0xff); // ワイド文字の取り出し wch_data = (char)(((char)tsc_wchar_data.value[1] & 0xff) << 8 | ((char)tsc_wchar_data.value[2] & 0xff));