include/boost/regex/v5/basic_regex.hpp

97.6% Lines (200/205) 96.9% List of functions (341/352)
basic_regex.hpp
f(x) 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