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 *);
      };
};