123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333 |
- [/
- / Copyright (c) 2008 Eric Niebler
- /
- / Distributed under 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)
- /]
- [section Concepts]
- [h2 CharT requirements]
- If type `BidiIterT` is used as a template argument to _basic_regex_, then `CharT` is
- `iterator_traits<BidiIterT>::value_type`. Type `CharT` must have a trivial default
- constructor, copy constructor, assignment operator, and destructor. In addition
- the following requirements must be met for objects; `c` of type `CharT`, `c1` and `c2` of
- type `CharT const`, and `i` of type `int`:
- [table CharT Requirements
- [
- [[*Expression]]
- [[*Return type]]
- [[*Assertion / Note / Pre- / Post-condition]]
- ]
- [
- [`CharT c`]
- [`CharT`]
- [Default constructor (must be trivial).]
- ]
- [
- [`CharT c(c1)`]
- [`CharT`]
- [Copy constructor (must be trivial).]
- ]
- [
- [`c1 = c2`]
- [`CharT`]
- [Assignment operator (must be trivial).]
- ]
- [
- [`c1 == c2`]
- [`bool`]
- [`true` if `c1` has the same value as `c2`.]
- ]
- [
- [`c1 != c2`]
- [`bool`]
- [`true` if `c1` and `c2` are not equal.]
- ]
- [
- [`c1 < c2`]
- [`bool`]
- [`true` if the value of `c1` is less than `c2`.]
- ]
- [
- [`c1 > c2`]
- [`bool`]
- [`true` if the value of `c1` is greater than `c2`.]
- ]
- [
- [`c1 <= c2`]
- [`bool`]
- [`true` if `c1` is less than or equal to `c2`.]
- ]
- [
- [`c1 >= c2`]
- [`bool`]
- [`true` if `c1` is greater than or equal to `c2`.]
- ]
- [
- [`intmax_t i = c1`]
- [`int`]
- [
- `CharT` must be convertible to an integral type.
- ]
- ]
- [
- [`CharT c(i);`]
- [`CharT`]
- [`CharT` must be constructable from an integral type.]
- ]
- ]
- [h2 Traits Requirements]
- In the following table `X` denotes a traits class defining types and functions
- for the character container type `CharT`; `u` is an object of type `X`; `v` is an
- object of type `const X`; `p` is a value of type `const CharT*`; `I1` and `I2` are
- `Input Iterators`; `c` is a value of type `const CharT`; `s` is an object of type
- `X::string_type`; `cs` is an object of type `const X::string_type`; `b` is a value of
- type `bool`; `i` is a value of type `int`; `F1` and `F2` are values of type `const CharT*`;
- `loc` is an object of type `X::locale_type`; and `ch` is an object of `const char`.
- [table Traits Requirements
- [
- [
- [*Expression]
- ]
- [
- [*Return type]
- ]
- [
- [*Assertion / Note\n
- Pre / Post condition]
- ]
- ]
- [
- [
- `X::char_type`
- ]
- [
- `CharT`
- ]
- [
- The character container type used in the implementation of class template _basic_regex_.
- ]
- ]
- [
- [
- `X::string_type`
- ]
- [
- `std::basic_string<CharT>` or `std::vector<CharT>`
- ]
- [
- ]
- ]
- [
- [
- `X::locale_type`
- ]
- [
- ['Implementation defined]
- ]
- [
- A copy constructible type that represents the locale used by the traits class.
- ]
- ]
- [
- [
- `X::char_class_type`
- ]
- [
- ['Implementation defined]
- ]
- [
- A bitmask type representing a particular character classification. Multiple
- values of this type can be bitwise-or'ed together to obtain a new valid value.
- ]
- ]
- [
- [
- `X::hash(c)`
- ]
- [
- `unsigned char`
- ]
- [
- Yields a value between `0` and `UCHAR_MAX` inclusive.
- ]
- ]
- [
- [
- `v.widen(ch)`
- ]
- [
- `CharT`
- ]
- [
- Widens the specified `char` and returns the resulting `CharT`.
- ]
- ]
- [
- [
- `v.in_range(r1, r2, c)`
- ]
- [
- `bool`
- ]
- [
- For any characters `r1` and `r2`, returns `true` if `r1 <= c && c <= r2`.
- Requires that `r1 <= r2`.
- ]
- ]
- [
- [
- `v.in_range_nocase(r1, r2, c)`
- ]
- [
- `bool`
- ]
- [
- For characters `r1` and `r2`, returns `true` if there is some character
- `d` for which `v.translate_nocase(d) == v.translate_nocase(c)` and
- `r1 <= d && d <= r2`. Requires that `r1 <= r2`.
- ]
- ]
- [
- [
- `v.translate(c)`
- ]
- [
- `X::char_type`
- ]
- [
- Returns a character such that for any character `d` that is to be considered
- equivalent to `c` then `v.translate(c) == v.translate(d)`.
- ]
- ]
- [
- [
- `v.translate_nocase(c)`
- ]
- [
- `X::char_type`
- ]
- [
- For all characters `C` that are to be considered
- equivalent to `c` when comparisons are to be performed without regard to case,
- then `v.translate_nocase(c) == v.translate_nocase(C)`.
- ]
- ]
- [
- [
- `v.transform(F1, F2)`
- ]
- [
- `X::string_type`
- ]
- [
- Returns a sort key for the character sequence designated by the iterator range
- `[F1, F2)` such that if the character sequence `[G1, G2)` sorts before the
- character sequence `[H1, H2)` then `v.transform(G1, G2) < v.transform(H1, H2)`.
- ]
- ]
- [
- [
- `v.transform_primary(F1, F2)`
- ]
- [
- `X::string_type`
- ]
- [
- Returns a sort key for the character sequence designated by the iterator range
- `[F1, F2)` such that if the character sequence `[G1, G2)` sorts before the
- character sequence `[H1, H2)` when character case is not considered then
- `v.transform_primary(G1, G2) < v.transform_primary(H1, H2)`.
- ]
- ]
- [
- [
- `v.lookup_classname(F1, F2)`
- ]
- [
- `X::char_class_type`
- ]
- [
- Converts the character sequence designated by the iterator range `[F1,F2)` into a
- bitmask type that can subsequently be passed to `isctype`. Values returned from
- `lookup_classname` can be safely bitwise or'ed together. Returns `0` if the
- character sequence is not the name of a character class recognized by `X`. The
- value returned shall be independent of the case of the characters in the
- sequence.
- ]
- ]
- [
- [
- `v.lookup_collatename(F1, F2)`
- ]
- [
- `X::string_type`
- ]
- [
- Returns a sequence of characters that represents the collating element
- consisting of the character sequence designated by the iterator range `[F1, F2)`.
- Returns an empty string if the character sequence is not a valid collating
- element.
- ]
- ]
- [
- [
- `v.isctype(c, v.lookup_classname(F1, F2))`
- ]
- [
- `bool`
- ]
- [
- Returns `true` if character `c` is a member of the character class designated by
- the iterator range `[F1, F2)`, `false` otherwise.
- ]
- ]
- [
- [
- `v.value(c, i)`
- ]
- [
- `int`
- ]
- [
- Returns the value represented by the digit `c` in base `i` if the character `c` is a
- valid digit in base `i`; otherwise returns `-1`.\n
- \[Note: the value of `i` will only be `8`, `10`, or `16`. -end note\]
- ]
- ]
- [
- [
- `u.imbue(loc)`
- ]
- [
- `X::locale_type`
- ]
- [
- Imbues `u` with the locale `loc`, returns the previous
- locale used by `u`.
- ]
- ]
- [
- [
- `v.getloc()`
- ]
- [
- `X::locale_type`
- ]
- [
- Returns the current locale used by `v`.
- ]
- ]
- ]
- [h2 Acknowledgements]
- This section is adapted from the equivalent page in the _regexpp_ documentation and from the
- _proposal_ to add regular expressions to the Standard Library.
- [endsect]
|