オブジェクトのデータ型クラスのリファレンス
この章では、リスト、配列、ストリームなど、Caché オブジェクトのデータ型クラスに対応する、事前定義された一連のプロキシ・クラスについて説明しています。これらのプロキシ・クラスはすべて、Dyn_obj と Obj_t の両方のクラスから継承されます。このいずれにも、標準の open()、create_new()、openid()、および openref() メソッドがあります。
コレクション・クラスは以下のとおりです。
-
d_vector<S> — リスト・コレクション
-
d_map<S> — 配列コレクション
-
d_char_stream
-
d_bin_stream
-
d_file_bin_stream
-
d_file_char_stream
リレーションシップ :
コレクション・クラス
Caché は、リストと配列という 2 つのコレクションをサポートしています。これらは、1 つのタイプの要素を、2 つの異なる考え方でグループ分けしたものです。
-
d_vector リスト・コレクション — Caché の %ListOfObjectsOpens in a new tab クラスおよび %ListOfDataTypesOpens in a new tab クラスに対応します。
-
d_map 配列コレクション — Caché の %ArrayOfObjectsOpens in a new tab クラスおよび %ArrayOfDataTypesOpens in a new tab クラスに対応します。
通常、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++ クラス |
---|---|
d_char_stream |
|
d_bin_stream |
|
d_file_bin_stream |
|
d_file_char_stream |
すべてのストリーム・クラスは、静的な open() メソッドおよび create_new() メソッドを持ちます。d_file_char_stream クラスは、is_unicode() メソッドを持ち、ストリームが Unicode データを含むかどうかを確認します。
ストリーム・アダプタは、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_ostream および d_wostream の typedef があります。std::basic_ostream インタフェースに加え、このクラスは以下のメソッドも提供します。
d_binary oid();
long size();
d_status erase();
d_status save();
d_istream および d_wistream の typedef があります。std::basic_istream インタフェースに加え、このクラスは以下のメソッドも提供します。
d_binary oid();
long size();
d_status rewind();
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_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_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<P> クラスは、以下のメソッドをサポートする標準コンテナです。
-
begin() — 双方向反復子を返します。
iterator begin();
-
end() — 双方向反復子を返します。
iterator end();
-
rbegin() — 逆反復子を返します。
reverse_iterator rbegin();
-
rend() — 逆反復子を返します。
reverse_iterator rend();