Hitachi

Cosminexus V11 アプリケーションサーバ 機能解説 拡張編


9.3.2 OTMで文字や文字列を扱う場合

OTMで文字列を扱う場合のデータ型を次の表に示します。

表9‒5 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));