13.1.9 シーケンス
OMG IDLのシーケンスは、C++のクラスにマッピングされます。C++クラスには、次のものが格納されています。
- コンストラクタ
各シーケンスには、次のものがあります:
- デフォルトのコンストラクタ
- 各要素を初期化するコンストラクタ
- コピー・コンストラクタ
- デストラクタ
- 現在の長さ(およびシーケンスが無制限の場合は最大の長さ)のモディファイア
- 現在の長さのアクセサ
-
シーケンス要素にアクセスしたり、シーケンス要素を変更する
Operator[]関数 - メンバー関数の割当ておよび割当て解除
要素にアクセスする場合、事前に長さを設定しておく必要があります。
たとえば、次のOMG IDL定義を考えます:
// OMG IDL
module INVENT
{
. . .
typedef sequence<LogItem> LogList;
}この定義は、次のようにC++にマッピングされます:
// C++
class LogList
{
public:
// Default constructor
LogList();
// Maximum constructor
LogList(CORBA::ULong _max);
// TYPE * data constructor
LogList
(
CORBA::ULong _max,
CORBA::ULong _length,
LogItem *_value,
CORBA::Boolean _relse = CORBA_FALSE
);
// Copy constructor
LogList(const LogList&);
// Destructor
~LogList();
LogList &operator=(const LogList&);
CORBA::ULong maximum() const;
void length(CORBA::ULong);
CORBA::ULong length() const;
LogItem &operator[](CORBA::ULong _index);
const LogItem &operator[](CORBA::ULong _index) const;
static LogItem *allocbuf(CORBA::ULong _nelems);
static void freebuf(LogItem *);
};
};親トピック: マッピング