第4章 Bezelの構成

Bezelは相互に独立した複数の部品で構成されている。各部品は、次のいずれかに属する。

コンテナ

コンテナを表すクラステンプレート。標準コンテナと同名のものと標準コンテナにはないものがある。

標準コンテナと同名のものは次の通り。

deque
両頭待ち行列を表す列コンテナ。
list
連結リストによる列コンテナ。
map
連想配列を表す連想コンテナ。要素の重複を許さない。
multimap
連想配列を表す連想コンテナ。要素の重複を許す。
multiset
集合を表す連想コンテナ。要素の重複を許す。
set
集合を表す連想コンテナ。要素の重複を許さない。
vector
動的配列を表す列コンテナ。

標準コンテナにはないものは次の通り。

array
静的に固定長の配列を表すコンテナ。動的に大きさを変更できないが、通常は組み込み配列と同等の高い実行時性能を示す。
binary_search_tree
2分探索木による連想コンテナ。mapmultimapmultisetおよびsetbinary_search_treeを用いたコンテナアダプタとして実装されている。
chunk
vectorよりも機能が制限された動的配列を表すコンテナ。構築後は大きさを変更できないが、簡潔な内部構造を持つ。

mapmultimapmultisetおよびsetを除くすべてのコンテナは、いくつかのポリシークラスを受け付けるホストクラスである。アルゴリズムとデータ構造、記憶領域の割り当ておよび管理の方法、反復子や逆方向反復子の定義などといったコンテナの振る舞いは、ポリシークラスが決定する。

mapmultimapmultisetおよびsetは、binary_search_treeに対するコンテナアダプタである。振る舞いは指定されたbinary_search_treeが決定する。

汎用ポリシー

ポリシークラスのうち、複数のホストクラスで共用可能なものを汎用ポリシーと呼ぶ。

主なものは次の通り。

スカラー割り当てポリシー
単一のオブジェクトを格納するための記憶領域の割り当てと開放を行う。
配列割り当てポリシー
複数のオブジェクトを連続して格納するための記憶領域の割り当てと開放を行う。
スカラー構築ポリシー
単独のオブジェクトの構築と破壊を行う。
配列構築ポリシー
連続する複数のオブジェクトの構築と破壊を行う。
反復子ポリシー
反復子を定義する。
逆方向反復子ポリシー
逆方向反復子を定義する。
スレッド制御ポリシー
スレッドの制御方法を定義する。
エラー報告ポリシー
実行時に検出されたエラーの報告方法を定義する。

各ポリシーは、文書化された要件で定義される。また、要件を満たすいくつかの実装がBezelによって提供される。

専用ポリシー

ポリシークラスのうち、特定のホストクラスのために定義されたものを専用ポリシーと呼ぶ。

汎用ポリシーと同様、各ポリシーは文書化された要件で定義され、いくつかの実装がBezelによって提供される。

その他の小道具

コンテナまたはポリシーではないが、それらの実装を補助するためにBezel内で定義されているクラスや関数である。