[ English | Japanese ]

Bezel

http://bezel.sourceforge.net/

はじめに

Bezelは、ポリシークラスに基づくコンテナを提供するC++ライブラリである。

Bezelは、vectorlistmapなどの標準のものと同名のコンテナと、いくつかの追加のコンテナを提供する。各コンテナは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の一部のポリシークラスを使用するときはTR1Boost・pthreadライブラリが必要である。詳細はマニュアルのインストールの章を参照のこと。

インストール

Unix環境での基本的なインストール手順は次の通り。

$ ./configure
$ make
# make install  (おそらくroot権限で行う必要がある)

Bezelはヘッダファイルのみで構成されているため、ヘッダファイルをコピーすることでもインストールできる。詳細はマニュアルのインストールの章を参照のこと。

著作権とライセンス

Copyright © 2007, 2008 若林 正樹

Bezelはフリーソフトウェアである: MITライセンスに基づいて頒布される。無保証である。


SourceForge.net Logo