|
|
Boost.Regex設定とセットアップ |
|
boost.regexをあなたのコンパイラで使うために特別な設定をする必要はない. boost.config サブシステムが既にそれをやっているはずだ. もし問題があれば(あるいは特に曖昧なコンパイラやプラットフォームなら), boost.config には configure スクリプトがある.
以下のマクロ(user.hpp参照) はboost.regexでのユーザのロケールを制御する:
| BOOST_REGEX_USE_C_LOCALE | boost.regexが特性クラスサポートの汎用Cロケールを使うように強制する: これはwindows以外のプラットフォームでの既定の動作である. MS Windowsプラットフォームではロケールのサポートに通常Win32 APIを使う. |
| BOOST_REGEX_USE_CPP_LOCALE | boost.regexが既定の特性クラスのstd::localeを使うように強制する. 正規表現はインスタンス特有のロケールに従う. |
| BOOST_REGEX_NO_W32 | Win32 APIのロケールを利用可能であっても,boost.regexはそれを使わない (つまり,BOOST_REGEX_USE_CPP_LOCALEが設定されていない限り, BOOST_REGEX_USE_C_LOCALE である). |
| BOOST_REGEX_DYN_LINK | MicrosoftとBorland C++ でのビルドで,boost.regexのdllへリンクするようになる. 既定ではboost.regexは動的Cランタイムライブラリが使える時でも,静的ライブラリをリンクする. |
| BOOST_REGEX_NO_LIB | MicrosoftとBorland C++ でのビルドで,リンクするライブラリを自動的に選択する. |
| BOOST_REGEX_V3 | boost-1.30.0のマッチアルゴリズムを使う. 以前の動作と最大限の互換性が必要ならば定義すること. |
| BOOST_REGEX_RECURSIVE | スタック再帰型マッチアルゴリズムを使う. 一般的には最も速い選択肢だが,極端な場合にはスタックオーバーフローを引き起こす. Win32ではこれは安全に扱われるが,他のプラットフォームではそうではない. |
| BOOST_REGEX_NON_RECURSIVE | 非スタック再帰型マッチアルゴリズムを使う. スタック再帰型より少しだけ遅いが,どれだけ病的な正規表現であっても常に安全である. Win32以外のプラットフォームでは既定の動作である. |
以下の選択肢は BOOST_REGEX_RECURSIVEが設定されている時のみ有効である.
| BOOST_REGEX_HAS_MS_STACK_GUARD | boost.regexにMicrosoftスタイルの__try - __exceptブロックがサポートされていることを 表明する.スタックオーバーフローを安全に捕捉するために使う. |
以下の選択肢は BOOST_REGEX_NON_RECURSIVEが設定されている時のみ有効である.
| BOOST_REGEX_BLOCKSIZE | 非再帰モードではboost.regexは状態マシンのスタックとしての役割を持つ大き目の記憶ブロックを使う. 記憶ブロックが大きいほどアロケートの回数は少ない. 既定では4096バイトであり,大部分の正規表現のマッチであればこの大きさなら更なるアロケートは必要ない. しかしより小さい,またはより大きいブロックサイズを,プラットフォームの特性によって選ぶことも出来る. |
| BOOST_REGEX_MAX_BLOCKS | BOOST_REGEX_BLOCKSIZEの大きさのブロックをいくつ使えるか設定する. この値を超えるとboost.regexはマッチの探索を停止してstd::runtime_errorを投げる. 既定では1024だが,BOOST_REGEX_BLOCKSIZEを大きく変更すれば,???(原文意味不明) [Defaults to 1024, don't forget to tweek this value if you alter BOOST_REGEX_BLOCKSIZE by much] |
| BOOST_REGEX_MAX_CACHE_BLOCKS | いくつの記憶ブロックを内部キャッシュにストアするか設定する. メモリブロックは ::operator newを呼ぶのではなく,このキャッシュから割り当てられる. 一般的にこの方法は,メモリブロックが要求される毎に ::operator newを呼ぶよりもずっと速いが, 大きなメモリチャンクをキャッシュしなければならないという欠点もある (既定では BOOST_REGEX_BLOCKSIZEの大きさそれぞれの16ブロックまで). メモリに余裕がなければ,この値を0にする(キャッシュは使わない)か, それで遅すぎるなら,1か2にすれば充分である. 逆に巨大なマルチプロセッサ,マルチスレッドシステムなら, より大きな値の方が望ましい. |
Revised 24 Oct 2003
ゥ Copyright John Maddock 1998- 2003
Use, modification and distribution are subject to the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)