Bezel

若林 正樹 (Wakabayashi Masaki)

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

2008-04-27


目次

1. はじめに
2. インストール
2.1. 必要なツールとパッケージ
2.2. 自動インストール
2.3. 手動インストール
3. Bezelひとめぐり
3.1. はじめの一歩
3.2. 記憶領域の割り当て
3.3. アルゴリズムとデータ構造
3.4. 例外処理
3.5. デバッグ向け機能
3.6. 要素の型を与えない状態のコンテナ
3.7. ユーザ定義ポリシー
4. Bezelの構成
5. 要素技術
5.1. ポリシークラス
5.1.1. 基本構成: ポリシークラスとホストクラス
5.1.2. 結合インタフェース
5.1.3. コーディング技法
5.2. 2相テンプレート
5.2.1. 基本構成: フロントエンドとバックエンド
5.2.2. 2相テンプレートを用いたポリシークラス
5.2.3. 2相テンプレートを用いない場合との比較
5.2.4. テンプレートパラメータの個数
5.2.5. bindunbind
5.3. ステートレスポリシー
5.4. ホスト化されたポリシー
5.5. プロキシポリシー
5.6. 名前付きテンプレートパラメータ
6. 汎用ポリシー
6.1. スカラー割り当てポリシー
6.1.1. 概要
6.1.2. 要件
6.1.3. scalar_allocation_policy::operator_new
6.1.4. scalar_allocation_policy::std_malloc
6.1.5. scalar_allocation_policy::stlallocator
6.1.6. scalar_allocation_policy::pool
6.1.6.1. scalar_allocation_policy::pool用要求ポリシー
6.1.6.2. scalar_allocation_policy::pool用開放ポリシー
6.1.7. scalar_allocation_policy::singleton
6.1.8. scalar_allocation_policy::strictly_checked
6.1.9. scalar_allocation_policy::purged
6.1.10. scalar_allocation_policy::default_selected
6.2. 配列割り当てポリシー
6.2.1. 概要
6.2.2. 要件
6.2.3. array_allocation_policy::operator_new
6.2.4. array_allocation_policy::std_malloc
6.2.5. array_allocation_policy::stlallocator
6.2.6. array_allocation_policy::strictly_checked
6.2.7. array_allocation_policy::size_checked
6.2.8. array_allocation_policy::purged
6.2.9. array_allocation_policy::default_selected
6.3. スカラー構築ポリシー
6.3.1. 概要
6.3.2. 要件
6.3.3. scalar_construction_policy::standard
6.3.4. scalar_construction_policy::strictly_checked
6.3.5. scalar_construction_policy::purged
6.3.6. scalar_construction_policy::default_selected
6.4. 配列構築ポリシー
6.4.1. 概要
6.4.2. 要件
6.4.3. array_construction_policy::std_memory
6.4.4. array_construction_policy::scalar_wrapper
6.4.5. array_construction_policy::pod_zerofilled
6.4.6. array_construction_policy::pod_skipped
6.4.7. array_construction_policy::purged
6.4.8. array_construction_policy::default_selected
6.5. スカラーストレージポリシー
6.5.1. 要件
6.5.2. scalar_storage_policy::ordinary_variable
6.5.3. scalar_storage_policy::allocated
6.5.4. scalar_storage_policy::placement
6.5.5. scalar_storage_policy::compressed
6.5.6. scalar_storage_policy::default_selected
6.6. 反復子ポリシー
6.6.1. 概要
6.6.2. 要件
6.6.3. iterator_policy::identity
6.6.4. iterator_policy::transformed
6.6.5. iterator_policy::default_selected
6.7. 逆方向反復子ポリシー
6.7.1. 概要
6.7.2. 要件
6.7.3. reverse_iterator_policy::std_iterator
6.7.4. reverse_iterator_policy::default_selected
6.8. スレッド制御ポリシー
6.8.1. 要件
6.8.2. threading_policy::single
6.8.3. threading_policy::boost
6.8.4. threading_policy::pthread
6.9. エラー報告ポリシー
6.9.1. 概要
6.9.2. 要件
6.9.3. error_reporting_policy::ignore
6.9.4. error_reporting_policy::std_assert
6.9.5. error_reporting_policy::std_abort
6.9.6. error_reporting_policy::throw_exception
6.9.7. error_reporting_policy::throw_stdexcept
6.9.8. error_reporting_policy::bad_alloc
6.9.9. error_reporting_policy::length_error
6.9.10. error_reporting_policy::out_of_range
7. コンテナと専用ポリシー
7.1. array
7.1.1. 概要
7.1.2. リファレンス
7.1.3. array用ストレージポリシー
7.1.3.1. 要件
7.1.3.2. storage_policy::ordinary_array
7.1.3.3. storage_policy::allocated
7.1.3.4. storage_policy::checked_iterator
7.1.3.5. storage_policy::default_selected
7.2. binary_search_tree
7.2.1. 概要
7.2.2. リファレンス
7.2.3. binary_search_tree用データ構造ポリシー
7.2.3.1. 要件
7.2.3.2. data_structure_policy::redblack
7.2.3.3. data_structure_policy::splay
7.2.3.4. data_structure_policy::dumb
7.2.3.5. data_structure_policy::default_selected
7.2.4. binary_search_tree用ストレージポリシー
7.2.4.1. 要件
7.2.4.2. storage_policy::sentinel
7.2.4.3. storage_policy::sized
7.2.4.4. storage_policy::checked_iterator
7.2.4.5. storage_policy::default_selected
7.3. chunk
7.3.1. 概要
7.3.2. リファレンス
7.3.3. chunk用ストレージポリシー
7.3.3.1. 要件
7.3.3.2. storage_policy::double_ended
7.3.3.3. storage_policy::checked_iterator
7.3.3.4. storage_policy::default_selected
7.4. deque
7.4.1. 概要
7.4.2. リファレンス
7.4.3. deque用ストレージポリシー
7.4.3.1. 要件
7.4.3.2. storage_policy::circular_buffer
7.4.3.3. storage_policy::checked_iterator
7.4.3.4. storage_policy::default_selected
7.5. list
7.5.1. 概要
7.5.2. リファレンス
7.5.3. list用データ構造ポリシー
7.5.3.1. 要件
7.5.3.2. data_structure_policy::singly_linked
7.5.3.3. data_structure_policy::doubly_linked
7.5.3.4. data_structure_policy::default_selected
7.5.4. list用ストレージポリシー
7.5.4.1. 要件
7.5.4.2. storage_policy::sentinel
7.5.4.3. storage_policy::sized
7.5.4.4. storage_policy::checked_iterator
7.5.4.5. storage_policy::default_selected
7.6. map
7.6.1. 概要
7.6.2. リファレンス
7.7. multimap
7.7.1. 概要
7.7.2. リファレンス
7.8. multiset
7.8.1. 概要
7.8.2. リファレンス
7.9. set
7.9.1. 概要
7.9.2. リファレンス
7.10. vector
7.10.1. 概要
7.10.2. リファレンス
7.10.3. vector用ストレージポリシー
7.10.3.1. 要件
7.10.3.2. storage_policy::triple_ended
7.10.3.3. storage_policy::checked_iterator
7.10.3.4. storage_policy::default_selected
7.10.4. vector用容量拡張ポリシー
7.10.4.1. 要件
7.10.4.2. capacity_growth_policy::twice
7.10.4.3. capacity_growth_policy::half_again
7.10.4.4. capacity_growth_policy::default_selected
8. 小道具
8.1. array_stlallocator
8.2. compile_time_assert
8.3. iterator_function
8.4. policy_selector
8.5. scalar_stlallocator
9. 開発者向けの情報
9.1. 開発に必要なツールとパッケージ
9.2. configure手順
9.3. テスト
9.4. 性能測定
9.5. コーディング規約
9.6. 予約済みマクロ
10. 著作権とライセンス
参考文献

表目次

6.1. スカラー割り当てポリシーの例外安全性と計算量
6.2. 配列割り当てポリシーの例外安全性と計算量
6.3. スカラー構築ポリシーの例外安全性と計算量
6.4. 配列構築ポリシーの例外安全性と計算量
6.5. スカラーストレージポリシーの例外安全性と計算量
7.1. arrayの例外安全性と計算量
7.2. array用ストレージポリシーの例外安全性と計算量
7.3. binary_search_treeの例外安全性と計算量
7.4. binary_search_tree用データ構造ポリシーの例外安全性と計算量
7.5. binary_search_tree用ストレージポリシーの例外安全性と計算量
7.6. chunkの例外安全性と計算量
7.7. chunk用ストレージポリシーの例外安全性と計算量
7.8. dequeの例外安全性と計算量
7.9. deque用ストレージポリシーの例外安全性と計算量
7.10. listの例外安全性と計算量
7.11. list用データ構造ポリシーの例外安全性と計算量
7.12. list用ストレージポリシーの例外安全性と計算量
7.13. データ構造が単方向リストのときのstorage_policy::sentinelの計算量
7.14. mapの例外安全性と計算量
7.15. multimapの例外安全性と計算量
7.16. multisetの例外安全性と計算量
7.17. setの例外安全性と計算量
7.18. vectorの例外安全性と計算量
7.19. vector用ストレージポリシーの例外安全性と計算量

例目次

3.1. vectorの使い方 (1)
3.2. vectorの使い方 (2)
3.3. vectorの使い方 (3)
3.4. vectorの使い方 (4)
3.5. listの使い方 (1)
3.6. listの使い方 (2)
3.7. mapの使い方 (1)
3.8. mapの使い方 (2)
3.9. スカラー割り当てポリシー: purged
3.10. スカラー割り当てポリシー: pool
3.11. 単方向リストへの切り替え
3.12. 例外を送出しないvector
3.13. 実行時チェック付きのvector
3.14. basic_vector
3.15. bindunbind
3.16. ユーザ定義ポリシー
5.1. ポリシークラスとホストクラス
5.2. 合成によるポリシークラスとホストクラスの結合
5.3. 継承によるポリシークラスとホストクラスの結合
5.4. メンバ関数swapの定義
5.5. フロントエンドとバックエンド
5.6. 2相テンプレートを用いたポリシークラス
5.7. 2相テンプレートを用いないポリシークラス (1)
5.8. 2相テンプレートを用いないポリシークラス (2)
5.9. 異なる個数のテンプレートパラメータを持つポリシークラス
5.10. bindとunbind
5.11. ステートレスポリシー
5.12. ホストクラスでもあるポリシークラス
5.13. テンプレートパラメータを用いたプロキシポリシー
5.14. 名前付きテンプレートパラメータを用いないホストクラス
5.15. 名前付きテンプレートパラメータを用いたホストクラス
5.16. 名前付きテンプレートパラメータの実装
6.1. スカラー割り当てポリシーとスカラー構築ポリシーを用いたコンテナ
6.2. 配列割り当てポリシーと配列構築ポリシーを用いたコンテナ
8.1. compile_time_assert