...one of the most highly
regarded and expertly designed C++ library projects in the
world.
— Herb Sutter and Andrei
Alexandrescu, C++
Coding Standards
boost::xpressive::regex_token_iterator
// In header: <boost/xpressive/regex_token_iterator.hpp> template<typename BidiIter> struct regex_token_iterator { // types typedef basic_regex< BidiIter > regex_type; typedef iterator_value< BidiIter >::type char_type; typedef sub_match< BidiIter > value_type; typedef std::ptrdiff_t difference_type; typedef value_type const * pointer; typedef value_type const & reference; typedef std::forward_iterator_tag iterator_category; // construct/copy/destruct regex_token_iterator(); regex_token_iterator(BidiIter, BidiIter, basic_regex< BidiIter > const &); template<typename LetExpr> regex_token_iterator(BidiIter, BidiIter, basic_regex< BidiIter > const &, unspecified); template<typename Subs> regex_token_iterator(BidiIter, BidiIter, basic_regex< BidiIter > const &, Subs const &, regex_constants::match_flag_type = regex_constants::match_default); template<typename Subs, typename LetExpr> regex_token_iterator(BidiIter, BidiIter, basic_regex< BidiIter > const &, Subs const &, unspecified, regex_constants::match_flag_type = regex_constants::match_default); regex_token_iterator(regex_token_iterator< BidiIter > const &); regex_token_iterator< BidiIter > & operator=(regex_token_iterator< BidiIter > const &); // public member functions value_type const & operator*() const; value_type const * operator->() const; regex_token_iterator< BidiIter > & operator++(); regex_token_iterator< BidiIter > operator++(int); };
regex_token_iterator
public
construct/copy/destructregex_token_iterator();
Postconditions: |
|
regex_token_iterator(BidiIter begin, BidiIter end, basic_regex< BidiIter > const & rex);
Parameters: |
|
||||||
Requires: |
|
template<typename LetExpr> regex_token_iterator(BidiIter begin, BidiIter end, basic_regex< BidiIter > const & rex, unspecified args);
Parameters: |
|
||||||||
Requires: |
|
template<typename Subs> regex_token_iterator(BidiIter begin, BidiIter end, basic_regex< BidiIter > const & rex, Subs const & subs, regex_constants::match_flag_type flags = regex_constants::match_default);
Parameters: |
|
||||||||||
Requires: |
|
||||||||||
Requires: |
|
template<typename Subs, typename LetExpr> regex_token_iterator(BidiIter begin, BidiIter end, basic_regex< BidiIter > const & rex, Subs const & subs, unspecified args, regex_constants::match_flag_type flags = regex_constants::match_default);
Parameters: |
|
||||||||||||
Requires: |
|
||||||||||||
Requires: |
|
regex_token_iterator(regex_token_iterator< BidiIter > const & that);
Postconditions: |
|
regex_token_iterator< BidiIter > & operator=(regex_token_iterator< BidiIter > const & that);
Postconditions: |
|
regex_token_iterator
public member functionsvalue_type const & operator*() const;
value_type const * operator->() const;
regex_token_iterator< BidiIter > & operator++();
If N == -1 then sets *this equal to the end of sequence iterator. Otherwise if N+1 < subs.size(), then increments N and sets result equal to ((subs[N] == -1) ? value_type(what.prefix().str()) : value_type(what[subs[N]].str())). Otherwise if what.prefix().first != what[0].second and if the element match_prev_avail is not set in flags then sets it. Then locates the next match as if by calling regex_search(what[0].second, end, what, *pre, flags), with the following variation: in the event that the previous match found was of zero length (what[0].length() == 0) then attempts to find a non-zero length match starting at what[0].second, only if that fails and provided what[0].second != suffix().second does it look for a (possibly zero length) match starting from what[0].second + 1. If such a match is found then sets N equal to zero, and sets result equal to ((subs[N] == -1) ? value_type(what.prefix().str()) : value_type(what[subs[N]].str())). Otherwise if no further matches were found, then let last_end be the endpoint of the last match that was found. Then if last_end != end and subs[0] == -1 sets N equal to -1 and sets result equal to value_type(last_end, end). Otherwise sets *this equal to the end of sequence iterator.
regex_token_iterator< BidiIter > operator++(int);