bea ホーム | 製品 | dev2dev | support | askBEA |
![]() |
![]() |
|
![]() |
e-docs > Tuxedo > Tuxedo CORBA プログラミング・リファレンス > CORBA API |
Tuxedo CORBA プログラミング・リファレンス
|
概要
文字列に割り当てられたメモリを解放します。
C++ バインディング
void CORBA::string_free(char * Str);
引数
説明
このメンバ関数は、CORBA::string_alloc() または CORBA::string_dup() メンバ関数で文字列に割り当てられたメモリの割り当てを解除します。この関数にニル・ポインタを渡すと、すべてのアクションが実行されなくなります。
この関数では、CORBA 例外はスローされない場合があります。
戻り値
特にありません。
例
char* s = CORBA::string_dup("hello world");
CORBA::string_free(s);
関連項目
CORBA::string_alloc
CORBA::string_dup
ワイド文字列
C++ では、バウンディッド・ワイド文字列型とアンバウンディッド・ワイド文字列型は共に CORBA::WChar* にマッピングします。また、CORBA モジュールでは、WString_var および WString_out クラスを定義します。これらの各クラスは、同じメンバ関数に、対応する文字列として同じセマンティクスを提供します。ただし、これらのクラスがワイド文字列およびワイド文字を扱う場合は例外です。
ワイド文字列の動的な割り当てまたは割り当て解除は、次の関数で実行します。
// C++
namespace CORBA {
// ...
WChar *wstring_alloc(ULong len);
WChar *wstring_dup(const WChar* ws);
void wstring_free(WChar*);
};
上記のメンバ関数は、ワイド文字列を処理する点を除いて、文字列型の同じ関数として同じセマンティクスを持っています。
一般的なマッピング・インプリメンテーションでは、直接 C++ 入出力ストリームで WString_var および WString_out を使用するために、オーバーロードの operator<< (挿入) と operator>> (抽出) が提供されます。
これらのメンバ関数については、「文字列」の対応する関数を参照してください。
リスト14-1 では、ワイド文字列およびワイド文字を使用したコード例を示します。
コード リスト 14-1 ワイド文字列の例
// ユーザから文字列を取得
cout << "String?";
char mixed[256]; // これは十分な大きさ
char lower[256];
char upper[256];
wchar_t wmixed[256];
cin >> mixed;
// 文字列をワイド文字列に変換
// これはサーバの要求によるもの
mbstowcs(wmixed, mixed, 256);
// 文字列を大文字に変換
CORBA::WString_var v_upper = CORBA::wstring_dup(wmixed);
v_simple->to_upper(v_upper.inout());
wcstombs(upper, v_upper.in(), 256);
cout << upper << endl;
// 文字列を小文字に変換
CORBA::WString_var v_lower = v_simple->to_lower(wmixed);
wcstombs(lower, v_lower.in(), 256);
cout << lower << endl;
// すべて正常に完了
return 0;
TypeCode メンバ関数
TypeCode は、OMG IDL の型情報を表します。
TypeCode のコンストラクタは定義しません。ただし、マッピング・インターフェイス、および各基本型と各定義済み OMG IDL 型には、インプリメンテーションで TypeCode 擬似オブジェクト・リファレンス (TypeCode_ptr) へのアクセスが提供されます。この擬似オブジェクト・リファレンスには、_tc_<type> という形式が付きます。この形式は、Any での型を設定したり、equal の引数として使用したりできます。これらの TypeCode リファレンス定数の名前では、<type> は定義したスコープの範囲内にある型のローカル名を参照します。各 C++ _tc_<type> 定数は、一致した型と同じスコープ・レベルで定義します。
ほかのサーバレス・オブジェクトと同様に、TypeCode への C++ マッピングには _nil() オペレーションがあります。このオペレーションは、TypeCode へのニル・オブジェクト・リファレンスを返します。また、作成された型に埋め込まれた TypeCode リファレンスの初期化にも使用できます。ただし、ニル TypeCode リファレンスは、引数としてオペレーションに渡すことができません。これは、TypeCodes がオブジェクト・リファレンスではなく値として渡されるためです。
ExceptionList メンバ関数の C++ へのマッピングは次のとおりです。
class CORBA
{
class TypeCode
{
public:
class Bounds { ... };
class BadKind { ... };
Boolean equal(TypeCode_ptr) const;
TCKind kind() const;
Long param_count() const;
Any *parameter(Long) const;
RepositoryId id () const;
}; // TypeCode
}; // CORBA
メモリ管理
TypeCode には、次の特別なメモリ管理規則があります。
以下の節では、TypeCode の各メンバ関数について説明します。
![]() |
![]() |
![]() |
![]() |
||
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |