Skip to main content

This is documentation for Caché & Ensemble. See the InterSystems IRIS version of this content.Opens in a new tab

For information on migrating to InterSystems IRISOpens in a new tab, see Why Migrate to InterSystems IRIS?

オブジェクトのデータ型クラスのリファレンス

この章では、リスト、配列、ストリームなど、Caché オブジェクトのデータ型クラスに対応する、事前定義された一連のプロキシ・クラスについて説明しています。これらのプロキシ・クラスはすべて、Dyn_objObj_t の両方のクラスから継承されます。このいずれにも、標準の open()create_new()openid()、および openref() メソッドがあります。

コレクション・クラスは以下のとおりです。

ストリーム・クラス

  • d_char_stream

  • d_bin_stream

  • d_file_bin_stream

  • d_file_char_stream

リレーションシップ :

コレクション・クラス

Caché は、リストと配列という 2 つのコレクションをサポートしています。これらは、1 つのタイプの要素を、2 つの異なる考え方でグループ分けしたものです。

通常、C++ クライアントでは、既にコレクションが存在するものとして処理が行われます。

クラス・テンプレート d_vector<S> (リスト・コレクション)

%ListOfObjectsOpens in a new tab および %ListOfDataTypesOpens in a new tab のプロキシは、std::vector のインタフェースとほぼ同じインタフェースを提供します。

Caché のリスト・オブジェクトは d_obj_vector<T> クラスや d_prim_vector<T> クラスとして生成されるため、これらは d_vector により指定されるものと同じインタフェースを提供します。

リスト処理、スタック処理、および要素アクセス

  • erase() — 位置 pos にある要素を削除します。

       iterator erase(iterator pos);
    
  • insert() — 位置 pos に値が val の要素を挿入します。

       iterator insert(iterator pos, const value_type& val);
    
  • pop_back() — リストの最終の要素 (空でないもの) を削除します。

       void pop_back();
    
  • push_back() — リストの最後に、値が val である要素を挿入します。

       void push_back(const value_type& val);
    
  • [] operator"[]" 演算子をオーバーロードすることにより、未確認の要素のアクセスをサポートします。

       reference operator[](size_type index); 
       const;_reference operator[](size_type index) const;
    
  • at() — 確認済みの要素のアクセスを提供します。位置 index にあるリスト要素への参照を返します。index が有効な位置でない場合、このメソッドは out_of_range エラーをスローします。

       reference at(size_type index); 
       const;_reference at(size_type index) const;
    
サイズと容量

  • capacity() — 現在、リストに割り当てられているストレージを返します。

       size_type capacity() const;
    
  • empty() — リストが空であるかどうかを確認し、空の場合は True を返します。

       bool empty() const;
    
  • max_size() — リストの長さの許容最大値を返します。

       size_type max_size() const;
    
  • reserve() — 総数 n 個の要素に対して領域を割り当てます。このメソッドは、n 個の要素に対してメモリを割り当てるのみで、それら要素を生成するわけではありません。

       void reserve(size_type n);
    
  • size() — リストの長さを返します。

       size_type size();
    
反復子

  • begin() — リストの最初の要素を指すランダム・アクセス反復子を返します。

       iterator begin();
    
  • end() — 配列の最後の要素の直後を指すランダム・アクセス反復子を返します。

       iterator end();
    
  • rbegin() — リストの逆の順番の開始位置 (リストの最後の要素の直後) を指す逆ランダム・アクセス反復子を返します。

       reverse_iterator rbegin();
    
  • rend() — リストの逆の順番の終了位置 (リストの最初の要素の直前) を指す逆ランダム・アクセス反復子を返します。

       reverse_iterator rend();
    

クラス・テンプレート d_map<S> (配列コレクション)

%ArrayOfObjectsOpens in a new tab および %ArrayOfDataTypesOpens in a new tab のプロキシは、std::map のインタフェースとほぼ同じインタフェースを提供します。

Caché の配列オブジェクトは d_obj_map<T> クラスや d_prim_map<T> クラスとして生成されるため、これらは d_map により指定されるものと同じインタフェースを提供します。

リスト処理と要素アクセス

  • erase() — 要素を削除します。

    • pos によって指定された配列要素を削除します。

         iterator erase(iterator pos);
      
    • キー k によって一意に識別される要素を削除します (要素がある場合)。

         size_type erase(const key_type& k);
      
  • insert() — 要素を挿入します。

    • pos を手がかりとして、値が val である要素を挿入します。

         iterator insert(iterator pos, const value_type& val);
      
    • 値が val である要素を挿入します。

         std::pair<iterator, bool> insert(const value_type& val);
      
  • [] operator — TBD

       mapped_type& operator[](const key_type& key);
       const mapped_type& operator[](const key_type& key) const;
    
サイズと容量

  • capacity() — 現在、配列に割り当てられているストレージを返します。

       size_type capacity() const;
    
  • empty() — 配列が空の場合、True を返します。

       bool empty() const;
    
  • max_size() — 配列が含むことのできる要素の最大数を返します。

       size_type max_size() const;
    
  • size() — 配列に含まれる要素の数を返します。

       size_type size();
    
反復子

  • begin() — 最初の配列要素を指す双方向の反復子を返します。

       iterator begin();
    
  • end() — 最後の配列要素の直後を指す双方向反復子を返します。

       iterator end();
    
  • rbegin() — 配列の逆の順番の開始位置 (配列の最後の要素の直後) を指す逆反復子を返します。

       reverse_iterator rbegin();
    
  • rend() — 配列の逆の順番の終了位置 (配列の最初の要素の直前) を指す逆反復子を返します。

       reverse_iterator rend();
    
  • find() — ソート・キーの順番が key の順番と同じになっている配列中の要素を示す、双方向の反復子を返します。

       iterator find(const key_type& key);
    

ストリーム

Caché ストリームのプロキシは、標準 C++ ライブラリ・ストリーム・フレームワークにストリームを当てはめ、パフォーマンスの最適化を実行するアダプタを使用します。ストリームに対する一連のプロキシ・クラスは、それらに共通のインタフェースを d_stream クラスから継承します。ストリームで作業する場合には、このアダプタの使用をお勧めします。アダプタによってストリームにバッファが適用されるので、(ストリームの読み取りや書き込み、または位置の直接変更の結果として) ストリームの読み取りや書き込みの位置を変更するプロキシ・オブジェクト呼び出しと、アダプタ呼び出しが混在しないようにしてください。

ストリーム・オブジェクト

以下のテーブルは、Caché ストリーム・クラスのマッピングについて説明しています。

Caché クラス

C++ クラス

%Library.GlobalCharacterStreamOpens in a new tab

d_char_stream

%Library.GlobalBinaryStreamOpens in a new tab

d_bin_stream

%Library.FileBinaryStreamOpens in a new tab

d_file_bin_stream

%Library.FileCharacterStreamOpens in a new tab

d_file_char_stream

すべてのストリーム・クラスは、静的な open() メソッドおよび create_new() メソッドを持ちます。d_file_char_stream クラスは、is_unicode() メソッドを持ち、ストリームが Unicode データを含むかどうかを確認します。

C++ ストリーム・アダプタ

ストリーム・アダプタは、C++ 標準ライブラリのストリームとまったく同じように使用できます。また、すべての Caché ストリームに共通の Caché 独自のメソッドにも、それらアダプタからアクセスできます。

アダプタ・クラスは、以下のとおりです。

  • typedef に d_istream および d_wistream を持つ d_basic_istream

  • typedef に d_ostream および d_wostream を持つ d_basic_ostream

  • typedef に d_iostream および d_wiostream を持つ d_basic_iostream

すべての C++ アダプタ・オブジェクトは、ストリーム・オブジェクト・プロキシに対する d_ref から構築できます。以下はその例です。

   // create a low level stream object
   d_ref<d_char_stream> stream = d_char_stream::create_new(&db); 
   // create an IOStreams extension stream object 
   d_iostream io(stream);

すべてのアダプタはヘルパー・メソッドを持ち、これによりアダプタ経由でのみストリームを操作できます。すべての C++ アダプタ・オブジェクトは、ストリーム・オブジェクト・プロキシに対する d_ref から構築できます。以下はその例です。

   // create a low level stream object 
   d_ref<d_char_stream> stream = d_char_stream::create_new(&db); 
   // create an IOStreams extension stream object 
   d_iostream io(stream);

ストリーム・アダプタ・クラス

d_basic_ostream

d_ostream および d_wostream の typedef があります。std::basic_ostream インタフェースに加え、このクラスは以下のメソッドも提供します。

   d_binary oid(); 
   long size(); 
   d_status erase(); 
   d_status save();
d_basic_istream

d_istream および d_wistream の typedef があります。std::basic_istream インタフェースに加え、このクラスは以下のメソッドも提供します。

   d_binary oid(); 
   long size(); 
   d_status rewind();
d_basic_iostream

d_iostream および d_wiostream の typedef があります。std::basic_iostream インタフェースに加え、このクラスは以下のメソッドも提供します。

   d_binary oid(); 
   long size(); 
   d_status rewind(); 
   d_status move_to_end(); 
   d_status erase(); 
   d_status save();

クラス d_stream

d_stream クラスは、すべてのストリームに共通のインタフェースを提供します。d_file_stream クラスは、これにすべてのファイル・ストリームに共通のインタフェースを追加します。

d_stream メソッド

文字ストリームとバイナリ・ストリームに共通の d_stream メソッドは、以下のとおりです。

   d_binary oid(); 
   d_status save(); 
   d_status clear(); 
   d_status rewind(); 
   d_status move_to_end(); 
   long size(); 
   d_stream& copy(const abs_d_ref& stream);

文字ストリームに特有のメソッドは、以下のとおりです。

   void read(d_int& len, d_string& res); 
   void readline(d_int& len, d_string& res); 
   void write(const d_string& data);

バイナリ・ストリームに特有のメソッドは、以下のとおりです。

   void read(d_int& len, d_binary& res); 
   void write(const d_binary& data);
d_file_stream メソッド

d_file_stream クラスから追加で利用できるメソッドは、以下のとおりです。

   d_string get_filename(); 
   void set_filename(const d_string& fname); 
   d_timestamp last_modified(); 
   d_status link_to_file(const_name_t fname);   
   // const_name_t is a typedef for const wchar_t*

クラス・テンプレート d_relationship<S>

Caché 内と同様に、リレーションシップはプロパティとして扱われます。クラス P とクラス Q の間にリレーションシップがあり、P がシングル・バリュー・サイドで Q がマルチ・バリュー・サイドである場合、シングル・バリュー・サイドはタイプ P のプロパティとして生成され (d_ref<P>)、マルチ・バリュー・サイドはタイプ d_relationship<Q> のプロパティとして生成されます (d_ref<d_relationship<Q>>)。他のプロパティと同様に、P または Q が実行時にのみ指定できる場合は、P または Q (または両方) は Dyn_obj (ダイナミック・オブジェクト) になります。

d_relationship メソッド

d_relationship<P> クラスは、以下のメソッドをサポートする標準コンテナです。

  • begin() — 双方向反復子を返します。

       iterator begin();
    
  • end() — 双方向反復子を返します。

       iterator end();
    
  • rbegin() — 逆反復子を返します。

       reverse_iterator rbegin();
    
  • rend() — 逆反復子を返します。

       reverse_iterator rend();
    
FeedbackOpens in a new tab