## include/boost/regex/v5/u32regex_iterator.hpp

89.1% Lines (49/55) 30.0% List of functions (27/90)
u32regex_iterator.hpp
f(x) Functions (90)
Function Calls Lines Blocks
boost::u32regex_iterator_implementation<__gnu_cxx::__normal_iterator<char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >::u32regex_iterator_implementation(boost::basic_regex<int, boost::icu_regex_traits> const*, __gnu_cxx::__normal_iterator<char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, boost::regex_constants::_match_flags) :51 1x 100.0% 80.0% boost::u32regex_iterator_implementation<__gnu_cxx::__normal_iterator<int const*, std::vector<int, std::allocator<int> > > >::u32regex_iterator_implementation(boost::basic_regex<int, boost::icu_regex_traits> const*, __gnu_cxx::__normal_iterator<int const*, std::vector<int, std::allocator<int> > >, boost::regex_constants::_match_flags) :51 24568x 100.0% 100.0% boost::u32regex_iterator_implementation<__gnu_cxx::__normal_iterator<wchar_t const*, std::__cxx11::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> > > >::u32regex_iterator_implementation(boost::basic_regex<int, boost::icu_regex_traits> const*, __gnu_cxx::__normal_iterator<wchar_t const*, std::__cxx11::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> > >, boost::regex_constants::_match_flags) :51 0 0.0% 0.0% boost::u32regex_iterator_implementation<char const*>::u32regex_iterator_implementation(boost::basic_regex<int, boost::icu_regex_traits> const*, char const*, boost::regex_constants::_match_flags) :51 0 0.0% 0.0% boost::u32regex_iterator_implementation<char16_t const*>::u32regex_iterator_implementation(boost::basic_regex<int, boost::icu_regex_traits> const*, char16_t const*, boost::regex_constants::_match_flags) :51 0 0.0% 0.0% boost::u32regex_iterator_implementation<wchar_t const*>::u32regex_iterator_implementation(boost::basic_regex<int, boost::icu_regex_traits> const*, wchar_t const*, boost::regex_constants::_match_flags) :51 0 0.0% 0.0% boost::u32regex_iterator_implementation<__gnu_cxx::__normal_iterator<char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >::u32regex_iterator_implementation(boost::u32regex_iterator_implementation<__gnu_cxx::__normal_iterator<char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > const&) :53 0 0.0% 0.0% boost::u32regex_iterator_implementation<__gnu_cxx::__normal_iterator<int const*, std::vector<int, std::allocator<int> > > >::u32regex_iterator_implementation(boost::u32regex_iterator_implementation<__gnu_cxx::__normal_iterator<int const*, std::vector<int, std::allocator<int> > > > const&) :53 19852x 100.0% 100.0% boost::u32regex_iterator_implementation<__gnu_cxx::__normal_iterator<wchar_t const*, std::__cxx11::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> > > >::u32regex_iterator_implementation(boost::u32regex_iterator_implementation<__gnu_cxx::__normal_iterator<wchar_t const*, std::__cxx11::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> > > > const&) :53 0 0.0% 0.0% boost::u32regex_iterator_implementation<char const*>::u32regex_iterator_implementation(boost::u32regex_iterator_implementation<char const*> const&) :53 0 0.0% 0.0% boost::u32regex_iterator_implementation<char16_t const*>::u32regex_iterator_implementation(boost::u32regex_iterator_implementation<char16_t const*> const&) :53 0 0.0% 0.0% boost::u32regex_iterator_implementation<wchar_t const*>::u32regex_iterator_implementation(boost::u32regex_iterator_implementation<wchar_t const*> const&) :53 0 0.0% 0.0% boost::u32regex_iterator_implementation<__gnu_cxx::__normal_iterator<char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >::init(__gnu_cxx::__normal_iterator<char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >) :54 1x 100.0% 100.0% boost::u32regex_iterator_implementation<__gnu_cxx::__normal_iterator<int const*, std::vector<int, std::allocator<int> > > >::init(__gnu_cxx::__normal_iterator<int const*, std::vector<int, std::allocator<int> > >) :54 24568x 100.0% 100.0% boost::u32regex_iterator_implementation<__gnu_cxx::__normal_iterator<wchar_t const*, std::__cxx11::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> > > >::init(__gnu_cxx::__normal_iterator<wchar_t const*, std::__cxx11::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> > >) :54 0 0.0% 0.0% boost::u32regex_iterator_implementation<char const*>::init(char const*) :54 0 0.0% 0.0% boost::u32regex_iterator_implementation<char16_t const*>::init(char16_t const*) :54 0 0.0% 0.0% boost::u32regex_iterator_implementation<wchar_t const*>::init(wchar_t const*) :54 0 0.0% 0.0% boost::u32regex_iterator_implementation<__gnu_cxx::__normal_iterator<char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >::compare(boost::u32regex_iterator_implementation<__gnu_cxx::__normal_iterator<char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > const&) :59 0 0.0% 0.0% boost::u32regex_iterator_implementation<__gnu_cxx::__normal_iterator<int const*, std::vector<int, std::allocator<int> > > >::compare(boost::u32regex_iterator_implementation<__gnu_cxx::__normal_iterator<int const*, std::vector<int, std::allocator<int> > > > const&) :59 45488x 100.0% 95.0% boost::u32regex_iterator_implementation<__gnu_cxx::__normal_iterator<wchar_t const*, std::__cxx11::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> > > >::compare(boost::u32regex_iterator_implementation<__gnu_cxx::__normal_iterator<wchar_t const*, std::__cxx11::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> > > > const&) :59 0 0.0% 0.0% boost::u32regex_iterator_implementation<char const*>::compare(boost::u32regex_iterator_implementation<char const*> const&) :59 0 0.0% 0.0% boost::u32regex_iterator_implementation<char16_t const*>::compare(boost::u32regex_iterator_implementation<char16_t const*> const&) :59 0 0.0% 0.0% boost::u32regex_iterator_implementation<wchar_t const*>::compare(boost::u32regex_iterator_implementation<wchar_t const*> const&) :59 0 0.0% 0.0% boost::u32regex_iterator_implementation<__gnu_cxx::__normal_iterator<char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >::get() :64 2x 100.0% 100.0% boost::u32regex_iterator_implementation<__gnu_cxx::__normal_iterator<int const*, std::vector<int, std::allocator<int> > > >::get() :64 318416x 100.0% 100.0% boost::u32regex_iterator_implementation<__gnu_cxx::__normal_iterator<wchar_t const*, std::__cxx11::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> > > >::get() :64 0 0.0% 0.0% boost::u32regex_iterator_implementation<char const*>::get() :64 0 0.0% 0.0% boost::u32regex_iterator_implementation<char16_t const*>::get() :64 0 0.0% 0.0% boost::u32regex_iterator_implementation<wchar_t const*>::get() :64 0 0.0% 0.0% boost::u32regex_iterator_implementation<__gnu_cxx::__normal_iterator<char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >::next() :66 2x 88.9% 90.0% boost::u32regex_iterator_implementation<__gnu_cxx::__normal_iterator<int const*, std::vector<int, std::allocator<int> > > >::next() :66 45488x 100.0% 100.0% boost::u32regex_iterator_implementation<__gnu_cxx::__normal_iterator<wchar_t const*, std::__cxx11::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> > > >::next() :66 0 0.0% 0.0% boost::u32regex_iterator_implementation<char const*>::next() :66 0 0.0% 0.0% boost::u32regex_iterator_implementation<char16_t const*>::next() :66 0 0.0% 0.0% boost::u32regex_iterator_implementation<wchar_t const*>::next() :66 0 0.0% 0.0% boost::u32regex_iterator<__gnu_cxx::__normal_iterator<char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >::u32regex_iterator() :100 1x 100.0% 100.0% boost::u32regex_iterator<__gnu_cxx::__normal_iterator<int const*, std::vector<int, std::allocator<int> > > >::u32regex_iterator() :100 24568x 100.0% 100.0% boost::u32regex_iterator<__gnu_cxx::__normal_iterator<wchar_t const*, std::__cxx11::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> > > >::u32regex_iterator() :100 0 0.0% 0.0% boost::u32regex_iterator<char const*>::u32regex_iterator() :100 0 0.0% 0.0% boost::u32regex_iterator<char16_t const*>::u32regex_iterator() :100 0 0.0% 0.0% boost::u32regex_iterator<wchar_t const*>::u32regex_iterator() :100 0 0.0% 0.0% boost::u32regex_iterator<__gnu_cxx::__normal_iterator<char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >::u32regex_iterator(__gnu_cxx::__normal_iterator<char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, __gnu_cxx::__normal_iterator<char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, boost::basic_regex<int, boost::icu_regex_traits> const&, boost::regex_constants::_match_flags) :101 1x 80.0% 62.0% boost::u32regex_iterator<__gnu_cxx::__normal_iterator<int const*, std::vector<int, std::allocator<int> > > >::u32regex_iterator(__gnu_cxx::__normal_iterator<int const*, std::vector<int, std::allocator<int> > >, __gnu_cxx::__normal_iterator<int const*, std::vector<int, std::allocator<int> > >, boost::basic_regex<int, boost::icu_regex_traits> const&, boost::regex_constants::_match_flags) :101 24568x 100.0% 100.0% boost::u32regex_iterator<__gnu_cxx::__normal_iterator<wchar_t const*, std::__cxx11::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> > > >::u32regex_iterator(__gnu_cxx::__normal_iterator<wchar_t const*, std::__cxx11::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> > >, __gnu_cxx::__normal_iterator<wchar_t const*, std::__cxx11::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> > >, boost::basic_regex<int, boost::icu_regex_traits> const&, boost::regex_constants::_match_flags) :101 0 0.0% 0.0% boost::u32regex_iterator<char const*>::u32regex_iterator(char const*, char const*, boost::basic_regex<int, boost::icu_regex_traits> const&, boost::regex_constants::_match_flags) :101 0 0.0% 0.0% boost::u32regex_iterator<char16_t const*>::u32regex_iterator(char16_t const*, char16_t const*, boost::basic_regex<int, boost::icu_regex_traits> const&, boost::regex_constants::_match_flags) :101 0 0.0% 0.0% boost::u32regex_iterator<wchar_t const*>::u32regex_iterator(wchar_t const*, wchar_t const*, boost::basic_regex<int, boost::icu_regex_traits> const&, boost::regex_constants::_match_flags) :101 0 0.0% 0.0% boost::u32regex_iterator<__gnu_cxx::__normal_iterator<char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >::u32regex_iterator(boost::u32regex_iterator<__gnu_cxx::__normal_iterator<char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > const&) :111 0 0.0% 0.0% boost::u32regex_iterator<__gnu_cxx::__normal_iterator<int const*, std::vector<int, std::allocator<int> > > >::u32regex_iterator(boost::u32regex_iterator<__gnu_cxx::__normal_iterator<int const*, std::vector<int, std::allocator<int> > > > const&) :111 24568x 100.0% 100.0% boost::u32regex_iterator<__gnu_cxx::__normal_iterator<wchar_t const*, std::__cxx11::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> > > >::u32regex_iterator(boost::u32regex_iterator<__gnu_cxx::__normal_iterator<wchar_t const*, std::__cxx11::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> > > > const&) :111 0 0.0% 0.0% boost::u32regex_iterator<char const*>::u32regex_iterator(boost::u32regex_iterator<char const*> const&) :111 0 0.0% 0.0% boost::u32regex_iterator<char16_t const*>::u32regex_iterator(boost::u32regex_iterator<char16_t const*> const&) :111 0 0.0% 0.0% boost::u32regex_iterator<wchar_t const*>::u32regex_iterator(boost::u32regex_iterator<wchar_t const*> const&) :111 0 0.0% 0.0% boost::u32regex_iterator<__gnu_cxx::__normal_iterator<char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >::operator==(boost::u32regex_iterator<__gnu_cxx::__normal_iterator<char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > const&) const :118 3x 75.0% 67.0% boost::u32regex_iterator<__gnu_cxx::__normal_iterator<int const*, std::vector<int, std::allocator<int> > > >::operator==(boost::u32regex_iterator<__gnu_cxx::__normal_iterator<int const*, std::vector<int, std::allocator<int> > > > const&) const :118 92800x 100.0% 100.0% boost::u32regex_iterator<__gnu_cxx::__normal_iterator<wchar_t const*, std::__cxx11::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> > > >::operator==(boost::u32regex_iterator<__gnu_cxx::__normal_iterator<wchar_t const*, std::__cxx11::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> > > > const&) const :118 0 0.0% 0.0% boost::u32regex_iterator<char const*>::operator==(boost::u32regex_iterator<char const*> const&) const :118 0 0.0% 0.0% boost::u32regex_iterator<char16_t const*>::operator==(boost::u32regex_iterator<char16_t const*> const&) const :118 0 0.0% 0.0% boost::u32regex_iterator<wchar_t const*>::operator==(boost::u32regex_iterator<wchar_t const*> const&) const :118 0 0.0% 0.0% boost::u32regex_iterator<__gnu_cxx::__normal_iterator<char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >::operator!=(boost::u32regex_iterator<__gnu_cxx::__normal_iterator<char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > const&) const :124 3x 100.0% 100.0% boost::u32regex_iterator<__gnu_cxx::__normal_iterator<int const*, std::vector<int, std::allocator<int> > > >::operator!=(boost::u32regex_iterator<__gnu_cxx::__normal_iterator<int const*, std::vector<int, std::allocator<int> > > > const&) const :124 70056x 100.0% 100.0% boost::u32regex_iterator<__gnu_cxx::__normal_iterator<wchar_t const*, std::__cxx11::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> > > >::operator!=(boost::u32regex_iterator<__gnu_cxx::__normal_iterator<wchar_t const*, std::__cxx11::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> > > > const&) const :124 0 0.0% 0.0% boost::u32regex_iterator<char const*>::operator!=(boost::u32regex_iterator<char const*> const&) const :124 0 0.0% 0.0% boost::u32regex_iterator<char16_t const*>::operator!=(boost::u32regex_iterator<char16_t const*> const&) const :124 0 0.0% 0.0% boost::u32regex_iterator<wchar_t const*>::operator!=(boost::u32regex_iterator<wchar_t const*> const&) const :124 0 0.0% 0.0% boost::u32regex_iterator<__gnu_cxx::__normal_iterator<char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >::operator*() const :126 2x 100.0% 100.0% boost::u32regex_iterator<__gnu_cxx::__normal_iterator<int const*, std::vector<int, std::allocator<int> > > >::operator*() const :126 90976x 100.0% 100.0% boost::u32regex_iterator<__gnu_cxx::__normal_iterator<wchar_t const*, std::__cxx11::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> > > >::operator*() const :126 0 0.0% 0.0% boost::u32regex_iterator<char const*>::operator*() const :126 0 0.0% 0.0% boost::u32regex_iterator<char16_t const*>::operator*() const :126 0 0.0% 0.0% boost::u32regex_iterator<wchar_t const*>::operator*() const :126 0 0.0% 0.0% boost::u32regex_iterator<__gnu_cxx::__normal_iterator<int const*, std::vector<int, std::allocator<int> > > >::operator->() const :128 227440x 100.0% 100.0% boost::u32regex_iterator<__gnu_cxx::__normal_iterator<char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >::operator++() :130 2x 100.0% 100.0% boost::u32regex_iterator<__gnu_cxx::__normal_iterator<int const*, std::vector<int, std::allocator<int> > > >::operator++() :130 45488x 100.0% 100.0% boost::u32regex_iterator<__gnu_cxx::__normal_iterator<wchar_t const*, std::__cxx11::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> > > >::operator++() :130 0 0.0% 0.0% boost::u32regex_iterator<char const*>::operator++() :130 0 0.0% 0.0% boost::u32regex_iterator<char16_t const*>::operator++() :130 0 0.0% 0.0% boost::u32regex_iterator<wchar_t const*>::operator++() :130 0 0.0% 0.0% boost::u32regex_iterator<__gnu_cxx::__normal_iterator<char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >::cow() :149 2x 75.0% 53.0% boost::u32regex_iterator<__gnu_cxx::__normal_iterator<int const*, std::vector<int, std::allocator<int> > > >::cow() :149 45488x 100.0% 100.0% boost::u32regex_iterator<__gnu_cxx::__normal_iterator<wchar_t const*, std::__cxx11::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> > > >::cow() :149 0 0.0% 0.0% boost::u32regex_iterator<char const*>::cow() :149 0 0.0% 0.0% boost::u32regex_iterator<char16_t const*>::cow() :149 0 0.0% 0.0% boost::u32regex_iterator<wchar_t const*>::cow() :149 0 0.0% 0.0% boost::make_u32regex_iterator(char const*, boost::basic_regex<int, boost::icu_regex_traits> const&, boost::regex_constants::_match_flags) :163 0 0.0% 0.0% boost::make_u32regex_iterator(wchar_t const*, boost::basic_regex<int, boost::icu_regex_traits> const&, boost::regex_constants::_match_flags) :168 0 0.0% 0.0% boost::u32regex_iterator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::const_iterator> boost::make_u32regex_iterator<char, std::char_traits<char>, std::allocator<char> >(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, boost::basic_regex<int, boost::icu_regex_traits> const&, boost::regex_constants::_match_flags) :180 1x 100.0% 100.0% boost::u32regex_iterator<std::__cxx11::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> >::const_iterator> boost::make_u32regex_iterator<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> >(std::__cxx11::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> > const&, boost::basic_regex<int, boost::icu_regex_traits> const&, boost::regex_constants::_match_flags) :180 0 0.0% 0.0% boost::make_u32regex_iterator(icu_74::UnicodeString const&, boost::basic_regex<int, boost::icu_regex_traits> const&, boost::regex_constants::_match_flags) :185 0 0.0% 0.0%

Line | TLA | Hits | Source Code
--- | --- | --- | ---
1 |  |  | /*
2 |  |  | *
3 |  |  | * Copyright (c) 2003
4 |  |  | * John Maddock
5 |  |  | *
6 |  |  | * Use, modification and distribution are subject to the
7 |  |  | * Boost Software License, Version 1.0. (See accompanying file
8 |  |  | * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
9 |  |  | *
10 |  |  | */
11 |  |  |
12 |  |  | /*
13 |  |  | * LOCATION: see http://www.boost.org for most recent version.
14 |  |  | * FILE u32regex_iterator.hpp
15 |  |  | * VERSION see <boost/version.hpp>
16 |  |  | * DESCRIPTION: Provides u32regex_iterator implementation.
17 |  |  | */
18 |  |  |
19 |  |  | #ifndef BOOST_REGEX_V5_U32REGEX_ITERATOR_HPP
20 |  |  | #define BOOST_REGEX_V5_U32REGEX_ITERATOR_HPP
21 |  |  |
22 |  |  | #include <boost/regex/config.hpp>
23 |  |  |
24 |  |  | #ifndef BOOST_REGEX_STANDALONE
25 |  |  |
26 |  |  | #include <boost/config.hpp>
27 |  |  | #if defined(BOOST_HAS_PRAGMA_ONCE)
28 |  |  | #pragma once
29 |  |  | #include <boost/regex/v5/icu.hpp>
30 |  |  | #endif
31 |  |  |
32 |  |  | #endif
33 |  |  |
34 |  |  | #include <boost/regex/v5/match_flags.hpp>
35 |  |  | #include <boost/regex/v5/match_results.hpp>
36 |  |  |
37 |  |  | namespace boost{
38 |  |  |
39 |  |  | template <class BidirectionalIterator>
40 |  |  | class u32regex_iterator_implementation
41 |  |  | {
42 |  |  | typedef u32regex regex_type;
43 |  |  |
44 |  |  | match_results<BidirectionalIterator> what; // current match
45 |  |  | BidirectionalIterator base; // start of sequence
46 |  |  | BidirectionalIterator end; // end of sequence
47 |  |  | const regex_type re; // the expression
48 |  |  | match_flag_type flags; // flags for matching
49 |  |  |
50 |  |  | public:
51 |  | 24569x | u32regex_iterator_implementation(const regex_type* p, BidirectionalIterator last, match_flag_type f)
52 |  | 73707x | : base(), end(last), re(*p), flags(f){}
53 |  | 19852x | u32regex_iterator_implementation(const u32regex_iterator_implementation&) = default;
54 |  | 24569x | bool init(BidirectionalIterator first)
55 |  |  | {
56 |  | 24569x | base = first;
57 |  | 24569x | return u32regex_search(first, end, what, re, flags, base);
58 |  |  | }
59 |  | 45488x | bool compare(const u32regex_iterator_implementation& that)
60 |  |  | {
61 |  | 45488x | if(this == &that) return true;
62 |  | 5784x | return (&re.get_data() == &that.re.get_data()) && (end == that.end) && (flags == that.flags) && (what[0].first == that.what[0].first) && (what[0].second == that.what[0].second);
63 |  |  | }
64 |  | 318418x | const match_results<BidirectionalIterator>& get()
65 |  | 318418x | { return what; }
66 |  | 45490x | bool next()
67 |  |  | {
68 |  |  | //if(what.prefix().first != what[0].second)
69 |  |  | // flags |= match_prev_avail;
70 |  | 45490x | BidirectionalIterator next_start = what[0].second;
71 |  | 45490x | match_flag_type f(flags);
72 |  | 45490x | if(!what.length())
73 |  | 4608x | f |= regex_constants::match_not_initial_null;
74 |  |  | //if(base != next_start)
75 |  |  | // f |= regex_constants::match_not_bob;
76 |  | 45490x | bool result = u32regex_search(next_start, end, what, re, f, base);
77 |  | 45490x | if(result)
78 |  | 5785x | what.set_base(base);
79 |  | 45490x | return result;
80 |  |  | }
81 |  |  | private:
82 |  |  | u32regex_iterator_implementation& operator=(const u32regex_iterator_implementation&);
83 |  |  | };
84 |  |  |
85 |  |  | template <class BidirectionalIterator>
86 |  |  | class u32regex_iterator
87 |  |  | {
88 |  |  | private:
89 |  |  | typedef u32regex_iterator_implementation<BidirectionalIterator> impl;
90 |  |  | typedef std::shared_ptr<impl> pimpl;
91 |  |  | public:
92 |  |  | typedef u32regex regex_type;
93 |  |  | typedef match_results<BidirectionalIterator> value_type;
94 |  |  | typedef typename std::iterator_traits<BidirectionalIterator>::difference_type
95 |  |  | difference_type;
96 |  |  | typedef const value_type* pointer;
97 |  |  | typedef const value_type& reference;
98 |  |  | typedef std::forward_iterator_tag iterator_category;
99 |  |  |
100 |  | 24569x | u32regex_iterator(){}
101 |  | 24569x | u32regex_iterator(BidirectionalIterator a, BidirectionalIterator b,
102 |  |  | const regex_type& re,
103 |  |  | match_flag_type m = match_default)
104 |  | 24569x | : pdata(new impl(&re, b, m))
105 |  |  | {
106 |  | 24569x | if(!pdata->init(a))
107 |  |  | {
108 |  | 4716x | pdata.reset();
109 |  |  | }
110 |  | 24569x | }
111 |  | 24568x | u32regex_iterator(const u32regex_iterator& that)
112 |  | 24568x | : pdata(that.pdata) {}
113 |  |  | u32regex_iterator& operator=(const u32regex_iterator& that)
114 |  |  | {
115 |  |  | pdata = that.pdata;
116 |  |  | return *this;
117 |  |  | }
118 |  | 92803x | bool operator==(const u32regex_iterator& that)const
119 |  |  | {
120 |  | 92803x | if((pdata.get() == 0) || (that.pdata.get() == 0))
121 |  | 47315x | return pdata.get() == that.pdata.get();
122 |  | 45488x | return pdata->compare(*(that.pdata.get()));
123 |  |  | }
124 |  | 70059x | bool operator!=(const u32regex_iterator& that)const
125 |  | 70059x | { return !(*this == that); }
126 |  | 90978x | const value_type& operator*()const
127 |  | 90978x | { return pdata->get(); }
128 |  | 227440x | const value_type* operator->()const
129 |  | 227440x | { return &(pdata->get()); }
130 |  | 45490x | u32regex_iterator& operator++()
131 |  |  | {
132 |  | 45490x | cow();
133 |  | 45490x | if(0 == pdata->next())
134 |  |  | {
135 |  | 39705x | pdata.reset();
136 |  |  | }
137 |  | 45490x | return *this;
138 |  |  | }
139 |  |  | u32regex_iterator operator++(int)
140 |  |  | {
141 |  |  | u32regex_iterator result(*this);
142 |  |  | ++(*this);
143 |  |  | return result;
144 |  |  | }
145 |  |  | private:
146 |  |  |
147 |  |  | pimpl pdata;
148 |  |  |
149 |  | 45490x | void cow()
150 |  |  | {
151 |  |  | // copy-on-write
152 |  | 45490x | if(pdata.get() && (pdata.use_count() > 1))
153 |  |  | {
154 |  | 19852x | pdata.reset(new impl(*(pdata.get())));
155 |  |  | }
156 |  | 45490x | }
157 |  |  | };
158 |  |  |
159 |  |  | typedef u32regex_iterator<const char*> utf8regex_iterator;
160 |  |  | typedef u32regex_iterator<const UChar*> utf16regex_iterator;
161 |  |  | typedef u32regex_iterator<const UChar32*> utf32regex_iterator;
162 |  |  |
163 |  | ✗ | inline u32regex_iterator<const char*> make_u32regex_iterator(const char* p, const u32regex& e, regex_constants::match_flag_type m = regex_constants::match_default)
164 |  |  | {
165 |  | ✗ | return u32regex_iterator<const char*>(p, p+std::strlen(p), e, m);
166 |  |  | }
167 |  |  | #ifndef BOOST_NO_WREGEX
168 |  | ✗ | inline u32regex_iterator<const wchar_t*> make_u32regex_iterator(const wchar_t* p, const u32regex& e, regex_constants::match_flag_type m = regex_constants::match_default)
169 |  |  | {
170 |  | ✗ | return u32regex_iterator<const wchar_t*>(p, p+std::wcslen(p), e, m);
171 |  |  | }
172 |  |  | #endif
173 |  |  | #if !defined(BOOST_REGEX_UCHAR_IS_WCHAR_T)
174 |  |  | inline u32regex_iterator<const UChar*> make_u32regex_iterator(const UChar* p, const u32regex& e, regex_constants::match_flag_type m = regex_constants::match_default)
175 |  |  | {
176 |  |  | return u32regex_iterator<const UChar*>(p, p+u_strlen(p), e, m);
177 |  |  | }
178 |  |  | #endif
179 |  |  | template <class charT, class Traits, class Alloc>
180 |  | 1x | inline u32regex_iterator<typename std::basic_string<charT, Traits, Alloc>::const_iterator> make_u32regex_iterator(const std::basic_string<charT, Traits, Alloc>& p, const u32regex& e, regex_constants::match_flag_type m = regex_constants::match_default)
181 |  |  | {
182 |  |  | typedef typename std::basic_string<charT, Traits, Alloc>::const_iterator iter_type;
183 |  | 1x | return u32regex_iterator<iter_type>(p.begin(), p.end(), e, m);
184 |  |  | }
185 |  | ✗ | inline u32regex_iterator<const UChar*> make_u32regex_iterator(const U_NAMESPACE_QUALIFIER UnicodeString& s, const u32regex& e, regex_constants::match_flag_type m = regex_constants::match_default)
186 |  |  | {
187 |  | ✗ | return u32regex_iterator<const UChar*>(s.getBuffer(), s.getBuffer() + s.length(), e, m);
188 |  |  | }
189 |  |  |
190 |  |  | } // namespace boost
191 |  |  |
192 |  |  | #endif // BOOST_REGEX_V5_REGEX_ITERATOR_HPP
193 |  |  |
194 |  |  |