コンセプト

charT の要件

basic_regex テンプレートクラスのテンプレート引数で使用する型 charT は、自明なデフォルトコンストラクタ、コピーコンストラクタ、代入演算子およびデストラクタを持たなければならない。加えてオブジェクトについては以下の要件を満足しなければならない。以下の表では charT 型の ccharT const 型の c1 および c2int 型の i を用いる。

戻り値の型

表明、注釈、事前・事後条件

charT c

charT

デフォルトコンストラクタ(自明でなければならない)。

charT c(c1)

charT

コピーコンストラクタ(自明でなければならない)。

c1 = c2

charT

代入演算子(自明でなければならない)。

c1 == c2

bool

c1c2 の値が同じであれば真。

c1 != c2

bool

c1c2 が同値でなければ真。

c1 < c2

bool

c1 の値が c2 よりも小さければ真。

c1 > c2

bool

c1 の値が c2 よりも大きければ真。

c1 <= c2

bool

c1c2 以下であれば真。

c1 >= c2

bool

c1c2 以上であれば真。

intmax_t i = c1

int

charT は整数型に変換可能でなければならない。

注意:特性クラスが最小限の標準インターフェイスではなく Boost 固有のフルインターフェイスをサポートする場合は、charT 型はこの操作をサポートする必要はない(後述の特性クラスの要件を見よ)。

charT c(i)

charT

charT は整数型から構築可能でなければならない。

特性クラスの要件

basic_regextraits テンプレート引数に対しては要件のセットが 2 つある。最小限のインターフェイス(正規表現標準草案の一部)と、オプションの Boost 固有強化インターフェイスである。

最小限の要件

以下の表において XcharT 型の文字コンテナについて型と関数を定義する特性クラスを表す。uX 型のオブジェクト、vconst X 型のオブジェクト、pconst charT* 型の値、I1 および I2 は入力イテレータ、cconst charT 型の値、s は型 X::string_type のオブジェクト、cs は型 const X::string_type のオブジェクト、bbool 型の値、Iint 型の値、F1 および F2const charT* 型の値、locX::locale_type 型のオブジェクトである。

戻り値の型

表明、注釈、事前・事後条件

X::char_type

charT

basic_regex クラステンプレートを実装する文字コンテナ型。

X::size_type

-

charT の null 終端文字列の長さを保持可能な符号なし整数型。

X::string_type

std::basic_string<charT>std::vector<charT>

なし。

X::locale_type

(実装定義)

特性クラスが使用するロカールを表現する、コピー構築可能な型。

X::char_class_type

(実装定義)

個々の文字分類(文字クラス)を表現するビットマスク型。この型の複数の値をビット和すると別の有効な値を得る。

X::length(p)

X::size_type

p[i] == 0 である最小の i を返す。計算量は i に対して線形である。

v.translate(c)

X::char_type

c と等価、つまり v.translate(c) == v.translate(d) となるような文字 d を返す。

v.translate_nocase(c)

X::char_type

大文字小文字を区別せずに比較した場合に c と等価、つまり v.translate_nocase(c) == v.translate_nocase(C) となるような文字 C を返す。

v.transform(F1, F2)

X::string_type

イテレータ範囲 [F1, F2) が示す文字シーケンスのソートキーを返す。文字シーケンス [G1, G2) が文字シーケンス [H1, H2) の前にソートされる場合に v.transform(G1, G2) < v.transform(H1, H2) とならなければならない。

v.transform_primary(F1, F2)

X::string_type

イテレータ範囲 [F1, F2) が示す文字シーケンスのソートキーを返す。大文字小文字を区別せずにソートして文字シーケンス [G1, G2) が文字シーケンス [H1, H2) の前に現れる場合に v.transform_primary(G1, G2) < v.transform_primary(H1, H2) とならなければならない。

v.lookup_classname(F1, F2)

X::char_class_type

イテレータ範囲 [F1, F2) が示す文字シーケンスを、isctype に渡せるビットマスク型に変換する。lookup_classname が返した値同士でビット和をとっても安全である。文字シーケンスが X が解釈できる文字クラス名でなければ 0 を返す。文字シーケンス内の大文字小文字の違いで戻り値が変化することはない。

v.lookup_collatename(F1, F2)

X::string_type

イテレータ範囲 [F1, F2) が示す文字シーケンスが構成する照合要素を表す文字シーケンスを返す。文字シーケンスが正しい照合要素でなければ空文字列を返す。

v.isctype(c, v.lookup_classname(F1, F2))

bool

文字 c が、イテレータ範囲 [F1, F2) が示す文字クラスのメンバであれば真を返す。それ以外は偽を返す。

v.value(c, I)

int

文字 c が基数 I で有効な数字であれば、数字cの基数 I での数値を返す。 1 それ以外の場合は -1 を返す。

u.imbue(loc)

X::locale_type

ロカール locu に指示する。u が直前まで使用していたロカールを返す(あれば)。

v.getloc()

X::locale_type

v が使用中のロカールを返す(あれば)。

オプションの追加要件

以下の追加要件は厳密にはオプションである。しかしながら basic_regex でこれらの追加インターフェイスを利用するには、以下の要件をすべて満たさなければならない。basic_regex はメンバ boost_extensions_tag の有無を検出し、自身を適切に構成する。

結果

表明、注釈、事前・事後条件

X::boost_extensions_tag

型の指定はない。

与えられている場合、この表にある拡張がすべて与えられていなければならない。

v.syntax_type(c)

regex_constants::syntax_type

正規表現文法における文字 c の意味を表す regex_constants::syntax_type 型のシンボル値を返す。

v.escape_syntax_type(c)

regex_constants::syntax_type

正規表現文法において、c の前にエスケープ文字がある場合(式中で文字 c の直前に文字 b がある場合 v.syntax_type(b) == syntax_escape の文字 c の意味を表す regex_constants::escape_syntax_type 型のシンボル値を返す。

v.translate(c, b)

X::char_type

c と等価、つまり v.translate(c, false) == v.translate(d, false) となる文字 d を返す。あるいは大文字小文字を区別せずに比較した場合に等価、つまり v.translate(c, true) == v.translate(C, true) となる文字 C を返す。

v.toi(I1, I2, I)

charTint を保持可能な整数型。

I1 == I2*I1 が数字でなければ -1 を返す。それ以外の場合はシーケンス [I1, I2) に入力数値書式化処理を行い、結果を int で返す。事後条件:I1 == I2*I1 が数字以外のいずれか。

v.error_string(I)

std::string

エラー状態 I の可読性の高いエラー文字列を返す。Iregex_constants::error_type 型が列挙する値のいずれかである。値 I が解釈不能な場合は、文字列 “Unknown error” か同じ意味の地域化文字列を返す。

v.tolower(c)

X::char_type

c を小文字に変換する。Perl スタイルの \l および \L 書式化処理で使用する。

v.toupper(c)

X::char_type

c を大文字に変換する。Perl スタイルの \u および \U 書式化処理で使用する。

イテレータの要件

正規表現アルゴリズム(およびイテレータ)は、すべて双方向イテレータの要件を満たす。

1

I の値は 8 、10 、16 のいずれかである。