13.1.9.4 メンバー関数
次に、ベース・タイプがTYPEで指定のOMG IDLシーケンスがSEQの場合に、生成されるシーケンス・クラスのメンバー関数について説明します:
-
SEQ (); - これは、シーケンスのデフォルト・コンストラクタです。長さは0(ゼロ)に設定されています。シーケンスが無制限の場合でも、最大値は0(ゼロ)に設定されます。シーケンスが制限付きの場合は、最大値はOMG IDLの型で指定され、変更はできません。
-
SEQ (CORBA::ULong Max); - このコンストラクタは、シーケンスが無制限の場合にのみ指定します。この関数は、シーケンスの長さを0(ゼロ)に設定し、バッファの最大値を指定の値に設定します。
Max引数には、シーケンスの最大長を指定します。 -
SEQ (CORBA::ULong Max, CORBA::ULong Length, TYPE * Value, CORBA::Boolean Release); - このコンストラクタは、シーケンスの最大値、長さ、および要素を設定します。シーケンスが破棄されたときに要素を解放するかどうかは、
Releaseフラグで指定します。各引数について次に説明します。-
Max - シーケンスの最大値。制限付きシーケンスでは、この引数はありません。
-
Length - シーケンスの現在の長さ。制限付きシーケンスの場合、この値はOMG IDLの型で指定した最大値より小さい値を指定する必要があります。
-
Value - シーケンスの要素を格納するバッファへのポインタ。
-
Release - 要素を解放するかどうかを決定します。このフラグの値が
CORBA_TRUEの場合、シーケンスはValue引数が指すバッファの所有権を想定します。ReleaseフラグがCORBA_TRUEの場合、このバッファはallocbufメンバー関数を使用して割り当てる必要があります。これは、シーケンスが破棄されるときに、このバッファをfreebufメンバー関数を使用して解放するためです。
-
-
SEQ(const S&From); - このコピー・コンストラクタは、指定の引数からシーケンスをディープ・コピーします。
From引数には、コピー元のシーケンスを指定します。 -
~SEQ(); - このデストラクタは、シーケンスを解放します。また、
Releaseフラグの値によっては、シーケンス要素を解放する場合もあります。 -
SEQ&operator=(const SEQ&From); - この代入演算子は、指定のシーケンス引数からシーケンスをディープ・コピーします。現在のシーケンスの
ReleaseフラグがCORBA_TRUEの場合、現在のシーケンスにある既存の要素はすべて解放されます。From引数には、コピー元のシーケンスを指定します。 -
CORBA::ULong maximum( ) const; - この関数は、シーケンスの最大値を返します。制限付きシーケンスの場合、OMG IDLの型で設定した値になります。無制限シーケンスの場合は、シーケンスの現在の最大値になります。
-
void length(CORBA::ULong Length); - この関数は、シーケンスの現在の長さを設定します。
Length引数には、シーケンスの新しい長さを指定します。シーケンスが無制限で新しい長さが現在の最大値を超える場合、バッファが再割り当てされ、要素が新しいバッファにコピーされます。新しい長さが最大値を超える場合、最大値は新しい長さに設定されます。 -
CORBA::ULong length() const; - この関数は、シーケンスの現在の長さを返します。
-
TYPE &operator[](CORBA::ULong Index); const TYPE &operator[](CORBA::ULong Index) const; - 前述のアクセサ関数は、指定の索引でシーケンス要素へのリファレンスを返します。
Index引数には、戻り値となる要素の索引を指定します。この索引は、現在のシーケンスの長さを超えることはできません。長さは、TYPE *コンストラクタまたはlength(CORBA::ULong)モディファイアで設定済である必要があります。TYPEがオブジェクト参照、TypeCodeリファレンス、または文字列の場合は、戻り値の型はForSeq_varクラスになります。 -
static TYPE * allocbuf(CORBA::ULong NumElems); - この静的関数は、
TYPE*コンストラクタで使用されるバッファを割り当てます。NumElems引数には、バッファ内の割り当てる要素数を指定します。バッファの割当てができない場合、NULLが返されます。 -
static void freebuf(TYPE * Value); - この静的関数は、
allocbuf関数で割り当てられたTYPE*シーケンス・バッファを解放します。Value引数には、allocbuf関数で割り当てられたTYPE*バッファを指定します。0(ゼロ)ポインタは無視されます。
親トピック: シーケンス