Bezelは、ポリシークラスに基づくコンテナを提供するC++ライブラリである。
Bezelは、vector・list・mapなどの標準のものと同名のコンテナと、いくつかの追加のコンテナを提供する。各コンテナはSTLと共に使用できるように設計されている: 例えば次のように、標準コンテナと同様に扱うことができる。
int main()
{
typedef std::string T;
bezel::list::list<T> v;
{ T s; while (getline(std::cin, s)) v.push_back(s); }
v.sort();
std::copy(v.begin(), v.end(), std::ostream_iterator<T>(std::cout, "\n"));
}
Bezelのコンテナは標準コンテナとは異なる追加のテンプレートパラメータを持つ。テンプレートパラメータへと与えるポリシークラスを選択することで、アルゴリズムとデータ構造、記憶領域の割り当て方法、デバッグ向けチェック機構の有無など、コンテナの振る舞いを制御することができる。例えばlistに対し、データ構造を単方向リストにし、記憶領域の割り当てにstd::mallocを用いるよう指定するなら、次のように記述すればよい。
int main()
{
...
bezel::list::list<
T,
bezel::list::data_structure_is<
bezel::list::data_structure_policy::singly_linked>,
bezel::list::allocation_is<
bezel::scalar_allocation_policy::std_malloc<> >
> v;
...
}
ポリシークラスはコンパイル時に展開されるため、実行時の性能を損なわずにコンテナの振る舞いを変更できる。また、コンテナには任意のポリシークラスを与えることができる: 上記のようにBezelが提供するものを用いてもよいし、新たに定義してもよい。
Bezelを使用するために必要なものは、通常は標準のC++コンパイラのみである。
ただし、Bezelの一部のポリシークラスを使用するときはTR1・Boost・pthreadライブラリが必要である。詳細はマニュアルのインストールの章を参照のこと。
Unix環境での基本的なインストール手順は次の通り。
$ ./configure $ make # make install (おそらくroot権限で行う必要がある)
Bezelはヘッダファイルのみで構成されているため、ヘッダファイルをコピーすることでもインストールできる。詳細はマニュアルのインストールの章を参照のこと。
Copyright © 2007, 2008 若林 正樹
Bezelはフリーソフトウェアである: MITライセンスに基づいて頒布される。無保証である。