include/boost/regex/v5/basic_regex.hpp
97.6% Lines (200/205)
96.9% List of functions (341/352)
Functions (352)
Function
Calls
Lines
Blocks
void boost::re_detail_600::bubble_down_one<__gnu_cxx::__normal_iterator<boost::re_detail_600::named_subexpressions::name*, std::vector<boost::re_detail_600::named_subexpressions::name, std::allocator<boost::re_detail_600::named_subexpressions::name> > > >(__gnu_cxx::__normal_iterator<boost::re_detail_600::named_subexpressions::name*, std::vector<boost::re_detail_600::named_subexpressions::name, std::allocator<boost::re_detail_600::named_subexpressions::name> > >, __gnu_cxx::__normal_iterator<boost::re_detail_600::named_subexpressions::name*, std::vector<boost::re_detail_600::named_subexpressions::name, std::allocator<boost::re_detail_600::named_subexpressions::name> > >)
:59
20848x
36.8%
100.0%
int boost::re_detail_600::hash_value_from_capture_name<char const*>(char const*, char const*)
:80
11664x
100.0%
100.0%
int boost::re_detail_600::hash_value_from_capture_name<char16_t const*>(char16_t const*, char16_t const*)
:80
80088x
100.0%
100.0%
int boost::re_detail_600::hash_value_from_capture_name<char32_t const*>(char32_t const*, char32_t const*)
:80
0
0.0%
0.0%
int boost::re_detail_600::hash_value_from_capture_name<int const*>(int const*, int const*)
:80
93516x
100.0%
100.0%
int boost::re_detail_600::hash_value_from_capture_name<unsigned int const*>(unsigned int const*, unsigned int const*)
:80
1728x
100.0%
100.0%
int boost::re_detail_600::hash_value_from_capture_name<wchar_t const*>(wchar_t const*, wchar_t const*)
:80
11662x
100.0%
100.0%
boost::re_detail_600::named_subexpressions::name::name<char16_t>(char16_t const*, char16_t const*, int)
:98
80088x
100.0%
100.0%
boost::re_detail_600::named_subexpressions::name::name<char32_t>(char32_t const*, char32_t const*, int)
:98
0
0.0%
0.0%
boost::re_detail_600::named_subexpressions::name::name<char>(char const*, char const*, int)
:98
7270x
100.0%
100.0%
boost::re_detail_600::named_subexpressions::name::name<int>(int const*, int const*, int)
:98
88188x
100.0%
100.0%
boost::re_detail_600::named_subexpressions::name::name<unsigned int>(unsigned int const*, unsigned int const*, int)
:98
1728x
100.0%
100.0%
boost::re_detail_600::named_subexpressions::name::name<wchar_t>(wchar_t const*, wchar_t const*, int)
:98
7270x
100.0%
100.0%
boost::re_detail_600::named_subexpressions::name::name(int, int)
:103
33019x
100.0%
100.0%
boost::re_detail_600::named_subexpressions::name::operator<(boost::re_detail_600::named_subexpressions::name const&) const
:109
114716x
100.0%
100.0%
boost::re_detail_600::named_subexpressions::name::operator==(boost::re_detail_600::named_subexpressions::name const&) const
:113
12425x
100.0%
100.0%
boost::re_detail_600::named_subexpressions::name::swap(boost::re_detail_600::named_subexpressions::name&)
:117
6792x
100.0%
100.0%
boost::re_detail_600::named_subexpressions::named_subexpressions()
:127
408299x
100.0%
100.0%
void boost::re_detail_600::named_subexpressions::set_name<char32_t>(char32_t const*, char32_t const*, int)
:130
0
0.0%
0.0%
void boost::re_detail_600::named_subexpressions::set_name<char>(char const*, char const*, int)
:130
6374x
100.0%
100.0%
void boost::re_detail_600::named_subexpressions::set_name<int>(int const*, int const*, int)
:130
8100x
100.0%
100.0%
void boost::re_detail_600::named_subexpressions::set_name<wchar_t>(wchar_t const*, wchar_t const*, int)
:130
6374x
100.0%
100.0%
std::pair<__gnu_cxx::__normal_iterator<boost::re_detail_600::named_subexpressions::name const*, std::vector<boost::re_detail_600::named_subexpressions::name, std::allocator<boost::re_detail_600::named_subexpressions::name> > >, __gnu_cxx::__normal_iterator<boost::re_detail_600::named_subexpressions::name const*, std::vector<boost::re_detail_600::named_subexpressions::name, std::allocator<boost::re_detail_600::named_subexpressions::name> > > > boost::re_detail_600::named_subexpressions::equal_range<char16_t>(char16_t const*, char16_t const*) const
:147
80088x
100.0%
100.0%
std::pair<__gnu_cxx::__normal_iterator<boost::re_detail_600::named_subexpressions::name const*, std::vector<boost::re_detail_600::named_subexpressions::name, std::allocator<boost::re_detail_600::named_subexpressions::name> > >, __gnu_cxx::__normal_iterator<boost::re_detail_600::named_subexpressions::name const*, std::vector<boost::re_detail_600::named_subexpressions::name, std::allocator<boost::re_detail_600::named_subexpressions::name> > > > boost::re_detail_600::named_subexpressions::equal_range<char>(char const*, char const*) const
:147
896x
100.0%
100.0%
std::pair<__gnu_cxx::__normal_iterator<boost::re_detail_600::named_subexpressions::name const*, std::vector<boost::re_detail_600::named_subexpressions::name, std::allocator<boost::re_detail_600::named_subexpressions::name> > >, __gnu_cxx::__normal_iterator<boost::re_detail_600::named_subexpressions::name const*, std::vector<boost::re_detail_600::named_subexpressions::name, std::allocator<boost::re_detail_600::named_subexpressions::name> > > > boost::re_detail_600::named_subexpressions::equal_range<int>(int const*, int const*) const
:147
80088x
100.0%
100.0%
std::pair<__gnu_cxx::__normal_iterator<boost::re_detail_600::named_subexpressions::name const*, std::vector<boost::re_detail_600::named_subexpressions::name, std::allocator<boost::re_detail_600::named_subexpressions::name> > >, __gnu_cxx::__normal_iterator<boost::re_detail_600::named_subexpressions::name const*, std::vector<boost::re_detail_600::named_subexpressions::name, std::allocator<boost::re_detail_600::named_subexpressions::name> > > > boost::re_detail_600::named_subexpressions::equal_range<unsigned int>(unsigned int const*, unsigned int const*) const
:147
1728x
100.0%
100.0%
std::pair<__gnu_cxx::__normal_iterator<boost::re_detail_600::named_subexpressions::name const*, std::vector<boost::re_detail_600::named_subexpressions::name, std::allocator<boost::re_detail_600::named_subexpressions::name> > >, __gnu_cxx::__normal_iterator<boost::re_detail_600::named_subexpressions::name const*, std::vector<boost::re_detail_600::named_subexpressions::name, std::allocator<boost::re_detail_600::named_subexpressions::name> > > > boost::re_detail_600::named_subexpressions::equal_range<wchar_t>(wchar_t const*, wchar_t const*) const
:147
896x
100.0%
100.0%
boost::re_detail_600::named_subexpressions::get_id(int) const
:152
13435x
100.0%
100.0%
boost::re_detail_600::named_subexpressions::equal_range(int) const
:162
19584x
100.0%
100.0%
boost::re_detail_600::regex_data<char, boost::c_regex_traits<char> >::regex_data(std::shared_ptr<boost::regex_traits_wrapper<boost::c_regex_traits<char> > > const&)
:181
26832x
100.0%
100.0%
boost::re_detail_600::regex_data<char, boost::cpp_regex_traits<char> >::regex_data(std::shared_ptr<boost::regex_traits_wrapper<boost::cpp_regex_traits<char> > > const&)
:181
26832x
100.0%
100.0%
boost::re_detail_600::regex_data<char, boost::regex_traits<char, boost::cpp_regex_traits<char> > >::regex_data(std::shared_ptr<boost::regex_traits_wrapper<boost::regex_traits<char, boost::cpp_regex_traits<char> > > > const&)
:181
2x
100.0%
100.0%
boost::re_detail_600::regex_data<char32_t, char32_traits>::regex_data(std::shared_ptr<boost::regex_traits_wrapper<char32_traits> > const&)
:181
0
0.0%
0.0%
boost::re_detail_600::regex_data<int, boost::icu_regex_traits>::regex_data(std::shared_ptr<boost::regex_traits_wrapper<boost::icu_regex_traits> > const&)
:181
3556x
100.0%
100.0%
boost::re_detail_600::regex_data<wchar_t, boost::c_regex_traits<wchar_t> >::regex_data(std::shared_ptr<boost::regex_traits_wrapper<boost::c_regex_traits<wchar_t> > > const&)
:181
26940x
100.0%
100.0%
boost::re_detail_600::regex_data<wchar_t, boost::cpp_regex_traits<wchar_t> >::regex_data(std::shared_ptr<boost::regex_traits_wrapper<boost::cpp_regex_traits<wchar_t> > > const&)
:181
26940x
100.0%
100.0%
boost::re_detail_600::regex_data<wchar_t, boost::regex_traits<wchar_t, boost::cpp_regex_traits<wchar_t> > >::regex_data(std::shared_ptr<boost::regex_traits_wrapper<boost::regex_traits<wchar_t, boost::cpp_regex_traits<wchar_t> > > > const&)
:181
1x
100.0%
100.0%
boost::re_detail_600::regex_data<char, boost::c_regex_traits<char> >::regex_data()
:187
45052x
55.6%
100.0%
boost::re_detail_600::regex_data<char, boost::cpp_regex_traits<char> >::regex_data()
:187
28668x
100.0%
100.0%
boost::re_detail_600::regex_data<char, boost::regex_traits<char, boost::cpp_regex_traits<char> > >::regex_data()
:187
76x
100.0%
100.0%
boost::re_detail_600::regex_data<char32_t, char32_traits>::regex_data()
:187
1x
100.0%
67.0%
boost::re_detail_600::regex_data<int, boost::icu_regex_traits>::regex_data()
:187
149240x
100.0%
100.0%
boost::re_detail_600::regex_data<wchar_t, boost::c_regex_traits<wchar_t> >::regex_data()
:187
45373x
55.6%
100.0%
boost::re_detail_600::regex_data<wchar_t, boost::cpp_regex_traits<wchar_t> >::regex_data()
:187
28776x
100.0%
100.0%
boost::re_detail_600::regex_data<wchar_t, boost::regex_traits<wchar_t, boost::cpp_regex_traits<wchar_t> > >::regex_data()
:187
10x
100.0%
67.0%
boost::re_detail_600::basic_regex_implementation<char, boost::c_regex_traits<char> >::basic_regex_implementation()
:228
45052x
100.0%
100.0%
boost::re_detail_600::basic_regex_implementation<char, boost::cpp_regex_traits<char> >::basic_regex_implementation()
:228
28668x
100.0%
100.0%
boost::re_detail_600::basic_regex_implementation<char, boost::regex_traits<char, boost::cpp_regex_traits<char> > >::basic_regex_implementation()
:228
76x
100.0%
100.0%
boost::re_detail_600::basic_regex_implementation<char32_t, char32_traits>::basic_regex_implementation()
:228
1x
100.0%
100.0%
boost::re_detail_600::basic_regex_implementation<int, boost::icu_regex_traits>::basic_regex_implementation()
:228
149240x
100.0%
100.0%
boost::re_detail_600::basic_regex_implementation<wchar_t, boost::c_regex_traits<wchar_t> >::basic_regex_implementation()
:228
45373x
100.0%
100.0%
boost::re_detail_600::basic_regex_implementation<wchar_t, boost::cpp_regex_traits<wchar_t> >::basic_regex_implementation()
:228
28776x
100.0%
100.0%
boost::re_detail_600::basic_regex_implementation<wchar_t, boost::regex_traits<wchar_t, boost::cpp_regex_traits<wchar_t> > >::basic_regex_implementation()
:228
10x
100.0%
100.0%
boost::re_detail_600::basic_regex_implementation<char, boost::c_regex_traits<char> >::basic_regex_implementation(std::shared_ptr<boost::regex_traits_wrapper<boost::c_regex_traits<char> > > const&)
:229
26832x
100.0%
100.0%
boost::re_detail_600::basic_regex_implementation<char, boost::cpp_regex_traits<char> >::basic_regex_implementation(std::shared_ptr<boost::regex_traits_wrapper<boost::cpp_regex_traits<char> > > const&)
:229
26832x
100.0%
100.0%
boost::re_detail_600::basic_regex_implementation<char, boost::regex_traits<char, boost::cpp_regex_traits<char> > >::basic_regex_implementation(std::shared_ptr<boost::regex_traits_wrapper<boost::regex_traits<char, boost::cpp_regex_traits<char> > > > const&)
:229
2x
100.0%
100.0%
boost::re_detail_600::basic_regex_implementation<char32_t, char32_traits>::basic_regex_implementation(std::shared_ptr<boost::regex_traits_wrapper<char32_traits> > const&)
:229
0
0.0%
0.0%
boost::re_detail_600::basic_regex_implementation<int, boost::icu_regex_traits>::basic_regex_implementation(std::shared_ptr<boost::regex_traits_wrapper<boost::icu_regex_traits> > const&)
:229
3556x
100.0%
100.0%
boost::re_detail_600::basic_regex_implementation<wchar_t, boost::c_regex_traits<wchar_t> >::basic_regex_implementation(std::shared_ptr<boost::regex_traits_wrapper<boost::c_regex_traits<wchar_t> > > const&)
:229
26940x
100.0%
100.0%
boost::re_detail_600::basic_regex_implementation<wchar_t, boost::cpp_regex_traits<wchar_t> >::basic_regex_implementation(std::shared_ptr<boost::regex_traits_wrapper<boost::cpp_regex_traits<wchar_t> > > const&)
:229
26940x
100.0%
100.0%
boost::re_detail_600::basic_regex_implementation<wchar_t, boost::regex_traits<wchar_t, boost::cpp_regex_traits<wchar_t> > >::basic_regex_implementation(std::shared_ptr<boost::regex_traits_wrapper<boost::regex_traits<wchar_t, boost::cpp_regex_traits<wchar_t> > > > const&)
:229
1x
100.0%
100.0%
boost::re_detail_600::basic_regex_implementation<char, boost::c_regex_traits<char> >::assign(char const*, char const*, unsigned int)
:232
71884x
23.8%
100.0%
boost::re_detail_600::basic_regex_implementation<char, boost::cpp_regex_traits<char> >::assign(char const*, char const*, unsigned int)
:232
55500x
100.0%
100.0%
boost::re_detail_600::basic_regex_implementation<char, boost::regex_traits<char, boost::cpp_regex_traits<char> > >::assign(char const*, char const*, unsigned int)
:232
78x
100.0%
100.0%
boost::re_detail_600::basic_regex_implementation<char32_t, char32_traits>::assign(char32_t const*, char32_t const*, unsigned int)
:232
1x
100.0%
71.0%
boost::re_detail_600::basic_regex_implementation<int, boost::icu_regex_traits>::assign(int const*, int const*, unsigned int)
:232
152732x
100.0%
100.0%
boost::re_detail_600::basic_regex_implementation<wchar_t, boost::c_regex_traits<wchar_t> >::assign(wchar_t const*, wchar_t const*, unsigned int)
:232
72313x
23.8%
100.0%
boost::re_detail_600::basic_regex_implementation<wchar_t, boost::cpp_regex_traits<wchar_t> >::assign(wchar_t const*, wchar_t const*, unsigned int)
:232
55716x
100.0%
100.0%
boost::re_detail_600::basic_regex_implementation<wchar_t, boost::regex_traits<wchar_t, boost::cpp_regex_traits<wchar_t> > >::assign(wchar_t const*, wchar_t const*, unsigned int)
:232
11x
100.0%
71.0%
boost::re_detail_600::basic_regex_implementation<char, boost::cpp_regex_traits<char> >::imbue(std::locale)
:241
0
0.0%
0.0%
boost::re_detail_600::basic_regex_implementation<int, boost::icu_regex_traits>::imbue(icu_74::Locale)
:241
64x
100.0%
100.0%
boost::re_detail_600::basic_regex_implementation<wchar_t, boost::cpp_regex_traits<wchar_t> >::imbue(std::locale)
:241
0
0.0%
0.0%
boost::re_detail_600::basic_regex_implementation<char, boost::c_regex_traits<char> >::str[abi:cxx11]() const
:249
6693x
66.7%
36.0%
boost::re_detail_600::basic_regex_implementation<char, boost::cpp_regex_traits<char> >::str[abi:cxx11]() const
:249
6693x
66.7%
36.0%
boost::re_detail_600::basic_regex_implementation<wchar_t, boost::c_regex_traits<wchar_t> >::str[abi:cxx11]() const
:249
6693x
66.7%
36.0%
boost::re_detail_600::basic_regex_implementation<wchar_t, boost::cpp_regex_traits<wchar_t> >::str[abi:cxx11]() const
:249
6693x
66.7%
36.0%
boost::re_detail_600::basic_regex_implementation<char, boost::c_regex_traits<char> >::expression() const
:256
34248x
100.0%
100.0%
boost::re_detail_600::basic_regex_implementation<char, boost::cpp_regex_traits<char> >::expression() const
:256
34248x
100.0%
100.0%
boost::re_detail_600::basic_regex_implementation<wchar_t, boost::c_regex_traits<wchar_t> >::expression() const
:256
34368x
100.0%
100.0%
boost::re_detail_600::basic_regex_implementation<wchar_t, boost::cpp_regex_traits<wchar_t> >::expression() const
:256
34368x
100.0%
100.0%
boost::re_detail_600::basic_regex_implementation<char, boost::c_regex_traits<char> >::subexpression(unsigned long) const
:260
38519x
100.0%
100.0%
boost::re_detail_600::basic_regex_implementation<char, boost::cpp_regex_traits<char> >::subexpression(unsigned long) const
:260
38519x
100.0%
100.0%
boost::re_detail_600::basic_regex_implementation<wchar_t, boost::c_regex_traits<wchar_t> >::subexpression(unsigned long) const
:260
38678x
100.0%
100.0%
boost::re_detail_600::basic_regex_implementation<wchar_t, boost::cpp_regex_traits<wchar_t> >::subexpression(unsigned long) const
:260
38678x
100.0%
100.0%
boost::re_detail_600::basic_regex_implementation<char, boost::c_regex_traits<char> >::begin() const
:268
36726x
100.0%
100.0%
boost::re_detail_600::basic_regex_implementation<char, boost::cpp_regex_traits<char> >::begin() const
:268
36726x
100.0%
100.0%
boost::re_detail_600::basic_regex_implementation<wchar_t, boost::c_regex_traits<wchar_t> >::begin() const
:268
36834x
100.0%
100.0%
boost::re_detail_600::basic_regex_implementation<wchar_t, boost::cpp_regex_traits<wchar_t> >::begin() const
:268
36834x
100.0%
100.0%
boost::re_detail_600::basic_regex_implementation<char, boost::c_regex_traits<char> >::end() const
:272
36726x
100.0%
100.0%
boost::re_detail_600::basic_regex_implementation<char, boost::cpp_regex_traits<char> >::end() const
:272
36726x
100.0%
100.0%
boost::re_detail_600::basic_regex_implementation<wchar_t, boost::c_regex_traits<wchar_t> >::end() const
:272
36834x
100.0%
100.0%
boost::re_detail_600::basic_regex_implementation<wchar_t, boost::cpp_regex_traits<wchar_t> >::end() const
:272
36834x
100.0%
100.0%
boost::re_detail_600::basic_regex_implementation<char, boost::c_regex_traits<char> >::flags() const
:276
1116324x
100.0%
100.0%
boost::re_detail_600::basic_regex_implementation<char, boost::cpp_regex_traits<char> >::flags() const
:276
1067412x
100.0%
100.0%
boost::re_detail_600::basic_regex_implementation<char, boost::regex_traits<char, boost::cpp_regex_traits<char> > >::flags() const
:276
15730x
100.0%
100.0%
boost::re_detail_600::basic_regex_implementation<char32_t, char32_traits>::flags() const
:276
2x
100.0%
100.0%
boost::re_detail_600::basic_regex_implementation<int, boost::icu_regex_traits>::flags() const
:276
652347x
100.0%
100.0%
boost::re_detail_600::basic_regex_implementation<wchar_t, boost::c_regex_traits<wchar_t> >::flags() const
:276
1115343x
100.0%
100.0%
boost::re_detail_600::basic_regex_implementation<wchar_t, boost::cpp_regex_traits<wchar_t> >::flags() const
:276
1071852x
100.0%
100.0%
boost::re_detail_600::basic_regex_implementation<wchar_t, boost::regex_traits<wchar_t, boost::cpp_regex_traits<wchar_t> > >::flags() const
:276
6085x
100.0%
100.0%
boost::re_detail_600::basic_regex_implementation<char, boost::c_regex_traits<char> >::size() const
:280
382829x
100.0%
100.0%
boost::re_detail_600::basic_regex_implementation<char, boost::cpp_regex_traits<char> >::size() const
:280
366525x
100.0%
100.0%
boost::re_detail_600::basic_regex_implementation<char, boost::regex_traits<char, boost::cpp_regex_traits<char> > >::size() const
:280
5281x
100.0%
100.0%
boost::re_detail_600::basic_regex_implementation<char32_t, char32_traits>::size() const
:280
1x
100.0%
100.0%
boost::re_detail_600::basic_regex_implementation<int, boost::icu_regex_traits>::size() const
:280
99664x
100.0%
100.0%
boost::re_detail_600::basic_regex_implementation<wchar_t, boost::c_regex_traits<wchar_t> >::size() const
:280
382474x
100.0%
100.0%
boost::re_detail_600::basic_regex_implementation<wchar_t, boost::cpp_regex_traits<wchar_t> >::size() const
:280
367977x
100.0%
100.0%
boost::re_detail_600::basic_regex_implementation<wchar_t, boost::regex_traits<wchar_t, boost::cpp_regex_traits<wchar_t> > >::size() const
:280
2031x
100.0%
100.0%
boost::re_detail_600::basic_regex_implementation<char, boost::c_regex_traits<char> >::status() const
:284
451249x
100.0%
100.0%
boost::re_detail_600::basic_regex_implementation<char, boost::cpp_regex_traits<char> >::status() const
:284
402177x
100.0%
100.0%
boost::re_detail_600::basic_regex_implementation<char, boost::regex_traits<char, boost::cpp_regex_traits<char> > >::status() const
:284
5281x
100.0%
100.0%
boost::re_detail_600::basic_regex_implementation<char32_t, char32_traits>::status() const
:284
1x
100.0%
100.0%
boost::re_detail_600::basic_regex_implementation<int, boost::icu_regex_traits>::status() const
:284
261608x
100.0%
100.0%
boost::re_detail_600::basic_regex_implementation<wchar_t, boost::c_regex_traits<wchar_t> >::status() const
:284
451428x
100.0%
100.0%
boost::re_detail_600::basic_regex_implementation<wchar_t, boost::cpp_regex_traits<wchar_t> >::status() const
:284
403737x
100.0%
100.0%
boost::re_detail_600::basic_regex_implementation<wchar_t, boost::regex_traits<wchar_t, boost::cpp_regex_traits<wchar_t> > >::status() const
:284
2031x
100.0%
100.0%
boost::re_detail_600::basic_regex_implementation<char, boost::c_regex_traits<char> >::mark_count() const
:288
497102x
100.0%
100.0%
boost::re_detail_600::basic_regex_implementation<char, boost::cpp_regex_traits<char> >::mark_count() const
:288
464412x
100.0%
100.0%
boost::re_detail_600::basic_regex_implementation<char, boost::regex_traits<char, boost::cpp_regex_traits<char> > >::mark_count() const
:288
5417x
100.0%
100.0%
boost::re_detail_600::basic_regex_implementation<char32_t, char32_traits>::mark_count() const
:288
1x
100.0%
100.0%
boost::re_detail_600::basic_regex_implementation<int, boost::icu_regex_traits>::mark_count() const
:288
248881x
100.0%
100.0%
boost::re_detail_600::basic_regex_implementation<wchar_t, boost::c_regex_traits<wchar_t> >::mark_count() const
:288
497931x
100.0%
100.0%
boost::re_detail_600::basic_regex_implementation<wchar_t, boost::cpp_regex_traits<wchar_t> >::mark_count() const
:288
466836x
100.0%
100.0%
boost::re_detail_600::basic_regex_implementation<wchar_t, boost::regex_traits<wchar_t, boost::cpp_regex_traits<wchar_t> > >::mark_count() const
:288
2031x
100.0%
100.0%
boost::re_detail_600::basic_regex_implementation<char, boost::c_regex_traits<char> >::get_first_state() const
:292
1154460x
100.0%
100.0%
boost::re_detail_600::basic_regex_implementation<char, boost::cpp_regex_traits<char> >::get_first_state() const
:292
1107048x
100.0%
100.0%
boost::re_detail_600::basic_regex_implementation<char, boost::regex_traits<char, boost::cpp_regex_traits<char> > >::get_first_state() const
:292
46376x
100.0%
100.0%
boost::re_detail_600::basic_regex_implementation<char32_t, char32_traits>::get_first_state() const
:292
1x
100.0%
100.0%
boost::re_detail_600::basic_regex_implementation<int, boost::icu_regex_traits>::get_first_state() const
:292
507398x
100.0%
100.0%
boost::re_detail_600::basic_regex_implementation<wchar_t, boost::c_regex_traits<wchar_t> >::get_first_state() const
:292
738423x
100.0%
100.0%
boost::re_detail_600::basic_regex_implementation<wchar_t, boost::cpp_regex_traits<wchar_t> >::get_first_state() const
:292
704580x
100.0%
100.0%
boost::re_detail_600::basic_regex_implementation<wchar_t, boost::regex_traits<wchar_t, boost::cpp_regex_traits<wchar_t> > >::get_first_state() const
:292
14166x
100.0%
100.0%
boost::re_detail_600::basic_regex_implementation<char, boost::c_regex_traits<char> >::get_restart_type() const
:296
362936x
100.0%
100.0%
boost::re_detail_600::basic_regex_implementation<char, boost::cpp_regex_traits<char> >::get_restart_type() const
:296
346632x
100.0%
100.0%
boost::re_detail_600::basic_regex_implementation<char, boost::regex_traits<char, boost::cpp_regex_traits<char> > >::get_restart_type() const
:296
5181x
100.0%
100.0%
boost::re_detail_600::basic_regex_implementation<int, boost::icu_regex_traits>::get_restart_type() const
:296
217369x
100.0%
100.0%
boost::re_detail_600::basic_regex_implementation<wchar_t, boost::c_regex_traits<wchar_t> >::get_restart_type() const
:296
362665x
100.0%
100.0%
boost::re_detail_600::basic_regex_implementation<wchar_t, boost::cpp_regex_traits<wchar_t> >::get_restart_type() const
:296
348168x
100.0%
100.0%
boost::re_detail_600::basic_regex_implementation<wchar_t, boost::regex_traits<wchar_t, boost::cpp_regex_traits<wchar_t> > >::get_restart_type() const
:296
2023x
100.0%
100.0%
boost::re_detail_600::basic_regex_implementation<char, boost::c_regex_traits<char> >::get_map() const
:300
359888x
100.0%
100.0%
boost::re_detail_600::basic_regex_implementation<char, boost::cpp_regex_traits<char> >::get_map() const
:300
343752x
100.0%
100.0%
boost::re_detail_600::basic_regex_implementation<char, boost::regex_traits<char, boost::cpp_regex_traits<char> > >::get_map() const
:300
5153x
100.0%
100.0%
boost::re_detail_600::basic_regex_implementation<int, boost::icu_regex_traits>::get_map() const
:300
215807x
100.0%
100.0%
boost::re_detail_600::basic_regex_implementation<wchar_t, boost::c_regex_traits<wchar_t> >::get_map() const
:300
359617x
100.0%
100.0%
boost::re_detail_600::basic_regex_implementation<wchar_t, boost::cpp_regex_traits<wchar_t> >::get_map() const
:300
345288x
100.0%
100.0%
boost::re_detail_600::basic_regex_implementation<wchar_t, boost::regex_traits<wchar_t, boost::cpp_regex_traits<wchar_t> > >::get_map() const
:300
2023x
100.0%
100.0%
boost::re_detail_600::basic_regex_implementation<char, boost::c_regex_traits<char> >::get_traits() const
:304
379388x
100.0%
100.0%
boost::re_detail_600::basic_regex_implementation<char, boost::cpp_regex_traits<char> >::get_traits() const
:304
363084x
100.0%
100.0%
boost::re_detail_600::basic_regex_implementation<char, boost::regex_traits<char, boost::cpp_regex_traits<char> > >::get_traits() const
:304
5774x
100.0%
100.0%
boost::re_detail_600::basic_regex_implementation<char32_t, char32_traits>::get_traits() const
:304
1x
100.0%
100.0%
boost::re_detail_600::basic_regex_implementation<int, boost::icu_regex_traits>::get_traits() const
:304
233714x
100.0%
100.0%
boost::re_detail_600::basic_regex_implementation<wchar_t, boost::c_regex_traits<wchar_t> >::get_traits() const
:304
379033x
100.0%
100.0%
boost::re_detail_600::basic_regex_implementation<wchar_t, boost::cpp_regex_traits<wchar_t> >::get_traits() const
:304
364536x
100.0%
100.0%
boost::re_detail_600::basic_regex_implementation<wchar_t, boost::regex_traits<wchar_t, boost::cpp_regex_traits<wchar_t> > >::get_traits() const
:304
2031x
100.0%
100.0%
boost::re_detail_600::basic_regex_implementation<char, boost::c_regex_traits<char> >::can_be_null() const
:308
174384x
100.0%
100.0%
boost::re_detail_600::basic_regex_implementation<char, boost::cpp_regex_traits<char> >::can_be_null() const
:308
172080x
100.0%
100.0%
boost::re_detail_600::basic_regex_implementation<char, boost::regex_traits<char, boost::cpp_regex_traits<char> > >::can_be_null() const
:308
48x
100.0%
100.0%
boost::re_detail_600::basic_regex_implementation<int, boost::icu_regex_traits>::can_be_null() const
:308
68410x
100.0%
100.0%
boost::re_detail_600::basic_regex_implementation<wchar_t, boost::c_regex_traits<wchar_t> >::can_be_null() const
:308
175344x
100.0%
100.0%
boost::re_detail_600::basic_regex_implementation<wchar_t, boost::cpp_regex_traits<wchar_t> >::can_be_null() const
:308
173004x
100.0%
100.0%
boost::re_detail_600::basic_regex_implementation<wchar_t, boost::regex_traits<wchar_t, boost::cpp_regex_traits<wchar_t> > >::can_be_null() const
:308
0
0.0%
0.0%
boost::re_detail_600::basic_regex_implementation<char, boost::c_regex_traits<char> >::get_data() const
:312
851296x
100.0%
100.0%
boost::re_detail_600::basic_regex_implementation<char, boost::cpp_regex_traits<char> >::get_data() const
:312
817128x
100.0%
100.0%
boost::re_detail_600::basic_regex_implementation<char, boost::regex_traits<char, boost::cpp_regex_traits<char> > >::get_data() const
:312
10562x
100.0%
100.0%
boost::re_detail_600::basic_regex_implementation<char32_t, char32_traits>::get_data() const
:312
2x
100.0%
100.0%
boost::re_detail_600::basic_regex_implementation<int, boost::icu_regex_traits>::get_data() const
:312
963800x
100.0%
100.0%
boost::re_detail_600::basic_regex_implementation<wchar_t, boost::c_regex_traits<wchar_t> >::get_data() const
:312
1582478x
100.0%
100.0%
boost::re_detail_600::basic_regex_implementation<wchar_t, boost::cpp_regex_traits<wchar_t> >::get_data() const
:312
1494516x
100.0%
100.0%
boost::re_detail_600::basic_regex_implementation<wchar_t, boost::regex_traits<wchar_t, boost::cpp_regex_traits<wchar_t> > >::get_data() const
:312
8549x
100.0%
100.0%
boost::basic_regex<char, boost::c_regex_traits<char> >::basic_regex()
:354
45116x
100.0%
100.0%
boost::basic_regex<char, boost::cpp_regex_traits<char> >::basic_regex()
:354
28732x
100.0%
100.0%
boost::basic_regex<char, boost::regex_traits<char, boost::cpp_regex_traits<char> > >::basic_regex()
:354
6x
100.0%
100.0%
boost::basic_regex<int, boost::icu_regex_traits>::basic_regex()
:354
29896x
100.0%
100.0%
boost::basic_regex<wchar_t, boost::c_regex_traits<wchar_t> >::basic_regex()
:354
45437x
100.0%
100.0%
boost::basic_regex<wchar_t, boost::cpp_regex_traits<wchar_t> >::basic_regex()
:354
28840x
100.0%
100.0%
boost::basic_regex<wchar_t, boost::regex_traits<wchar_t, boost::cpp_regex_traits<wchar_t> > >::basic_regex()
:354
1x
100.0%
100.0%
boost::basic_regex<char, boost::regex_traits<char, boost::cpp_regex_traits<char> > >::basic_regex(char const*, unsigned int)
:355
38x
100.0%
100.0%
boost::basic_regex<char32_t, char32_traits>::basic_regex(char32_t const*, unsigned int)
:355
1x
100.0%
80.0%
boost::basic_regex<wchar_t, boost::regex_traits<wchar_t, boost::cpp_regex_traits<wchar_t> > >::basic_regex(wchar_t const*, unsigned int)
:355
1x
100.0%
80.0%
boost::basic_regex<char, boost::c_regex_traits<char> >::basic_regex(boost::basic_regex<char, boost::c_regex_traits<char> > const&)
:367
178908x
100.0%
100.0%
boost::basic_regex<char, boost::cpp_regex_traits<char> >::basic_regex(boost::basic_regex<char, boost::cpp_regex_traits<char> > const&)
:367
178908x
100.0%
100.0%
boost::basic_regex<char, boost::regex_traits<char, boost::cpp_regex_traits<char> > >::basic_regex(boost::basic_regex<char, boost::regex_traits<char, boost::cpp_regex_traits<char> > > const&)
:367
325x
100.0%
100.0%
boost::basic_regex<int, boost::icu_regex_traits>::basic_regex(boost::basic_regex<int, boost::icu_regex_traits> const&)
:367
53603x
100.0%
100.0%
boost::basic_regex<wchar_t, boost::c_regex_traits<wchar_t> >::basic_regex(boost::basic_regex<wchar_t, boost::c_regex_traits<wchar_t> > const&)
:367
179700x
100.0%
100.0%
boost::basic_regex<wchar_t, boost::cpp_regex_traits<wchar_t> >::basic_regex(boost::basic_regex<wchar_t, boost::cpp_regex_traits<wchar_t> > const&)
:367
179700x
100.0%
100.0%
boost::basic_regex<char, boost::c_regex_traits<char> >::~basic_regex()
:369
224024x
100.0%
100.0%
boost::basic_regex<char, boost::cpp_regex_traits<char> >::~basic_regex()
:369
207640x
100.0%
100.0%
boost::basic_regex<char, boost::regex_traits<char, boost::cpp_regex_traits<char> > >::~basic_regex()
:369
391x
100.0%
100.0%
boost::basic_regex<char32_t, char32_traits>::~basic_regex()
:369
1x
100.0%
100.0%
boost::basic_regex<int, boost::icu_regex_traits>::~basic_regex()
:369
202843x
100.0%
100.0%
boost::basic_regex<wchar_t, boost::c_regex_traits<wchar_t> >::~basic_regex()
:369
225137x
100.0%
100.0%
boost::basic_regex<wchar_t, boost::cpp_regex_traits<wchar_t> >::~basic_regex()
:369
208540x
100.0%
100.0%
boost::basic_regex<wchar_t, boost::regex_traits<wchar_t, boost::cpp_regex_traits<wchar_t> > >::~basic_regex()
:369
10x
100.0%
100.0%
boost::basic_regex<int, boost::icu_regex_traits>::operator=(boost::basic_regex<int, boost::icu_regex_traits> const&)
:370
105360x
100.0%
100.0%
boost::basic_regex<int, boost::icu_regex_traits>::assign(boost::basic_regex<int, boost::icu_regex_traits> const&)
:381
105360x
100.0%
100.0%
boost::basic_regex<char, boost::regex_traits<char, boost::cpp_regex_traits<char> > >::assign(char const*, unsigned int)
:386
43x
100.0%
100.0%
boost::basic_regex<char32_t, char32_traits>::assign(char32_t const*, unsigned int)
:386
1x
100.0%
100.0%
boost::basic_regex<wchar_t, boost::regex_traits<wchar_t, boost::cpp_regex_traits<wchar_t> > >::assign(wchar_t const*, unsigned int)
:386
1x
100.0%
100.0%
boost::basic_regex<char, boost::c_regex_traits<char> >::assign(char const*, char const*, unsigned int)
:399
71884x
100.0%
100.0%
boost::basic_regex<char, boost::cpp_regex_traits<char> >::assign(char const*, char const*, unsigned int)
:399
55500x
100.0%
100.0%
boost::basic_regex<char, boost::regex_traits<char, boost::cpp_regex_traits<char> > >::assign(char const*, char const*, unsigned int)
:399
78x
100.0%
100.0%
boost::basic_regex<char32_t, char32_traits>::assign(char32_t const*, char32_t const*, unsigned int)
:399
1x
100.0%
100.0%
boost::basic_regex<int, boost::icu_regex_traits>::assign(int const*, int const*, unsigned int)
:399
152732x
100.0%
100.0%
boost::basic_regex<wchar_t, boost::c_regex_traits<wchar_t> >::assign(wchar_t const*, wchar_t const*, unsigned int)
:399
72313x
100.0%
100.0%
boost::basic_regex<wchar_t, boost::cpp_regex_traits<wchar_t> >::assign(wchar_t const*, wchar_t const*, unsigned int)
:399
55716x
100.0%
100.0%
boost::basic_regex<wchar_t, boost::regex_traits<wchar_t, boost::cpp_regex_traits<wchar_t> > >::assign(wchar_t const*, wchar_t const*, unsigned int)
:399
11x
100.0%
100.0%
boost::basic_regex<char, boost::regex_traits<char, boost::cpp_regex_traits<char> > >::basic_regex<std::char_traits<char>, std::allocator<char> >(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, unsigned int)
:413
28x
100.0%
80.0%
boost::basic_regex<wchar_t, boost::regex_traits<wchar_t, boost::cpp_regex_traits<wchar_t> > >::basic_regex<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&, unsigned int)
:413
8x
100.0%
80.0%
boost::basic_regex<char, boost::regex_traits<char, boost::cpp_regex_traits<char> > >::basic_regex<__gnu_cxx::__normal_iterator<char*, std::vector<char, std::allocator<char> > > >(__gnu_cxx::__normal_iterator<char*, std::vector<char, std::allocator<char> > >, __gnu_cxx::__normal_iterator<char*, std::vector<char, std::allocator<char> > >, unsigned int)
:419
4x
85.7%
63.0%
boost::basic_regex<int, boost::icu_regex_traits>::basic_regex<boost::u16_to_u32_iterator<__gnu_cxx::__normal_iterator<char16_t*, std::vector<char16_t, std::allocator<char16_t> > >, int> >(boost::u16_to_u32_iterator<__gnu_cxx::__normal_iterator<char16_t*, std::vector<char16_t, std::allocator<char16_t> > >, int>, boost::u16_to_u32_iterator<__gnu_cxx::__normal_iterator<char16_t*, std::vector<char16_t, std::allocator<char16_t> > >, int>, unsigned int)
:419
31668x
100.0%
100.0%
boost::basic_regex<int, boost::icu_regex_traits>::basic_regex<boost::u16_to_u32_iterator<char16_t const*, int> >(boost::u16_to_u32_iterator<char16_t const*, int>, boost::u16_to_u32_iterator<char16_t const*, int>, unsigned int)
:419
27998x
100.0%
100.0%
boost::basic_regex<int, boost::icu_regex_traits>::basic_regex<boost::u8_to_u32_iterator<__gnu_cxx::__normal_iterator<char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, int> >(boost::u8_to_u32_iterator<__gnu_cxx::__normal_iterator<char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, int>, boost::u8_to_u32_iterator<__gnu_cxx::__normal_iterator<char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, int>, unsigned int)
:419
8x
90.0%
63.0%
boost::basic_regex<int, boost::icu_regex_traits>::basic_regex<boost::u8_to_u32_iterator<__gnu_cxx::__normal_iterator<char*, std::vector<char, std::allocator<char> > >, int> >(boost::u8_to_u32_iterator<__gnu_cxx::__normal_iterator<char*, std::vector<char, std::allocator<char> > >, int>, boost::u8_to_u32_iterator<__gnu_cxx::__normal_iterator<char*, std::vector<char, std::allocator<char> > >, int>, unsigned int)
:419
3672x
85.7%
94.0%
boost::basic_regex<int, boost::icu_regex_traits>::basic_regex<boost::u8_to_u32_iterator<__gnu_cxx::__normal_iterator<unsigned char*, std::vector<unsigned char, std::allocator<unsigned char> > >, int> >(boost::u8_to_u32_iterator<__gnu_cxx::__normal_iterator<unsigned char*, std::vector<unsigned char, std::allocator<unsigned char> > >, int>, boost::u8_to_u32_iterator<__gnu_cxx::__normal_iterator<unsigned char*, std::vector<unsigned char, std::allocator<unsigned char> > >, int>, unsigned int)
:419
27996x
100.0%
100.0%
boost::basic_regex<int, boost::icu_regex_traits>::basic_regex<boost::u8_to_u32_iterator<char const*, int> >(boost::u8_to_u32_iterator<char const*, int>, boost::u8_to_u32_iterator<char const*, int>, unsigned int)
:419
5x
85.7%
63.0%
boost::basic_regex<int, boost::icu_regex_traits>::basic_regex<boost::u8_to_u32_iterator<unsigned char const*, int> >(boost::u8_to_u32_iterator<unsigned char const*, int>, boost::u8_to_u32_iterator<unsigned char const*, int>, unsigned int)
:419
27996x
100.0%
100.0%
boost::basic_regex<int, boost::icu_regex_traits>::basic_regex<wchar_t const*>(wchar_t const*, wchar_t const*, unsigned int)
:419
1x
85.7%
63.0%
boost::basic_regex<char, boost::c_regex_traits<char> >& boost::basic_regex<char, boost::c_regex_traits<char> >::assign<std::char_traits<char>, std::allocator<char> >(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, unsigned int)
:436
55500x
100.0%
100.0%
boost::basic_regex<char, boost::cpp_regex_traits<char> >& boost::basic_regex<char, boost::cpp_regex_traits<char> >::assign<std::char_traits<char>, std::allocator<char> >(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, unsigned int)
:436
55500x
100.0%
100.0%
boost::basic_regex<char, boost::regex_traits<char, boost::cpp_regex_traits<char> > >& boost::basic_regex<char, boost::regex_traits<char, boost::cpp_regex_traits<char> > >::assign<std::char_traits<char>, std::allocator<char> >(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, unsigned int)
:436
31x
100.0%
100.0%
boost::basic_regex<wchar_t, boost::c_regex_traits<wchar_t> >& boost::basic_regex<wchar_t, boost::c_regex_traits<wchar_t> >::assign<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&, unsigned int)
:436
55716x
100.0%
100.0%
boost::basic_regex<wchar_t, boost::cpp_regex_traits<wchar_t> >& boost::basic_regex<wchar_t, boost::cpp_regex_traits<wchar_t> >::assign<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&, unsigned int)
:436
55716x
100.0%
100.0%
boost::basic_regex<wchar_t, boost::regex_traits<wchar_t, boost::cpp_regex_traits<wchar_t> > >& boost::basic_regex<wchar_t, boost::regex_traits<wchar_t, boost::cpp_regex_traits<wchar_t> > >::assign<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&, unsigned int)
:436
10x
100.0%
100.0%
boost::basic_regex<int, boost::icu_regex_traits>& boost::basic_regex<int, boost::icu_regex_traits>::assign<__gnu_cxx::__normal_iterator<int*, std::vector<int, std::allocator<int> > > >(__gnu_cxx::__normal_iterator<int*, std::vector<int, std::allocator<int> > >, __gnu_cxx::__normal_iterator<int*, std::vector<int, std::allocator<int> > >, unsigned int)
:444
33388x
100.0%
100.0%
boost::basic_regex<char, boost::c_regex_traits<char> >::flags() const
:474
1116324x
100.0%
86.0%
boost::basic_regex<char, boost::cpp_regex_traits<char> >::flags() const
:474
1067412x
100.0%
86.0%
boost::basic_regex<char, boost::regex_traits<char, boost::cpp_regex_traits<char> > >::flags() const
:474
15730x
100.0%
86.0%
boost::basic_regex<char32_t, char32_traits>::flags() const
:474
2x
100.0%
86.0%
boost::basic_regex<int, boost::icu_regex_traits>::flags() const
:474
652347x
100.0%
86.0%
boost::basic_regex<wchar_t, boost::c_regex_traits<wchar_t> >::flags() const
:474
1115343x
100.0%
86.0%
boost::basic_regex<wchar_t, boost::cpp_regex_traits<wchar_t> >::flags() const
:474
1071852x
100.0%
86.0%
boost::basic_regex<wchar_t, boost::regex_traits<wchar_t, boost::cpp_regex_traits<wchar_t> > >::flags() const
:474
6085x
100.0%
86.0%
boost::basic_regex<char, boost::c_regex_traits<char> >::str[abi:cxx11]() const
:480
6693x
100.0%
86.0%
boost::basic_regex<char, boost::cpp_regex_traits<char> >::str[abi:cxx11]() const
:480
30589x
100.0%
100.0%
boost::basic_regex<wchar_t, boost::c_regex_traits<wchar_t> >::str[abi:cxx11]() const
:480
6693x
100.0%
86.0%
boost::basic_regex<wchar_t, boost::cpp_regex_traits<wchar_t> >::str[abi:cxx11]() const
:480
30679x
100.0%
100.0%
boost::basic_regex<char, boost::c_regex_traits<char> >::subexpression(unsigned long) const
:486
38519x
75.0%
71.0%
boost::basic_regex<char, boost::cpp_regex_traits<char> >::subexpression(unsigned long) const
:486
38519x
75.0%
71.0%
boost::basic_regex<wchar_t, boost::c_regex_traits<wchar_t> >::subexpression(unsigned long) const
:486
38678x
75.0%
71.0%
boost::basic_regex<wchar_t, boost::cpp_regex_traits<wchar_t> >::subexpression(unsigned long) const
:486
38678x
75.0%
71.0%
boost::basic_regex<char, boost::c_regex_traits<char> >::begin() const
:497
36726x
100.0%
86.0%
boost::basic_regex<char, boost::cpp_regex_traits<char> >::begin() const
:497
84518x
100.0%
100.0%
boost::basic_regex<wchar_t, boost::c_regex_traits<wchar_t> >::begin() const
:497
36834x
100.0%
86.0%
boost::basic_regex<wchar_t, boost::cpp_regex_traits<wchar_t> >::begin() const
:497
84806x
100.0%
100.0%
boost::basic_regex<char, boost::c_regex_traits<char> >::end() const
:501
36726x
100.0%
86.0%
boost::basic_regex<char, boost::cpp_regex_traits<char> >::end() const
:501
84518x
100.0%
100.0%
boost::basic_regex<wchar_t, boost::c_regex_traits<wchar_t> >::end() const
:501
36834x
100.0%
86.0%
boost::basic_regex<wchar_t, boost::cpp_regex_traits<wchar_t> >::end() const
:501
84806x
100.0%
100.0%
boost::basic_regex<char, boost::c_regex_traits<char> >::size() const
:513
382829x
100.0%
86.0%
boost::basic_regex<char, boost::cpp_regex_traits<char> >::size() const
:513
390421x
100.0%
100.0%
boost::basic_regex<char, boost::regex_traits<char, boost::cpp_regex_traits<char> > >::size() const
:513
5281x
100.0%
86.0%
boost::basic_regex<char32_t, char32_traits>::size() const
:513
1x
100.0%
86.0%
boost::basic_regex<int, boost::icu_regex_traits>::size() const
:513
99664x
100.0%
86.0%
boost::basic_regex<wchar_t, boost::c_regex_traits<wchar_t> >::size() const
:513
382474x
100.0%
86.0%
boost::basic_regex<wchar_t, boost::cpp_regex_traits<wchar_t> >::size() const
:513
391963x
100.0%
100.0%
boost::basic_regex<wchar_t, boost::regex_traits<wchar_t, boost::cpp_regex_traits<wchar_t> > >::size() const
:513
2031x
100.0%
86.0%
boost::basic_regex<char, boost::c_regex_traits<char> >::empty() const
:525
382829x
100.0%
100.0%
boost::basic_regex<char, boost::cpp_regex_traits<char> >::empty() const
:525
390421x
100.0%
100.0%
boost::basic_regex<char, boost::regex_traits<char, boost::cpp_regex_traits<char> > >::empty() const
:525
5281x
100.0%
89.0%
boost::basic_regex<char32_t, char32_traits>::empty() const
:525
1x
100.0%
89.0%
boost::basic_regex<int, boost::icu_regex_traits>::empty() const
:525
217453x
100.0%
89.0%
boost::basic_regex<wchar_t, boost::c_regex_traits<wchar_t> >::empty() const
:525
382474x
100.0%
100.0%
boost::basic_regex<wchar_t, boost::cpp_regex_traits<wchar_t> >::empty() const
:525
391963x
100.0%
100.0%
boost::basic_regex<wchar_t, boost::regex_traits<wchar_t, boost::cpp_regex_traits<wchar_t> > >::empty() const
:525
2031x
100.0%
89.0%
boost::basic_regex<char, boost::c_regex_traits<char> >::mark_count() const
:530
497102x
100.0%
86.0%
boost::basic_regex<char, boost::cpp_regex_traits<char> >::mark_count() const
:530
464412x
100.0%
86.0%
boost::basic_regex<char, boost::regex_traits<char, boost::cpp_regex_traits<char> > >::mark_count() const
:530
5417x
100.0%
86.0%
boost::basic_regex<char32_t, char32_traits>::mark_count() const
:530
1x
100.0%
86.0%
boost::basic_regex<int, boost::icu_regex_traits>::mark_count() const
:530
248881x
100.0%
86.0%
boost::basic_regex<wchar_t, boost::c_regex_traits<wchar_t> >::mark_count() const
:530
497931x
100.0%
86.0%
boost::basic_regex<wchar_t, boost::cpp_regex_traits<wchar_t> >::mark_count() const
:530
466836x
100.0%
86.0%
boost::basic_regex<wchar_t, boost::regex_traits<wchar_t, boost::cpp_regex_traits<wchar_t> > >::mark_count() const
:530
2031x
100.0%
86.0%
boost::basic_regex<char, boost::c_regex_traits<char> >::status() const
:535
68420x
100.0%
86.0%
boost::basic_regex<char, boost::cpp_regex_traits<char> >::status() const
:535
59548x
100.0%
100.0%
boost::basic_regex<int, boost::icu_regex_traits>::status() const
:535
44155x
100.0%
86.0%
boost::basic_regex<wchar_t, boost::c_regex_traits<wchar_t> >::status() const
:535
68954x
100.0%
86.0%
boost::basic_regex<wchar_t, boost::cpp_regex_traits<wchar_t> >::status() const
:535
59746x
100.0%
100.0%
boost::basic_regex<char, boost::c_regex_traits<char> >::set_expression(char const*, char const*, unsigned int)
:600
16384x
100.0%
100.0%
boost::basic_regex<wchar_t, boost::c_regex_traits<wchar_t> >::set_expression(wchar_t const*, wchar_t const*, unsigned int)
:600
16597x
100.0%
100.0%
boost::basic_regex<char, boost::c_regex_traits<char> >::error_code() const
:610
16384x
100.0%
100.0%
boost::basic_regex<wchar_t, boost::c_regex_traits<wchar_t> >::error_code() const
:610
16597x
100.0%
100.0%
boost::basic_regex<char, boost::c_regex_traits<char> >::get_first_state() const
:617
1154460x
100.0%
83.0%
boost::basic_regex<char, boost::cpp_regex_traits<char> >::get_first_state() const
:617
1107048x
100.0%
83.0%
boost::basic_regex<char, boost::regex_traits<char, boost::cpp_regex_traits<char> > >::get_first_state() const
:617
46376x
100.0%
83.0%
boost::basic_regex<char32_t, char32_traits>::get_first_state() const
:617
1x
100.0%
83.0%
boost::basic_regex<int, boost::icu_regex_traits>::get_first_state() const
:617
507398x
100.0%
83.0%
boost::basic_regex<wchar_t, boost::c_regex_traits<wchar_t> >::get_first_state() const
:617
738423x
100.0%
83.0%
boost::basic_regex<wchar_t, boost::cpp_regex_traits<wchar_t> >::get_first_state() const
:617
704580x
100.0%
83.0%
boost::basic_regex<wchar_t, boost::regex_traits<wchar_t, boost::cpp_regex_traits<wchar_t> > >::get_first_state() const
:617
14166x
100.0%
83.0%
boost::basic_regex<char, boost::c_regex_traits<char> >::get_restart_type() const
:622
362936x
100.0%
83.0%
boost::basic_regex<char, boost::cpp_regex_traits<char> >::get_restart_type() const
:622
346632x
100.0%
83.0%
boost::basic_regex<char, boost::regex_traits<char, boost::cpp_regex_traits<char> > >::get_restart_type() const
:622
5181x
100.0%
83.0%
boost::basic_regex<int, boost::icu_regex_traits>::get_restart_type() const
:622
217369x
100.0%
83.0%
boost::basic_regex<wchar_t, boost::c_regex_traits<wchar_t> >::get_restart_type() const
:622
362665x
100.0%
83.0%
boost::basic_regex<wchar_t, boost::cpp_regex_traits<wchar_t> >::get_restart_type() const
:622
348168x
100.0%
83.0%
boost::basic_regex<wchar_t, boost::regex_traits<wchar_t, boost::cpp_regex_traits<wchar_t> > >::get_restart_type() const
:622
2023x
100.0%
83.0%
boost::basic_regex<char, boost::c_regex_traits<char> >::get_map() const
:627
359888x
100.0%
83.0%
boost::basic_regex<char, boost::cpp_regex_traits<char> >::get_map() const
:627
343752x
100.0%
83.0%
boost::basic_regex<char, boost::regex_traits<char, boost::cpp_regex_traits<char> > >::get_map() const
:627
5153x
100.0%
83.0%
boost::basic_regex<int, boost::icu_regex_traits>::get_map() const
:627
215807x
100.0%
83.0%
boost::basic_regex<wchar_t, boost::c_regex_traits<wchar_t> >::get_map() const
:627
359617x
100.0%
83.0%
boost::basic_regex<wchar_t, boost::cpp_regex_traits<wchar_t> >::get_map() const
:627
345288x
100.0%
83.0%
boost::basic_regex<wchar_t, boost::regex_traits<wchar_t, boost::cpp_regex_traits<wchar_t> > >::get_map() const
:627
2023x
100.0%
83.0%
boost::basic_regex<char, boost::c_regex_traits<char> >::get_traits() const
:632
379388x
100.0%
83.0%
boost::basic_regex<char, boost::cpp_regex_traits<char> >::get_traits() const
:632
363084x
100.0%
83.0%
boost::basic_regex<char, boost::regex_traits<char, boost::cpp_regex_traits<char> > >::get_traits() const
:632
5774x
100.0%
83.0%
boost::basic_regex<char32_t, char32_traits>::get_traits() const
:632
1x
100.0%
83.0%
boost::basic_regex<int, boost::icu_regex_traits>::get_traits() const
:632
233714x
100.0%
83.0%
boost::basic_regex<wchar_t, boost::c_regex_traits<wchar_t> >::get_traits() const
:632
379033x
100.0%
83.0%
boost::basic_regex<wchar_t, boost::cpp_regex_traits<wchar_t> >::get_traits() const
:632
364536x
100.0%
83.0%
boost::basic_regex<wchar_t, boost::regex_traits<wchar_t, boost::cpp_regex_traits<wchar_t> > >::get_traits() const
:632
2031x
100.0%
83.0%
boost::basic_regex<char, boost::c_regex_traits<char> >::can_be_null() const
:637
174384x
100.0%
83.0%
boost::basic_regex<char, boost::cpp_regex_traits<char> >::can_be_null() const
:637
172080x
100.0%
83.0%
boost::basic_regex<char, boost::regex_traits<char, boost::cpp_regex_traits<char> > >::can_be_null() const
:637
48x
100.0%
83.0%
boost::basic_regex<int, boost::icu_regex_traits>::can_be_null() const
:637
68410x
100.0%
83.0%
boost::basic_regex<wchar_t, boost::c_regex_traits<wchar_t> >::can_be_null() const
:637
175344x
100.0%
83.0%
boost::basic_regex<wchar_t, boost::cpp_regex_traits<wchar_t> >::can_be_null() const
:637
173004x
100.0%
83.0%
boost::basic_regex<wchar_t, boost::regex_traits<wchar_t, boost::cpp_regex_traits<wchar_t> > >::can_be_null() const
:637
0
0.0%
0.0%
boost::basic_regex<char, boost::c_regex_traits<char> >::get_data() const
:642
851296x
100.0%
83.0%
boost::basic_regex<char, boost::cpp_regex_traits<char> >::get_data() const
:642
817128x
100.0%
83.0%
boost::basic_regex<char, boost::regex_traits<char, boost::cpp_regex_traits<char> > >::get_data() const
:642
10562x
100.0%
83.0%
boost::basic_regex<char32_t, char32_traits>::get_data() const
:642
2x
100.0%
83.0%
boost::basic_regex<int, boost::icu_regex_traits>::get_data() const
:642
963800x
100.0%
83.0%
boost::basic_regex<wchar_t, boost::c_regex_traits<wchar_t> >::get_data() const
:642
1582478x
100.0%
83.0%
boost::basic_regex<wchar_t, boost::cpp_regex_traits<wchar_t> >::get_data() const
:642
1494516x
100.0%
83.0%
boost::basic_regex<wchar_t, boost::regex_traits<wchar_t, boost::cpp_regex_traits<wchar_t> > >::get_data() const
:642
8549x
100.0%
83.0%
boost::basic_regex<char, boost::c_regex_traits<char> >::get_named_subs() const
:647
376136x
100.0%
100.0%
boost::basic_regex<char, boost::cpp_regex_traits<char> >::get_named_subs() const
:647
359832x
100.0%
100.0%
boost::basic_regex<char, boost::regex_traits<char, boost::cpp_regex_traits<char> > >::get_named_subs() const
:647
5268x
100.0%
100.0%
boost::basic_regex<char32_t, char32_traits>::get_named_subs() const
:647
1x
100.0%
100.0%
boost::basic_regex<int, boost::icu_regex_traits>::get_named_subs() const
:647
296261x
100.0%
100.0%
boost::basic_regex<wchar_t, boost::c_regex_traits<wchar_t> >::get_named_subs() const
:647
375781x
100.0%
100.0%
boost::basic_regex<wchar_t, boost::cpp_regex_traits<wchar_t> >::get_named_subs() const
:647
361284x
100.0%
100.0%
boost::basic_regex<wchar_t, boost::regex_traits<wchar_t, boost::cpp_regex_traits<wchar_t> > >::get_named_subs() const
:647
2031x
100.0%
100.0%
std::shared_ptr<boost::re_detail_600::basic_regex_implementation<char, boost::c_regex_traits<char> > > boost::detail::create_implemenation<char, unsigned int, boost::c_regex_traits<char> >(char const*, char const*, unsigned int, std::shared_ptr<boost::regex_traits_wrapper<boost::c_regex_traits<char> > >)
:666
71884x
100.0%
100.0%
std::shared_ptr<boost::re_detail_600::basic_regex_implementation<char, boost::cpp_regex_traits<char> > > boost::detail::create_implemenation<char, unsigned int, boost::cpp_regex_traits<char> >(char const*, char const*, unsigned int, std::shared_ptr<boost::regex_traits_wrapper<boost::cpp_regex_traits<char> > >)
:666
55500x
100.0%
100.0%
std::shared_ptr<boost::re_detail_600::basic_regex_implementation<char, boost::regex_traits<char, boost::cpp_regex_traits<char> > > > boost::detail::create_implemenation<char, unsigned int, boost::regex_traits<char, boost::cpp_regex_traits<char> > >(char const*, char const*, unsigned int, std::shared_ptr<boost::regex_traits_wrapper<boost::regex_traits<char, boost::cpp_regex_traits<char> > > >)
:666
78x
100.0%
68.0%
std::shared_ptr<boost::re_detail_600::basic_regex_implementation<char32_t, char32_traits> > boost::detail::create_implemenation<char32_t, unsigned int, char32_traits>(char32_t const*, char32_t const*, unsigned int, std::shared_ptr<boost::regex_traits_wrapper<char32_traits> >)
:666
1x
75.0%
46.0%
std::shared_ptr<boost::re_detail_600::basic_regex_implementation<int, boost::icu_regex_traits> > boost::detail::create_implemenation<int, unsigned int, boost::icu_regex_traits>(int const*, int const*, unsigned int, std::shared_ptr<boost::regex_traits_wrapper<boost::icu_regex_traits> >)
:666
152732x
100.0%
100.0%
std::shared_ptr<boost::re_detail_600::basic_regex_implementation<wchar_t, boost::c_regex_traits<wchar_t> > > boost::detail::create_implemenation<wchar_t, unsigned int, boost::c_regex_traits<wchar_t> >(wchar_t const*, wchar_t const*, unsigned int, std::shared_ptr<boost::regex_traits_wrapper<boost::c_regex_traits<wchar_t> > >)
:666
72313x
100.0%
100.0%
std::shared_ptr<boost::re_detail_600::basic_regex_implementation<wchar_t, boost::cpp_regex_traits<wchar_t> > > boost::detail::create_implemenation<wchar_t, unsigned int, boost::cpp_regex_traits<wchar_t> >(wchar_t const*, wchar_t const*, unsigned int, std::shared_ptr<boost::regex_traits_wrapper<boost::cpp_regex_traits<wchar_t> > >)
:666
55716x
100.0%
100.0%
std::shared_ptr<boost::re_detail_600::basic_regex_implementation<wchar_t, boost::regex_traits<wchar_t, boost::cpp_regex_traits<wchar_t> > > > boost::detail::create_implemenation<wchar_t, unsigned int, boost::regex_traits<wchar_t, boost::cpp_regex_traits<wchar_t> > >(wchar_t const*, wchar_t const*, unsigned int, std::shared_ptr<boost::regex_traits_wrapper<boost::regex_traits<wchar_t, boost::cpp_regex_traits<wchar_t> > > >)
:666
11x
87.5%
68.0%
boost::basic_regex<char, boost::c_regex_traits<char> >::do_assign(char const*, char const*, unsigned int)
:689
71884x
100.0%
100.0%
boost::basic_regex<char, boost::cpp_regex_traits<char> >::do_assign(char const*, char const*, unsigned int)
:689
55500x
100.0%
100.0%
boost::basic_regex<char, boost::regex_traits<char, boost::cpp_regex_traits<char> > >::do_assign(char const*, char const*, unsigned int)
:689
67x
100.0%
82.0%
boost::basic_regex<char32_t, char32_traits>::do_assign(char32_t const*, char32_t const*, unsigned int)
:689
1x
100.0%
67.0%
boost::basic_regex<int, boost::icu_regex_traits>::do_assign(int const*, int const*, unsigned int)
:689
152724x
100.0%
100.0%
boost::basic_regex<wchar_t, boost::c_regex_traits<wchar_t> >::do_assign(wchar_t const*, wchar_t const*, unsigned int)
:689
72313x
100.0%
100.0%
boost::basic_regex<wchar_t, boost::cpp_regex_traits<wchar_t> >::do_assign(wchar_t const*, wchar_t const*, unsigned int)
:689
55716x
100.0%
100.0%
boost::basic_regex<char, boost::cpp_regex_traits<char> >::imbue(std::locale)
:698
0
0.0%
0.0%
boost::basic_regex<int, boost::icu_regex_traits>::imbue(icu_74::Locale)
:698
64x
100.0%
100.0%
boost::basic_regex<wchar_t, boost::cpp_regex_traits<wchar_t> >::imbue(std::locale)
:698
0
0.0%
0.0%
| Line | TLA | Hits | Source Code |
|---|---|---|---|
| 1 | /* | ||
| 2 | * | ||
| 3 | * Copyright (c) 1998-2004 John Maddock | ||
| 4 | * Copyright 2011 Garmin Ltd. or its subsidiaries | ||
| 5 | * | ||
| 6 | * Distributed under the Boost Software License, Version 1.0. | ||
| 7 | * (See accompanying file LICENSE_1_0.txt or copy at | ||
| 8 | * 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 basic_regex.cpp | ||
| 15 | * VERSION see <boost/version.hpp> | ||
| 16 | * DESCRIPTION: Declares template class basic_regex. | ||
| 17 | */ | ||
| 18 | |||
| 19 | #ifndef BOOST_REGEX_V5_BASIC_REGEX_HPP | ||
| 20 | #define BOOST_REGEX_V5_BASIC_REGEX_HPP | ||
| 21 | |||
| 22 | #include <boost/regex/v5/regbase.hpp> | ||
| 23 | #include <boost/regex/v5/syntax_type.hpp> | ||
| 24 | #include <boost/regex/v5/regex_traits.hpp> | ||
| 25 | #include <boost/regex/v5/states.hpp> | ||
| 26 | #include <boost/regex/v5/regex_raw_buffer.hpp> | ||
| 27 | |||
| 28 | #ifndef BOOST_REGEX_AS_MODULE | ||
| 29 | #include <algorithm> | ||
| 30 | #include <limits> | ||
| 31 | #include <memory> | ||
| 32 | #include <vector> | ||
| 33 | #endif | ||
| 34 | |||
| 35 | namespace boost{ | ||
| 36 | #ifdef BOOST_REGEX_MSVC | ||
| 37 | #pragma warning(push) | ||
| 38 | #pragma warning(disable : 4251) | ||
| 39 | #if BOOST_REGEX_MSVC < 1700 | ||
| 40 | # pragma warning(disable : 4231) | ||
| 41 | #endif | ||
| 42 | #if BOOST_REGEX_MSVC < 1600 | ||
| 43 | #pragma warning(disable : 4660) | ||
| 44 | #endif | ||
| 45 | #if BOOST_REGEX_MSVC < 1910 | ||
| 46 | #pragma warning(disable:4800) | ||
| 47 | #endif | ||
| 48 | #endif | ||
| 49 | |||
| 50 | namespace BOOST_REGEX_DETAIL_NS{ | ||
| 51 | |||
| 52 | // | ||
| 53 | // forward declaration, we will need this one later: | ||
| 54 | // | ||
| 55 | template <class charT, class traits> | ||
| 56 | class basic_regex_parser; | ||
| 57 | |||
| 58 | template <class I> | ||
| 59 | 20848x | void bubble_down_one(I first, I last) | |
| 60 | { | ||
| 61 | 20848x | if(first != last) | |
| 62 | { | ||
| 63 | 20848x | I next = last - 1; | |
| 64 | 27640x | while((next != first) && (*next < *(next-1))) | |
| 65 | { | ||
| 66 | 6792x | (next-1)->swap(*next); | |
| 67 | 6792x | --next; | |
| 68 | } | ||
| 69 | } | ||
| 70 | 20848x | } | |
| 71 | |||
| 72 | #ifndef BOOST_REGEX_AS_MODULE | ||
| 73 | static | ||
| 74 | #else | ||
| 75 | inline | ||
| 76 | #endif | ||
| 77 | const int hash_value_mask = 1 << (std::numeric_limits<int>::digits - 1); | ||
| 78 | |||
| 79 | template <class Iterator> | ||
| 80 | 198658x | inline int hash_value_from_capture_name(Iterator i, Iterator j) | |
| 81 | { | ||
| 82 | 198658x | std::size_t r = 0; | |
| 83 | 624786x | while (i != j) | |
| 84 | { | ||
| 85 | 426128x | r ^= *i + 0x9e3779b9 + (r << 6) + (r >> 2); | |
| 86 | 426128x | ++i; | |
| 87 | } | ||
| 88 | 198658x | r %= ((std::numeric_limits<int>::max)()); | |
| 89 | 198658x | return static_cast<int>(r) | hash_value_mask; | |
| 90 | } | ||
| 91 | |||
| 92 | ✗ | class named_subexpressions | |
| 93 | { | ||
| 94 | public: | ||
| 95 | struct name | ||
| 96 | { | ||
| 97 | template <class charT> | ||
| 98 | 184544x | name(const charT* i, const charT* j, int idx) | |
| 99 | 184544x | : index(idx) | |
| 100 | { | ||
| 101 | 184544x | hash = hash_value_from_capture_name(i, j); | |
| 102 | 184544x | } | |
| 103 | 33019x | name(int h, int idx) | |
| 104 | 33019x | : index(idx), hash(h) | |
| 105 | { | ||
| 106 | 33019x | } | |
| 107 | int index; | ||
| 108 | int hash; | ||
| 109 | 114716x | bool operator < (const name& other)const | |
| 110 | { | ||
| 111 | 114716x | return hash < other.hash; | |
| 112 | } | ||
| 113 | 12425x | bool operator == (const name& other)const | |
| 114 | { | ||
| 115 | 12425x | return hash == other.hash; | |
| 116 | } | ||
| 117 | 6792x | void swap(name& other) | |
| 118 | { | ||
| 119 | 6792x | std::swap(index, other.index); | |
| 120 | 6792x | std::swap(hash, other.hash); | |
| 121 | 6792x | } | |
| 122 | }; | ||
| 123 | |||
| 124 | typedef std::vector<name>::const_iterator const_iterator; | ||
| 125 | typedef std::pair<const_iterator, const_iterator> range_type; | ||
| 126 | |||
| 127 | 408299x | named_subexpressions(){} | |
| 128 | |||
| 129 | template <class charT> | ||
| 130 | 20848x | void set_name(const charT* i, const charT* j, int index) | |
| 131 | { | ||
| 132 | 20848x | m_sub_names.push_back(name(i, j, index)); | |
| 133 | 20848x | bubble_down_one(m_sub_names.begin(), m_sub_names.end()); | |
| 134 | 20848x | } | |
| 135 | template <class charT> | ||
| 136 | int get_id(const charT* i, const charT* j)const | ||
| 137 | { | ||
| 138 | name t(i, j, 0); | ||
| 139 | typename std::vector<name>::const_iterator pos = std::lower_bound(m_sub_names.begin(), m_sub_names.end(), t); | ||
| 140 | if((pos != m_sub_names.end()) && (*pos == t)) | ||
| 141 | { | ||
| 142 | return pos->index; | ||
| 143 | } | ||
| 144 | return -1; | ||
| 145 | } | ||
| 146 | template <class charT> | ||
| 147 | 163696x | range_type equal_range(const charT* i, const charT* j)const | |
| 148 | { | ||
| 149 | 163696x | name t(i, j, 0); | |
| 150 | 313756x | return std::equal_range(m_sub_names.begin(), m_sub_names.end(), t); | |
| 151 | } | ||
| 152 | 13435x | int get_id(int h)const | |
| 153 | { | ||
| 154 | 13435x | name t(h, 0); | |
| 155 | 13435x | std::vector<name>::const_iterator pos = std::lower_bound(m_sub_names.begin(), m_sub_names.end(), t); | |
| 156 | 13435x | if((pos != m_sub_names.end()) && (*pos == t)) | |
| 157 | { | ||
| 158 | 11249x | return pos->index; | |
| 159 | } | ||
| 160 | 2186x | return -1; | |
| 161 | } | ||
| 162 | 19584x | range_type equal_range(int h)const | |
| 163 | { | ||
| 164 | 19584x | name t(h, 0); | |
| 165 | 37536x | return std::equal_range(m_sub_names.begin(), m_sub_names.end(), t); | |
| 166 | } | ||
| 167 | private: | ||
| 168 | std::vector<name> m_sub_names; | ||
| 169 | }; | ||
| 170 | |||
| 171 | // | ||
| 172 | // class regex_data: | ||
| 173 | // represents the data we wish to expose to the matching algorithms. | ||
| 174 | // | ||
| 175 | template <class charT, class traits> | ||
| 176 | struct regex_data : public named_subexpressions | ||
| 177 | { | ||
| 178 | typedef regex_constants::syntax_option_type flag_type; | ||
| 179 | typedef std::size_t size_type; | ||
| 180 | |||
| 181 | 111103x | regex_data(const ::std::shared_ptr< | |
| 182 | ::boost::regex_traits_wrapper<traits> >& t) | ||
| 183 | 111103x | : m_ptraits(t), m_flags(0), m_status(0), m_expression(0), m_expression_len(0), | |
| 184 | 111103x | m_mark_count(0), m_first_state(0), m_restart_type(0), | |
| 185 | 111103x | m_startmap{ 0 }, | |
| 186 | 222206x | m_can_be_null(0), m_word_mask(0), m_has_recursions(false), m_disable_match_any(false) {} | |
| 187 | 297196x | regex_data() | |
| 188 | 297196x | : m_ptraits(new ::boost::regex_traits_wrapper<traits>()), m_flags(0), m_status(0), m_expression(0), m_expression_len(0), | |
| 189 | 297196x | m_mark_count(0), m_first_state(0), m_restart_type(0), | |
| 190 | 297196x | m_startmap{ 0 }, | |
| 191 | 594392x | m_can_be_null(0), m_word_mask(0), m_has_recursions(false), m_disable_match_any(false) {} | |
| 192 | |||
| 193 | ::std::shared_ptr< | ||
| 194 | ::boost::regex_traits_wrapper<traits> | ||
| 195 | > m_ptraits; // traits class instance | ||
| 196 | flag_type m_flags; // flags with which we were compiled | ||
| 197 | int m_status; // error code (0 implies OK). | ||
| 198 | const charT* m_expression; // the original expression | ||
| 199 | std::ptrdiff_t m_expression_len; // the length of the original expression | ||
| 200 | size_type m_mark_count; // the number of marked sub-expressions | ||
| 201 | BOOST_REGEX_DETAIL_NS::re_syntax_base* m_first_state; // the first state of the machine | ||
| 202 | unsigned m_restart_type; // search optimisation type | ||
| 203 | unsigned char m_startmap[1 << CHAR_BIT]; // which characters can start a match | ||
| 204 | unsigned int m_can_be_null; // whether we can match a null string | ||
| 205 | BOOST_REGEX_DETAIL_NS::raw_storage m_data; // the buffer in which our states are constructed | ||
| 206 | typename traits::char_class_type m_word_mask; // mask used to determine if a character is a word character | ||
| 207 | std::vector< | ||
| 208 | std::pair< | ||
| 209 | std::size_t, std::size_t> > m_subs; // Position of sub-expressions within the *string*. | ||
| 210 | bool m_has_recursions; // whether we have recursive expressions; | ||
| 211 | bool m_disable_match_any; // when set we need to disable the match_any flag as it causes different/buggy behaviour. | ||
| 212 | }; | ||
| 213 | // | ||
| 214 | // class basic_regex_implementation | ||
| 215 | // pimpl implementation class for basic_regex. | ||
| 216 | // | ||
| 217 | template <class charT, class traits> | ||
| 218 | ✗ | class basic_regex_implementation | |
| 219 | : public regex_data<charT, traits> | ||
| 220 | { | ||
| 221 | public: | ||
| 222 | typedef regex_constants::syntax_option_type flag_type; | ||
| 223 | typedef std::ptrdiff_t difference_type; | ||
| 224 | typedef std::size_t size_type; | ||
| 225 | typedef typename traits::locale_type locale_type; | ||
| 226 | typedef const charT* const_iterator; | ||
| 227 | |||
| 228 | 297196x | basic_regex_implementation(){} | |
| 229 | 111103x | basic_regex_implementation(const ::std::shared_ptr< | |
| 230 | ::boost::regex_traits_wrapper<traits> >& t) | ||
| 231 | 111103x | : regex_data<charT, traits>(t) {} | |
| 232 | 408235x | void assign(const charT* arg_first, | |
| 233 | const charT* arg_last, | ||
| 234 | flag_type f) | ||
| 235 | { | ||
| 236 | 408235x | regex_data<charT, traits>* pdat = this; | |
| 237 | 408235x | basic_regex_parser<charT, traits> parser(pdat); | |
| 238 | 408235x | parser.parse(arg_first, arg_last, f); | |
| 239 | 408235x | } | |
| 240 | |||
| 241 | 64x | locale_type imbue(locale_type l) | |
| 242 | { | ||
| 243 | 64x | return this->m_ptraits->imbue(l); | |
| 244 | } | ||
| 245 | locale_type getloc()const | ||
| 246 | { | ||
| 247 | return this->m_ptraits->getloc(); | ||
| 248 | } | ||
| 249 | 26772x | std::basic_string<charT> str()const | |
| 250 | { | ||
| 251 | 26772x | std::basic_string<charT> result; | |
| 252 | 26772x | if(this->m_status == 0) | |
| 253 | ✗ | result = std::basic_string<charT>(this->m_expression, this->m_expression_len); | |
| 254 | 26772x | return result; | |
| 255 | ✗ | } | |
| 256 | 137232x | const_iterator expression()const | |
| 257 | { | ||
| 258 | 137232x | return this->m_expression; | |
| 259 | } | ||
| 260 | 154394x | std::pair<const_iterator, const_iterator> subexpression(std::size_t n)const | |
| 261 | { | ||
| 262 | 154394x | const std::pair<std::size_t, std::size_t>& pi = this->m_subs.at(n); | |
| 263 | 68616x | std::pair<const_iterator, const_iterator> p(expression() + pi.first, expression() + pi.second); | |
| 264 | 68616x | return p; | |
| 265 | } | ||
| 266 | // | ||
| 267 | // begin, end: | ||
| 268 | 147120x | const_iterator begin()const | |
| 269 | { | ||
| 270 | 147120x | return (this->m_status ? 0 : this->m_expression); | |
| 271 | } | ||
| 272 | 147120x | const_iterator end()const | |
| 273 | { | ||
| 274 | 147120x | return (this->m_status ? 0 : this->m_expression + this->m_expression_len); | |
| 275 | } | ||
| 276 | 5045095x | flag_type flags()const | |
| 277 | { | ||
| 278 | 5045095x | return this->m_flags; | |
| 279 | } | ||
| 280 | 1606782x | size_type size()const | |
| 281 | { | ||
| 282 | 1606782x | return this->m_expression_len; | |
| 283 | } | ||
| 284 | 1977512x | int status()const | |
| 285 | { | ||
| 286 | 1977512x | return this->m_status; | |
| 287 | } | ||
| 288 | 2182611x | size_type mark_count()const | |
| 289 | { | ||
| 290 | 2182611x | return this->m_mark_count - 1; | |
| 291 | } | ||
| 292 | 4272452x | const BOOST_REGEX_DETAIL_NS::re_syntax_base* get_first_state()const | |
| 293 | { | ||
| 294 | 4272452x | return this->m_first_state; | |
| 295 | } | ||
| 296 | 1644974x | unsigned get_restart_type()const | |
| 297 | { | ||
| 298 | 1644974x | return this->m_restart_type; | |
| 299 | } | ||
| 300 | 1631528x | const unsigned char* get_map()const | |
| 301 | { | ||
| 302 | 1631528x | return this->m_startmap; | |
| 303 | } | ||
| 304 | 1727561x | const ::boost::regex_traits_wrapper<traits>& get_traits()const | |
| 305 | { | ||
| 306 | 1727561x | return *(this->m_ptraits); | |
| 307 | } | ||
| 308 | 763270x | bool can_be_null()const | |
| 309 | { | ||
| 310 | 763270x | return this->m_can_be_null; | |
| 311 | } | ||
| 312 | 5728331x | const regex_data<charT, traits>& get_data()const | |
| 313 | { | ||
| 314 | 5728331x | basic_regex_implementation<charT, traits> const* p = this; | |
| 315 | 5728331x | return *static_cast<const regex_data<charT, traits>*>(p); | |
| 316 | } | ||
| 317 | }; | ||
| 318 | |||
| 319 | } // namespace BOOST_REGEX_DETAIL_NS | ||
| 320 | // | ||
| 321 | // class basic_regex: | ||
| 322 | // represents the compiled | ||
| 323 | // regular expression: | ||
| 324 | // | ||
| 325 | BOOST_REGEX_MODULE_EXPORT | ||
| 326 | #ifdef BOOST_REGEX_NO_FWD | ||
| 327 | template <class charT, class traits = regex_traits<charT> > | ||
| 328 | #else | ||
| 329 | template <class charT, class traits > | ||
| 330 | #endif | ||
| 331 | class basic_regex : public regbase | ||
| 332 | { | ||
| 333 | public: | ||
| 334 | // typedefs: | ||
| 335 | typedef std::size_t traits_size_type; | ||
| 336 | typedef typename traits::string_type traits_string_type; | ||
| 337 | typedef charT char_type; | ||
| 338 | typedef traits traits_type; | ||
| 339 | |||
| 340 | typedef charT value_type; | ||
| 341 | typedef charT& reference; | ||
| 342 | typedef const charT& const_reference; | ||
| 343 | typedef const charT* const_iterator; | ||
| 344 | typedef const_iterator iterator; | ||
| 345 | typedef std::ptrdiff_t difference_type; | ||
| 346 | typedef std::size_t size_type; | ||
| 347 | typedef regex_constants::syntax_option_type flag_type; | ||
| 348 | // locale_type | ||
| 349 | // placeholder for actual locale type used by the | ||
| 350 | // traits class to localise *this. | ||
| 351 | typedef typename traits::locale_type locale_type; | ||
| 352 | |||
| 353 | public: | ||
| 354 | 178028x | explicit basic_regex(){} | |
| 355 | 40x | explicit basic_regex(const charT* p, flag_type f = regex_constants::normal) | |
| 356 | 40x | { | |
| 357 | 40x | assign(p, f); | |
| 358 | 40x | } | |
| 359 | basic_regex(const charT* p1, const charT* p2, flag_type f = regex_constants::normal) | ||
| 360 | { | ||
| 361 | assign(p1, p2, f); | ||
| 362 | } | ||
| 363 | basic_regex(const charT* p, size_type len, flag_type f) | ||
| 364 | { | ||
| 365 | assign(p, len, f); | ||
| 366 | } | ||
| 367 | 771144x | basic_regex(const basic_regex& that) | |
| 368 | 771144x | : m_pimpl(that.m_pimpl) {} | |
| 369 | 1068586x | ~basic_regex(){} | |
| 370 | 105360x | basic_regex& operator=(const basic_regex& that) | |
| 371 | { | ||
| 372 | 105360x | return assign(that); | |
| 373 | } | ||
| 374 | basic_regex& operator=(const charT* ptr) | ||
| 375 | { | ||
| 376 | return assign(ptr); | ||
| 377 | } | ||
| 378 | |||
| 379 | // | ||
| 380 | // assign: | ||
| 381 | 105360x | basic_regex& assign(const basic_regex& that) | |
| 382 | { | ||
| 383 | 105360x | m_pimpl = that.m_pimpl; | |
| 384 | 105360x | return *this; | |
| 385 | } | ||
| 386 | 45x | basic_regex& assign(const charT* p, flag_type f = regex_constants::normal) | |
| 387 | { | ||
| 388 | 45x | return assign(p, p + traits::length(p), f); | |
| 389 | } | ||
| 390 | basic_regex& assign(const charT* p, size_type len, flag_type f) | ||
| 391 | { | ||
| 392 | return assign(p, p + len, f); | ||
| 393 | } | ||
| 394 | private: | ||
| 395 | basic_regex& do_assign(const charT* p1, | ||
| 396 | const charT* p2, | ||
| 397 | flag_type f); | ||
| 398 | public: | ||
| 399 | 408235x | basic_regex& assign(const charT* p1, | |
| 400 | const charT* p2, | ||
| 401 | flag_type f = regex_constants::normal) | ||
| 402 | { | ||
| 403 | 408235x | return do_assign(p1, p2, f); | |
| 404 | } | ||
| 405 | |||
| 406 | template <class ST, class SA> | ||
| 407 | unsigned int set_expression(const std::basic_string<charT, ST, SA>& p, flag_type f = regex_constants::normal) | ||
| 408 | { | ||
| 409 | return set_expression(p.data(), p.data() + p.size(), f); | ||
| 410 | } | ||
| 411 | |||
| 412 | template <class ST, class SA> | ||
| 413 | 36x | explicit basic_regex(const std::basic_string<charT, ST, SA>& p, flag_type f = regex_constants::normal) | |
| 414 | 36x | { | |
| 415 | 36x | assign(p, f); | |
| 416 | 36x | } | |
| 417 | |||
| 418 | template <class InputIterator> | ||
| 419 | 119348x | basic_regex(InputIterator arg_first, InputIterator arg_last, flag_type f = regex_constants::normal) | |
| 420 | 119348x | { | |
| 421 | typedef typename traits::string_type seq_type; | ||
| 422 | 119348x | seq_type a(arg_first, arg_last); | |
| 423 | 119348x | if(!a.empty()) | |
| 424 | 119252x | assign(static_cast<const charT*>(&*a.begin()), static_cast<const charT*>(&*a.begin() + a.size()), f); | |
| 425 | else | ||
| 426 | 96x | assign(static_cast<const charT*>(0), static_cast<const charT*>(0), f); | |
| 427 | 119348x | } | |
| 428 | |||
| 429 | template <class ST, class SA> | ||
| 430 | basic_regex& operator=(const std::basic_string<charT, ST, SA>& p) | ||
| 431 | { | ||
| 432 | return assign(p.data(), p.data() + p.size(), regex_constants::normal); | ||
| 433 | } | ||
| 434 | |||
| 435 | template <class string_traits, class A> | ||
| 436 | 222473x | basic_regex& assign( | |
| 437 | const std::basic_string<charT, string_traits, A>& s, | ||
| 438 | flag_type f = regex_constants::normal) | ||
| 439 | { | ||
| 440 | 222473x | return assign(s.data(), s.data() + s.size(), f); | |
| 441 | } | ||
| 442 | |||
| 443 | template <class InputIterator> | ||
| 444 | 33388x | basic_regex& assign(InputIterator arg_first, | |
| 445 | InputIterator arg_last, | ||
| 446 | flag_type f = regex_constants::normal) | ||
| 447 | { | ||
| 448 | typedef typename traits::string_type seq_type; | ||
| 449 | 33388x | seq_type a(arg_first, arg_last); | |
| 450 | 33388x | if(a.size()) | |
| 451 | { | ||
| 452 | 33352x | const charT* p1 = &*a.begin(); | |
| 453 | 33352x | const charT* p2 = &*a.begin() + a.size(); | |
| 454 | 33352x | return assign(p1, p2, f); | |
| 455 | } | ||
| 456 | 36x | return assign(static_cast<const charT*>(0), static_cast<const charT*>(0), f); | |
| 457 | 33388x | } | |
| 458 | |||
| 459 | // | ||
| 460 | // locale: | ||
| 461 | locale_type imbue(locale_type l); | ||
| 462 | locale_type getloc()const | ||
| 463 | { | ||
| 464 | return m_pimpl.get() ? m_pimpl->getloc() : locale_type(); | ||
| 465 | } | ||
| 466 | // | ||
| 467 | // getflags: | ||
| 468 | // retained for backwards compatibility only, "flags" | ||
| 469 | // is now the preferred name: | ||
| 470 | flag_type getflags()const | ||
| 471 | { | ||
| 472 | return flags(); | ||
| 473 | } | ||
| 474 | 5045095x | flag_type flags()const | |
| 475 | { | ||
| 476 | 5045095x | return m_pimpl.get() ? m_pimpl->flags() : 0; | |
| 477 | } | ||
| 478 | // | ||
| 479 | // str: | ||
| 480 | 74654x | std::basic_string<charT> str()const | |
| 481 | { | ||
| 482 | 74654x | return m_pimpl.get() ? m_pimpl->str() : std::basic_string<charT>(); | |
| 483 | } | ||
| 484 | // | ||
| 485 | // begin, end, subexpression: | ||
| 486 | 154394x | std::pair<const_iterator, const_iterator> subexpression(std::size_t n)const | |
| 487 | { | ||
| 488 | #ifdef BOOST_REGEX_STANDALONE | ||
| 489 | if (!m_pimpl.get()) | ||
| 490 | throw std::logic_error("Can't access subexpressions in an invalid regex."); | ||
| 491 | #else | ||
| 492 | 154394x | if(!m_pimpl.get()) | |
| 493 | ✗ | boost::throw_exception(std::logic_error("Can't access subexpressions in an invalid regex.")); | |
| 494 | #endif | ||
| 495 | 154394x | return m_pimpl->subexpression(n); | |
| 496 | } | ||
| 497 | 242884x | const_iterator begin()const | |
| 498 | { | ||
| 499 | 242884x | return (m_pimpl.get() ? m_pimpl->begin() : 0); | |
| 500 | } | ||
| 501 | 242884x | const_iterator end()const | |
| 502 | { | ||
| 503 | 242884x | return (m_pimpl.get() ? m_pimpl->end() : 0); | |
| 504 | } | ||
| 505 | // | ||
| 506 | // swap: | ||
| 507 | void swap(basic_regex& that)noexcept | ||
| 508 | { | ||
| 509 | m_pimpl.swap(that.m_pimpl); | ||
| 510 | } | ||
| 511 | // | ||
| 512 | // size: | ||
| 513 | 1654664x | size_type size()const | |
| 514 | { | ||
| 515 | 1654664x | return (m_pimpl.get() ? m_pimpl->size() : 0); | |
| 516 | } | ||
| 517 | // | ||
| 518 | // max_size: | ||
| 519 | size_type max_size()const | ||
| 520 | { | ||
| 521 | return UINT_MAX; | ||
| 522 | } | ||
| 523 | // | ||
| 524 | // empty: | ||
| 525 | 1772453x | bool empty()const | |
| 526 | { | ||
| 527 | 1772453x | return (m_pimpl.get() ? 0 != m_pimpl->status() : true); | |
| 528 | } | ||
| 529 | |||
| 530 | 2182611x | size_type mark_count()const | |
| 531 | { | ||
| 532 | 2182611x | return (m_pimpl.get() ? m_pimpl->mark_count() : 0); | |
| 533 | } | ||
| 534 | |||
| 535 | 300823x | int status()const | |
| 536 | { | ||
| 537 | 300823x | return (m_pimpl.get() ? m_pimpl->status() : regex_constants::error_empty); | |
| 538 | } | ||
| 539 | |||
| 540 | int compare(const basic_regex& that) const | ||
| 541 | { | ||
| 542 | if(m_pimpl.get() == that.m_pimpl.get()) | ||
| 543 | return 0; | ||
| 544 | if(!m_pimpl.get()) | ||
| 545 | return -1; | ||
| 546 | if(!that.m_pimpl.get()) | ||
| 547 | return 1; | ||
| 548 | if(status() != that.status()) | ||
| 549 | return status() - that.status(); | ||
| 550 | if(flags() != that.flags()) | ||
| 551 | return flags() - that.flags(); | ||
| 552 | |||
| 553 | const char_type* i = m_pimpl->begin(); | ||
| 554 | const char_type* j = that.m_pimpl->begin(); | ||
| 555 | while ((i != m_pimpl->end()) && (j != that.m_pimpl->end())) | ||
| 556 | { | ||
| 557 | if (*i != *j) | ||
| 558 | return *i < *j ? -1 : 1; | ||
| 559 | ++i; | ||
| 560 | ++j; | ||
| 561 | } | ||
| 562 | if (i != m_pimpl->end()) | ||
| 563 | return *i > static_cast<char_type>(0) ? 1 : -1; | ||
| 564 | if (j != that.m_pimpl->end()) | ||
| 565 | return *j > static_cast<char_type>(0) ? -1 : 1; | ||
| 566 | return 0; | ||
| 567 | } | ||
| 568 | bool operator==(const basic_regex& e)const | ||
| 569 | { | ||
| 570 | return compare(e) == 0; | ||
| 571 | } | ||
| 572 | bool operator != (const basic_regex& e)const | ||
| 573 | { | ||
| 574 | return compare(e) != 0; | ||
| 575 | } | ||
| 576 | bool operator<(const basic_regex& e)const | ||
| 577 | { | ||
| 578 | return compare(e) < 0; | ||
| 579 | } | ||
| 580 | bool operator>(const basic_regex& e)const | ||
| 581 | { | ||
| 582 | return compare(e) > 0; | ||
| 583 | } | ||
| 584 | bool operator<=(const basic_regex& e)const | ||
| 585 | { | ||
| 586 | return compare(e) <= 0; | ||
| 587 | } | ||
| 588 | bool operator>=(const basic_regex& e)const | ||
| 589 | { | ||
| 590 | return compare(e) >= 0; | ||
| 591 | } | ||
| 592 | |||
| 593 | // | ||
| 594 | // The following are deprecated as public interfaces | ||
| 595 | // but are available for compatibility with earlier versions. | ||
| 596 | const charT* expression()const | ||
| 597 | { | ||
| 598 | return (m_pimpl.get() && !m_pimpl->status() ? m_pimpl->expression() : 0); | ||
| 599 | } | ||
| 600 | 32981x | unsigned int set_expression(const charT* p1, const charT* p2, flag_type f = regex_constants::normal) | |
| 601 | { | ||
| 602 | 32981x | assign(p1, p2, f | regex_constants::no_except); | |
| 603 | 32981x | return status(); | |
| 604 | } | ||
| 605 | unsigned int set_expression(const charT* p, flag_type f = regex_constants::normal) | ||
| 606 | { | ||
| 607 | assign(p, f | regex_constants::no_except); | ||
| 608 | return status(); | ||
| 609 | } | ||
| 610 | 32981x | unsigned int error_code()const | |
| 611 | { | ||
| 612 | 32981x | return status(); | |
| 613 | } | ||
| 614 | // | ||
| 615 | // private access methods: | ||
| 616 | // | ||
| 617 | 4272452x | const BOOST_REGEX_DETAIL_NS::re_syntax_base* get_first_state()const | |
| 618 | { | ||
| 619 | 4272452x | BOOST_REGEX_ASSERT(0 != m_pimpl.get()); | |
| 620 | 4272452x | return m_pimpl->get_first_state(); | |
| 621 | } | ||
| 622 | 1644974x | unsigned get_restart_type()const | |
| 623 | { | ||
| 624 | 1644974x | BOOST_REGEX_ASSERT(0 != m_pimpl.get()); | |
| 625 | 1644974x | return m_pimpl->get_restart_type(); | |
| 626 | } | ||
| 627 | 1631528x | const unsigned char* get_map()const | |
| 628 | { | ||
| 629 | 1631528x | BOOST_REGEX_ASSERT(0 != m_pimpl.get()); | |
| 630 | 1631528x | return m_pimpl->get_map(); | |
| 631 | } | ||
| 632 | 1727561x | const ::boost::regex_traits_wrapper<traits>& get_traits()const | |
| 633 | { | ||
| 634 | 1727561x | BOOST_REGEX_ASSERT(0 != m_pimpl.get()); | |
| 635 | 1727561x | return m_pimpl->get_traits(); | |
| 636 | } | ||
| 637 | 763270x | bool can_be_null()const | |
| 638 | { | ||
| 639 | 763270x | BOOST_REGEX_ASSERT(0 != m_pimpl.get()); | |
| 640 | 763270x | return m_pimpl->can_be_null(); | |
| 641 | } | ||
| 642 | 5728331x | const BOOST_REGEX_DETAIL_NS::regex_data<charT, traits>& get_data()const | |
| 643 | { | ||
| 644 | 5728331x | BOOST_REGEX_ASSERT(0 != m_pimpl.get()); | |
| 645 | 5728331x | return m_pimpl->get_data(); | |
| 646 | } | ||
| 647 | 1776594x | std::shared_ptr<BOOST_REGEX_DETAIL_NS::named_subexpressions > get_named_subs()const | |
| 648 | { | ||
| 649 | 1776594x | return m_pimpl; | |
| 650 | } | ||
| 651 | |||
| 652 | private: | ||
| 653 | std::shared_ptr<BOOST_REGEX_DETAIL_NS::basic_regex_implementation<charT, traits> > m_pimpl; | ||
| 654 | }; | ||
| 655 | |||
| 656 | // | ||
| 657 | // out of line members; | ||
| 658 | // these are the only members that mutate the basic_regex object, | ||
| 659 | // and are designed to provide the strong exception guarantee | ||
| 660 | // (in the event of a throw, the state of the object remains unchanged). | ||
| 661 | // | ||
| 662 | |||
| 663 | namespace detail | ||
| 664 | { | ||
| 665 | template <class charT, class F, class Traits> | ||
| 666 | 408235x | std::shared_ptr<BOOST_REGEX_DETAIL_NS::basic_regex_implementation<charT, Traits> > create_implemenation(const charT* p1, const charT* p2, F f, std::shared_ptr<boost::regex_traits_wrapper<Traits> > ptraits) | |
| 667 | { | ||
| 668 | 408235x | std::shared_ptr<BOOST_REGEX_DETAIL_NS::basic_regex_implementation<charT, Traits> > result; | |
| 669 | 408235x | if (!ptraits.get()) | |
| 670 | { | ||
| 671 | 297132x | result = std::shared_ptr<BOOST_REGEX_DETAIL_NS::basic_regex_implementation<charT, Traits> >(new BOOST_REGEX_DETAIL_NS::basic_regex_implementation<charT, Traits>()); | |
| 672 | } | ||
| 673 | else | ||
| 674 | { | ||
| 675 | 111103x | result = std::shared_ptr<BOOST_REGEX_DETAIL_NS::basic_regex_implementation<charT, Traits> >(new BOOST_REGEX_DETAIL_NS::basic_regex_implementation<charT, Traits>(ptraits)); | |
| 676 | } | ||
| 677 | 408235x | result->assign(p1, p2, f); | |
| 678 | 392220x | return result; | |
| 679 | 16015x | } | |
| 680 | #ifdef BOOST_REGEX_AS_MODULE | ||
| 681 | std::shared_ptr<BOOST_REGEX_DETAIL_NS::basic_regex_implementation<char, basic_regex<char>::traits_type> > | ||
| 682 | create_implemenation(const char* p1, const char* p2, basic_regex<char>::flag_type f, std::shared_ptr<boost::regex_traits_wrapper<basic_regex<char>::traits_type> > ptraits); | ||
| 683 | std::shared_ptr<BOOST_REGEX_DETAIL_NS::basic_regex_implementation<wchar_t, basic_regex<wchar_t>::traits_type> > | ||
| 684 | create_implemenation(const wchar_t* p1, const wchar_t* p2, basic_regex<wchar_t>::flag_type f, std::shared_ptr<boost::regex_traits_wrapper<basic_regex<wchar_t>::traits_type> > ptraits); | ||
| 685 | #endif | ||
| 686 | } | ||
| 687 | |||
| 688 | template <class charT, class traits> | ||
| 689 | 408235x | basic_regex<charT, traits>& basic_regex<charT, traits>::do_assign(const charT* p1, | |
| 690 | const charT* p2, | ||
| 691 | flag_type f) | ||
| 692 | { | ||
| 693 | 424250x | m_pimpl = detail::create_implemenation(p1, p2, f, m_pimpl.get() ? m_pimpl->m_ptraits : std::shared_ptr<boost::regex_traits_wrapper<traits> >()); | |
| 694 | 392220x | return *this; | |
| 695 | } | ||
| 696 | |||
| 697 | template <class charT, class traits> | ||
| 698 | 64x | typename basic_regex<charT, traits>::locale_type basic_regex<charT, traits>::imbue(locale_type l) | |
| 699 | { | ||
| 700 | 64x | std::shared_ptr<BOOST_REGEX_DETAIL_NS::basic_regex_implementation<charT, traits> > temp(new BOOST_REGEX_DETAIL_NS::basic_regex_implementation<charT, traits>()); | |
| 701 | 64x | locale_type result = temp->imbue(l); | |
| 702 | 64x | temp.swap(m_pimpl); | |
| 703 | 96x | return result; | |
| 704 | 64x | } | |
| 705 | |||
| 706 | // | ||
| 707 | // non-members: | ||
| 708 | // | ||
| 709 | BOOST_REGEX_MODULE_EXPORT template <class charT, class traits> | ||
| 710 | void swap(basic_regex<charT, traits>& e1, basic_regex<charT, traits>& e2) | ||
| 711 | { | ||
| 712 | e1.swap(e2); | ||
| 713 | } | ||
| 714 | |||
| 715 | BOOST_REGEX_MODULE_EXPORT template <class charT, class traits, class traits2> | ||
| 716 | std::basic_ostream<charT, traits>& | ||
| 717 | operator << (std::basic_ostream<charT, traits>& os, | ||
| 718 | const basic_regex<charT, traits2>& e) | ||
| 719 | { | ||
| 720 | return (os << e.str()); | ||
| 721 | } | ||
| 722 | |||
| 723 | // | ||
| 724 | // class reg_expression: | ||
| 725 | // this is provided for backwards compatibility only, | ||
| 726 | // it is deprecated, no not use! | ||
| 727 | // | ||
| 728 | #ifdef BOOST_REGEX_NO_FWD | ||
| 729 | template <class charT, class traits = regex_traits<charT> > | ||
| 730 | #else | ||
| 731 | template <class charT, class traits > | ||
| 732 | #endif | ||
| 733 | class reg_expression : public basic_regex<charT, traits> | ||
| 734 | { | ||
| 735 | public: | ||
| 736 | typedef typename basic_regex<charT, traits>::flag_type flag_type; | ||
| 737 | typedef typename basic_regex<charT, traits>::size_type size_type; | ||
| 738 | explicit reg_expression(){} | ||
| 739 | explicit reg_expression(const charT* p, flag_type f = regex_constants::normal) | ||
| 740 | : basic_regex<charT, traits>(p, f){} | ||
| 741 | reg_expression(const charT* p1, const charT* p2, flag_type f = regex_constants::normal) | ||
| 742 | : basic_regex<charT, traits>(p1, p2, f){} | ||
| 743 | reg_expression(const charT* p, size_type len, flag_type f) | ||
| 744 | : basic_regex<charT, traits>(p, len, f){} | ||
| 745 | reg_expression(const reg_expression& that) | ||
| 746 | : basic_regex<charT, traits>(that) {} | ||
| 747 | ~reg_expression(){} | ||
| 748 | reg_expression& operator=(const reg_expression& that) | ||
| 749 | { | ||
| 750 | return this->assign(that); | ||
| 751 | } | ||
| 752 | |||
| 753 | template <class ST, class SA> | ||
| 754 | explicit reg_expression(const std::basic_string<charT, ST, SA>& p, flag_type f = regex_constants::normal) | ||
| 755 | : basic_regex<charT, traits>(p, f) | ||
| 756 | { | ||
| 757 | } | ||
| 758 | |||
| 759 | template <class InputIterator> | ||
| 760 | reg_expression(InputIterator arg_first, InputIterator arg_last, flag_type f = regex_constants::normal) | ||
| 761 | : basic_regex<charT, traits>(arg_first, arg_last, f) | ||
| 762 | { | ||
| 763 | } | ||
| 764 | |||
| 765 | template <class ST, class SA> | ||
| 766 | reg_expression& operator=(const std::basic_string<charT, ST, SA>& p) | ||
| 767 | { | ||
| 768 | this->assign(p); | ||
| 769 | return *this; | ||
| 770 | } | ||
| 771 | |||
| 772 | }; | ||
| 773 | |||
| 774 | #ifdef BOOST_REGEX_MSVC | ||
| 775 | #pragma warning (pop) | ||
| 776 | #endif | ||
| 777 | |||
| 778 | } // namespace boost | ||
| 779 | |||
| 780 | #endif | ||
| 781 |