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

83.6% Lines (310/371) 50.5% List of functions (97/192)
icu.hpp
f(x) Functions (192)
Function Calls Lines Blocks
boost::re_detail_600::icu_regex_traits_implementation::icu_regex_traits_implementation(icu_74::Locale const&) :52 149306x 84.6% 89.0% boost::re_detail_600::icu_regex_traits_implementation::getloc() const :66 64x 100.0% 100.0% boost::re_detail_600::icu_regex_traits_implementation::do_transform(int const*, int const*, icu_74::Collator const*) const :70 401160x 52.6% 47.0% boost::re_detail_600::icu_regex_traits_implementation::transform(int const*, int const*) const :97 322200x 100.0% 100.0% boost::re_detail_600::icu_regex_traits_implementation::transform_primary(int const*, int const*) const :101 78960x 100.0% 100.0% boost::re_detail_600::icu_regex_traits_implementation::init_error() :106 0 0.0% 0.0% boost::re_detail_600::get_icu_regex_traits_implementation(icu_74::Locale const&) :119 149306x 100.0% 100.0% boost::icu_regex_traits::icu_regex_traits() :137 149242x 100.0% 100.0% boost::icu_regex_traits::length(int const*) :141 3276x 100.0% 100.0% boost::icu_regex_traits::syntax_type(int) const :152 2643091x 100.0% 100.0% boost::icu_regex_traits::escape_syntax_type(int) const :156 119970x 100.0% 83.0% boost::icu_regex_traits::translate(int) const :160 80841541x 100.0% 100.0% boost::icu_regex_traits::translate_nocase(int) const :164 3471437x 100.0% 100.0% boost::icu_regex_traits::translate(int, bool) const :168 84312715x 100.0% 100.0% boost::icu_regex_traits::tolower(int) const :172 959x 100.0% 100.0% boost::icu_regex_traits::toupper(int) const :176 661x 100.0% 100.0% boost::icu_regex_traits::transform(int const*, int const*) const :180 322200x 100.0% 100.0% boost::icu_regex_traits::transform_primary(int const*, int const*) const :184 78960x 100.0% 100.0% boost::icu_regex_traits::lookup_classname(int const*, int const*) const :188 801325x 97.1% 97.0% boost::icu_regex_traits::lookup_collatename(int const*, int const*) const :260 8452x 85.7% 95.0% boost::icu_regex_traits::isctype(int, unsigned long) const :290 15666933x 100.0% 100.0% boost::icu_regex_traits::toi(int const*&, int const*, int) const :327 80339x 100.0% 100.0% boost::icu_regex_traits::value(int, int) const :331 203040x 100.0% 100.0% boost::icu_regex_traits::imbue(icu_74::Locale) :335 64x 80.0% 100.0% boost::icu_regex_traits::error_string[abi:cxx11](boost::regex_constants::error_type) const :345 14580x 100.0% 100.0% boost::icu_regex_traits::lookup_icu_mask(int const*, int const*) :368 14669x 100.0% 100.0% boost::basic_regex<int, boost::icu_regex_traits> boost::re_detail_600::do_make_u32regex<__gnu_cxx::__normal_iterator<char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >(__gnu_cxx::__normal_iterator<char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, __gnu_cxx::__normal_iterator<char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, unsigned int, std::integral_constant<int, 1> const*) :651 8x 100.0% 86.0% boost::basic_regex<int, boost::icu_regex_traits> boost::re_detail_600::do_make_u32regex<__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, std::integral_constant<int, 1> const*) :651 3672x 100.0% 100.0% boost::basic_regex<int, boost::icu_regex_traits> boost::re_detail_600::do_make_u32regex<__gnu_cxx::__normal_iterator<unsigned char*, std::vector<unsigned char, std::allocator<unsigned char> > > >(__gnu_cxx::__normal_iterator<unsigned char*, std::vector<unsigned char, std::allocator<unsigned char> > >, __gnu_cxx::__normal_iterator<unsigned char*, std::vector<unsigned char, std::allocator<unsigned char> > >, unsigned int, std::integral_constant<int, 1> const*) :651 27996x 100.0% 100.0% boost::basic_regex<int, boost::icu_regex_traits> boost::re_detail_600::do_make_u32regex<char const*>(char const*, char const*, unsigned int, std::integral_constant<int, 1> const*) :651 5x 100.0% 86.0% boost::basic_regex<int, boost::icu_regex_traits> boost::re_detail_600::do_make_u32regex<unsigned char const*>(unsigned char const*, unsigned char const*, unsigned int, std::integral_constant<int, 1> const*) :651 27996x 100.0% 100.0% boost::basic_regex<int, boost::icu_regex_traits> boost::re_detail_600::do_make_u32regex<__gnu_cxx::__normal_iterator<char16_t*, std::vector<char16_t, std::allocator<char16_t> > > >(__gnu_cxx::__normal_iterator<char16_t*, std::vector<char16_t, std::allocator<char16_t> > >, __gnu_cxx::__normal_iterator<char16_t*, std::vector<char16_t, std::allocator<char16_t> > >, unsigned int, std::integral_constant<int, 2> const*) :661 31668x 100.0% 100.0% boost::basic_regex<int, boost::icu_regex_traits> boost::re_detail_600::do_make_u32regex<char16_t const*>(char16_t const*, char16_t const*, unsigned int, std::integral_constant<int, 2> const*) :661 27998x 100.0% 100.0% boost::basic_regex<int, boost::icu_regex_traits> boost::re_detail_600::do_make_u32regex<wchar_t const*>(wchar_t const*, wchar_t const*, unsigned int, std::integral_constant<int, 4> const*) :671 1x 100.0% 100.0% boost::basic_regex<int, boost::icu_regex_traits> boost::make_u32regex<__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) :712 3672x 100.0% 100.0% boost::basic_regex<int, boost::icu_regex_traits> boost::make_u32regex<__gnu_cxx::__normal_iterator<char16_t*, std::vector<char16_t, std::allocator<char16_t> > > >(__gnu_cxx::__normal_iterator<char16_t*, std::vector<char16_t, std::allocator<char16_t> > >, __gnu_cxx::__normal_iterator<char16_t*, std::vector<char16_t, std::allocator<char16_t> > >, unsigned int) :712 31668x 100.0% 100.0% boost::basic_regex<int, boost::icu_regex_traits> boost::make_u32regex<__gnu_cxx::__normal_iterator<unsigned char*, std::vector<unsigned char, std::allocator<unsigned char> > > >(__gnu_cxx::__normal_iterator<unsigned char*, std::vector<unsigned char, std::allocator<unsigned char> > >, __gnu_cxx::__normal_iterator<unsigned char*, std::vector<unsigned char, std::allocator<unsigned char> > >, unsigned int) :712 27996x 100.0% 100.0% boost::make_u32regex(char const*, unsigned int) :721 5x 100.0% 100.0% boost::make_u32regex(unsigned char const*, unsigned int) :725 27996x 100.0% 100.0% boost::make_u32regex(wchar_t const*, unsigned int) :733 1x 100.0% 100.0% boost::make_u32regex(char16_t const*, unsigned int) :739 27996x 100.0% 100.0% boost::basic_regex<int, boost::icu_regex_traits> boost::make_u32regex<char, std::char_traits<char>, std::allocator<char> >(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, unsigned int) :748 8x 100.0% 100.0% boost::make_u32regex(icu_74::UnicodeString const&, unsigned int) :755 2x 100.0% 100.0% void boost::re_detail_600::copy_results<boost::match_results<__gnu_cxx::__normal_iterator<char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<boost::sub_match<__gnu_cxx::__normal_iterator<char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > > >, boost::match_results<boost::u8_to_u32_iterator<__gnu_cxx::__normal_iterator<char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, int>, std::allocator<boost::sub_match<boost::u8_to_u32_iterator<__gnu_cxx::__normal_iterator<char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, int> > > >, std::shared_ptr<boost::re_detail_600::named_subexpressions> >(boost::match_results<__gnu_cxx::__normal_iterator<char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<boost::sub_match<__gnu_cxx::__normal_iterator<char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > > >&, boost::match_results<boost::u8_to_u32_iterator<__gnu_cxx::__normal_iterator<char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, int>, std::allocator<boost::sub_match<boost::u8_to_u32_iterator<__gnu_cxx::__normal_iterator<char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, int> > > > const&, std::shared_ptr<boost::re_detail_600::named_subexpressions>) :765 14x 100.0% 97.0% void boost::re_detail_600::copy_results<boost::match_results<__gnu_cxx::__normal_iterator<char16_t const*, std::vector<char16_t, std::allocator<char16_t> > >, std::allocator<boost::sub_match<__gnu_cxx::__normal_iterator<char16_t const*, std::vector<char16_t, std::allocator<char16_t> > > > > >, boost::match_results<boost::u16_to_u32_iterator<__gnu_cxx::__normal_iterator<char16_t const*, std::vector<char16_t, std::allocator<char16_t> > >, int>, std::allocator<boost::sub_match<boost::u16_to_u32_iterator<__gnu_cxx::__normal_iterator<char16_t const*, std::vector<char16_t, std::allocator<char16_t> > >, int> > > >, std::shared_ptr<boost::re_detail_600::named_subexpressions> >(boost::match_results<__gnu_cxx::__normal_iterator<char16_t const*, std::vector<char16_t, std::allocator<char16_t> > >, std::allocator<boost::sub_match<__gnu_cxx::__normal_iterator<char16_t const*, std::vector<char16_t, std::allocator<char16_t> > > > > >&, boost::match_results<boost::u16_to_u32_iterator<__gnu_cxx::__normal_iterator<char16_t const*, std::vector<char16_t, std::allocator<char16_t> > >, int>, std::allocator<boost::sub_match<boost::u16_to_u32_iterator<__gnu_cxx::__normal_iterator<char16_t const*, std::vector<char16_t, std::allocator<char16_t> > >, int> > > > const&, std::shared_ptr<boost::re_detail_600::named_subexpressions>) :765 19788x 100.0% 100.0% void boost::re_detail_600::copy_results<boost::match_results<__gnu_cxx::__normal_iterator<unsigned char const*, std::vector<unsigned char, std::allocator<unsigned char> > >, std::allocator<boost::sub_match<__gnu_cxx::__normal_iterator<unsigned char const*, std::vector<unsigned char, std::allocator<unsigned char> > > > > >, boost::match_results<boost::u8_to_u32_iterator<__gnu_cxx::__normal_iterator<unsigned char const*, std::vector<unsigned char, std::allocator<unsigned char> > >, int>, std::allocator<boost::sub_match<boost::u8_to_u32_iterator<__gnu_cxx::__normal_iterator<unsigned char const*, std::vector<unsigned char, std::allocator<unsigned char> > >, int> > > >, std::shared_ptr<boost::re_detail_600::named_subexpressions> >(boost::match_results<__gnu_cxx::__normal_iterator<unsigned char const*, std::vector<unsigned char, std::allocator<unsigned char> > >, std::allocator<boost::sub_match<__gnu_cxx::__normal_iterator<unsigned char const*, std::vector<unsigned char, std::allocator<unsigned char> > > > > >&, boost::match_results<boost::u8_to_u32_iterator<__gnu_cxx::__normal_iterator<unsigned char const*, std::vector<unsigned char, std::allocator<unsigned char> > >, int>, std::allocator<boost::sub_match<boost::u8_to_u32_iterator<__gnu_cxx::__normal_iterator<unsigned char const*, std::vector<unsigned char, std::allocator<unsigned char> > >, int> > > > const&, std::shared_ptr<boost::re_detail_600::named_subexpressions>) :765 19788x 100.0% 100.0% void boost::re_detail_600::copy_results<boost::match_results<boost::bidirectional_iterator_archetype<char16_t>, std::allocator<boost::sub_match<boost::bidirectional_iterator_archetype<char16_t> > > >, boost::match_results<boost::u16_to_u32_iterator<boost::bidirectional_iterator_archetype<char16_t>, int>, std::allocator<boost::sub_match<boost::u16_to_u32_iterator<boost::bidirectional_iterator_archetype<char16_t>, int> > > >, std::shared_ptr<boost::re_detail_600::named_subexpressions> >(boost::match_results<boost::bidirectional_iterator_archetype<char16_t>, std::allocator<boost::sub_match<boost::bidirectional_iterator_archetype<char16_t> > > >&, boost::match_results<boost::u16_to_u32_iterator<boost::bidirectional_iterator_archetype<char16_t>, int>, std::allocator<boost::sub_match<boost::u16_to_u32_iterator<boost::bidirectional_iterator_archetype<char16_t>, int> > > > const&, std::shared_ptr<boost::re_detail_600::named_subexpressions>) :765 0 0.0% 0.0% void boost::re_detail_600::copy_results<boost::match_results<boost::bidirectional_iterator_archetype<char>, std::allocator<boost::sub_match<boost::bidirectional_iterator_archetype<char> > > >, boost::match_results<boost::u8_to_u32_iterator<boost::bidirectional_iterator_archetype<char>, int>, std::allocator<boost::sub_match<boost::u8_to_u32_iterator<boost::bidirectional_iterator_archetype<char>, int> > > >, std::shared_ptr<boost::re_detail_600::named_subexpressions> >(boost::match_results<boost::bidirectional_iterator_archetype<char>, std::allocator<boost::sub_match<boost::bidirectional_iterator_archetype<char> > > >&, boost::match_results<boost::u8_to_u32_iterator<boost::bidirectional_iterator_archetype<char>, int>, std::allocator<boost::sub_match<boost::u8_to_u32_iterator<boost::bidirectional_iterator_archetype<char>, int> > > > const&, std::shared_ptr<boost::re_detail_600::named_subexpressions>) :765 0 0.0% 0.0% void boost::re_detail_600::copy_results<boost::match_results<boost::bidirectional_iterator_archetype<unsigned char>, std::allocator<boost::sub_match<boost::bidirectional_iterator_archetype<unsigned char> > > >, boost::match_results<boost::u8_to_u32_iterator<boost::bidirectional_iterator_archetype<unsigned char>, int>, std::allocator<boost::sub_match<boost::u8_to_u32_iterator<boost::bidirectional_iterator_archetype<unsigned char>, int> > > >, std::shared_ptr<boost::re_detail_600::named_subexpressions> >(boost::match_results<boost::bidirectional_iterator_archetype<unsigned char>, std::allocator<boost::sub_match<boost::bidirectional_iterator_archetype<unsigned char> > > >&, boost::match_results<boost::u8_to_u32_iterator<boost::bidirectional_iterator_archetype<unsigned char>, int>, std::allocator<boost::sub_match<boost::u8_to_u32_iterator<boost::bidirectional_iterator_archetype<unsigned char>, int> > > > const&, std::shared_ptr<boost::re_detail_600::named_subexpressions>) :765 0 0.0% 0.0% void boost::re_detail_600::copy_results<boost::match_results<char const*, std::allocator<boost::sub_match<char const*> > >, boost::match_results<boost::u8_to_u32_iterator<char const*, int>, std::allocator<boost::sub_match<boost::u8_to_u32_iterator<char const*, int> > > >, std::shared_ptr<boost::re_detail_600::named_subexpressions> >(boost::match_results<char const*, std::allocator<boost::sub_match<char const*> > >&, boost::match_results<boost::u8_to_u32_iterator<char const*, int>, std::allocator<boost::sub_match<boost::u8_to_u32_iterator<char const*, int> > > > const&, std::shared_ptr<boost::re_detail_600::named_subexpressions>) :765 0 0.0% 0.0% void boost::re_detail_600::copy_results<boost::match_results<char16_t const*, std::allocator<boost::sub_match<char16_t const*> > >, boost::match_results<boost::u16_to_u32_iterator<char16_t const*, int>, std::allocator<boost::sub_match<boost::u16_to_u32_iterator<char16_t const*, int> > > >, std::shared_ptr<boost::re_detail_600::named_subexpressions> >(boost::match_results<char16_t const*, std::allocator<boost::sub_match<char16_t const*> > >&, boost::match_results<boost::u16_to_u32_iterator<char16_t const*, int>, std::allocator<boost::sub_match<boost::u16_to_u32_iterator<char16_t const*, int> > > > const&, std::shared_ptr<boost::re_detail_600::named_subexpressions>) :765 19610x 100.0% 100.0% void boost::re_detail_600::copy_results<boost::match_results<unsigned char const*, std::allocator<boost::sub_match<unsigned char const*> > >, boost::match_results<boost::u8_to_u32_iterator<unsigned char const*, int>, std::allocator<boost::sub_match<boost::u8_to_u32_iterator<unsigned char const*, int> > > >, std::shared_ptr<boost::re_detail_600::named_subexpressions> >(boost::match_results<unsigned char const*, std::allocator<boost::sub_match<unsigned char const*> > >&, boost::match_results<boost::u8_to_u32_iterator<unsigned char const*, int>, std::allocator<boost::sub_match<boost::u8_to_u32_iterator<unsigned char const*, int> > > > const&, std::shared_ptr<boost::re_detail_600::named_subexpressions>) :765 19608x 100.0% 100.0% bool boost::re_detail_600::do_regex_match<__gnu_cxx::__normal_iterator<wchar_t const*, std::__cxx11::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> > >, std::allocator<boost::sub_match<__gnu_cxx::__normal_iterator<wchar_t const*, std::__cxx11::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> > > > > >(__gnu_cxx::__normal_iterator<wchar_t const*, std::__cxx11::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> > >, __gnu_cxx::__normal_iterator<wchar_t const*, std::__cxx11::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> > >, boost::match_results<__gnu_cxx::__normal_iterator<wchar_t const*, std::__cxx11::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> > >, std::allocator<boost::sub_match<__gnu_cxx::__normal_iterator<wchar_t const*, std::__cxx11::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> > > > > >&, boost::basic_regex<int, boost::icu_regex_traits> const&, boost::regex_constants::_match_flags, std::integral_constant<int, 4> const*) :798 0 0.0% 0.0% bool boost::re_detail_600::do_regex_match<boost::bidirectional_iterator_archetype<wchar_t>, std::allocator<boost::sub_match<boost::bidirectional_iterator_archetype<wchar_t> > > >(boost::bidirectional_iterator_archetype<wchar_t>, boost::bidirectional_iterator_archetype<wchar_t>, boost::match_results<boost::bidirectional_iterator_archetype<wchar_t>, std::allocator<boost::sub_match<boost::bidirectional_iterator_archetype<wchar_t> > > >&, boost::basic_regex<int, boost::icu_regex_traits> const&, boost::regex_constants::_match_flags, std::integral_constant<int, 4> const*) :798 0 0.0% 0.0% bool boost::re_detail_600::do_regex_match<wchar_t const*, std::allocator<boost::sub_match<wchar_t const*> > >(wchar_t const*, wchar_t const*, boost::match_results<wchar_t const*, std::allocator<boost::sub_match<wchar_t const*> > >&, boost::basic_regex<int, boost::icu_regex_traits> const&, boost::regex_constants::_match_flags, std::integral_constant<int, 4> const*) :798 0 0.0% 0.0% bool boost::re_detail_600::do_regex_match<boost::bidirectional_iterator_archetype<char16_t>, std::allocator<boost::sub_match<boost::bidirectional_iterator_archetype<char16_t> > > >(boost::bidirectional_iterator_archetype<char16_t>, boost::bidirectional_iterator_archetype<char16_t>, boost::match_results<boost::bidirectional_iterator_archetype<char16_t>, std::allocator<boost::sub_match<boost::bidirectional_iterator_archetype<char16_t> > > >&, boost::basic_regex<int, boost::icu_regex_traits> const&, boost::regex_constants::_match_flags, std::integral_constant<int, 2> const*) :807 0 0.0% 0.0% bool boost::re_detail_600::do_regex_match<char16_t const*, std::allocator<boost::sub_match<char16_t const*> > >(char16_t const*, char16_t const*, boost::match_results<char16_t const*, std::allocator<boost::sub_match<char16_t const*> > >&, boost::basic_regex<int, boost::icu_regex_traits> const&, boost::regex_constants::_match_flags, std::integral_constant<int, 2> const*) :807 2x 100.0% 62.0% bool boost::re_detail_600::do_regex_match<__gnu_cxx::__normal_iterator<char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<boost::sub_match<__gnu_cxx::__normal_iterator<char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > > >(__gnu_cxx::__normal_iterator<char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, __gnu_cxx::__normal_iterator<char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, boost::match_results<__gnu_cxx::__normal_iterator<char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<boost::sub_match<__gnu_cxx::__normal_iterator<char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > > >&, boost::basic_regex<int, boost::icu_regex_traits> const&, boost::regex_constants::_match_flags, std::integral_constant<int, 1> const*) :823 10x 100.0% 62.0% bool boost::re_detail_600::do_regex_match<boost::bidirectional_iterator_archetype<char>, std::allocator<boost::sub_match<boost::bidirectional_iterator_archetype<char> > > >(boost::bidirectional_iterator_archetype<char>, boost::bidirectional_iterator_archetype<char>, boost::match_results<boost::bidirectional_iterator_archetype<char>, std::allocator<boost::sub_match<boost::bidirectional_iterator_archetype<char> > > >&, boost::basic_regex<int, boost::icu_regex_traits> const&, boost::regex_constants::_match_flags, std::integral_constant<int, 1> const*) :823 0 0.0% 0.0% bool boost::re_detail_600::do_regex_match<boost::bidirectional_iterator_archetype<unsigned char>, std::allocator<boost::sub_match<boost::bidirectional_iterator_archetype<unsigned char> > > >(boost::bidirectional_iterator_archetype<unsigned char>, boost::bidirectional_iterator_archetype<unsigned char>, boost::match_results<boost::bidirectional_iterator_archetype<unsigned char>, std::allocator<boost::sub_match<boost::bidirectional_iterator_archetype<unsigned char> > > >&, boost::basic_regex<int, boost::icu_regex_traits> const&, boost::regex_constants::_match_flags, std::integral_constant<int, 1> const*) :823 0 0.0% 0.0% bool boost::re_detail_600::do_regex_match<char const*, std::allocator<boost::sub_match<char const*> > >(char const*, char const*, boost::match_results<char const*, std::allocator<boost::sub_match<char const*> > >&, boost::basic_regex<int, boost::icu_regex_traits> const&, boost::regex_constants::_match_flags, std::integral_constant<int, 1> const*) :823 0 0.0% 0.0% bool boost::re_detail_600::do_regex_match<unsigned char const*, std::allocator<boost::sub_match<unsigned char const*> > >(unsigned char const*, unsigned char const*, boost::match_results<unsigned char const*, std::allocator<boost::sub_match<unsigned char const*> > >&, boost::basic_regex<int, boost::icu_regex_traits> const&, boost::regex_constants::_match_flags, std::integral_constant<int, 1> const*) :823 0 0.0% 0.0% bool boost::u32regex_match<boost::bidirectional_iterator_archetype<char16_t>, std::allocator<boost::sub_match<boost::bidirectional_iterator_archetype<char16_t> > > >(boost::bidirectional_iterator_archetype<char16_t>, boost::bidirectional_iterator_archetype<char16_t>, boost::match_results<boost::bidirectional_iterator_archetype<char16_t>, std::allocator<boost::sub_match<boost::bidirectional_iterator_archetype<char16_t> > > >&, boost::basic_regex<int, boost::icu_regex_traits> const&, boost::regex_constants::_match_flags) :841 0 0.0% 0.0% bool boost::u32regex_match<boost::bidirectional_iterator_archetype<char>, std::allocator<boost::sub_match<boost::bidirectional_iterator_archetype<char> > > >(boost::bidirectional_iterator_archetype<char>, boost::bidirectional_iterator_archetype<char>, boost::match_results<boost::bidirectional_iterator_archetype<char>, std::allocator<boost::sub_match<boost::bidirectional_iterator_archetype<char> > > >&, boost::basic_regex<int, boost::icu_regex_traits> const&, boost::regex_constants::_match_flags) :841 0 0.0% 0.0% bool boost::u32regex_match<boost::bidirectional_iterator_archetype<unsigned char>, std::allocator<boost::sub_match<boost::bidirectional_iterator_archetype<unsigned char> > > >(boost::bidirectional_iterator_archetype<unsigned char>, boost::bidirectional_iterator_archetype<unsigned char>, boost::match_results<boost::bidirectional_iterator_archetype<unsigned char>, std::allocator<boost::sub_match<boost::bidirectional_iterator_archetype<unsigned char> > > >&, boost::basic_regex<int, boost::icu_regex_traits> const&, boost::regex_constants::_match_flags) :841 0 0.0% 0.0% bool boost::u32regex_match<boost::bidirectional_iterator_archetype<wchar_t>, std::allocator<boost::sub_match<boost::bidirectional_iterator_archetype<wchar_t> > > >(boost::bidirectional_iterator_archetype<wchar_t>, boost::bidirectional_iterator_archetype<wchar_t>, boost::match_results<boost::bidirectional_iterator_archetype<wchar_t>, std::allocator<boost::sub_match<boost::bidirectional_iterator_archetype<wchar_t> > > >&, boost::basic_regex<int, boost::icu_regex_traits> const&, boost::regex_constants::_match_flags) :841 0 0.0% 0.0% boost::u32regex_match(char16_t const*, boost::match_results<char16_t const*, std::allocator<boost::sub_match<char16_t const*> > >&, boost::basic_regex<int, boost::icu_regex_traits> const&, boost::regex_constants::_match_flags) :848 0 0.0% 0.0% boost::u32regex_match(wchar_t const*, boost::match_results<wchar_t const*, std::allocator<boost::sub_match<wchar_t const*> > >&, boost::basic_regex<int, boost::icu_regex_traits> const&, boost::regex_constants::_match_flags) :856 0 0.0% 0.0% boost::u32regex_match(char const*, boost::match_results<char const*, std::allocator<boost::sub_match<char const*> > >&, boost::basic_regex<int, boost::icu_regex_traits> const&, boost::regex_constants::_match_flags) :864 0 0.0% 0.0% boost::u32regex_match(unsigned char const*, boost::match_results<unsigned char const*, std::allocator<boost::sub_match<unsigned char const*> > >&, boost::basic_regex<int, boost::icu_regex_traits> const&, boost::regex_constants::_match_flags) :871 0 0.0% 0.0% boost::u32regex_match(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, boost::match_results<__gnu_cxx::__normal_iterator<char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<boost::sub_match<__gnu_cxx::__normal_iterator<char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > > >&, boost::basic_regex<int, boost::icu_regex_traits> const&, boost::regex_constants::_match_flags) :878 10x 100.0% 100.0% boost::u32regex_match(std::__cxx11::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> > const&, boost::match_results<__gnu_cxx::__normal_iterator<wchar_t const*, std::__cxx11::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> > >, std::allocator<boost::sub_match<__gnu_cxx::__normal_iterator<wchar_t const*, std::__cxx11::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> > > > > >&, boost::basic_regex<int, boost::icu_regex_traits> const&, boost::regex_constants::_match_flags) :886 0 0.0% 0.0% boost::u32regex_match(icu_74::UnicodeString const&, boost::match_results<char16_t const*, std::allocator<boost::sub_match<char16_t const*> > >&, boost::basic_regex<int, boost::icu_regex_traits> const&, boost::regex_constants::_match_flags) :894 0 0.0% 0.0% boost::u32regex_match(icu_74::UnicodeString const&, boost::basic_regex<int, boost::icu_regex_traits> const&, boost::regex_constants::_match_flags) :958 2x 100.0% 72.0% bool boost::re_detail_600::do_regex_search<__gnu_cxx::__normal_iterator<int const*, std::vector<int, std::allocator<int> > >, std::allocator<boost::sub_match<__gnu_cxx::__normal_iterator<int const*, std::vector<int, std::allocator<int> > > > > >(__gnu_cxx::__normal_iterator<int const*, std::vector<int, std::allocator<int> > >, __gnu_cxx::__normal_iterator<int const*, std::vector<int, std::allocator<int> > >, boost::match_results<__gnu_cxx::__normal_iterator<int const*, std::vector<int, std::allocator<int> > >, std::allocator<boost::sub_match<__gnu_cxx::__normal_iterator<int const*, std::vector<int, std::allocator<int> > > > > >&, boost::basic_regex<int, boost::icu_regex_traits> const&, boost::regex_constants::_match_flags, __gnu_cxx::__normal_iterator<int const*, std::vector<int, std::allocator<int> > >, std::integral_constant<int, 4> const*) :971 94624x 100.0% 100.0% bool boost::re_detail_600::do_regex_search<__gnu_cxx::__normal_iterator<wchar_t const*, std::__cxx11::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> > >, std::allocator<boost::sub_match<__gnu_cxx::__normal_iterator<wchar_t const*, std::__cxx11::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> > > > > >(__gnu_cxx::__normal_iterator<wchar_t const*, std::__cxx11::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> > >, __gnu_cxx::__normal_iterator<wchar_t const*, std::__cxx11::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> > >, boost::match_results<__gnu_cxx::__normal_iterator<wchar_t const*, std::__cxx11::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> > >, std::allocator<boost::sub_match<__gnu_cxx::__normal_iterator<wchar_t const*, std::__cxx11::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> > > > > >&, boost::basic_regex<int, boost::icu_regex_traits> const&, boost::regex_constants::_match_flags, __gnu_cxx::__normal_iterator<wchar_t const*, std::__cxx11::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> > >, std::integral_constant<int, 4> const*) :971 0 0.0% 0.0% bool boost::re_detail_600::do_regex_search<boost::bidirectional_iterator_archetype<wchar_t>, std::allocator<boost::sub_match<boost::bidirectional_iterator_archetype<wchar_t> > > >(boost::bidirectional_iterator_archetype<wchar_t>, boost::bidirectional_iterator_archetype<wchar_t>, boost::match_results<boost::bidirectional_iterator_archetype<wchar_t>, std::allocator<boost::sub_match<boost::bidirectional_iterator_archetype<wchar_t> > > >&, boost::basic_regex<int, boost::icu_regex_traits> const&, boost::regex_constants::_match_flags, boost::bidirectional_iterator_archetype<wchar_t>, std::integral_constant<int, 4> const*) :971 0 0.0% 0.0% bool boost::re_detail_600::do_regex_search<wchar_t const*, std::allocator<boost::sub_match<wchar_t const*> > >(wchar_t const*, wchar_t const*, boost::match_results<wchar_t const*, std::allocator<boost::sub_match<wchar_t const*> > >&, boost::basic_regex<int, boost::icu_regex_traits> const&, boost::regex_constants::_match_flags, wchar_t const*, std::integral_constant<int, 4> const*) :971 0 0.0% 0.0% bool boost::re_detail_600::do_regex_search<__gnu_cxx::__normal_iterator<char16_t const*, std::vector<char16_t, std::allocator<char16_t> > >, std::allocator<boost::sub_match<__gnu_cxx::__normal_iterator<char16_t const*, std::vector<char16_t, std::allocator<char16_t> > > > > >(__gnu_cxx::__normal_iterator<char16_t const*, std::vector<char16_t, std::allocator<char16_t> > >, __gnu_cxx::__normal_iterator<char16_t const*, std::vector<char16_t, std::allocator<char16_t> > >, boost::match_results<__gnu_cxx::__normal_iterator<char16_t const*, std::vector<char16_t, std::allocator<char16_t> > >, std::allocator<boost::sub_match<__gnu_cxx::__normal_iterator<char16_t const*, std::vector<char16_t, std::allocator<char16_t> > > > > >&, boost::basic_regex<int, boost::icu_regex_traits> const&, boost::regex_constants::_match_flags, __gnu_cxx::__normal_iterator<char16_t const*, std::vector<char16_t, std::allocator<char16_t> > >, std::integral_constant<int, 2> const*) :981 24504x 100.0% 100.0% bool boost::re_detail_600::do_regex_search<boost::bidirectional_iterator_archetype<char16_t>, std::allocator<boost::sub_match<boost::bidirectional_iterator_archetype<char16_t> > > >(boost::bidirectional_iterator_archetype<char16_t>, boost::bidirectional_iterator_archetype<char16_t>, boost::match_results<boost::bidirectional_iterator_archetype<char16_t>, std::allocator<boost::sub_match<boost::bidirectional_iterator_archetype<char16_t> > > >&, boost::basic_regex<int, boost::icu_regex_traits> const&, boost::regex_constants::_match_flags, boost::bidirectional_iterator_archetype<char16_t>, std::integral_constant<int, 2> const*) :981 0 0.0% 0.0% bool boost::re_detail_600::do_regex_search<char16_t const*, std::allocator<boost::sub_match<char16_t const*> > >(char16_t const*, char16_t const*, boost::match_results<char16_t const*, std::allocator<boost::sub_match<char16_t const*> > >&, boost::basic_regex<int, boost::icu_regex_traits> const&, boost::regex_constants::_match_flags, char16_t const*, std::integral_constant<int, 2> const*) :981 24301x 100.0% 100.0% bool boost::re_detail_600::do_regex_search<__gnu_cxx::__normal_iterator<char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<boost::sub_match<__gnu_cxx::__normal_iterator<char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > > >(__gnu_cxx::__normal_iterator<char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, __gnu_cxx::__normal_iterator<char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, boost::match_results<__gnu_cxx::__normal_iterator<char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<boost::sub_match<__gnu_cxx::__normal_iterator<char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > > >&, boost::basic_regex<int, boost::icu_regex_traits> const&, boost::regex_constants::_match_flags, __gnu_cxx::__normal_iterator<char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::integral_constant<int, 1> const*) :998 6x 100.0% 61.0% bool boost::re_detail_600::do_regex_search<__gnu_cxx::__normal_iterator<unsigned char const*, std::vector<unsigned char, std::allocator<unsigned char> > >, std::allocator<boost::sub_match<__gnu_cxx::__normal_iterator<unsigned char const*, std::vector<unsigned char, std::allocator<unsigned char> > > > > >(__gnu_cxx::__normal_iterator<unsigned char const*, std::vector<unsigned char, std::allocator<unsigned char> > >, __gnu_cxx::__normal_iterator<unsigned char const*, std::vector<unsigned char, std::allocator<unsigned char> > >, boost::match_results<__gnu_cxx::__normal_iterator<unsigned char const*, std::vector<unsigned char, std::allocator<unsigned char> > >, std::allocator<boost::sub_match<__gnu_cxx::__normal_iterator<unsigned char const*, std::vector<unsigned char, std::allocator<unsigned char> > > > > >&, boost::basic_regex<int, boost::icu_regex_traits> const&, boost::regex_constants::_match_flags, __gnu_cxx::__normal_iterator<unsigned char const*, std::vector<unsigned char, std::allocator<unsigned char> > >, std::integral_constant<int, 1> const*) :998 24504x 100.0% 100.0% bool boost::re_detail_600::do_regex_search<boost::bidirectional_iterator_archetype<char>, std::allocator<boost::sub_match<boost::bidirectional_iterator_archetype<char> > > >(boost::bidirectional_iterator_archetype<char>, boost::bidirectional_iterator_archetype<char>, boost::match_results<boost::bidirectional_iterator_archetype<char>, std::allocator<boost::sub_match<boost::bidirectional_iterator_archetype<char> > > >&, boost::basic_regex<int, boost::icu_regex_traits> const&, boost::regex_constants::_match_flags, boost::bidirectional_iterator_archetype<char>, std::integral_constant<int, 1> const*) :998 0 0.0% 0.0% bool boost::re_detail_600::do_regex_search<boost::bidirectional_iterator_archetype<unsigned char>, std::allocator<boost::sub_match<boost::bidirectional_iterator_archetype<unsigned char> > > >(boost::bidirectional_iterator_archetype<unsigned char>, boost::bidirectional_iterator_archetype<unsigned char>, boost::match_results<boost::bidirectional_iterator_archetype<unsigned char>, std::allocator<boost::sub_match<boost::bidirectional_iterator_archetype<unsigned char> > > >&, boost::basic_regex<int, boost::icu_regex_traits> const&, boost::regex_constants::_match_flags, boost::bidirectional_iterator_archetype<unsigned char>, std::integral_constant<int, 1> const*) :998 0 0.0% 0.0% bool boost::re_detail_600::do_regex_search<char const*, std::allocator<boost::sub_match<char const*> > >(char const*, char const*, boost::match_results<char const*, std::allocator<boost::sub_match<char const*> > >&, boost::basic_regex<int, boost::icu_regex_traits> const&, boost::regex_constants::_match_flags, char const*, std::integral_constant<int, 1> const*) :998 0 0.0% 0.0% bool boost::re_detail_600::do_regex_search<unsigned char const*, std::allocator<boost::sub_match<unsigned char const*> > >(unsigned char const*, unsigned char const*, boost::match_results<unsigned char const*, std::allocator<boost::sub_match<unsigned char const*> > >&, boost::basic_regex<int, boost::icu_regex_traits> const&, boost::regex_constants::_match_flags, unsigned char const*, std::integral_constant<int, 1> const*) :998 24300x 100.0% 100.0% bool boost::u32regex_search<__gnu_cxx::__normal_iterator<char16_t const*, std::vector<char16_t, std::allocator<char16_t> > >, std::allocator<boost::sub_match<__gnu_cxx::__normal_iterator<char16_t const*, std::vector<char16_t, std::allocator<char16_t> > > > > >(__gnu_cxx::__normal_iterator<char16_t const*, std::vector<char16_t, std::allocator<char16_t> > >, __gnu_cxx::__normal_iterator<char16_t const*, std::vector<char16_t, std::allocator<char16_t> > >, boost::match_results<__gnu_cxx::__normal_iterator<char16_t const*, std::vector<char16_t, std::allocator<char16_t> > >, std::allocator<boost::sub_match<__gnu_cxx::__normal_iterator<char16_t const*, std::vector<char16_t, std::allocator<char16_t> > > > > >&, boost::basic_regex<int, boost::icu_regex_traits> const&, boost::regex_constants::_match_flags) :1017 24504x 100.0% 100.0% bool boost::u32regex_search<__gnu_cxx::__normal_iterator<int const*, std::vector<int, std::allocator<int> > >, std::allocator<boost::sub_match<__gnu_cxx::__normal_iterator<int const*, std::vector<int, std::allocator<int> > > > > >(__gnu_cxx::__normal_iterator<int const*, std::vector<int, std::allocator<int> > >, __gnu_cxx::__normal_iterator<int const*, std::vector<int, std::allocator<int> > >, boost::match_results<__gnu_cxx::__normal_iterator<int const*, std::vector<int, std::allocator<int> > >, std::allocator<boost::sub_match<__gnu_cxx::__normal_iterator<int const*, std::vector<int, std::allocator<int> > > > > >&, boost::basic_regex<int, boost::icu_regex_traits> const&, boost::regex_constants::_match_flags) :1017 24568x 100.0% 100.0% bool boost::u32regex_search<__gnu_cxx::__normal_iterator<unsigned char const*, std::vector<unsigned char, std::allocator<unsigned char> > >, std::allocator<boost::sub_match<__gnu_cxx::__normal_iterator<unsigned char const*, std::vector<unsigned char, std::allocator<unsigned char> > > > > >(__gnu_cxx::__normal_iterator<unsigned char const*, std::vector<unsigned char, std::allocator<unsigned char> > >, __gnu_cxx::__normal_iterator<unsigned char const*, std::vector<unsigned char, std::allocator<unsigned char> > >, boost::match_results<__gnu_cxx::__normal_iterator<unsigned char const*, std::vector<unsigned char, std::allocator<unsigned char> > >, std::allocator<boost::sub_match<__gnu_cxx::__normal_iterator<unsigned char const*, std::vector<unsigned char, std::allocator<unsigned char> > > > > >&, boost::basic_regex<int, boost::icu_regex_traits> const&, boost::regex_constants::_match_flags) :1017 24504x 100.0% 100.0% bool boost::u32regex_search<boost::bidirectional_iterator_archetype<char16_t>, std::allocator<boost::sub_match<boost::bidirectional_iterator_archetype<char16_t> > > >(boost::bidirectional_iterator_archetype<char16_t>, boost::bidirectional_iterator_archetype<char16_t>, boost::match_results<boost::bidirectional_iterator_archetype<char16_t>, std::allocator<boost::sub_match<boost::bidirectional_iterator_archetype<char16_t> > > >&, boost::basic_regex<int, boost::icu_regex_traits> const&, boost::regex_constants::_match_flags) :1017 0 0.0% 0.0% bool boost::u32regex_search<boost::bidirectional_iterator_archetype<char>, std::allocator<boost::sub_match<boost::bidirectional_iterator_archetype<char> > > >(boost::bidirectional_iterator_archetype<char>, boost::bidirectional_iterator_archetype<char>, boost::match_results<boost::bidirectional_iterator_archetype<char>, std::allocator<boost::sub_match<boost::bidirectional_iterator_archetype<char> > > >&, boost::basic_regex<int, boost::icu_regex_traits> const&, boost::regex_constants::_match_flags) :1017 0 0.0% 0.0% bool boost::u32regex_search<boost::bidirectional_iterator_archetype<unsigned char>, std::allocator<boost::sub_match<boost::bidirectional_iterator_archetype<unsigned char> > > >(boost::bidirectional_iterator_archetype<unsigned char>, boost::bidirectional_iterator_archetype<unsigned char>, boost::match_results<boost::bidirectional_iterator_archetype<unsigned char>, std::allocator<boost::sub_match<boost::bidirectional_iterator_archetype<unsigned char> > > >&, boost::basic_regex<int, boost::icu_regex_traits> const&, boost::regex_constants::_match_flags) :1017 0 0.0% 0.0% bool boost::u32regex_search<boost::bidirectional_iterator_archetype<wchar_t>, std::allocator<boost::sub_match<boost::bidirectional_iterator_archetype<wchar_t> > > >(boost::bidirectional_iterator_archetype<wchar_t>, boost::bidirectional_iterator_archetype<wchar_t>, boost::match_results<boost::bidirectional_iterator_archetype<wchar_t>, std::allocator<boost::sub_match<boost::bidirectional_iterator_archetype<wchar_t> > > >&, boost::basic_regex<int, boost::icu_regex_traits> const&, boost::regex_constants::_match_flags) :1017 0 0.0% 0.0% bool boost::u32regex_search<__gnu_cxx::__normal_iterator<char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<boost::sub_match<__gnu_cxx::__normal_iterator<char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > > >(__gnu_cxx::__normal_iterator<char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, __gnu_cxx::__normal_iterator<char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, boost::match_results<__gnu_cxx::__normal_iterator<char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<boost::sub_match<__gnu_cxx::__normal_iterator<char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > > >&, boost::basic_regex<int, boost::icu_regex_traits> const&, boost::regex_constants::_match_flags, __gnu_cxx::__normal_iterator<char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >) :1025 6x 100.0% 100.0% bool boost::u32regex_search<__gnu_cxx::__normal_iterator<int const*, std::vector<int, std::allocator<int> > >, std::allocator<boost::sub_match<__gnu_cxx::__normal_iterator<int const*, std::vector<int, std::allocator<int> > > > > >(__gnu_cxx::__normal_iterator<int const*, std::vector<int, std::allocator<int> > >, __gnu_cxx::__normal_iterator<int const*, std::vector<int, std::allocator<int> > >, boost::match_results<__gnu_cxx::__normal_iterator<int const*, std::vector<int, std::allocator<int> > >, std::allocator<boost::sub_match<__gnu_cxx::__normal_iterator<int const*, std::vector<int, std::allocator<int> > > > > >&, boost::basic_regex<int, boost::icu_regex_traits> const&, boost::regex_constants::_match_flags, __gnu_cxx::__normal_iterator<int const*, std::vector<int, std::allocator<int> > >) :1025 70056x 100.0% 100.0% bool boost::u32regex_search<__gnu_cxx::__normal_iterator<wchar_t const*, std::__cxx11::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> > >, std::allocator<boost::sub_match<__gnu_cxx::__normal_iterator<wchar_t const*, std::__cxx11::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> > > > > >(__gnu_cxx::__normal_iterator<wchar_t const*, std::__cxx11::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> > >, __gnu_cxx::__normal_iterator<wchar_t const*, std::__cxx11::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> > >, boost::match_results<__gnu_cxx::__normal_iterator<wchar_t const*, std::__cxx11::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> > >, std::allocator<boost::sub_match<__gnu_cxx::__normal_iterator<wchar_t const*, std::__cxx11::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> > > > > >&, boost::basic_regex<int, boost::icu_regex_traits> const&, boost::regex_constants::_match_flags, __gnu_cxx::__normal_iterator<wchar_t const*, std::__cxx11::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> > >) :1025 0 0.0% 0.0% bool boost::u32regex_search<char const*, std::allocator<boost::sub_match<char const*> > >(char const*, char const*, boost::match_results<char const*, std::allocator<boost::sub_match<char const*> > >&, boost::basic_regex<int, boost::icu_regex_traits> const&, boost::regex_constants::_match_flags, char const*) :1025 0 0.0% 0.0% bool boost::u32regex_search<char16_t const*, std::allocator<boost::sub_match<char16_t const*> > >(char16_t const*, char16_t const*, boost::match_results<char16_t const*, std::allocator<boost::sub_match<char16_t const*> > >&, boost::basic_regex<int, boost::icu_regex_traits> const&, boost::regex_constants::_match_flags, char16_t const*) :1025 0 0.0% 0.0% bool boost::u32regex_search<wchar_t const*, std::allocator<boost::sub_match<wchar_t const*> > >(wchar_t const*, wchar_t const*, boost::match_results<wchar_t const*, std::allocator<boost::sub_match<wchar_t const*> > >&, boost::basic_regex<int, boost::icu_regex_traits> const&, boost::regex_constants::_match_flags, wchar_t const*) :1025 0 0.0% 0.0% boost::u32regex_search(char16_t const*, boost::match_results<char16_t const*, std::allocator<boost::sub_match<char16_t const*> > >&, boost::basic_regex<int, boost::icu_regex_traits> const&, boost::regex_constants::_match_flags) :1033 24300x 100.0% 100.0% boost::u32regex_search(wchar_t const*, boost::match_results<wchar_t const*, std::allocator<boost::sub_match<wchar_t const*> > >&, boost::basic_regex<int, boost::icu_regex_traits> const&, boost::regex_constants::_match_flags) :1041 0 0.0% 0.0% boost::u32regex_search(char const*, boost::match_results<char const*, std::allocator<boost::sub_match<char const*> > >&, boost::basic_regex<int, boost::icu_regex_traits> const&, boost::regex_constants::_match_flags) :1049 0 0.0% 0.0% boost::u32regex_search(unsigned char const*, boost::match_results<unsigned char const*, std::allocator<boost::sub_match<unsigned char const*> > >&, boost::basic_regex<int, boost::icu_regex_traits> const&, boost::regex_constants::_match_flags) :1056 24300x 100.0% 100.0% boost::u32regex_search(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, boost::match_results<__gnu_cxx::__normal_iterator<char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<boost::sub_match<__gnu_cxx::__normal_iterator<char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > > >&, boost::basic_regex<int, boost::icu_regex_traits> const&, boost::regex_constants::_match_flags) :1063 0 0.0% 0.0% boost::u32regex_search(std::__cxx11::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> > const&, boost::match_results<__gnu_cxx::__normal_iterator<wchar_t const*, std::__cxx11::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> > >, std::allocator<boost::sub_match<__gnu_cxx::__normal_iterator<wchar_t const*, std::__cxx11::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> > > > > >&, boost::basic_regex<int, boost::icu_regex_traits> const&, boost::regex_constants::_match_flags) :1071 0 0.0% 0.0% boost::u32regex_search(icu_74::UnicodeString const&, boost::match_results<char16_t const*, std::allocator<boost::sub_match<char16_t const*> > >&, boost::basic_regex<int, boost::icu_regex_traits> const&, boost::regex_constants::_match_flags) :1079 1x 100.0% 100.0% std::pair<boost::u8_to_u32_iterator<__gnu_cxx::__normal_iterator<char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, unsigned int>, boost::u8_to_u32_iterator<__gnu_cxx::__normal_iterator<char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, unsigned int> > boost::re_detail_600::make_utf32_seq<__gnu_cxx::__normal_iterator<char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >(__gnu_cxx::__normal_iterator<char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, __gnu_cxx::__normal_iterator<char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::integral_constant<int, 1> const*) :1154 1836x 100.0% 100.0% std::pair<boost::u8_to_u32_iterator<__gnu_cxx::__normal_iterator<char*, std::vector<char, std::allocator<char> > >, unsigned int>, boost::u8_to_u32_iterator<__gnu_cxx::__normal_iterator<char*, std::vector<char, std::allocator<char> > >, unsigned int> > boost::re_detail_600::make_utf32_seq<__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> > >, std::integral_constant<int, 1> const*) :1154 1836x 100.0% 100.0% std::pair<boost::u8_to_u32_iterator<boost::bidirectional_iterator_archetype<char>, unsigned int>, boost::u8_to_u32_iterator<boost::bidirectional_iterator_archetype<char>, unsigned int> > boost::re_detail_600::make_utf32_seq<boost::bidirectional_iterator_archetype<char> >(boost::bidirectional_iterator_archetype<char>, boost::bidirectional_iterator_archetype<char>, std::integral_constant<int, 1> const*) :1154 0 0.0% 0.0% std::pair<boost::u8_to_u32_iterator<boost::bidirectional_iterator_archetype<unsigned char>, unsigned int>, boost::u8_to_u32_iterator<boost::bidirectional_iterator_archetype<unsigned char>, unsigned int> > boost::re_detail_600::make_utf32_seq<boost::bidirectional_iterator_archetype<unsigned char> >(boost::bidirectional_iterator_archetype<unsigned char>, boost::bidirectional_iterator_archetype<unsigned char>, std::integral_constant<int, 1> const*) :1154 0 0.0% 0.0% std::pair<boost::u16_to_u32_iterator<__gnu_cxx::__normal_iterator<char16_t*, std::vector<char16_t, std::allocator<char16_t> > >, unsigned int>, boost::u16_to_u32_iterator<__gnu_cxx::__normal_iterator<char16_t*, std::vector<char16_t, std::allocator<char16_t> > >, unsigned int> > boost::re_detail_600::make_utf32_seq<__gnu_cxx::__normal_iterator<char16_t*, std::vector<char16_t, std::allocator<char16_t> > > >(__gnu_cxx::__normal_iterator<char16_t*, std::vector<char16_t, std::allocator<char16_t> > >, __gnu_cxx::__normal_iterator<char16_t*, std::vector<char16_t, std::allocator<char16_t> > >, std::integral_constant<int, 2> const*) :1160 1836x 100.0% 100.0% std::pair<boost::u16_to_u32_iterator<boost::bidirectional_iterator_archetype<char16_t>, unsigned int>, boost::u16_to_u32_iterator<boost::bidirectional_iterator_archetype<char16_t>, unsigned int> > boost::re_detail_600::make_utf32_seq<boost::bidirectional_iterator_archetype<char16_t> >(boost::bidirectional_iterator_archetype<char16_t>, boost::bidirectional_iterator_archetype<char16_t>, std::integral_constant<int, 2> const*) :1160 0 0.0% 0.0% std::pair<boost::u16_to_u32_iterator<char16_t const*, unsigned int>, boost::u16_to_u32_iterator<char16_t const*, unsigned int> > boost::re_detail_600::make_utf32_seq<char16_t const*>(char16_t const*, char16_t const*, std::integral_constant<int, 2> const*) :1160 3674x 100.0% 100.0% std::pair<__gnu_cxx::__normal_iterator<int*, std::vector<int, std::allocator<int> > >, __gnu_cxx::__normal_iterator<int*, std::vector<int, std::allocator<int> > > > boost::re_detail_600::make_utf32_seq<__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> > >, std::integral_constant<int, 4> const*) :1166 1836x 100.0% 100.0% std::pair<__gnu_cxx::__normal_iterator<wchar_t const*, std::__cxx11::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> > >, __gnu_cxx::__normal_iterator<wchar_t const*, std::__cxx11::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> > > > boost::re_detail_600::make_utf32_seq<__gnu_cxx::__normal_iterator<wchar_t const*, std::__cxx11::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> > > >(__gnu_cxx::__normal_iterator<wchar_t const*, std::__cxx11::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> > >, __gnu_cxx::__normal_iterator<wchar_t const*, std::__cxx11::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> > >, std::integral_constant<int, 4> const*) :1166 0 0.0% 0.0% std::pair<boost::bidirectional_iterator_archetype<wchar_t>, boost::bidirectional_iterator_archetype<wchar_t> > boost::re_detail_600::make_utf32_seq<boost::bidirectional_iterator_archetype<wchar_t> >(boost::bidirectional_iterator_archetype<wchar_t>, boost::bidirectional_iterator_archetype<wchar_t>, std::integral_constant<int, 4> const*) :1166 0 0.0% 0.0% std::pair<boost::u8_to_u32_iterator<char const*, unsigned int>, boost::u8_to_u32_iterator<char const*, unsigned int> > boost::re_detail_600::make_utf32_seq<char>(char const*, std::integral_constant<int, 1> const*) :1172 3672x 100.0% 100.0% std::pair<boost::u8_to_u32_iterator<unsigned char const*, unsigned int>, boost::u8_to_u32_iterator<unsigned char const*, unsigned int> > boost::re_detail_600::make_utf32_seq<unsigned char>(unsigned char const*, std::integral_constant<int, 1> const*) :1172 0 0.0% 0.0% std::pair<boost::u16_to_u32_iterator<char16_t const*, unsigned int>, boost::u16_to_u32_iterator<char16_t const*, unsigned int> > boost::re_detail_600::make_utf32_seq<char16_t>(char16_t const*, std::integral_constant<int, 2> const*) :1179 1836x 100.0% 100.0% std::pair<int const*, int const*> boost::re_detail_600::make_utf32_seq<int>(int const*, std::integral_constant<int, 4> const*) :1186 1836x 100.0% 100.0% std::pair<wchar_t const*, wchar_t const*> boost::re_detail_600::make_utf32_seq<wchar_t>(wchar_t const*, std::integral_constant<int, 4> const*) :1186 0 0.0% 0.0% boost::output_iterator_archetype<wchar_t> boost::re_detail_600::make_utf32_out<boost::output_iterator_archetype<wchar_t> >(boost::output_iterator_archetype<wchar_t>, std::integral_constant<int, 4> const*) :1191 0 0.0% 0.0% boost::re_detail_600::string_out_iterator<std::__cxx11::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> > > boost::re_detail_600::make_utf32_out<boost::re_detail_600::string_out_iterator<std::__cxx11::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> > > >(boost::re_detail_600::string_out_iterator<std::__cxx11::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> > >, std::integral_constant<int, 4> const*) :1191 0 0.0% 0.0% unnecessary_fix::back_insert_iterator<std::vector<int, std::allocator<int> > > boost::re_detail_600::make_utf32_out<unnecessary_fix::back_insert_iterator<std::vector<int, std::allocator<int> > > >(unnecessary_fix::back_insert_iterator<std::vector<int, std::allocator<int> > >, std::integral_constant<int, 4> const*) :1191 1836x 100.0% 100.0% boost::utf16_output_iterator<boost::output_iterator_archetype<char16_t> > boost::re_detail_600::make_utf32_out<boost::output_iterator_archetype<char16_t> >(boost::output_iterator_archetype<char16_t>, std::integral_constant<int, 2> const*) :1196 0 0.0% 0.0% boost::utf16_output_iterator<boost::re_detail_600::unicode_string_out_iterator> boost::re_detail_600::make_utf32_out<boost::re_detail_600::unicode_string_out_iterator>(boost::re_detail_600::unicode_string_out_iterator, std::integral_constant<int, 2> const*) :1196 1837x 100.0% 100.0% boost::utf16_output_iterator<unnecessary_fix::back_insert_iterator<std::vector<char16_t, std::allocator<char16_t> > > > boost::re_detail_600::make_utf32_out<unnecessary_fix::back_insert_iterator<std::vector<char16_t, std::allocator<char16_t> > > >(unnecessary_fix::back_insert_iterator<std::vector<char16_t, std::allocator<char16_t> > >, std::integral_constant<int, 2> const*) :1196 1836x 100.0% 100.0% boost::utf8_output_iterator<boost::output_iterator_archetype<char> > boost::re_detail_600::make_utf32_out<boost::output_iterator_archetype<char> >(boost::output_iterator_archetype<char>, std::integral_constant<int, 1> const*) :1201 0 0.0% 0.0% boost::utf8_output_iterator<boost::output_iterator_archetype<unsigned char> > boost::re_detail_600::make_utf32_out<boost::output_iterator_archetype<unsigned char> >(boost::output_iterator_archetype<unsigned char>, std::integral_constant<int, 1> const*) :1201 0 0.0% 0.0% boost::utf8_output_iterator<boost::re_detail_600::string_out_iterator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > boost::re_detail_600::make_utf32_out<boost::re_detail_600::string_out_iterator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >(boost::re_detail_600::string_out_iterator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::integral_constant<int, 1> const*) :1201 1836x 100.0% 100.0% boost::utf8_output_iterator<unnecessary_fix::back_insert_iterator<std::vector<char, std::allocator<char> > > > boost::re_detail_600::make_utf32_out<unnecessary_fix::back_insert_iterator<std::vector<char, std::allocator<char> > > >(unnecessary_fix::back_insert_iterator<std::vector<char, std::allocator<char> > >, std::integral_constant<int, 1> const*) :1201 1836x 100.0% 100.0% boost::output_iterator_archetype<wchar_t> boost::re_detail_600::do_regex_replace<boost::output_iterator_archetype<wchar_t>, boost::bidirectional_iterator_archetype<wchar_t>, __gnu_cxx::__normal_iterator<wchar_t const*, std::__cxx11::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> > > >(boost::output_iterator_archetype<wchar_t>, std::pair<boost::bidirectional_iterator_archetype<wchar_t>, boost::bidirectional_iterator_archetype<wchar_t> > const&, boost::basic_regex<int, boost::icu_regex_traits> const&, std::pair<__gnu_cxx::__normal_iterator<wchar_t const*, std::__cxx11::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> > >, __gnu_cxx::__normal_iterator<wchar_t const*, std::__cxx11::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> > > > const&, boost::regex_constants::_match_flags) :1207 0 0.0% 0.0% boost::output_iterator_archetype<wchar_t> boost::re_detail_600::do_regex_replace<boost::output_iterator_archetype<wchar_t>, boost::bidirectional_iterator_archetype<wchar_t>, boost::u16_to_u32_iterator<char16_t const*, unsigned int> >(boost::output_iterator_archetype<wchar_t>, std::pair<boost::bidirectional_iterator_archetype<wchar_t>, boost::bidirectional_iterator_archetype<wchar_t> > const&, boost::basic_regex<int, boost::icu_regex_traits> const&, std::pair<boost::u16_to_u32_iterator<char16_t const*, unsigned int>, boost::u16_to_u32_iterator<char16_t const*, unsigned int> > const&, boost::regex_constants::_match_flags) :1207 0 0.0% 0.0% boost::output_iterator_archetype<wchar_t> boost::re_detail_600::do_regex_replace<boost::output_iterator_archetype<wchar_t>, boost::bidirectional_iterator_archetype<wchar_t>, boost::u8_to_u32_iterator<__gnu_cxx::__normal_iterator<char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, unsigned int> >(boost::output_iterator_archetype<wchar_t>, std::pair<boost::bidirectional_iterator_archetype<wchar_t>, boost::bidirectional_iterator_archetype<wchar_t> > const&, boost::basic_regex<int, boost::icu_regex_traits> const&, std::pair<boost::u8_to_u32_iterator<__gnu_cxx::__normal_iterator<char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, unsigned int>, boost::u8_to_u32_iterator<__gnu_cxx::__normal_iterator<char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, unsigned int> > const&, boost::regex_constants::_match_flags) :1207 0 0.0% 0.0% boost::output_iterator_archetype<wchar_t> boost::re_detail_600::do_regex_replace<boost::output_iterator_archetype<wchar_t>, boost::bidirectional_iterator_archetype<wchar_t>, wchar_t const*>(boost::output_iterator_archetype<wchar_t>, std::pair<boost::bidirectional_iterator_archetype<wchar_t>, boost::bidirectional_iterator_archetype<wchar_t> > const&, boost::basic_regex<int, boost::icu_regex_traits> const&, std::pair<wchar_t const*, wchar_t const*> const&, boost::regex_constants::_match_flags) :1207 0 0.0% 0.0% boost::re_detail_600::string_out_iterator<std::__cxx11::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> > > boost::re_detail_600::do_regex_replace<boost::re_detail_600::string_out_iterator<std::__cxx11::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> > >, __gnu_cxx::__normal_iterator<wchar_t const*, std::__cxx11::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> > >, wchar_t const*>(boost::re_detail_600::string_out_iterator<std::__cxx11::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> > >, std::pair<__gnu_cxx::__normal_iterator<wchar_t const*, std::__cxx11::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> > >, __gnu_cxx::__normal_iterator<wchar_t const*, std::__cxx11::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> > > > const&, boost::basic_regex<int, boost::icu_regex_traits> const&, std::pair<wchar_t const*, wchar_t const*> const&, boost::regex_constants::_match_flags) :1207 0 0.0% 0.0% boost::utf16_output_iterator<boost::output_iterator_archetype<char16_t> > boost::re_detail_600::do_regex_replace<boost::utf16_output_iterator<boost::output_iterator_archetype<char16_t> >, boost::u16_to_u32_iterator<boost::bidirectional_iterator_archetype<char16_t>, unsigned int>, __gnu_cxx::__normal_iterator<wchar_t const*, std::__cxx11::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> > > >(boost::utf16_output_iterator<boost::output_iterator_archetype<char16_t> >, std::pair<boost::u16_to_u32_iterator<boost::bidirectional_iterator_archetype<char16_t>, unsigned int>, boost::u16_to_u32_iterator<boost::bidirectional_iterator_archetype<char16_t>, unsigned int> > const&, boost::basic_regex<int, boost::icu_regex_traits> const&, std::pair<__gnu_cxx::__normal_iterator<wchar_t const*, std::__cxx11::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> > >, __gnu_cxx::__normal_iterator<wchar_t const*, std::__cxx11::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> > > > const&, boost::regex_constants::_match_flags) :1207 0 0.0% 0.0% boost::utf16_output_iterator<boost::output_iterator_archetype<char16_t> > boost::re_detail_600::do_regex_replace<boost::utf16_output_iterator<boost::output_iterator_archetype<char16_t> >, boost::u16_to_u32_iterator<boost::bidirectional_iterator_archetype<char16_t>, unsigned int>, boost::u16_to_u32_iterator<char16_t const*, unsigned int> >(boost::utf16_output_iterator<boost::output_iterator_archetype<char16_t> >, std::pair<boost::u16_to_u32_iterator<boost::bidirectional_iterator_archetype<char16_t>, unsigned int>, boost::u16_to_u32_iterator<boost::bidirectional_iterator_archetype<char16_t>, unsigned int> > const&, boost::basic_regex<int, boost::icu_regex_traits> const&, std::pair<boost::u16_to_u32_iterator<char16_t const*, unsigned int>, boost::u16_to_u32_iterator<char16_t const*, unsigned int> > const&, boost::regex_constants::_match_flags) :1207 0 0.0% 0.0% boost::utf16_output_iterator<boost::output_iterator_archetype<char16_t> > boost::re_detail_600::do_regex_replace<boost::utf16_output_iterator<boost::output_iterator_archetype<char16_t> >, boost::u16_to_u32_iterator<boost::bidirectional_iterator_archetype<char16_t>, unsigned int>, boost::u8_to_u32_iterator<__gnu_cxx::__normal_iterator<char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, unsigned int> >(boost::utf16_output_iterator<boost::output_iterator_archetype<char16_t> >, std::pair<boost::u16_to_u32_iterator<boost::bidirectional_iterator_archetype<char16_t>, unsigned int>, boost::u16_to_u32_iterator<boost::bidirectional_iterator_archetype<char16_t>, unsigned int> > const&, boost::basic_regex<int, boost::icu_regex_traits> const&, std::pair<boost::u8_to_u32_iterator<__gnu_cxx::__normal_iterator<char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, unsigned int>, boost::u8_to_u32_iterator<__gnu_cxx::__normal_iterator<char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, unsigned int> > const&, boost::regex_constants::_match_flags) :1207 0 0.0% 0.0% boost::utf16_output_iterator<boost::re_detail_600::unicode_string_out_iterator> boost::re_detail_600::do_regex_replace<boost::utf16_output_iterator<boost::re_detail_600::unicode_string_out_iterator>, boost::u16_to_u32_iterator<char16_t const*, unsigned int>, boost::u16_to_u32_iterator<char16_t const*, unsigned int> >(boost::utf16_output_iterator<boost::re_detail_600::unicode_string_out_iterator>, std::pair<boost::u16_to_u32_iterator<char16_t const*, unsigned int>, boost::u16_to_u32_iterator<char16_t const*, unsigned int> > const&, boost::basic_regex<int, boost::icu_regex_traits> const&, std::pair<boost::u16_to_u32_iterator<char16_t const*, unsigned int>, boost::u16_to_u32_iterator<char16_t const*, unsigned int> > const&, boost::regex_constants::_match_flags) :1207 1837x 95.7% 90.0% boost::utf16_output_iterator<unnecessary_fix::back_insert_iterator<std::vector<char16_t, std::allocator<char16_t> > > > boost::re_detail_600::do_regex_replace<boost::utf16_output_iterator<unnecessary_fix::back_insert_iterator<std::vector<char16_t, std::allocator<char16_t> > > >, boost::u16_to_u32_iterator<__gnu_cxx::__normal_iterator<char16_t*, std::vector<char16_t, std::allocator<char16_t> > >, unsigned int>, boost::u16_to_u32_iterator<char16_t const*, unsigned int> >(boost::utf16_output_iterator<unnecessary_fix::back_insert_iterator<std::vector<char16_t, std::allocator<char16_t> > > >, std::pair<boost::u16_to_u32_iterator<__gnu_cxx::__normal_iterator<char16_t*, std::vector<char16_t, std::allocator<char16_t> > >, unsigned int>, boost::u16_to_u32_iterator<__gnu_cxx::__normal_iterator<char16_t*, std::vector<char16_t, std::allocator<char16_t> > >, unsigned int> > const&, boost::basic_regex<int, boost::icu_regex_traits> const&, std::pair<boost::u16_to_u32_iterator<char16_t const*, unsigned int>, boost::u16_to_u32_iterator<char16_t const*, unsigned int> > const&, boost::regex_constants::_match_flags) :1207 1836x 95.7% 90.0% boost::utf8_output_iterator<boost::output_iterator_archetype<char> > boost::re_detail_600::do_regex_replace<boost::utf8_output_iterator<boost::output_iterator_archetype<char> >, boost::u8_to_u32_iterator<boost::bidirectional_iterator_archetype<char>, unsigned int>, __gnu_cxx::__normal_iterator<wchar_t const*, std::__cxx11::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> > > >(boost::utf8_output_iterator<boost::output_iterator_archetype<char> >, std::pair<boost::u8_to_u32_iterator<boost::bidirectional_iterator_archetype<char>, unsigned int>, boost::u8_to_u32_iterator<boost::bidirectional_iterator_archetype<char>, unsigned int> > const&, boost::basic_regex<int, boost::icu_regex_traits> const&, std::pair<__gnu_cxx::__normal_iterator<wchar_t const*, std::__cxx11::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> > >, __gnu_cxx::__normal_iterator<wchar_t const*, std::__cxx11::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> > > > const&, boost::regex_constants::_match_flags) :1207 0 0.0% 0.0% boost::utf8_output_iterator<boost::output_iterator_archetype<char> > boost::re_detail_600::do_regex_replace<boost::utf8_output_iterator<boost::output_iterator_archetype<char> >, boost::u8_to_u32_iterator<boost::bidirectional_iterator_archetype<char>, unsigned int>, boost::u16_to_u32_iterator<char16_t const*, unsigned int> >(boost::utf8_output_iterator<boost::output_iterator_archetype<char> >, std::pair<boost::u8_to_u32_iterator<boost::bidirectional_iterator_archetype<char>, unsigned int>, boost::u8_to_u32_iterator<boost::bidirectional_iterator_archetype<char>, unsigned int> > const&, boost::basic_regex<int, boost::icu_regex_traits> const&, std::pair<boost::u16_to_u32_iterator<char16_t const*, unsigned int>, boost::u16_to_u32_iterator<char16_t const*, unsigned int> > const&, boost::regex_constants::_match_flags) :1207 0 0.0% 0.0% boost::utf8_output_iterator<boost::output_iterator_archetype<char> > boost::re_detail_600::do_regex_replace<boost::utf8_output_iterator<boost::output_iterator_archetype<char> >, boost::u8_to_u32_iterator<boost::bidirectional_iterator_archetype<char>, unsigned int>, boost::u8_to_u32_iterator<__gnu_cxx::__normal_iterator<char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, unsigned int> >(boost::utf8_output_iterator<boost::output_iterator_archetype<char> >, std::pair<boost::u8_to_u32_iterator<boost::bidirectional_iterator_archetype<char>, unsigned int>, boost::u8_to_u32_iterator<boost::bidirectional_iterator_archetype<char>, unsigned int> > const&, boost::basic_regex<int, boost::icu_regex_traits> const&, std::pair<boost::u8_to_u32_iterator<__gnu_cxx::__normal_iterator<char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, unsigned int>, boost::u8_to_u32_iterator<__gnu_cxx::__normal_iterator<char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, unsigned int> > const&, boost::regex_constants::_match_flags) :1207 0 0.0% 0.0% boost::utf8_output_iterator<boost::output_iterator_archetype<char> > boost::re_detail_600::do_regex_replace<boost::utf8_output_iterator<boost::output_iterator_archetype<char> >, boost::u8_to_u32_iterator<boost::bidirectional_iterator_archetype<char>, unsigned int>, boost::u8_to_u32_iterator<char const*, unsigned int> >(boost::utf8_output_iterator<boost::output_iterator_archetype<char> >, std::pair<boost::u8_to_u32_iterator<boost::bidirectional_iterator_archetype<char>, unsigned int>, boost::u8_to_u32_iterator<boost::bidirectional_iterator_archetype<char>, unsigned int> > const&, boost::basic_regex<int, boost::icu_regex_traits> const&, std::pair<boost::u8_to_u32_iterator<char const*, unsigned int>, boost::u8_to_u32_iterator<char const*, unsigned int> > const&, boost::regex_constants::_match_flags) :1207 0 0.0% 0.0% boost::utf8_output_iterator<boost::output_iterator_archetype<unsigned char> > boost::re_detail_600::do_regex_replace<boost::utf8_output_iterator<boost::output_iterator_archetype<unsigned char> >, boost::u8_to_u32_iterator<boost::bidirectional_iterator_archetype<unsigned char>, unsigned int>, __gnu_cxx::__normal_iterator<wchar_t const*, std::__cxx11::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> > > >(boost::utf8_output_iterator<boost::output_iterator_archetype<unsigned char> >, std::pair<boost::u8_to_u32_iterator<boost::bidirectional_iterator_archetype<unsigned char>, unsigned int>, boost::u8_to_u32_iterator<boost::bidirectional_iterator_archetype<unsigned char>, unsigned int> > const&, boost::basic_regex<int, boost::icu_regex_traits> const&, std::pair<__gnu_cxx::__normal_iterator<wchar_t const*, std::__cxx11::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> > >, __gnu_cxx::__normal_iterator<wchar_t const*, std::__cxx11::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> > > > const&, boost::regex_constants::_match_flags) :1207 0 0.0% 0.0% boost::utf8_output_iterator<boost::output_iterator_archetype<unsigned char> > boost::re_detail_600::do_regex_replace<boost::utf8_output_iterator<boost::output_iterator_archetype<unsigned char> >, boost::u8_to_u32_iterator<boost::bidirectional_iterator_archetype<unsigned char>, unsigned int>, boost::u16_to_u32_iterator<char16_t const*, unsigned int> >(boost::utf8_output_iterator<boost::output_iterator_archetype<unsigned char> >, std::pair<boost::u8_to_u32_iterator<boost::bidirectional_iterator_archetype<unsigned char>, unsigned int>, boost::u8_to_u32_iterator<boost::bidirectional_iterator_archetype<unsigned char>, unsigned int> > const&, boost::basic_regex<int, boost::icu_regex_traits> const&, std::pair<boost::u16_to_u32_iterator<char16_t const*, unsigned int>, boost::u16_to_u32_iterator<char16_t const*, unsigned int> > const&, boost::regex_constants::_match_flags) :1207 0 0.0% 0.0% boost::utf8_output_iterator<boost::output_iterator_archetype<unsigned char> > boost::re_detail_600::do_regex_replace<boost::utf8_output_iterator<boost::output_iterator_archetype<unsigned char> >, boost::u8_to_u32_iterator<boost::bidirectional_iterator_archetype<unsigned char>, unsigned int>, boost::u8_to_u32_iterator<__gnu_cxx::__normal_iterator<char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, unsigned int> >(boost::utf8_output_iterator<boost::output_iterator_archetype<unsigned char> >, std::pair<boost::u8_to_u32_iterator<boost::bidirectional_iterator_archetype<unsigned char>, unsigned int>, boost::u8_to_u32_iterator<boost::bidirectional_iterator_archetype<unsigned char>, unsigned int> > const&, boost::basic_regex<int, boost::icu_regex_traits> const&, std::pair<boost::u8_to_u32_iterator<__gnu_cxx::__normal_iterator<char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, unsigned int>, boost::u8_to_u32_iterator<__gnu_cxx::__normal_iterator<char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, unsigned int> > const&, boost::regex_constants::_match_flags) :1207 0 0.0% 0.0% boost::utf8_output_iterator<boost::output_iterator_archetype<unsigned char> > boost::re_detail_600::do_regex_replace<boost::utf8_output_iterator<boost::output_iterator_archetype<unsigned char> >, boost::u8_to_u32_iterator<boost::bidirectional_iterator_archetype<unsigned char>, unsigned int>, boost::u8_to_u32_iterator<unsigned char const*, unsigned int> >(boost::utf8_output_iterator<boost::output_iterator_archetype<unsigned char> >, std::pair<boost::u8_to_u32_iterator<boost::bidirectional_iterator_archetype<unsigned char>, unsigned int>, boost::u8_to_u32_iterator<boost::bidirectional_iterator_archetype<unsigned char>, unsigned int> > const&, boost::basic_regex<int, boost::icu_regex_traits> const&, std::pair<boost::u8_to_u32_iterator<unsigned char const*, unsigned int>, boost::u8_to_u32_iterator<unsigned char const*, unsigned int> > const&, boost::regex_constants::_match_flags) :1207 0 0.0% 0.0% boost::utf8_output_iterator<boost::re_detail_600::string_out_iterator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > boost::re_detail_600::do_regex_replace<boost::utf8_output_iterator<boost::re_detail_600::string_out_iterator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >, boost::u8_to_u32_iterator<__gnu_cxx::__normal_iterator<char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, unsigned int>, boost::u8_to_u32_iterator<char const*, unsigned int> >(boost::utf8_output_iterator<boost::re_detail_600::string_out_iterator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >, std::pair<boost::u8_to_u32_iterator<__gnu_cxx::__normal_iterator<char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, unsigned int>, boost::u8_to_u32_iterator<__gnu_cxx::__normal_iterator<char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, unsigned int> > const&, boost::basic_regex<int, boost::icu_regex_traits> const&, std::pair<boost::u8_to_u32_iterator<char const*, unsigned int>, boost::u8_to_u32_iterator<char const*, unsigned int> > const&, boost::regex_constants::_match_flags) :1207 1836x 95.7% 90.0% boost::utf8_output_iterator<unnecessary_fix::back_insert_iterator<std::vector<char, std::allocator<char> > > > boost::re_detail_600::do_regex_replace<boost::utf8_output_iterator<unnecessary_fix::back_insert_iterator<std::vector<char, std::allocator<char> > > >, boost::u8_to_u32_iterator<__gnu_cxx::__normal_iterator<char*, std::vector<char, std::allocator<char> > >, unsigned int>, boost::u8_to_u32_iterator<char const*, unsigned int> >(boost::utf8_output_iterator<unnecessary_fix::back_insert_iterator<std::vector<char, std::allocator<char> > > >, std::pair<boost::u8_to_u32_iterator<__gnu_cxx::__normal_iterator<char*, std::vector<char, std::allocator<char> > >, unsigned int>, boost::u8_to_u32_iterator<__gnu_cxx::__normal_iterator<char*, std::vector<char, std::allocator<char> > >, unsigned int> > const&, boost::basic_regex<int, boost::icu_regex_traits> const&, std::pair<boost::u8_to_u32_iterator<char const*, unsigned int>, boost::u8_to_u32_iterator<char const*, unsigned int> > const&, boost::regex_constants::_match_flags) :1207 1836x 95.7% 90.0% unnecessary_fix::back_insert_iterator<std::vector<int, std::allocator<int> > > boost::re_detail_600::do_regex_replace<unnecessary_fix::back_insert_iterator<std::vector<int, std::allocator<int> > >, __gnu_cxx::__normal_iterator<int*, std::vector<int, std::allocator<int> > >, int const*>(unnecessary_fix::back_insert_iterator<std::vector<int, std::allocator<int> > >, std::pair<__gnu_cxx::__normal_iterator<int*, std::vector<int, std::allocator<int> > >, __gnu_cxx::__normal_iterator<int*, std::vector<int, std::allocator<int> > > > const&, boost::basic_regex<int, boost::icu_regex_traits> const&, std::pair<int const*, int const*> const&, boost::regex_constants::_match_flags) :1207 1836x 95.7% 94.0% boost::output_iterator_archetype<wchar_t> const& boost::re_detail_600::extract_output_base<boost::output_iterator_archetype<wchar_t> >(boost::output_iterator_archetype<wchar_t> const&) :1247 0 0.0% 0.0% boost::re_detail_600::string_out_iterator<std::__cxx11::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> > > const& boost::re_detail_600::extract_output_base<boost::re_detail_600::string_out_iterator<std::__cxx11::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> > > >(boost::re_detail_600::string_out_iterator<std::__cxx11::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> > > const&) :1247 0 0.0% 0.0% unnecessary_fix::back_insert_iterator<std::vector<int, std::allocator<int> > > const& boost::re_detail_600::extract_output_base<unnecessary_fix::back_insert_iterator<std::vector<int, std::allocator<int> > > >(unnecessary_fix::back_insert_iterator<std::vector<int, std::allocator<int> > > const&) :1247 1836x 100.0% 100.0% boost::output_iterator_archetype<char> boost::re_detail_600::extract_output_base<boost::output_iterator_archetype<char> >(boost::utf8_output_iterator<boost::output_iterator_archetype<char> > const&) :1252 0 0.0% 0.0% boost::output_iterator_archetype<unsigned char> boost::re_detail_600::extract_output_base<boost::output_iterator_archetype<unsigned char> >(boost::utf8_output_iterator<boost::output_iterator_archetype<unsigned char> > const&) :1252 0 0.0% 0.0% boost::re_detail_600::string_out_iterator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > boost::re_detail_600::extract_output_base<boost::re_detail_600::string_out_iterator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >(boost::utf8_output_iterator<boost::re_detail_600::string_out_iterator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > const&) :1252 1836x 100.0% 100.0% unnecessary_fix::back_insert_iterator<std::vector<char, std::allocator<char> > > boost::re_detail_600::extract_output_base<unnecessary_fix::back_insert_iterator<std::vector<char, std::allocator<char> > > >(boost::utf8_output_iterator<unnecessary_fix::back_insert_iterator<std::vector<char, std::allocator<char> > > > const&) :1252 1836x 100.0% 100.0% boost::output_iterator_archetype<char16_t> boost::re_detail_600::extract_output_base<boost::output_iterator_archetype<char16_t> >(boost::utf16_output_iterator<boost::output_iterator_archetype<char16_t> > const&) :1257 0 0.0% 0.0% unnecessary_fix::back_insert_iterator<std::vector<char16_t, std::allocator<char16_t> > > boost::re_detail_600::extract_output_base<unnecessary_fix::back_insert_iterator<std::vector<char16_t, std::allocator<char16_t> > > >(boost::utf16_output_iterator<unnecessary_fix::back_insert_iterator<std::vector<char16_t, std::allocator<char16_t> > > > const&) :1257 1836x 100.0% 100.0% boost::output_iterator_archetype<char16_t> boost::u32regex_replace<boost::output_iterator_archetype<char16_t>, boost::bidirectional_iterator_archetype<char16_t>, char16_t>(boost::output_iterator_archetype<char16_t>, boost::bidirectional_iterator_archetype<char16_t>, boost::bidirectional_iterator_archetype<char16_t>, boost::basic_regex<int, boost::icu_regex_traits> const&, char16_t const*, boost::regex_constants::_match_flags) :1264 0 0.0% 0.0% boost::output_iterator_archetype<char> boost::u32regex_replace<boost::output_iterator_archetype<char>, boost::bidirectional_iterator_archetype<char>, char>(boost::output_iterator_archetype<char>, boost::bidirectional_iterator_archetype<char>, boost::bidirectional_iterator_archetype<char>, boost::basic_regex<int, boost::icu_regex_traits> const&, char const*, boost::regex_constants::_match_flags) :1264 0 0.0% 0.0% boost::output_iterator_archetype<unsigned char> boost::u32regex_replace<boost::output_iterator_archetype<unsigned char>, boost::bidirectional_iterator_archetype<unsigned char>, unsigned char>(boost::output_iterator_archetype<unsigned char>, boost::bidirectional_iterator_archetype<unsigned char>, boost::bidirectional_iterator_archetype<unsigned char>, boost::basic_regex<int, boost::icu_regex_traits> const&, unsigned char const*, boost::regex_constants::_match_flags) :1264 0 0.0% 0.0% boost::output_iterator_archetype<wchar_t> boost::u32regex_replace<boost::output_iterator_archetype<wchar_t>, boost::bidirectional_iterator_archetype<wchar_t>, wchar_t>(boost::output_iterator_archetype<wchar_t>, boost::bidirectional_iterator_archetype<wchar_t>, boost::bidirectional_iterator_archetype<wchar_t>, boost::basic_regex<int, boost::icu_regex_traits> const&, wchar_t const*, boost::regex_constants::_match_flags) :1264 0 0.0% 0.0% boost::re_detail_600::string_out_iterator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > boost::u32regex_replace<boost::re_detail_600::string_out_iterator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, __gnu_cxx::__normal_iterator<char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, char>(boost::re_detail_600::string_out_iterator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, __gnu_cxx::__normal_iterator<char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, __gnu_cxx::__normal_iterator<char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, boost::basic_regex<int, boost::icu_regex_traits> const&, char const*, boost::regex_constants::_match_flags) :1264 1836x 100.0% 100.0% boost::re_detail_600::string_out_iterator<std::__cxx11::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> > > boost::u32regex_replace<boost::re_detail_600::string_out_iterator<std::__cxx11::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> > >, __gnu_cxx::__normal_iterator<wchar_t const*, std::__cxx11::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> > >, wchar_t>(boost::re_detail_600::string_out_iterator<std::__cxx11::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> > >, __gnu_cxx::__normal_iterator<wchar_t const*, std::__cxx11::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> > >, __gnu_cxx::__normal_iterator<wchar_t const*, std::__cxx11::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> > >, boost::basic_regex<int, boost::icu_regex_traits> const&, wchar_t const*, boost::regex_constants::_match_flags) :1264 0 0.0% 0.0% unnecessary_fix::back_insert_iterator<std::vector<char, std::allocator<char> > > boost::u32regex_replace<unnecessary_fix::back_insert_iterator<std::vector<char, std::allocator<char> > >, __gnu_cxx::__normal_iterator<char*, std::vector<char, std::allocator<char> > >, char>(unnecessary_fix::back_insert_iterator<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> > >, boost::basic_regex<int, boost::icu_regex_traits> const&, char const*, boost::regex_constants::_match_flags) :1264 1836x 100.0% 100.0% unnecessary_fix::back_insert_iterator<std::vector<char16_t, std::allocator<char16_t> > > boost::u32regex_replace<unnecessary_fix::back_insert_iterator<std::vector<char16_t, std::allocator<char16_t> > >, __gnu_cxx::__normal_iterator<char16_t*, std::vector<char16_t, std::allocator<char16_t> > >, char16_t>(unnecessary_fix::back_insert_iterator<std::vector<char16_t, std::allocator<char16_t> > >, __gnu_cxx::__normal_iterator<char16_t*, std::vector<char16_t, std::allocator<char16_t> > >, __gnu_cxx::__normal_iterator<char16_t*, std::vector<char16_t, std::allocator<char16_t> > >, boost::basic_regex<int, boost::icu_regex_traits> const&, char16_t const*, boost::regex_constants::_match_flags) :1264 1836x 100.0% 100.0% unnecessary_fix::back_insert_iterator<std::vector<int, std::allocator<int> > > boost::u32regex_replace<unnecessary_fix::back_insert_iterator<std::vector<int, std::allocator<int> > >, __gnu_cxx::__normal_iterator<int*, std::vector<int, std::allocator<int> > >, int>(unnecessary_fix::back_insert_iterator<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> > >, boost::basic_regex<int, boost::icu_regex_traits> const&, int const*, boost::regex_constants::_match_flags) :1264 1836x 100.0% 100.0% boost::output_iterator_archetype<char16_t> boost::u32regex_replace<boost::output_iterator_archetype<char16_t>, boost::bidirectional_iterator_archetype<char16_t>, char>(boost::output_iterator_archetype<char16_t>, boost::bidirectional_iterator_archetype<char16_t>, boost::bidirectional_iterator_archetype<char16_t>, boost::basic_regex<int, boost::icu_regex_traits> const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, boost::regex_constants::_match_flags) :1283 0 0.0% 0.0% boost::output_iterator_archetype<char16_t> boost::u32regex_replace<boost::output_iterator_archetype<char16_t>, boost::bidirectional_iterator_archetype<char16_t>, wchar_t>(boost::output_iterator_archetype<char16_t>, boost::bidirectional_iterator_archetype<char16_t>, boost::bidirectional_iterator_archetype<char16_t>, boost::basic_regex<int, boost::icu_regex_traits> const&, std::__cxx11::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> > const&, boost::regex_constants::_match_flags) :1283 0 0.0% 0.0% boost::output_iterator_archetype<char> boost::u32regex_replace<boost::output_iterator_archetype<char>, boost::bidirectional_iterator_archetype<char>, char>(boost::output_iterator_archetype<char>, boost::bidirectional_iterator_archetype<char>, boost::bidirectional_iterator_archetype<char>, boost::basic_regex<int, boost::icu_regex_traits> const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, boost::regex_constants::_match_flags) :1283 0 0.0% 0.0% boost::output_iterator_archetype<char> boost::u32regex_replace<boost::output_iterator_archetype<char>, boost::bidirectional_iterator_archetype<char>, wchar_t>(boost::output_iterator_archetype<char>, boost::bidirectional_iterator_archetype<char>, boost::bidirectional_iterator_archetype<char>, boost::basic_regex<int, boost::icu_regex_traits> const&, std::__cxx11::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> > const&, boost::regex_constants::_match_flags) :1283 0 0.0% 0.0% boost::output_iterator_archetype<unsigned char> boost::u32regex_replace<boost::output_iterator_archetype<unsigned char>, boost::bidirectional_iterator_archetype<unsigned char>, char>(boost::output_iterator_archetype<unsigned char>, boost::bidirectional_iterator_archetype<unsigned char>, boost::bidirectional_iterator_archetype<unsigned char>, boost::basic_regex<int, boost::icu_regex_traits> const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, boost::regex_constants::_match_flags) :1283 0 0.0% 0.0% boost::output_iterator_archetype<unsigned char> boost::u32regex_replace<boost::output_iterator_archetype<unsigned char>, boost::bidirectional_iterator_archetype<unsigned char>, wchar_t>(boost::output_iterator_archetype<unsigned char>, boost::bidirectional_iterator_archetype<unsigned char>, boost::bidirectional_iterator_archetype<unsigned char>, boost::basic_regex<int, boost::icu_regex_traits> const&, std::__cxx11::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> > const&, boost::regex_constants::_match_flags) :1283 0 0.0% 0.0% boost::output_iterator_archetype<wchar_t> boost::u32regex_replace<boost::output_iterator_archetype<wchar_t>, boost::bidirectional_iterator_archetype<wchar_t>, char>(boost::output_iterator_archetype<wchar_t>, boost::bidirectional_iterator_archetype<wchar_t>, boost::bidirectional_iterator_archetype<wchar_t>, boost::basic_regex<int, boost::icu_regex_traits> const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, boost::regex_constants::_match_flags) :1283 0 0.0% 0.0% boost::output_iterator_archetype<wchar_t> boost::u32regex_replace<boost::output_iterator_archetype<wchar_t>, boost::bidirectional_iterator_archetype<wchar_t>, wchar_t>(boost::output_iterator_archetype<wchar_t>, boost::bidirectional_iterator_archetype<wchar_t>, boost::bidirectional_iterator_archetype<wchar_t>, boost::basic_regex<int, boost::icu_regex_traits> const&, std::__cxx11::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> > const&, boost::regex_constants::_match_flags) :1283 0 0.0% 0.0% boost::output_iterator_archetype<char16_t> boost::u32regex_replace<boost::output_iterator_archetype<char16_t>, boost::bidirectional_iterator_archetype<char16_t> >(boost::output_iterator_archetype<char16_t>, boost::bidirectional_iterator_archetype<char16_t>, boost::bidirectional_iterator_archetype<char16_t>, boost::basic_regex<int, boost::icu_regex_traits> const&, icu_74::UnicodeString const&, boost::regex_constants::_match_flags) :1302 0 0.0% 0.0% boost::output_iterator_archetype<char> boost::u32regex_replace<boost::output_iterator_archetype<char>, boost::bidirectional_iterator_archetype<char> >(boost::output_iterator_archetype<char>, boost::bidirectional_iterator_archetype<char>, boost::bidirectional_iterator_archetype<char>, boost::basic_regex<int, boost::icu_regex_traits> const&, icu_74::UnicodeString const&, boost::regex_constants::_match_flags) :1302 0 0.0% 0.0% boost::output_iterator_archetype<unsigned char> boost::u32regex_replace<boost::output_iterator_archetype<unsigned char>, boost::bidirectional_iterator_archetype<unsigned char> >(boost::output_iterator_archetype<unsigned char>, boost::bidirectional_iterator_archetype<unsigned char>, boost::bidirectional_iterator_archetype<unsigned char>, boost::basic_regex<int, boost::icu_regex_traits> const&, icu_74::UnicodeString const&, boost::regex_constants::_match_flags) :1302 0 0.0% 0.0% boost::output_iterator_archetype<wchar_t> boost::u32regex_replace<boost::output_iterator_archetype<wchar_t>, boost::bidirectional_iterator_archetype<wchar_t> >(boost::output_iterator_archetype<wchar_t>, boost::bidirectional_iterator_archetype<wchar_t>, boost::bidirectional_iterator_archetype<wchar_t>, boost::basic_regex<int, boost::icu_regex_traits> const&, icu_74::UnicodeString const&, boost::regex_constants::_match_flags) :1302 0 0.0% 0.0% std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > boost::u32regex_replace<char>(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, boost::basic_regex<int, boost::icu_regex_traits> const&, char const*, boost::regex_constants::_match_flags) :1321 0 0.0% 0.0% std::__cxx11::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> > boost::u32regex_replace<wchar_t>(std::__cxx11::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> > const&, boost::basic_regex<int, boost::icu_regex_traits> const&, wchar_t const*, boost::regex_constants::_match_flags) :1321 0 0.0% 0.0% std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > boost::u32regex_replace<char>(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, boost::basic_regex<int, boost::icu_regex_traits> const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, boost::regex_constants::_match_flags) :1333 1836x 83.3% 100.0% std::__cxx11::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> > boost::u32regex_replace<wchar_t>(std::__cxx11::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> > const&, boost::basic_regex<int, boost::icu_regex_traits> const&, std::__cxx11::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> > const&, boost::regex_constants::_match_flags) :1333 0 0.0% 0.0% boost::re_detail_600::unicode_string_out_iterator::unicode_string_out_iterator(icu_74::UnicodeString&) :1350 1837x 100.0% 100.0% boost::re_detail_600::unicode_string_out_iterator::operator++(int) :1352 11371x 100.0% 100.0% boost::re_detail_600::unicode_string_out_iterator::operator*() :1353 11371x 100.0% 100.0% boost::re_detail_600::unicode_string_out_iterator::operator=(char16_t) :1354 11371x 100.0% 100.0% boost::u32regex_replace(icu_74::UnicodeString const&, boost::basic_regex<int, boost::icu_regex_traits> const&, icu_74::UnicodeString const&, boost::regex_constants::_match_flags) :1379 1837x 88.9% 100.0%

Line | TLA | Hits | Source Code
--- | --- | --- | ---
1 |  |  | /*
2 |  |  | *
3 |  |  | * Copyright (c) 2004
4 |  |  | * John Maddock
5 |  |  | *
6 |  |  | * Use, modification and distribution are subject to the
7 |  |  | * Boost Software License, Version 1.0. (See accompanying file
8 |  |  | * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
9 |  |  | *
10 |  |  | */
11 |  |  |
12 |  |  | /*
13 |  |  | * LOCATION: see http://www.boost.org for most recent version.
14 |  |  | * FILE icu.hpp
15 |  |  | * VERSION see <boost/version.hpp>
16 |  |  | * DESCRIPTION: Unicode regular expressions on top of the ICU Library.
17 |  |  | */
18 |  |  |
19 |  |  | #ifndef BOOST_REGEX_ICU_V5_HPP
20 |  |  | #define BOOST_REGEX_ICU_V5_HPP
21 |  |  |
22 |  |  | #ifndef BOOST_REGEX_AS_MODULE
23 |  |  | #include <unicode/utypes.h>
24 |  |  | #include <unicode/uchar.h>
25 |  |  | #include <unicode/coll.h>
26 |  |  | #include <type_traits>
27 |  |  | #include <functional>
28 |  |  | #endif
29 |  |  | #include <boost/regex.hpp>
30 |  |  | #include <boost/regex/v5/unicode_iterator.hpp>
31 |  |  |
32 |  |  | #ifdef BOOST_REGEX_MSVC
33 |  |  | #pragma warning (push)
34 |  |  | #pragma warning (disable: 4251)
35 |  |  | #endif
36 |  |  |
37 |  |  | namespace boost{
38 |  |  |
39 |  |  | namespace BOOST_REGEX_DETAIL_NS{
40 |  |  |
41 |  |  | //
42 |  |  | // Implementation details:
43 |  |  | //
44 |  |  | class icu_regex_traits_implementation
45 |  |  | {
46 |  |  | typedef UChar32 char_type;
47 |  |  | typedef std::size_t size_type;
48 |  |  | typedef std::vector<char_type> string_type;
49 |  |  | typedef U_NAMESPACE_QUALIFIER Locale locale_type;
50 |  |  | typedef std::uint_least32_t char_class_type;
51 |  |  | public:
52 |  | 149306x | icu_regex_traits_implementation(const U_NAMESPACE_QUALIFIER Locale& l)
53 |  | 149306x | : m_locale(l)
54 |  |  | {
55 |  | 149306x | UErrorCode success = U_ZERO_ERROR;
56 |  | 149306x | m_collator.reset(U_NAMESPACE_QUALIFIER Collator::createInstance(l, success));
57 |  | 149306x | if(U_SUCCESS(success) == 0)
58 |  | ✗ | init_error();
59 |  | 149306x | m_collator->setStrength(U_NAMESPACE_QUALIFIER Collator::IDENTICAL);
60 |  | 149306x | success = U_ZERO_ERROR;
61 |  | 149306x | m_primary_collator.reset(U_NAMESPACE_QUALIFIER Collator::createInstance(l, success));
62 |  | 149306x | if(U_SUCCESS(success) == 0)
63 |  | ✗ | init_error();
64 |  | 149306x | m_primary_collator->setStrength(U_NAMESPACE_QUALIFIER Collator::PRIMARY);
65 |  | 149306x | }
66 |  | 64x | U_NAMESPACE_QUALIFIER Locale getloc()const
67 |  |  | {
68 |  | 64x | return m_locale;
69 |  |  | }
70 |  | 401160x | string_type do_transform(const char_type* p1, const char_type* p2, const U_NAMESPACE_QUALIFIER Collator* pcoll) const
71 |  |  | {
72 |  |  | // TODO make thread safe!!!! :
73 |  |  | typedef u32_to_u16_iterator<const char_type*, ::UChar> itt;
74 |  | 401160x | itt i(p1), j(p2);
75 |  | 401160x | std::vector< ::UChar> t(i, j);
76 |  |  | std::uint8_t result[100];
77 |  |  | std::int32_t len;
78 |  | 401160x | if (!t.empty())
79 |  | 401160x | len = pcoll->getSortKey(&*t.begin(), static_cast<std::int32_t>(t.size()), result, sizeof(result));
80 |  |  | else
81 |  | ✗ | len = pcoll->getSortKey(static_cast<UChar const*>(0), static_cast<std::int32_t>(0), result, sizeof(result));
82 |  | 401160x | if (std::size_t(len) > sizeof(result))
83 |  |  | {
84 |  | ✗ | std::unique_ptr< std::uint8_t[]> presult(new ::uint8_t[len + 1]);
85 |  | ✗ | if (!t.empty())
86 |  | ✗ | len = pcoll->getSortKey(&*t.begin(), static_cast<std::int32_t>(t.size()), presult.get(), len + 1);
87 |  |  | else
88 |  | ✗ | len = pcoll->getSortKey(static_cast<UChar const*>(0), static_cast<std::int32_t>(0), presult.get(), len + 1);
89 |  | ✗ | if ((0 == presult[len - 1]) && (len > 1))
90 |  | ✗ | --len;
91 |  | ✗ | return string_type(presult.get(), presult.get() + len);
92 |  | ✗ | }
93 |  | 401160x | if ((0 == result[len - 1]) && (len > 1))
94 |  | 382704x | --len;
95 |  | 802320x | return string_type(result, result + len);
96 |  | 401160x | }
97 |  | 322200x | string_type transform(const char_type* p1, const char_type* p2) const
98 |  |  | {
99 |  | 322200x | return do_transform(p1, p2, m_collator.get());
100 |  |  | }
101 |  | 78960x | string_type transform_primary(const char_type* p1, const char_type* p2) const
102 |  |  | {
103 |  | 78960x | return do_transform(p1, p2, m_primary_collator.get());
104 |  |  | }
105 |  |  | private:
106 |  | ✗ | void init_error()
107 |  |  | {
108 |  | ✗ | std::runtime_error e("Could not initialize ICU resources");
109 |  |  | #ifndef BOOST_REGEX_STANDALONE
110 |  | ✗ | boost::throw_exception(e);
111 |  |  | #else
112 |  |  | throw e;
113 |  |  | #endif
114 |  | ✗ | }
115 |  |  | U_NAMESPACE_QUALIFIER Locale m_locale; // The ICU locale that we're using
116 |  |  | std::unique_ptr< U_NAMESPACE_QUALIFIER Collator> m_collator; // The full collation object
117 |  |  | std::unique_ptr< U_NAMESPACE_QUALIFIER Collator> m_primary_collator; // The primary collation object
118 |  |  | };
119 |  | 149306x | inline std::shared_ptr<icu_regex_traits_implementation> get_icu_regex_traits_implementation(const U_NAMESPACE_QUALIFIER Locale& loc)
120 |  |  | {
121 |  | 149306x | return std::shared_ptr<icu_regex_traits_implementation>(new icu_regex_traits_implementation(loc));
122 |  |  | }
123 |  |  |
124 |  |  | }
125 |  |  |
126 |  |  | class icu_regex_traits
127 |  |  | {
128 |  |  | public:
129 |  |  | typedef UChar32 char_type;
130 |  |  | typedef std::size_t size_type;
131 |  |  | typedef std::vector<char_type> string_type;
132 |  |  | typedef U_NAMESPACE_QUALIFIER Locale locale_type;
133 |  |  | typedef std::uint64_t char_class_type;
134 |  |  |
135 |  |  | struct boost_extensions_tag{};
136 |  |  |
137 |  | 149242x | icu_regex_traits()
138 |  | 149242x | : m_pimpl(BOOST_REGEX_DETAIL_NS::get_icu_regex_traits_implementation(U_NAMESPACE_QUALIFIER Locale()))
139 |  |  | {
140 |  | 149242x | }
141 |  | 3276x | static size_type length(const char_type* p)
142 |  |  | {
143 |  | 3276x | size_type result = 0;
144 |  | 47508x | while (*p)
145 |  |  | {
146 |  | 44232x | ++p;
147 |  | 44232x | ++result;
148 |  |  | }
149 |  | 3276x | return result;
150 |  |  | }
151 |  |  |
152 |  | 2643091x | ::boost::regex_constants::syntax_type syntax_type(char_type c)const
153 |  |  | {
154 |  | 2643091x | return ((c < 0x7f) && (c > 0)) ? BOOST_REGEX_DETAIL_NS::get_default_syntax_type(static_cast<char>(c)) : regex_constants::syntax_char;
155 |  |  | }
156 |  | 119970x | ::boost::regex_constants::escape_syntax_type escape_syntax_type(char_type c) const
157 |  |  | {
158 |  | 119970x | return ((c < 0x7f) && (c > 0)) ? BOOST_REGEX_DETAIL_NS::get_default_escape_syntax_type(static_cast<char>(c)) : regex_constants::syntax_char;
159 |  |  | }
160 |  | 80841541x | char_type translate(char_type c) const
161 |  |  | {
162 |  | 80841541x | return c;
163 |  |  | }
164 |  | 3471437x | char_type translate_nocase(char_type c) const
165 |  |  | {
166 |  | 3471437x | return ::u_foldCase(c, U_FOLD_CASE_DEFAULT);
167 |  |  | }
168 |  | 84312715x | char_type translate(char_type c, bool icase) const
169 |  |  | {
170 |  | 84312715x | return icase ? translate_nocase(c) : translate(c);
171 |  |  | }
172 |  | 959x | char_type tolower(char_type c) const
173 |  |  | {
174 |  | 959x | return ::u_tolower(c);
175 |  |  | }
176 |  | 661x | char_type toupper(char_type c) const
177 |  |  | {
178 |  | 661x | return ::u_toupper(c);
179 |  |  | }
180 |  | 322200x | string_type transform(const char_type* p1, const char_type* p2) const
181 |  |  | {
182 |  | 322200x | return m_pimpl->transform(p1, p2);
183 |  |  | }
184 |  | 78960x | string_type transform_primary(const char_type* p1, const char_type* p2) const
185 |  |  | {
186 |  | 78960x | return m_pimpl->transform_primary(p1, p2);
187 |  |  | }
188 |  | 801325x | char_class_type lookup_classname(const char_type* p1, const char_type* p2) const
189 |  |  | {
190 |  | 801325x | constexpr char_class_type mask_blank = char_class_type(1) << offset_blank;
191 |  | 801325x | constexpr char_class_type mask_space = char_class_type(1) << offset_space;
192 |  | 801325x | constexpr char_class_type mask_xdigit = char_class_type(1) << offset_xdigit;
193 |  | 801325x | constexpr char_class_type mask_underscore = char_class_type(1) << offset_underscore;
194 |  | 801325x | constexpr char_class_type mask_unicode = char_class_type(1) << offset_unicode;
195 |  |  | //constexpr char_class_type mask_any = char_class_type(1) << offset_any;
196 |  |  | //constexpr char_class_type mask_ascii = char_class_type(1) << offset_ascii;
197 |  | 801325x | constexpr char_class_type mask_horizontal = char_class_type(1) << offset_horizontal;
198 |  | 801325x | constexpr char_class_type mask_vertical = char_class_type(1) << offset_vertical;
199 |  |  |
200 |  |  | static const char_class_type masks[] =
201 |  |  | {
202 |  |  | 0,
203 |  |  | U_GC_L_MASK | U_GC_ND_MASK,
204 |  |  | U_GC_L_MASK,
205 |  |  | mask_blank,
206 |  |  | U_GC_CC_MASK | U_GC_CF_MASK | U_GC_ZL_MASK | U_GC_ZP_MASK,
207 |  |  | U_GC_ND_MASK,
208 |  |  | U_GC_ND_MASK,
209 |  |  | (0x3FFFFFFFu) & ~(U_GC_CC_MASK | U_GC_CF_MASK | U_GC_CS_MASK | U_GC_CN_MASK | U_GC_Z_MASK),
210 |  |  | mask_horizontal,
211 |  |  | U_GC_LL_MASK,
212 |  |  | U_GC_LL_MASK,
213 |  |  | ~(U_GC_C_MASK),
214 |  |  | U_GC_P_MASK,
215 |  |  | char_class_type(U_GC_Z_MASK) | mask_space,
216 |  |  | char_class_type(U_GC_Z_MASK) | mask_space,
217 |  |  | U_GC_LU_MASK,
218 |  |  | mask_unicode,
219 |  |  | U_GC_LU_MASK,
220 |  |  | mask_vertical,
221 |  |  | char_class_type(U_GC_L_MASK | U_GC_ND_MASK | U_GC_MN_MASK) | mask_underscore,
222 |  |  | char_class_type(U_GC_L_MASK | U_GC_ND_MASK | U_GC_MN_MASK) | mask_underscore,
223 |  |  | char_class_type(U_GC_ND_MASK) | mask_xdigit,
224 |  |  | };
225 |  |  |
226 |  | 801325x | int idx = ::boost::BOOST_REGEX_DETAIL_NS::get_default_class_id(p1, p2);
227 |  | 801325x | if (idx >= 0)
228 |  | 792631x | return masks[idx + 1];
229 |  | 8694x | char_class_type result = lookup_icu_mask(p1, p2);
230 |  | 8694x | if (result != 0)
231 |  | ✗ | return result;
232 |  |  |
233 |  | 8694x | if (idx < 0)
234 |  |  | {
235 |  | 8694x | string_type s(p1, p2);
236 |  | 8694x | string_type::size_type i = 0;
237 |  | 52559x | while (i < s.size())
238 |  |  | {
239 |  | 43865x | s[i] = static_cast<char>((::u_tolower)(s[i]));
240 |  | 43865x | if (::u_isspace(s[i]) || (s[i] == '-') || (s[i] == '_'))
241 |  | 2160x | s.erase(s.begin() + i, s.begin() + i + 1);
242 |  |  | else
243 |  |  | {
244 |  | 41705x | s[i] = static_cast<char>((::u_tolower)(s[i]));
245 |  | 41705x | ++i;
246 |  |  | }
247 |  |  | }
248 |  | 8694x | if (!s.empty())
249 |  | 8622x | idx = ::boost::BOOST_REGEX_DETAIL_NS::get_default_class_id(&*s.begin(), &*s.begin() + s.size());
250 |  | 8694x | if (idx >= 0)
251 |  | 2647x | return masks[idx + 1];
252 |  | 6047x | if (!s.empty())
253 |  | 5975x | result = lookup_icu_mask(&*s.begin(), &*s.begin() + s.size());
254 |  | 6047x | if (result != 0)
255 |  | 4643x | return result;
256 |  | 8694x | }
257 |  | 1404x | BOOST_REGEX_ASSERT(std::size_t(idx + 1) < sizeof(masks) / sizeof(masks[0]));
258 |  | 1404x | return masks[idx + 1];
259 |  |  | }
260 |  | 8452x | string_type lookup_collatename(const char_type* p1, const char_type* p2) const
261 |  |  | {
262 |  | 8452x | string_type result;
263 |  | 8452x | if (std::find_if(p1, p2, std::bind(std::greater< ::UChar32>(), std::placeholders::_1, 0x7f)) == p2)
264 |  |  | {
265 |  | 8272x | std::string s(p1, p2);
266 |  |  | // Try Unicode name:
267 |  | 8272x | UErrorCode err = U_ZERO_ERROR;
268 |  | 8272x | UChar32 c = ::u_charFromName(U_UNICODE_CHAR_NAME, s.c_str(), &err);
269 |  | 8272x | if (U_SUCCESS(err))
270 |  |  | {
271 |  | 420x | result.push_back(c);
272 |  | 420x | return result;
273 |  |  | }
274 |  |  | // Try Unicode-extended name:
275 |  | 7852x | err = U_ZERO_ERROR;
276 |  | 7852x | c = ::u_charFromName(U_EXTENDED_CHAR_NAME, s.c_str(), &err);
277 |  | 7852x | if (U_SUCCESS(err))
278 |  |  | {
279 |  | ✗ | result.push_back(c);
280 |  | ✗ | return result;
281 |  |  | }
282 |  |  | // try POSIX name:
283 |  | 7852x | s = ::boost::BOOST_REGEX_DETAIL_NS::lookup_default_collate_name(s);
284 |  | 7852x | result.assign(s.begin(), s.end());
285 |  | 8272x | }
286 |  | 8032x | if (result.empty() && (p2 - p1 == 1))
287 |  | 180x | result.push_back(*p1);
288 |  | 8032x | return result;
289 |  | ✗ | }
290 |  | 15666933x | bool isctype(char_type c, char_class_type f) const
291 |  |  | {
292 |  | 15666933x | constexpr char_class_type mask_blank = char_class_type(1) << offset_blank;
293 |  | 15666933x | constexpr char_class_type mask_space = char_class_type(1) << offset_space;
294 |  | 15666933x | constexpr char_class_type mask_xdigit = char_class_type(1) << offset_xdigit;
295 |  | 15666933x | constexpr char_class_type mask_underscore = char_class_type(1) << offset_underscore;
296 |  | 15666933x | constexpr char_class_type mask_unicode = char_class_type(1) << offset_unicode;
297 |  | 15666933x | constexpr char_class_type mask_any = char_class_type(1) << offset_any;
298 |  | 15666933x | constexpr char_class_type mask_ascii = char_class_type(1) << offset_ascii;
299 |  | 15666933x | constexpr char_class_type mask_horizontal = char_class_type(1) << offset_horizontal;
300 |  | 15666933x | constexpr char_class_type mask_vertical = char_class_type(1) << offset_vertical;
301 |  |  |
302 |  |  | // check for standard catagories first:
303 |  | 15666933x | char_class_type m = char_class_type(static_cast<char_class_type>(1) << u_charType(c));
304 |  | 15666933x | if ((m & f) != 0)
305 |  | 2356800x | return true;
306 |  |  | // now check for special cases:
307 |  | 13310133x | if (((f & mask_blank) != 0) && u_isblank(c))
308 |  | 3174x | return true;
309 |  | 13306959x | if (((f & mask_space) != 0) && u_isspace(c))
310 |  | 48426x | return true;
311 |  | 13258533x | if (((f & mask_xdigit) != 0) && (u_digit(c, 16) >= 0))
312 |  | 9408x | return true;
313 |  | 13249125x | if (((f & mask_unicode) != 0) && (c >= 0x100))
314 |  | 144x | return true;
315 |  | 13248981x | if (((f & mask_underscore) != 0) && (c == '_'))
316 |  | 11723x | return true;
317 |  | 13237258x | if (((f & mask_any) != 0) && (c <= 0x10FFFF))
318 |  | 15432x | return true;
319 |  | 13221826x | if (((f & mask_ascii) != 0) && (c <= 0x7F))
320 |  | 15432x | return true;
321 |  | 13206394x | if (((f & mask_vertical) != 0) && (::boost::BOOST_REGEX_DETAIL_NS::is_separator(c) || (c == static_cast<char_type>('\v')) || (m == U_GC_ZL_MASK) || (m == U_GC_ZP_MASK)))
322 |  | 1644x | return true;
323 |  | 13204750x | if (((f & mask_horizontal) != 0) && !::boost::BOOST_REGEX_DETAIL_NS::is_separator(c) && u_isspace(c) && (c != static_cast<char_type>('\v')))
324 |  | 1224x | return true;
325 |  | 13203526x | return false;
326 |  |  | }
327 |  | 80339x | std::intmax_t toi(const char_type*& p1, const char_type* p2, int radix)const
328 |  |  | {
329 |  | 80339x | return BOOST_REGEX_DETAIL_NS::global_toi(p1, p2, radix, *this);
330 |  |  | }
331 |  | 203040x | int value(char_type c, int radix)const
332 |  |  | {
333 |  | 203040x | return u_digit(c, static_cast< std::int8_t>(radix));
334 |  |  | }
335 |  | 64x | locale_type imbue(locale_type l)
336 |  |  | {
337 |  | 64x | locale_type result(m_pimpl->getloc());
338 |  | 64x | m_pimpl = BOOST_REGEX_DETAIL_NS::get_icu_regex_traits_implementation(l);
339 |  | 64x | return result;
340 |  | ✗ | }
341 |  |  | locale_type getloc()const
342 |  |  | {
343 |  |  | return locale_type();
344 |  |  | }
345 |  | 14580x | std::string error_string(::boost::regex_constants::error_type n) const
346 |  |  | {
347 |  | 29160x | return BOOST_REGEX_DETAIL_NS::get_default_error_string(n);
348 |  |  | }
349 |  |  | private:
350 |  |  | icu_regex_traits(const icu_regex_traits&);
351 |  |  | icu_regex_traits& operator=(const icu_regex_traits&);
352 |  |  |
353 |  |  | //
354 |  |  | // define the bitmasks offsets we need for additional character properties:
355 |  |  | //
356 |  |  | enum{
357 |  |  | offset_blank = U_CHAR_CATEGORY_COUNT,
358 |  |  | offset_space = U_CHAR_CATEGORY_COUNT+1,
359 |  |  | offset_xdigit = U_CHAR_CATEGORY_COUNT+2,
360 |  |  | offset_underscore = U_CHAR_CATEGORY_COUNT+3,
361 |  |  | offset_unicode = U_CHAR_CATEGORY_COUNT+4,
362 |  |  | offset_any = U_CHAR_CATEGORY_COUNT+5,
363 |  |  | offset_ascii = U_CHAR_CATEGORY_COUNT+6,
364 |  |  | offset_horizontal = U_CHAR_CATEGORY_COUNT+7,
365 |  |  | offset_vertical = U_CHAR_CATEGORY_COUNT+8
366 |  |  | };
367 |  |  |
368 |  | 14669x | static char_class_type lookup_icu_mask(const ::UChar32* p1, const ::UChar32* p2)
369 |  |  | {
370 |  |  | //constexpr char_class_type mask_blank = char_class_type(1) << offset_blank;
371 |  |  | //constexpr char_class_type mask_space = char_class_type(1) << offset_space;
372 |  |  | //constexpr char_class_type mask_xdigit = char_class_type(1) << offset_xdigit;
373 |  |  | //constexpr char_class_type mask_underscore = char_class_type(1) << offset_underscore;
374 |  |  | //constexpr char_class_type mask_unicode = char_class_type(1) << offset_unicode;
375 |  | 14669x | constexpr char_class_type mask_any = char_class_type(1) << offset_any;
376 |  | 14669x | constexpr char_class_type mask_ascii = char_class_type(1) << offset_ascii;
377 |  |  | //constexpr char_class_type mask_horizontal = char_class_type(1) << offset_horizontal;
378 |  |  | //constexpr char_class_type mask_vertical = char_class_type(1) << offset_vertical;
379 |  |  |
380 |  |  | static const ::UChar32 prop_name_table[] = {
381 |  |  | /* any */ 'a', 'n', 'y',
382 |  |  | /* ascii */ 'a', 's', 'c', 'i', 'i',
383 |  |  | /* assigned */ 'a', 's', 's', 'i', 'g', 'n', 'e', 'd',
384 |  |  | /* c* */ 'c', '*',
385 |  |  | /* cc */ 'c', 'c',
386 |  |  | /* cf */ 'c', 'f',
387 |  |  | /* closepunctuation */ 'c', 'l', 'o', 's', 'e', 'p', 'u', 'n', 'c', 't', 'u', 'a', 't', 'i', 'o', 'n',
388 |  |  | /* cn */ 'c', 'n',
389 |  |  | /* co */ 'c', 'o',
390 |  |  | /* connectorpunctuation */ 'c', 'o', 'n', 'n', 'e', 'c', 't', 'o', 'r', 'p', 'u', 'n', 'c', 't', 'u', 'a', 't', 'i', 'o', 'n',
391 |  |  | /* control */ 'c', 'o', 'n', 't', 'r', 'o', 'l',
392 |  |  | /* cs */ 'c', 's',
393 |  |  | /* currencysymbol */ 'c', 'u', 'r', 'r', 'e', 'n', 'c', 'y', 's', 'y', 'm', 'b', 'o', 'l',
394 |  |  | /* dashpunctuation */ 'd', 'a', 's', 'h', 'p', 'u', 'n', 'c', 't', 'u', 'a', 't', 'i', 'o', 'n',
395 |  |  | /* decimaldigitnumber */ 'd', 'e', 'c', 'i', 'm', 'a', 'l', 'd', 'i', 'g', 'i', 't', 'n', 'u', 'm', 'b', 'e', 'r',
396 |  |  | /* enclosingmark */ 'e', 'n', 'c', 'l', 'o', 's', 'i', 'n', 'g', 'm', 'a', 'r', 'k',
397 |  |  | /* finalpunctuation */ 'f', 'i', 'n', 'a', 'l', 'p', 'u', 'n', 'c', 't', 'u', 'a', 't', 'i', 'o', 'n',
398 |  |  | /* format */ 'f', 'o', 'r', 'm', 'a', 't',
399 |  |  | /* initialpunctuation */ 'i', 'n', 'i', 't', 'i', 'a', 'l', 'p', 'u', 'n', 'c', 't', 'u', 'a', 't', 'i', 'o', 'n',
400 |  |  | /* l* */ 'l', '*',
401 |  |  | /* letter */ 'l', 'e', 't', 't', 'e', 'r',
402 |  |  | /* letternumber */ 'l', 'e', 't', 't', 'e', 'r', 'n', 'u', 'm', 'b', 'e', 'r',
403 |  |  | /* lineseparator */ 'l', 'i', 'n', 'e', 's', 'e', 'p', 'a', 'r', 'a', 't', 'o', 'r',
404 |  |  | /* ll */ 'l', 'l',
405 |  |  | /* lm */ 'l', 'm',
406 |  |  | /* lo */ 'l', 'o',
407 |  |  | /* lowercaseletter */ 'l', 'o', 'w', 'e', 'r', 'c', 'a', 's', 'e', 'l', 'e', 't', 't', 'e', 'r',
408 |  |  | /* lt */ 'l', 't',
409 |  |  | /* lu */ 'l', 'u',
410 |  |  | /* m* */ 'm', '*',
411 |  |  | /* mark */ 'm', 'a', 'r', 'k',
412 |  |  | /* mathsymbol */ 'm', 'a', 't', 'h', 's', 'y', 'm', 'b', 'o', 'l',
413 |  |  | /* mc */ 'm', 'c',
414 |  |  | /* me */ 'm', 'e',
415 |  |  | /* mn */ 'm', 'n',
416 |  |  | /* modifierletter */ 'm', 'o', 'd', 'i', 'f', 'i', 'e', 'r', 'l', 'e', 't', 't', 'e', 'r',
417 |  |  | /* modifiersymbol */ 'm', 'o', 'd', 'i', 'f', 'i', 'e', 'r', 's', 'y', 'm', 'b', 'o', 'l',
418 |  |  | /* n* */ 'n', '*',
419 |  |  | /* nd */ 'n', 'd',
420 |  |  | /* nl */ 'n', 'l',
421 |  |  | /* no */ 'n', 'o',
422 |  |  | /* nonspacingmark */ 'n', 'o', 'n', 's', 'p', 'a', 'c', 'i', 'n', 'g', 'm', 'a', 'r', 'k',
423 |  |  | /* notassigned */ 'n', 'o', 't', 'a', 's', 's', 'i', 'g', 'n', 'e', 'd',
424 |  |  | /* number */ 'n', 'u', 'm', 'b', 'e', 'r',
425 |  |  | /* openpunctuation */ 'o', 'p', 'e', 'n', 'p', 'u', 'n', 'c', 't', 'u', 'a', 't', 'i', 'o', 'n',
426 |  |  | /* other */ 'o', 't', 'h', 'e', 'r',
427 |  |  | /* otherletter */ 'o', 't', 'h', 'e', 'r', 'l', 'e', 't', 't', 'e', 'r',
428 |  |  | /* othernumber */ 'o', 't', 'h', 'e', 'r', 'n', 'u', 'm', 'b', 'e', 'r',
429 |  |  | /* otherpunctuation */ 'o', 't', 'h', 'e', 'r', 'p', 'u', 'n', 'c', 't', 'u', 'a', 't', 'i', 'o', 'n',
430 |  |  | /* othersymbol */ 'o', 't', 'h', 'e', 'r', 's', 'y', 'm', 'b', 'o', 'l',
431 |  |  | /* p* */ 'p', '*',
432 |  |  | /* paragraphseparator */ 'p', 'a', 'r', 'a', 'g', 'r', 'a', 'p', 'h', 's', 'e', 'p', 'a', 'r', 'a', 't', 'o', 'r',
433 |  |  | /* pc */ 'p', 'c',
434 |  |  | /* pd */ 'p', 'd',
435 |  |  | /* pe */ 'p', 'e',
436 |  |  | /* pf */ 'p', 'f',
437 |  |  | /* pi */ 'p', 'i',
438 |  |  | /* po */ 'p', 'o',
439 |  |  | /* privateuse */ 'p', 'r', 'i', 'v', 'a', 't', 'e', 'u', 's', 'e',
440 |  |  | /* ps */ 'p', 's',
441 |  |  | /* punctuation */ 'p', 'u', 'n', 'c', 't', 'u', 'a', 't', 'i', 'o', 'n',
442 |  |  | /* s* */ 's', '*',
443 |  |  | /* sc */ 's', 'c',
444 |  |  | /* separator */ 's', 'e', 'p', 'a', 'r', 'a', 't', 'o', 'r',
445 |  |  | /* sk */ 's', 'k',
446 |  |  | /* sm */ 's', 'm',
447 |  |  | /* so */ 's', 'o',
448 |  |  | /* spaceseparator */ 's', 'p', 'a', 'c', 'e', 's', 'e', 'p', 'a', 'r', 'a', 't', 'o', 'r',
449 |  |  | /* spacingcombiningmark */ 's', 'p', 'a', 'c', 'i', 'n', 'g', 'c', 'o', 'm', 'b', 'i', 'n', 'i', 'n', 'g', 'm', 'a', 'r', 'k',
450 |  |  | /* surrogate */ 's', 'u', 'r', 'r', 'o', 'g', 'a', 't', 'e',
451 |  |  | /* symbol */ 's', 'y', 'm', 'b', 'o', 'l',
452 |  |  | /* titlecase */ 't', 'i', 't', 'l', 'e', 'c', 'a', 's', 'e',
453 |  |  | /* titlecaseletter */ 't', 'i', 't', 'l', 'e', 'c', 'a', 's', 'e', 'l', 'e', 't', 't', 'e', 'r',
454 |  |  | /* uppercaseletter */ 'u', 'p', 'p', 'e', 'r', 'c', 'a', 's', 'e', 'l', 'e', 't', 't', 'e', 'r',
455 |  |  | /* z* */ 'z', '*',
456 |  |  | /* zl */ 'z', 'l',
457 |  |  | /* zp */ 'z', 'p',
458 |  |  | /* zs */ 'z', 's',
459 |  |  | };
460 |  |  |
461 |  |  | static const BOOST_REGEX_DETAIL_NS::character_pointer_range< ::UChar32> range_data[] = {
462 |  |  | { prop_name_table + 0, prop_name_table + 3, }, // any
463 |  |  | { prop_name_table + 3, prop_name_table + 8, }, // ascii
464 |  |  | { prop_name_table + 8, prop_name_table + 16, }, // assigned
465 |  |  | { prop_name_table + 16, prop_name_table + 18, }, // c*
466 |  |  | { prop_name_table + 18, prop_name_table + 20, }, // cc
467 |  |  | { prop_name_table + 20, prop_name_table + 22, }, // cf
468 |  |  | { prop_name_table + 22, prop_name_table + 38, }, // closepunctuation
469 |  |  | { prop_name_table + 38, prop_name_table + 40, }, // cn
470 |  |  | { prop_name_table + 40, prop_name_table + 42, }, // co
471 |  |  | { prop_name_table + 42, prop_name_table + 62, }, // connectorpunctuation
472 |  |  | { prop_name_table + 62, prop_name_table + 69, }, // control
473 |  |  | { prop_name_table + 69, prop_name_table + 71, }, // cs
474 |  |  | { prop_name_table + 71, prop_name_table + 85, }, // currencysymbol
475 |  |  | { prop_name_table + 85, prop_name_table + 100, }, // dashpunctuation
476 |  |  | { prop_name_table + 100, prop_name_table + 118, }, // decimaldigitnumber
477 |  |  | { prop_name_table + 118, prop_name_table + 131, }, // enclosingmark
478 |  |  | { prop_name_table + 131, prop_name_table + 147, }, // finalpunctuation
479 |  |  | { prop_name_table + 147, prop_name_table + 153, }, // format
480 |  |  | { prop_name_table + 153, prop_name_table + 171, }, // initialpunctuation
481 |  |  | { prop_name_table + 171, prop_name_table + 173, }, // l*
482 |  |  | { prop_name_table + 173, prop_name_table + 179, }, // letter
483 |  |  | { prop_name_table + 179, prop_name_table + 191, }, // letternumber
484 |  |  | { prop_name_table + 191, prop_name_table + 204, }, // lineseparator
485 |  |  | { prop_name_table + 204, prop_name_table + 206, }, // ll
486 |  |  | { prop_name_table + 206, prop_name_table + 208, }, // lm
487 |  |  | { prop_name_table + 208, prop_name_table + 210, }, // lo
488 |  |  | { prop_name_table + 210, prop_name_table + 225, }, // lowercaseletter
489 |  |  | { prop_name_table + 225, prop_name_table + 227, }, // lt
490 |  |  | { prop_name_table + 227, prop_name_table + 229, }, // lu
491 |  |  | { prop_name_table + 229, prop_name_table + 231, }, // m*
492 |  |  | { prop_name_table + 231, prop_name_table + 235, }, // mark
493 |  |  | { prop_name_table + 235, prop_name_table + 245, }, // mathsymbol
494 |  |  | { prop_name_table + 245, prop_name_table + 247, }, // mc
495 |  |  | { prop_name_table + 247, prop_name_table + 249, }, // me
496 |  |  | { prop_name_table + 249, prop_name_table + 251, }, // mn
497 |  |  | { prop_name_table + 251, prop_name_table + 265, }, // modifierletter
498 |  |  | { prop_name_table + 265, prop_name_table + 279, }, // modifiersymbol
499 |  |  | { prop_name_table + 279, prop_name_table + 281, }, // n*
500 |  |  | { prop_name_table + 281, prop_name_table + 283, }, // nd
501 |  |  | { prop_name_table + 283, prop_name_table + 285, }, // nl
502 |  |  | { prop_name_table + 285, prop_name_table + 287, }, // no
503 |  |  | { prop_name_table + 287, prop_name_table + 301, }, // nonspacingmark
504 |  |  | { prop_name_table + 301, prop_name_table + 312, }, // notassigned
505 |  |  | { prop_name_table + 312, prop_name_table + 318, }, // number
506 |  |  | { prop_name_table + 318, prop_name_table + 333, }, // openpunctuation
507 |  |  | { prop_name_table + 333, prop_name_table + 338, }, // other
508 |  |  | { prop_name_table + 338, prop_name_table + 349, }, // otherletter
509 |  |  | { prop_name_table + 349, prop_name_table + 360, }, // othernumber
510 |  |  | { prop_name_table + 360, prop_name_table + 376, }, // otherpunctuation
511 |  |  | { prop_name_table + 376, prop_name_table + 387, }, // othersymbol
512 |  |  | { prop_name_table + 387, prop_name_table + 389, }, // p*
513 |  |  | { prop_name_table + 389, prop_name_table + 407, }, // paragraphseparator
514 |  |  | { prop_name_table + 407, prop_name_table + 409, }, // pc
515 |  |  | { prop_name_table + 409, prop_name_table + 411, }, // pd
516 |  |  | { prop_name_table + 411, prop_name_table + 413, }, // pe
517 |  |  | { prop_name_table + 413, prop_name_table + 415, }, // pf
518 |  |  | { prop_name_table + 415, prop_name_table + 417, }, // pi
519 |  |  | { prop_name_table + 417, prop_name_table + 419, }, // po
520 |  |  | { prop_name_table + 419, prop_name_table + 429, }, // privateuse
521 |  |  | { prop_name_table + 429, prop_name_table + 431, }, // ps
522 |  |  | { prop_name_table + 431, prop_name_table + 442, }, // punctuation
523 |  |  | { prop_name_table + 442, prop_name_table + 444, }, // s*
524 |  |  | { prop_name_table + 444, prop_name_table + 446, }, // sc
525 |  |  | { prop_name_table + 446, prop_name_table + 455, }, // separator
526 |  |  | { prop_name_table + 455, prop_name_table + 457, }, // sk
527 |  |  | { prop_name_table + 457, prop_name_table + 459, }, // sm
528 |  |  | { prop_name_table + 459, prop_name_table + 461, }, // so
529 |  |  | { prop_name_table + 461, prop_name_table + 475, }, // spaceseparator
530 |  |  | { prop_name_table + 475, prop_name_table + 495, }, // spacingcombiningmark
531 |  |  | { prop_name_table + 495, prop_name_table + 504, }, // surrogate
532 |  |  | { prop_name_table + 504, prop_name_table + 510, }, // symbol
533 |  |  | { prop_name_table + 510, prop_name_table + 519, }, // titlecase
534 |  |  | { prop_name_table + 519, prop_name_table + 534, }, // titlecaseletter
535 |  |  | { prop_name_table + 534, prop_name_table + 549, }, // uppercaseletter
536 |  |  | { prop_name_table + 549, prop_name_table + 551, }, // z*
537 |  |  | { prop_name_table + 551, prop_name_table + 553, }, // zl
538 |  |  | { prop_name_table + 553, prop_name_table + 555, }, // zp
539 |  |  | { prop_name_table + 555, prop_name_table + 557, }, // zs
540 |  |  | };
541 |  |  |
542 |  |  | static const icu_regex_traits::char_class_type icu_class_map[] = {
543 |  |  | mask_any, // any
544 |  |  | mask_ascii, // ascii
545 |  |  | (0x3FFFFFFFu) & ~(U_GC_CN_MASK), // assigned
546 |  |  | U_GC_C_MASK, // c*
547 |  |  | U_GC_CC_MASK, // cc
548 |  |  | U_GC_CF_MASK, // cf
549 |  |  | U_GC_PE_MASK, // closepunctuation
550 |  |  | U_GC_CN_MASK, // cn
551 |  |  | U_GC_CO_MASK, // co
552 |  |  | U_GC_PC_MASK, // connectorpunctuation
553 |  |  | U_GC_CC_MASK, // control
554 |  |  | U_GC_CS_MASK, // cs
555 |  |  | U_GC_SC_MASK, // currencysymbol
556 |  |  | U_GC_PD_MASK, // dashpunctuation
557 |  |  | U_GC_ND_MASK, // decimaldigitnumber
558 |  |  | U_GC_ME_MASK, // enclosingmark
559 |  |  | U_GC_PF_MASK, // finalpunctuation
560 |  |  | U_GC_CF_MASK, // format
561 |  |  | U_GC_PI_MASK, // initialpunctuation
562 |  |  | U_GC_L_MASK, // l*
563 |  |  | U_GC_L_MASK, // letter
564 |  |  | U_GC_NL_MASK, // letternumber
565 |  |  | U_GC_ZL_MASK, // lineseparator
566 |  |  | U_GC_LL_MASK, // ll
567 |  |  | U_GC_LM_MASK, // lm
568 |  |  | U_GC_LO_MASK, // lo
569 |  |  | U_GC_LL_MASK, // lowercaseletter
570 |  |  | U_GC_LT_MASK, // lt
571 |  |  | U_GC_LU_MASK, // lu
572 |  |  | U_GC_M_MASK, // m*
573 |  |  | U_GC_M_MASK, // mark
574 |  |  | U_GC_SM_MASK, // mathsymbol
575 |  |  | U_GC_MC_MASK, // mc
576 |  |  | U_GC_ME_MASK, // me
577 |  |  | U_GC_MN_MASK, // mn
578 |  |  | U_GC_LM_MASK, // modifierletter
579 |  |  | U_GC_SK_MASK, // modifiersymbol
580 |  |  | U_GC_N_MASK, // n*
581 |  |  | U_GC_ND_MASK, // nd
582 |  |  | U_GC_NL_MASK, // nl
583 |  |  | U_GC_NO_MASK, // no
584 |  |  | U_GC_MN_MASK, // nonspacingmark
585 |  |  | U_GC_CN_MASK, // notassigned
586 |  |  | U_GC_N_MASK, // number
587 |  |  | U_GC_PS_MASK, // openpunctuation
588 |  |  | U_GC_C_MASK, // other
589 |  |  | U_GC_LO_MASK, // otherletter
590 |  |  | U_GC_NO_MASK, // othernumber
591 |  |  | U_GC_PO_MASK, // otherpunctuation
592 |  |  | U_GC_SO_MASK, // othersymbol
593 |  |  | U_GC_P_MASK, // p*
594 |  |  | U_GC_ZP_MASK, // paragraphseparator
595 |  |  | U_GC_PC_MASK, // pc
596 |  |  | U_GC_PD_MASK, // pd
597 |  |  | U_GC_PE_MASK, // pe
598 |  |  | U_GC_PF_MASK, // pf
599 |  |  | U_GC_PI_MASK, // pi
600 |  |  | U_GC_PO_MASK, // po
601 |  |  | U_GC_CO_MASK, // privateuse
602 |  |  | U_GC_PS_MASK, // ps
603 |  |  | U_GC_P_MASK, // punctuation
604 |  |  | U_GC_S_MASK, // s*
605 |  |  | U_GC_SC_MASK, // sc
606 |  |  | U_GC_Z_MASK, // separator
607 |  |  | U_GC_SK_MASK, // sk
608 |  |  | U_GC_SM_MASK, // sm
609 |  |  | U_GC_SO_MASK, // so
610 |  |  | U_GC_ZS_MASK, // spaceseparator
611 |  |  | U_GC_MC_MASK, // spacingcombiningmark
612 |  |  | U_GC_CS_MASK, // surrogate
613 |  |  | U_GC_S_MASK, // symbol
614 |  |  | U_GC_LT_MASK, // titlecase
615 |  |  | U_GC_LT_MASK, // titlecaseletter
616 |  |  | U_GC_LU_MASK, // uppercaseletter
617 |  |  | U_GC_Z_MASK, // z*
618 |  |  | U_GC_ZL_MASK, // zl
619 |  |  | U_GC_ZP_MASK, // zp
620 |  |  | U_GC_ZS_MASK, // zs
621 |  |  | };
622 |  |  |
623 |  |  |
624 |  | 14669x | const BOOST_REGEX_DETAIL_NS::character_pointer_range< ::UChar32>* ranges_begin = range_data;
625 |  | 14669x | const BOOST_REGEX_DETAIL_NS::character_pointer_range< ::UChar32>* ranges_end = range_data + (sizeof(range_data) / sizeof(range_data[0]));
626 |  |  |
627 |  | 14669x | BOOST_REGEX_DETAIL_NS::character_pointer_range< ::UChar32> t = { p1, p2, };
628 |  | 14669x | const BOOST_REGEX_DETAIL_NS::character_pointer_range< ::UChar32>* p = std::lower_bound(ranges_begin, ranges_end, t);
629 |  | 14669x | if ((p != ranges_end) && (t == *p))
630 |  | 4643x | return icu_class_map[p - ranges_begin];
631 |  | 10026x | return 0;
632 |  |  | }
633 |  |  | std::shared_ptr< ::boost::BOOST_REGEX_DETAIL_NS::icu_regex_traits_implementation> m_pimpl;
634 |  |  | };
635 |  |  |
636 |  |  | } // namespace boost
637 |  |  |
638 |  |  | namespace boost{
639 |  |  |
640 |  |  | // types:
641 |  |  | typedef basic_regex< ::UChar32, icu_regex_traits> u32regex;
642 |  |  | typedef match_results<const ::UChar32*> u32match;
643 |  |  | typedef match_results<const ::UChar*> u16match;
644 |  |  |
645 |  |  | //
646 |  |  | // Construction of 32-bit regex types from UTF-8 and UTF-16 primitives:
647 |  |  | //
648 |  |  | namespace BOOST_REGEX_DETAIL_NS{
649 |  |  |
650 |  |  | template <class InputIterator>
651 |  | 59677x | inline u32regex do_make_u32regex(InputIterator i,
652 |  |  | InputIterator j,
653 |  |  | boost::regex_constants::syntax_option_type opt,
654 |  |  | const std::integral_constant<int, 1>*)
655 |  |  | {
656 |  |  | typedef boost::u8_to_u32_iterator<InputIterator, UChar32> conv_type;
657 |  | 59677x | return u32regex(conv_type(i, i, j), conv_type(j, i, j), opt);
658 |  |  | }
659 |  |  |
660 |  |  | template <class InputIterator>
661 |  | 59666x | inline u32regex do_make_u32regex(InputIterator i,
662 |  |  | InputIterator j,
663 |  |  | boost::regex_constants::syntax_option_type opt,
664 |  |  | const std::integral_constant<int, 2>*)
665 |  |  | {
666 |  |  | typedef boost::u16_to_u32_iterator<InputIterator, UChar32> conv_type;
667 |  | 59666x | return u32regex(conv_type(i, i, j), conv_type(j, i, j), opt);
668 |  |  | }
669 |  |  |
670 |  |  | template <class InputIterator>
671 |  | 1x | inline u32regex do_make_u32regex(InputIterator i,
672 |  |  | InputIterator j,
673 |  |  | boost::regex_constants::syntax_option_type opt,
674 |  |  | const std::integral_constant<int, 4>*)
675 |  |  | {
676 |  | 1x | return u32regex(i, j, opt);
677 |  |  | }
678 |  |  | }
679 |  |  |
680 |  |  | // BOOST_REGEX_UCHAR_IS_WCHAR_T
681 |  |  | //
682 |  |  | // Source inspection of unicode/umachine.h in ICU version 59 indicates that:
683 |  |  | //
684 |  |  | // On version 59, UChar is always char16_t in C++ mode (and uint16_t in C mode)
685 |  |  | //
686 |  |  | // On earlier versions, the logic is
687 |  |  | //
688 |  |  | // #if U_SIZEOF_WCHAR_T==2
689 |  |  | // typedef wchar_t OldUChar;
690 |  |  | // #elif defined(__CHAR16_TYPE__)
691 |  |  | // typedef __CHAR16_TYPE__ OldUChar;
692 |  |  | // #else
693 |  |  | // typedef uint16_t OldUChar;
694 |  |  | // #endif
695 |  |  | //
696 |  |  | // That is, UChar is wchar_t only on versions below 59, when U_SIZEOF_WCHAR_T==2
697 |  |  | //
698 |  |  | // Hence,
699 |  |  |
700 |  |  | #define BOOST_REGEX_UCHAR_IS_WCHAR_T (U_ICU_VERSION_MAJOR_NUM < 59 && U_SIZEOF_WCHAR_T == 2)
701 |  |  |
702 |  |  | #if BOOST_REGEX_UCHAR_IS_WCHAR_T
703 |  |  | static_assert((std::is_same<UChar, wchar_t>::value), "Configuration logic has failed!");
704 |  |  | #else
705 |  |  | static_assert(!(std::is_same<UChar, wchar_t>::value), "Configuration logic has failed!");
706 |  |  | #endif
707 |  |  |
708 |  |  | //
709 |  |  | // Construction from an iterator pair:
710 |  |  | //
711 |  |  | template <class InputIterator>
712 |  | 63336x | inline u32regex make_u32regex(InputIterator i,
713 |  |  | InputIterator j,
714 |  |  | boost::regex_constants::syntax_option_type opt)
715 |  |  | {
716 |  | 63336x | return BOOST_REGEX_DETAIL_NS::do_make_u32regex(i, j, opt, static_cast<std::integral_constant<int, sizeof(*i)> const*>(0));
717 |  |  | }
718 |  |  | //
719 |  |  | // construction from UTF-8 nul-terminated strings:
720 |  |  | //
721 |  | 5x | inline u32regex make_u32regex(const char* p, boost::regex_constants::syntax_option_type opt = boost::regex_constants::perl)
722 |  |  | {
723 |  | 5x | return BOOST_REGEX_DETAIL_NS::do_make_u32regex(p, p + std::strlen(p), opt, static_cast<std::integral_constant<int, 1> const*>(0));
724 |  |  | }
725 |  | 27996x | inline u32regex make_u32regex(const unsigned char* p, boost::regex_constants::syntax_option_type opt = boost::regex_constants::perl)
726 |  |  | {
727 |  | 27996x | return BOOST_REGEX_DETAIL_NS::do_make_u32regex(p, p + std::strlen(reinterpret_cast<const char*>(p)), opt, static_cast<std::integral_constant<int, 1> const*>(0));
728 |  |  | }
729 |  |  | //
730 |  |  | // construction from UTF-16 nul-terminated strings:
731 |  |  | //
732 |  |  | #ifndef BOOST_NO_WREGEX
733 |  | 1x | inline u32regex make_u32regex(const wchar_t* p, boost::regex_constants::syntax_option_type opt = boost::regex_constants::perl)
734 |  |  | {
735 |  | 1x | return BOOST_REGEX_DETAIL_NS::do_make_u32regex(p, p + std::wcslen(p), opt, static_cast<std::integral_constant<int, sizeof(wchar_t)> const*>(0));
736 |  |  | }
737 |  |  | #endif
738 |  |  | #if !BOOST_REGEX_UCHAR_IS_WCHAR_T
739 |  | 27996x | inline u32regex make_u32regex(const UChar* p, boost::regex_constants::syntax_option_type opt = boost::regex_constants::perl)
740 |  |  | {
741 |  | 27996x | return BOOST_REGEX_DETAIL_NS::do_make_u32regex(p, p + u_strlen(p), opt, static_cast<std::integral_constant<int, 2> const*>(0));
742 |  |  | }
743 |  |  | #endif
744 |  |  | //
745 |  |  | // construction from basic_string class-template:
746 |  |  | //
747 |  |  | template<class C, class T, class A>
748 |  | 8x | inline u32regex make_u32regex(const std::basic_string<C, T, A>& s, boost::regex_constants::syntax_option_type opt = boost::regex_constants::perl)
749 |  |  | {
750 |  | 8x | return BOOST_REGEX_DETAIL_NS::do_make_u32regex(s.begin(), s.end(), opt, static_cast<std::integral_constant<int, sizeof(C)> const*>(0));
751 |  |  | }
752 |  |  | //
753 |  |  | // Construction from ICU string type:
754 |  |  | //
755 |  | 2x | inline u32regex make_u32regex(const U_NAMESPACE_QUALIFIER UnicodeString& s, boost::regex_constants::syntax_option_type opt = boost::regex_constants::perl)
756 |  |  | {
757 |  | 2x | return BOOST_REGEX_DETAIL_NS::do_make_u32regex(s.getBuffer(), s.getBuffer() + s.length(), opt, static_cast<std::integral_constant<int, 2> const*>(0));
758 |  |  | }
759 |  |  |
760 |  |  | //
761 |  |  | // regex_match overloads that widen the character type as appropriate:
762 |  |  | //
763 |  |  | namespace BOOST_REGEX_DETAIL_NS{
764 |  |  | template<class MR1, class MR2, class NSubs>
765 |  | 78808x | void copy_results(MR1& out, MR2 const& in, NSubs named_subs)
766 |  |  | {
767 |  |  | // copy results from an adapted MR2 match_results:
768 |  | 78808x | out.set_size(in.size(), in.prefix().first.base(), in.suffix().second.base());
769 |  | 78808x | out.set_base(in.base().base());
770 |  | 78808x | out.set_named_subs(named_subs);
771 |  | 213181x | for(int i = 0; i < (int)in.size(); ++i)
772 |  |  | {
773 |  | 134373x | if(in[i].matched || !i)
774 |  |  | {
775 |  | 113202x | out.set_first(in[i].first.base(), i);
776 |  | 113202x | out.set_second(in[i].second.base(), i, in[i].matched);
777 |  |  | }
778 |  |  | }
779 |  |  | #ifdef BOOST_REGEX_MATCH_EXTRA
780 |  |  | // Copy full capture info as well:
781 |  | 35x | for(int i = 0; i < (int)in.size(); ++i)
782 |  |  | {
783 |  | 27x | if(in[i].captures().size())
784 |  |  | {
785 |  | 24x | out[i].get_captures().assign(in[i].captures().size(), typename MR1::value_type());
786 |  | 111x | for(int j = 0; j < (int)out[i].captures().size(); ++j)
787 |  |  | {
788 |  | 87x | out[i].get_captures()[j].first = in[i].captures()[j].first.base();
789 |  | 87x | out[i].get_captures()[j].second = in[i].captures()[j].second.base();
790 |  | 87x | out[i].get_captures()[j].matched = in[i].captures()[j].matched;
791 |  |  | }
792 |  |  | }
793 |  |  | }
794 |  |  | #endif
795 |  | 78808x | }
796 |  |  |
797 |  |  | template <class BidiIterator, class Allocator>
798 |  | ✗ | inline bool do_regex_match(BidiIterator first, BidiIterator last,
799 |  |  | match_results<BidiIterator, Allocator>& m,
800 |  |  | const u32regex& e,
801 |  |  | match_flag_type flags,
802 |  |  | std::integral_constant<int, 4> const*)
803 |  |  | {
804 |  | ✗ | return ::boost::regex_match(first, last, m, e, flags);
805 |  |  | }
806 |  |  | template <class BidiIterator, class Allocator>
807 |  | 2x | bool do_regex_match(BidiIterator first, BidiIterator last,
808 |  |  | match_results<BidiIterator, Allocator>& m,
809 |  |  | const u32regex& e,
810 |  |  | match_flag_type flags,
811 |  |  | std::integral_constant<int, 2> const*)
812 |  |  | {
813 |  |  | typedef u16_to_u32_iterator<BidiIterator, UChar32> conv_type;
814 |  |  | typedef match_results<conv_type> match_type;
815 |  |  | //typedef typename match_type::allocator_type alloc_type;
816 |  | 2x | match_type what;
817 |  | 2x | bool result = ::boost::regex_match(conv_type(first, first, last), conv_type(last, first, last), what, e, flags);
818 |  |  | // copy results across to m:
819 |  | 2x | if(result) copy_results(m, what, e.get_named_subs());
820 |  | 2x | return result;
821 |  | 2x | }
822 |  |  | template <class BidiIterator, class Allocator>
823 |  | 10x | bool do_regex_match(BidiIterator first, BidiIterator last,
824 |  |  | match_results<BidiIterator, Allocator>& m,
825 |  |  | const u32regex& e,
826 |  |  | match_flag_type flags,
827 |  |  | std::integral_constant<int, 1> const*)
828 |  |  | {
829 |  |  | typedef u8_to_u32_iterator<BidiIterator, UChar32> conv_type;
830 |  |  | typedef match_results<conv_type> match_type;
831 |  |  | //typedef typename match_type::allocator_type alloc_type;
832 |  | 10x | match_type what;
833 |  | 10x | bool result = ::boost::regex_match(conv_type(first, first, last), conv_type(last, first, last), what, e, flags);
834 |  |  | // copy results across to m:
835 |  | 10x | if(result) copy_results(m, what, e.get_named_subs());
836 |  | 10x | return result;
837 |  | 10x | }
838 |  |  | } // namespace BOOST_REGEX_DETAIL_NS
839 |  |  |
840 |  |  | BOOST_REGEX_MODULE_EXPORT template <class BidiIterator, class Allocator>
841 |  | ✗ | inline bool u32regex_match(BidiIterator first, BidiIterator last,
842 |  |  | match_results<BidiIterator, Allocator>& m,
843 |  |  | const u32regex& e,
844 |  |  | match_flag_type flags = match_default)
845 |  |  | {
846 |  | ✗ | return BOOST_REGEX_DETAIL_NS::do_regex_match(first, last, m, e, flags, static_cast<std::integral_constant<int, sizeof(*first)> const*>(0));
847 |  |  | }
848 |  | ✗ | BOOST_REGEX_MODULE_EXPORT inline bool u32regex_match(const UChar* p,
849 |  |  | match_results<const UChar*>& m,
850 |  |  | const u32regex& e,
851 |  |  | match_flag_type flags = match_default)
852 |  |  | {
853 |  | ✗ | return BOOST_REGEX_DETAIL_NS::do_regex_match(p, p+u_strlen(p), m, e, flags, static_cast<std::integral_constant<int, 2> const*>(0));
854 |  |  | }
855 |  |  | #if !BOOST_REGEX_UCHAR_IS_WCHAR_T && !defined(BOOST_NO_WREGEX)
856 |  | ✗ | BOOST_REGEX_MODULE_EXPORT inline bool u32regex_match(const wchar_t* p,
857 |  |  | match_results<const wchar_t*>& m,
858 |  |  | const u32regex& e,
859 |  |  | match_flag_type flags = match_default)
860 |  |  | {
861 |  | ✗ | return BOOST_REGEX_DETAIL_NS::do_regex_match(p, p+std::wcslen(p), m, e, flags, static_cast<std::integral_constant<int, sizeof(wchar_t)> const*>(0));
862 |  |  | }
863 |  |  | #endif
864 |  | ✗ | BOOST_REGEX_MODULE_EXPORT inline bool u32regex_match(const char* p,
865 |  |  | match_results<const char*>& m,
866 |  |  | const u32regex& e,
867 |  |  | match_flag_type flags = match_default)
868 |  |  | {
869 |  | ✗ | return BOOST_REGEX_DETAIL_NS::do_regex_match(p, p+std::strlen(p), m, e, flags, static_cast<std::integral_constant<int, 1> const*>(0));
870 |  |  | }
871 |  | ✗ | BOOST_REGEX_MODULE_EXPORT inline bool u32regex_match(const unsigned char* p,
872 |  |  | match_results<const unsigned char*>& m,
873 |  |  | const u32regex& e,
874 |  |  | match_flag_type flags = match_default)
875 |  |  | {
876 |  | ✗ | return BOOST_REGEX_DETAIL_NS::do_regex_match(p, p+std::strlen((const char*)p), m, e, flags, static_cast<std::integral_constant<int, 1> const*>(0));
877 |  |  | }
878 |  | 10x | BOOST_REGEX_MODULE_EXPORT inline bool u32regex_match(const std::string& s,
879 |  |  | match_results<std::string::const_iterator>& m,
880 |  |  | const u32regex& e,
881 |  |  | match_flag_type flags = match_default)
882 |  |  | {
883 |  | 10x | return BOOST_REGEX_DETAIL_NS::do_regex_match(s.begin(), s.end(), m, e, flags, static_cast<std::integral_constant<int, 1> const*>(0));
884 |  |  | }
885 |  |  | #ifndef BOOST_NO_STD_WSTRING
886 |  | ✗ | BOOST_REGEX_MODULE_EXPORT inline bool u32regex_match(const std::wstring& s,
887 |  |  | match_results<std::wstring::const_iterator>& m,
888 |  |  | const u32regex& e,
889 |  |  | match_flag_type flags = match_default)
890 |  |  | {
891 |  | ✗ | return BOOST_REGEX_DETAIL_NS::do_regex_match(s.begin(), s.end(), m, e, flags, static_cast<std::integral_constant<int, sizeof(wchar_t)> const*>(0));
892 |  |  | }
893 |  |  | #endif
894 |  | ✗ | BOOST_REGEX_MODULE_EXPORT inline bool u32regex_match(const U_NAMESPACE_QUALIFIER UnicodeString& s,
895 |  |  | match_results<const UChar*>& m,
896 |  |  | const u32regex& e,
897 |  |  | match_flag_type flags = match_default)
898 |  |  | {
899 |  | ✗ | return BOOST_REGEX_DETAIL_NS::do_regex_match(s.getBuffer(), s.getBuffer() + s.length(), m, e, flags, static_cast<std::integral_constant<int, 2> const*>(0));
900 |  |  | }
901 |  |  | //
902 |  |  | // regex_match overloads that do not return what matched:
903 |  |  | //
904 |  |  | BOOST_REGEX_MODULE_EXPORT template <class BidiIterator>
905 |  |  | inline bool u32regex_match(BidiIterator first, BidiIterator last,
906 |  |  | const u32regex& e,
907 |  |  | match_flag_type flags = match_default)
908 |  |  | {
909 |  |  | match_results<BidiIterator> m;
910 |  |  | return BOOST_REGEX_DETAIL_NS::do_regex_match(first, last, m, e, flags, static_cast<std::integral_constant<int, sizeof(*first)> const*>(0));
911 |  |  | }
912 |  |  | BOOST_REGEX_MODULE_EXPORT inline bool u32regex_match(const UChar* p,
913 |  |  | const u32regex& e,
914 |  |  | match_flag_type flags = match_default)
915 |  |  | {
916 |  |  | match_results<const UChar*> m;
917 |  |  | return BOOST_REGEX_DETAIL_NS::do_regex_match(p, p+u_strlen(p), m, e, flags, static_cast<std::integral_constant<int, 2> const*>(0));
918 |  |  | }
919 |  |  | #if !BOOST_REGEX_UCHAR_IS_WCHAR_T && !defined(BOOST_NO_WREGEX)
920 |  |  | BOOST_REGEX_MODULE_EXPORT inline bool u32regex_match(const wchar_t* p,
921 |  |  | const u32regex& e,
922 |  |  | match_flag_type flags = match_default)
923 |  |  | {
924 |  |  | match_results<const wchar_t*> m;
925 |  |  | return BOOST_REGEX_DETAIL_NS::do_regex_match(p, p+std::wcslen(p), m, e, flags, static_cast<std::integral_constant<int, sizeof(wchar_t)> const*>(0));
926 |  |  | }
927 |  |  | #endif
928 |  |  | BOOST_REGEX_MODULE_EXPORT inline bool u32regex_match(const char* p,
929 |  |  | const u32regex& e,
930 |  |  | match_flag_type flags = match_default)
931 |  |  | {
932 |  |  | match_results<const char*> m;
933 |  |  | return BOOST_REGEX_DETAIL_NS::do_regex_match(p, p+std::strlen(p), m, e, flags, static_cast<std::integral_constant<int, 1> const*>(0));
934 |  |  | }
935 |  |  | BOOST_REGEX_MODULE_EXPORT inline bool u32regex_match(const unsigned char* p,
936 |  |  | const u32regex& e,
937 |  |  | match_flag_type flags = match_default)
938 |  |  | {
939 |  |  | match_results<const unsigned char*> m;
940 |  |  | return BOOST_REGEX_DETAIL_NS::do_regex_match(p, p+std::strlen((const char*)p), m, e, flags, static_cast<std::integral_constant<int, 1> const*>(0));
941 |  |  | }
942 |  |  | BOOST_REGEX_MODULE_EXPORT inline bool u32regex_match(const std::string& s,
943 |  |  | const u32regex& e,
944 |  |  | match_flag_type flags = match_default)
945 |  |  | {
946 |  |  | match_results<std::string::const_iterator> m;
947 |  |  | return BOOST_REGEX_DETAIL_NS::do_regex_match(s.begin(), s.end(), m, e, flags, static_cast<std::integral_constant<int, 1> const*>(0));
948 |  |  | }
949 |  |  | #ifndef BOOST_NO_STD_WSTRING
950 |  |  | BOOST_REGEX_MODULE_EXPORT inline bool u32regex_match(const std::wstring& s,
951 |  |  | const u32regex& e,
952 |  |  | match_flag_type flags = match_default)
953 |  |  | {
954 |  |  | match_results<std::wstring::const_iterator> m;
955 |  |  | return BOOST_REGEX_DETAIL_NS::do_regex_match(s.begin(), s.end(), m, e, flags, static_cast<std::integral_constant<int, sizeof(wchar_t)> const*>(0));
956 |  |  | }
957 |  |  | #endif
958 |  | 2x | BOOST_REGEX_MODULE_EXPORT inline bool u32regex_match(const U_NAMESPACE_QUALIFIER UnicodeString& s,
959 |  |  | const u32regex& e,
960 |  |  | match_flag_type flags = match_default)
961 |  |  | {
962 |  | 2x | match_results<const UChar*> m;
963 |  | 4x | return BOOST_REGEX_DETAIL_NS::do_regex_match(s.getBuffer(), s.getBuffer() + s.length(), m, e, flags, static_cast<std::integral_constant<int, 2> const*>(0));
964 |  | 2x | }
965 |  |  |
966 |  |  | //
967 |  |  | // regex_search overloads that widen the character type as appropriate:
968 |  |  | //
969 |  |  | namespace BOOST_REGEX_DETAIL_NS{
970 |  |  | template <class BidiIterator, class Allocator>
971 |  | 94624x | inline bool do_regex_search(BidiIterator first, BidiIterator last,
972 |  |  | match_results<BidiIterator, Allocator>& m,
973 |  |  | const u32regex& e,
974 |  |  | match_flag_type flags,
975 |  |  | BidiIterator base,
976 |  |  | std::integral_constant<int, 4> const*)
977 |  |  | {
978 |  | 94624x | return ::boost::regex_search(first, last, m, e, flags, base);
979 |  |  | }
980 |  |  | template <class BidiIterator, class Allocator>
981 |  | 48805x | bool do_regex_search(BidiIterator first, BidiIterator last,
982 |  |  | match_results<BidiIterator, Allocator>& m,
983 |  |  | const u32regex& e,
984 |  |  | match_flag_type flags,
985 |  |  | BidiIterator base,
986 |  |  | std::integral_constant<int, 2> const*)
987 |  |  | {
988 |  |  | typedef u16_to_u32_iterator<BidiIterator, UChar32> conv_type;
989 |  |  | typedef match_results<conv_type> match_type;
990 |  |  | //typedef typename match_type::allocator_type alloc_type;
991 |  | 48805x | match_type what;
992 |  | 48805x | bool result = ::boost::regex_search(conv_type(first, first, last), conv_type(last, first, last), what, e, flags, conv_type(base));
993 |  |  | // copy results across to m:
994 |  | 48805x | if(result) copy_results(m, what, e.get_named_subs());
995 |  | 52872x | return result;
996 |  | 48805x | }
997 |  |  | template <class BidiIterator, class Allocator>
998 |  | 48810x | bool do_regex_search(BidiIterator first, BidiIterator last,
999 |  |  | match_results<BidiIterator, Allocator>& m,
1000 |  |  | const u32regex& e,
1001 |  |  | match_flag_type flags,
1002 |  |  | BidiIterator base,
1003 |  |  | std::integral_constant<int, 1> const*)
1004 |  |  | {
1005 |  |  | typedef u8_to_u32_iterator<BidiIterator, UChar32> conv_type;
1006 |  |  | typedef match_results<conv_type> match_type;
1007 |  |  | //typedef typename match_type::allocator_type alloc_type;
1008 |  | 48810x | match_type what;
1009 |  | 48810x | bool result = ::boost::regex_search(conv_type(first, first, last), conv_type(last, first, last), what, e, flags, conv_type(base));
1010 |  |  | // copy results across to m:
1011 |  | 48810x | if(result) copy_results(m, what, e.get_named_subs());
1012 |  | 52877x | return result;
1013 |  | 48810x | }
1014 |  |  | }
1015 |  |  |
1016 |  |  | BOOST_REGEX_MODULE_EXPORT template <class BidiIterator, class Allocator>
1017 |  | 73576x | inline bool u32regex_search(BidiIterator first, BidiIterator last,
1018 |  |  | match_results<BidiIterator, Allocator>& m,
1019 |  |  | const u32regex& e,
1020 |  |  | match_flag_type flags = match_default)
1021 |  |  | {
1022 |  | 73576x | return BOOST_REGEX_DETAIL_NS::do_regex_search(first, last, m, e, flags, first, static_cast<std::integral_constant<int, sizeof(*first)> const*>(0));
1023 |  |  | }
1024 |  |  | BOOST_REGEX_MODULE_EXPORT template <class BidiIterator, class Allocator>
1025 |  | 70062x | inline bool u32regex_search(BidiIterator first, BidiIterator last,
1026 |  |  | match_results<BidiIterator, Allocator>& m,
1027 |  |  | const u32regex& e,
1028 |  |  | match_flag_type flags,
1029 |  |  | BidiIterator base)
1030 |  |  | {
1031 |  | 70062x | return BOOST_REGEX_DETAIL_NS::do_regex_search(first, last, m, e, flags, base, static_cast<std::integral_constant<int, sizeof(*first)> const*>(0));
1032 |  |  | }
1033 |  | 24300x | BOOST_REGEX_MODULE_EXPORT inline bool u32regex_search(const UChar* p,
1034 |  |  | match_results<const UChar*>& m,
1035 |  |  | const u32regex& e,
1036 |  |  | match_flag_type flags = match_default)
1037 |  |  | {
1038 |  | 24300x | return BOOST_REGEX_DETAIL_NS::do_regex_search(p, p+u_strlen(p), m, e, flags, p, static_cast<std::integral_constant<int, 2> const*>(0));
1039 |  |  | }
1040 |  |  | #if !BOOST_REGEX_UCHAR_IS_WCHAR_T && !defined(BOOST_NO_WREGEX)
1041 |  | ✗ | BOOST_REGEX_MODULE_EXPORT inline bool u32regex_search(const wchar_t* p,
1042 |  |  | match_results<const wchar_t*>& m,
1043 |  |  | const u32regex& e,
1044 |  |  | match_flag_type flags = match_default)
1045 |  |  | {
1046 |  | ✗ | return BOOST_REGEX_DETAIL_NS::do_regex_search(p, p+std::wcslen(p), m, e, flags, p, static_cast<std::integral_constant<int, sizeof(wchar_t)> const*>(0));
1047 |  |  | }
1048 |  |  | #endif
1049 |  | ✗ | BOOST_REGEX_MODULE_EXPORT inline bool u32regex_search(const char* p,
1050 |  |  | match_results<const char*>& m,
1051 |  |  | const u32regex& e,
1052 |  |  | match_flag_type flags = match_default)
1053 |  |  | {
1054 |  | ✗ | return BOOST_REGEX_DETAIL_NS::do_regex_search(p, p+std::strlen(p), m, e, flags, p, static_cast<std::integral_constant<int, 1> const*>(0));
1055 |  |  | }
1056 |  | 24300x | BOOST_REGEX_MODULE_EXPORT inline bool u32regex_search(const unsigned char* p,
1057 |  |  | match_results<const unsigned char*>& m,
1058 |  |  | const u32regex& e,
1059 |  |  | match_flag_type flags = match_default)
1060 |  |  | {
1061 |  | 24300x | return BOOST_REGEX_DETAIL_NS::do_regex_search(p, p+std::strlen((const char*)p), m, e, flags, p, static_cast<std::integral_constant<int, 1> const*>(0));
1062 |  |  | }
1063 |  | ✗ | BOOST_REGEX_MODULE_EXPORT inline bool u32regex_search(const std::string& s,
1064 |  |  | match_results<std::string::const_iterator>& m,
1065 |  |  | const u32regex& e,
1066 |  |  | match_flag_type flags = match_default)
1067 |  |  | {
1068 |  | ✗ | return BOOST_REGEX_DETAIL_NS::do_regex_search(s.begin(), s.end(), m, e, flags, s.begin(), static_cast<std::integral_constant<int, 1> const*>(0));
1069 |  |  | }
1070 |  |  | #ifndef BOOST_NO_STD_WSTRING
1071 |  | ✗ | BOOST_REGEX_MODULE_EXPORT inline bool u32regex_search(const std::wstring& s,
1072 |  |  | match_results<std::wstring::const_iterator>& m,
1073 |  |  | const u32regex& e,
1074 |  |  | match_flag_type flags = match_default)
1075 |  |  | {
1076 |  | ✗ | return BOOST_REGEX_DETAIL_NS::do_regex_search(s.begin(), s.end(), m, e, flags, s.begin(), static_cast<std::integral_constant<int, sizeof(wchar_t)> const*>(0));
1077 |  |  | }
1078 |  |  | #endif
1079 |  | 1x | BOOST_REGEX_MODULE_EXPORT inline bool u32regex_search(const U_NAMESPACE_QUALIFIER UnicodeString& s,
1080 |  |  | match_results<const UChar*>& m,
1081 |  |  | const u32regex& e,
1082 |  |  | match_flag_type flags = match_default)
1083 |  |  | {
1084 |  | 1x | return BOOST_REGEX_DETAIL_NS::do_regex_search(s.getBuffer(), s.getBuffer() + s.length(), m, e, flags, s.getBuffer(), static_cast<std::integral_constant<int, 2> const*>(0));
1085 |  |  | }
1086 |  |  | BOOST_REGEX_MODULE_EXPORT template <class BidiIterator>
1087 |  |  | inline bool u32regex_search(BidiIterator first, BidiIterator last,
1088 |  |  | const u32regex& e,
1089 |  |  | match_flag_type flags = match_default)
1090 |  |  | {
1091 |  |  | match_results<BidiIterator> m;
1092 |  |  | return BOOST_REGEX_DETAIL_NS::do_regex_search(first, last, m, e, flags, first, static_cast<std::integral_constant<int, sizeof(*first)> const*>(0));
1093 |  |  | }
1094 |  |  | BOOST_REGEX_MODULE_EXPORT inline bool u32regex_search(const UChar* p,
1095 |  |  | const u32regex& e,
1096 |  |  | match_flag_type flags = match_default)
1097 |  |  | {
1098 |  |  | match_results<const UChar*> m;
1099 |  |  | return BOOST_REGEX_DETAIL_NS::do_regex_search(p, p+u_strlen(p), m, e, flags, p, static_cast<std::integral_constant<int, 2> const*>(0));
1100 |  |  | }
1101 |  |  | #if !BOOST_REGEX_UCHAR_IS_WCHAR_T && !defined(BOOST_NO_WREGEX)
1102 |  |  | BOOST_REGEX_MODULE_EXPORT inline bool u32regex_search(const wchar_t* p,
1103 |  |  | const u32regex& e,
1104 |  |  | match_flag_type flags = match_default)
1105 |  |  | {
1106 |  |  | match_results<const wchar_t*> m;
1107 |  |  | return BOOST_REGEX_DETAIL_NS::do_regex_search(p, p+std::wcslen(p), m, e, flags, p, static_cast<std::integral_constant<int, sizeof(wchar_t)> const*>(0));
1108 |  |  | }
1109 |  |  | #endif
1110 |  |  | BOOST_REGEX_MODULE_EXPORT inline bool u32regex_search(const char* p,
1111 |  |  | const u32regex& e,
1112 |  |  | match_flag_type flags = match_default)
1113 |  |  | {
1114 |  |  | match_results<const char*> m;
1115 |  |  | return BOOST_REGEX_DETAIL_NS::do_regex_search(p, p+std::strlen(p), m, e, flags, p, static_cast<std::integral_constant<int, 1> const*>(0));
1116 |  |  | }
1117 |  |  | BOOST_REGEX_MODULE_EXPORT inline bool u32regex_search(const unsigned char* p,
1118 |  |  | const u32regex& e,
1119 |  |  | match_flag_type flags = match_default)
1120 |  |  | {
1121 |  |  | match_results<const unsigned char*> m;
1122 |  |  | return BOOST_REGEX_DETAIL_NS::do_regex_search(p, p+std::strlen((const char*)p), m, e, flags, p, static_cast<std::integral_constant<int, 1> const*>(0));
1123 |  |  | }
1124 |  |  | BOOST_REGEX_MODULE_EXPORT inline bool u32regex_search(const std::string& s,
1125 |  |  | const u32regex& e,
1126 |  |  | match_flag_type flags = match_default)
1127 |  |  | {
1128 |  |  | match_results<std::string::const_iterator> m;
1129 |  |  | return BOOST_REGEX_DETAIL_NS::do_regex_search(s.begin(), s.end(), m, e, flags, s.begin(), static_cast<std::integral_constant<int, 1> const*>(0));
1130 |  |  | }
1131 |  |  | #ifndef BOOST_NO_STD_WSTRING
1132 |  |  | BOOST_REGEX_MODULE_EXPORT inline bool u32regex_search(const std::wstring& s,
1133 |  |  | const u32regex& e,
1134 |  |  | match_flag_type flags = match_default)
1135 |  |  | {
1136 |  |  | match_results<std::wstring::const_iterator> m;
1137 |  |  | return BOOST_REGEX_DETAIL_NS::do_regex_search(s.begin(), s.end(), m, e, flags, s.begin(), static_cast<std::integral_constant<int, sizeof(wchar_t)> const*>(0));
1138 |  |  | }
1139 |  |  | #endif
1140 |  |  | BOOST_REGEX_MODULE_EXPORT inline bool u32regex_search(const U_NAMESPACE_QUALIFIER UnicodeString& s,
1141 |  |  | const u32regex& e,
1142 |  |  | match_flag_type flags = match_default)
1143 |  |  | {
1144 |  |  | match_results<const UChar*> m;
1145 |  |  | return BOOST_REGEX_DETAIL_NS::do_regex_search(s.getBuffer(), s.getBuffer() + s.length(), m, e, flags, s.getBuffer(), static_cast<std::integral_constant<int, 2> const*>(0));
1146 |  |  | }
1147 |  |  |
1148 |  |  | //
1149 |  |  | // overloads for regex_replace with utf-8 and utf-16 data types:
1150 |  |  | //
1151 |  |  | namespace BOOST_REGEX_DETAIL_NS{
1152 |  |  | template <class I>
1153 |  |  | inline std::pair< boost::u8_to_u32_iterator<I>, boost::u8_to_u32_iterator<I> >
1154 |  | 3672x | make_utf32_seq(I i, I j, std::integral_constant<int, 1> const*)
1155 |  |  | {
1156 |  | 3672x | return std::pair< boost::u8_to_u32_iterator<I>, boost::u8_to_u32_iterator<I> >(boost::u8_to_u32_iterator<I>(i, i, j), boost::u8_to_u32_iterator<I>(j, i, j));
1157 |  |  | }
1158 |  |  | template <class I>
1159 |  |  | inline std::pair< boost::u16_to_u32_iterator<I>, boost::u16_to_u32_iterator<I> >
1160 |  | 5510x | make_utf32_seq(I i, I j, std::integral_constant<int, 2> const*)
1161 |  |  | {
1162 |  | 5510x | return std::pair< boost::u16_to_u32_iterator<I>, boost::u16_to_u32_iterator<I> >(boost::u16_to_u32_iterator<I>(i, i, j), boost::u16_to_u32_iterator<I>(j, i, j));
1163 |  |  | }
1164 |  |  | template <class I>
1165 |  |  | inline std::pair< I, I >
1166 |  | 1836x | make_utf32_seq(I i, I j, std::integral_constant<int, 4> const*)
1167 |  |  | {
1168 |  | 1836x | return std::pair< I, I >(i, j);
1169 |  |  | }
1170 |  |  | template <class charT>
1171 |  |  | inline std::pair< boost::u8_to_u32_iterator<const charT*>, boost::u8_to_u32_iterator<const charT*> >
1172 |  | 3672x | make_utf32_seq(const charT* p, std::integral_constant<int, 1> const*)
1173 |  |  | {
1174 |  | 3672x | std::size_t len = std::strlen((const char*)p);
1175 |  | 3672x | return std::pair< boost::u8_to_u32_iterator<const charT*>, boost::u8_to_u32_iterator<const charT*> >(boost::u8_to_u32_iterator<const charT*>(p, p, p+len), boost::u8_to_u32_iterator<const charT*>(p+len, p, p+len));
1176 |  |  | }
1177 |  |  | template <class charT>
1178 |  |  | inline std::pair< boost::u16_to_u32_iterator<const charT*>, boost::u16_to_u32_iterator<const charT*> >
1179 |  | 1836x | make_utf32_seq(const charT* p, std::integral_constant<int, 2> const*)
1180 |  |  | {
1181 |  | 1836x | std::size_t len = u_strlen((const UChar*)p);
1182 |  | 1836x | return std::pair< boost::u16_to_u32_iterator<const charT*>, boost::u16_to_u32_iterator<const charT*> >(boost::u16_to_u32_iterator<const charT*>(p, p, p + len), boost::u16_to_u32_iterator<const charT*>(p+len, p, p + len));
1183 |  |  | }
1184 |  |  | template <class charT>
1185 |  |  | inline std::pair< const charT*, const charT* >
1186 |  | 1836x | make_utf32_seq(const charT* p, std::integral_constant<int, 4> const*)
1187 |  |  | {
1188 |  | 1836x | return std::pair< const charT*, const charT* >(p, p+icu_regex_traits::length((UChar32 const*)p));
1189 |  |  | }
1190 |  |  | template <class OutputIterator>
1191 |  | 1836x | inline OutputIterator make_utf32_out(OutputIterator o, std::integral_constant<int, 4> const*)
1192 |  |  | {
1193 |  | 1836x | return o;
1194 |  |  | }
1195 |  |  | template <class OutputIterator>
1196 |  | 3673x | inline utf16_output_iterator<OutputIterator> make_utf32_out(OutputIterator o, std::integral_constant<int, 2> const*)
1197 |  |  | {
1198 |  | 3673x | return o;
1199 |  |  | }
1200 |  |  | template <class OutputIterator>
1201 |  | 3672x | inline utf8_output_iterator<OutputIterator> make_utf32_out(OutputIterator o, std::integral_constant<int, 1> const*)
1202 |  |  | {
1203 |  | 3672x | return o;
1204 |  |  | }
1205 |  |  |
1206 |  |  | template <class OutputIterator, class I1, class I2>
1207 |  | 9181x | OutputIterator do_regex_replace(OutputIterator out,
1208 |  |  | std::pair<I1, I1> const& in,
1209 |  |  | const u32regex& e,
1210 |  |  | const std::pair<I2, I2>& fmt,
1211 |  |  | match_flag_type flags
1212 |  |  | )
1213 |  |  | {
1214 |  |  | // unfortunately we have to copy the format string in order to pass in onward:
1215 |  | 9181x | std::vector<UChar32> f;
1216 |  | 9181x | f.assign(fmt.first, fmt.second);
1217 |  |  |
1218 |  | 9181x | regex_iterator<I1, UChar32, icu_regex_traits> i(in.first, in.second, e, flags);
1219 |  | 9181x | regex_iterator<I1, UChar32, icu_regex_traits> j;
1220 |  | 9181x | if(i == j)
1221 |  |  | {
1222 |  | 120x | if(!(flags & regex_constants::format_no_copy))
1223 |  | 60x | out = std::copy(in.first, in.second, out);
1224 |  |  | }
1225 |  |  | else
1226 |  |  | {
1227 |  | 9061x | I1 last_m = in.first;
1228 |  | 25082x | while(i != j)
1229 |  |  | {
1230 |  | 16261x | if(!(flags & regex_constants::format_no_copy))
1231 |  | 9961x | out = std::copy(i->prefix().first, i->prefix().second, out);
1232 |  | 16261x | if(!f.empty())
1233 |  | 16261x | out = ::boost::BOOST_REGEX_DETAIL_NS::regex_format_imp(out, *i, &*f.begin(), &*f.begin() + f.size(), flags, e.get_traits());
1234 |  |  | else
1235 |  | ✗ | out = ::boost::BOOST_REGEX_DETAIL_NS::regex_format_imp(out, *i, static_cast<UChar32 const*>(0), static_cast<UChar32 const*>(0), flags, e.get_traits());
1236 |  | 16261x | last_m = (*i)[0].second;
1237 |  | 16261x | if(flags & regex_constants::format_first_only)
1238 |  | 240x | break;
1239 |  | 16021x | ++i;
1240 |  |  | }
1241 |  | 9061x | if(!(flags & regex_constants::format_no_copy))
1242 |  | 3181x | out = std::copy(last_m, in.second, out);
1243 |  |  | }
1244 |  | 16067x | return out;
1245 |  | 9181x | }
1246 |  |  | template <class BaseIterator>
1247 |  | 1836x | inline const BaseIterator& extract_output_base(const BaseIterator& b)
1248 |  |  | {
1249 |  | 1836x | return b;
1250 |  |  | }
1251 |  |  | template <class BaseIterator>
1252 |  | 3672x | inline BaseIterator extract_output_base(const utf8_output_iterator<BaseIterator>& b)
1253 |  |  | {
1254 |  | 3672x | return b.base();
1255 |  |  | }
1256 |  |  | template <class BaseIterator>
1257 |  | 1836x | inline BaseIterator extract_output_base(const utf16_output_iterator<BaseIterator>& b)
1258 |  |  | {
1259 |  | 1836x | return b.base();
1260 |  |  | }
1261 |  |  | } // BOOST_REGEX_DETAIL_NS
1262 |  |  |
1263 |  |  | BOOST_REGEX_MODULE_EXPORT template <class OutputIterator, class BidirectionalIterator, class charT>
1264 |  | 7344x | inline OutputIterator u32regex_replace(OutputIterator out,
1265 |  |  | BidirectionalIterator first,
1266 |  |  | BidirectionalIterator last,
1267 |  |  | const u32regex& e,
1268 |  |  | const charT* fmt,
1269 |  |  | match_flag_type flags = match_default)
1270 |  |  | {
1271 |  |  | return BOOST_REGEX_DETAIL_NS::extract_output_base
1272 |  | 7344x | (
1273 |  | 1836x | BOOST_REGEX_DETAIL_NS::do_regex_replace(
1274 |  |  | BOOST_REGEX_DETAIL_NS::make_utf32_out(out, static_cast<std::integral_constant<int, sizeof(*first)> const*>(0)),
1275 |  | 7344x | BOOST_REGEX_DETAIL_NS::make_utf32_seq(first, last, static_cast<std::integral_constant<int, sizeof(*first)> const*>(0)),
1276 |  |  | e,
1277 |  | 12852x | BOOST_REGEX_DETAIL_NS::make_utf32_seq(fmt, static_cast<std::integral_constant<int, sizeof(*fmt)> const*>(0)),
1278 |  |  | flags)
1279 |  | 12393x | );
1280 |  |  | }
1281 |  |  |
1282 |  |  | BOOST_REGEX_MODULE_EXPORT template <class OutputIterator, class Iterator, class charT>
1283 |  | ✗ | inline OutputIterator u32regex_replace(OutputIterator out,
1284 |  |  | Iterator first,
1285 |  |  | Iterator last,
1286 |  |  | const u32regex& e,
1287 |  |  | const std::basic_string<charT>& fmt,
1288 |  |  | match_flag_type flags = match_default)
1289 |  |  | {
1290 |  |  | return BOOST_REGEX_DETAIL_NS::extract_output_base
1291 |  | ✗ | (
1292 |  |  | BOOST_REGEX_DETAIL_NS::do_regex_replace(
1293 |  |  | BOOST_REGEX_DETAIL_NS::make_utf32_out(out, static_cast<std::integral_constant<int, sizeof(*first)> const*>(0)),
1294 |  |  | BOOST_REGEX_DETAIL_NS::make_utf32_seq(first, last, static_cast<std::integral_constant<int, sizeof(*first)> const*>(0)),
1295 |  |  | e,
1296 |  | ✗ | BOOST_REGEX_DETAIL_NS::make_utf32_seq(fmt.begin(), fmt.end(), static_cast<std::integral_constant<int, sizeof(charT)> const*>(0)),
1297 |  |  | flags)
1298 |  | ✗ | );
1299 |  |  | }
1300 |  |  |
1301 |  |  | BOOST_REGEX_MODULE_EXPORT template <class OutputIterator, class Iterator>
1302 |  | ✗ | inline OutputIterator u32regex_replace(OutputIterator out,
1303 |  |  | Iterator first,
1304 |  |  | Iterator last,
1305 |  |  | const u32regex& e,
1306 |  |  | const U_NAMESPACE_QUALIFIER UnicodeString& fmt,
1307 |  |  | match_flag_type flags = match_default)
1308 |  |  | {
1309 |  |  | return BOOST_REGEX_DETAIL_NS::extract_output_base
1310 |  | ✗ | (
1311 |  |  | BOOST_REGEX_DETAIL_NS::do_regex_replace(
1312 |  |  | BOOST_REGEX_DETAIL_NS::make_utf32_out(out, static_cast<std::integral_constant<int, sizeof(*first)> const*>(0)),
1313 |  |  | BOOST_REGEX_DETAIL_NS::make_utf32_seq(first, last, static_cast<std::integral_constant<int, sizeof(*first)> const*>(0)),
1314 |  |  | e,
1315 |  | ✗ | BOOST_REGEX_DETAIL_NS::make_utf32_seq(fmt.getBuffer(), fmt.getBuffer() + fmt.length(), static_cast<std::integral_constant<int, 2> const*>(0)),
1316 |  |  | flags)
1317 |  | ✗ | );
1318 |  |  | }
1319 |  |  |
1320 |  |  | BOOST_REGEX_MODULE_EXPORT template <class charT>
1321 |  | ✗ | std::basic_string<charT> u32regex_replace(const std::basic_string<charT>& s,
1322 |  |  | const u32regex& e,
1323 |  |  | const charT* fmt,
1324 |  |  | match_flag_type flags = match_default)
1325 |  |  | {
1326 |  | ✗ | std::basic_string<charT> result;
1327 |  | ✗ | BOOST_REGEX_DETAIL_NS::string_out_iterator<std::basic_string<charT> > i(result);
1328 |  | ✗ | u32regex_replace(i, s.begin(), s.end(), e, fmt, flags);
1329 |  | ✗ | return result;
1330 |  | ✗ | }
1331 |  |  |
1332 |  |  | BOOST_REGEX_MODULE_EXPORT template <class charT>
1333 |  | 1836x | std::basic_string<charT> u32regex_replace(const std::basic_string<charT>& s,
1334 |  |  | const u32regex& e,
1335 |  |  | const std::basic_string<charT>& fmt,
1336 |  |  | match_flag_type flags = match_default)
1337 |  |  | {
1338 |  | 1836x | std::basic_string<charT> result;
1339 |  | 1836x | BOOST_REGEX_DETAIL_NS::string_out_iterator<std::basic_string<charT> > i(result);
1340 |  | 1836x | u32regex_replace(i, s.begin(), s.end(), e, fmt.c_str(), flags);
1341 |  | 3519x | return result;
1342 |  | ✗ | }
1343 |  |  |
1344 |  |  | namespace BOOST_REGEX_DETAIL_NS{
1345 |  |  |
1346 |  |  | class unicode_string_out_iterator
1347 |  |  | {
1348 |  |  | U_NAMESPACE_QUALIFIER UnicodeString* out;
1349 |  |  | public:
1350 |  | 1837x | unicode_string_out_iterator(U_NAMESPACE_QUALIFIER UnicodeString& s) : out(&s) {}
1351 |  |  | unicode_string_out_iterator& operator++() { return *this; }
1352 |  | 11371x | unicode_string_out_iterator& operator++(int) { return *this; }
1353 |  | 11371x | unicode_string_out_iterator& operator*() { return *this; }
1354 |  | 11371x | unicode_string_out_iterator& operator=(UChar v)
1355 |  |  | {
1356 |  | 11371x | *out += v;
1357 |  | 11371x | return *this;
1358 |  |  | }
1359 |  |  | typedef std::ptrdiff_t difference_type;
1360 |  |  | typedef UChar value_type;
1361 |  |  | typedef value_type* pointer;
1362 |  |  | typedef value_type& reference;
1363 |  |  | typedef std::output_iterator_tag iterator_category;
1364 |  |  | };
1365 |  |  |
1366 |  |  | }
1367 |  |  |
1368 |  |  | inline U_NAMESPACE_QUALIFIER UnicodeString u32regex_replace(const U_NAMESPACE_QUALIFIER UnicodeString& s,
1369 |  |  | const u32regex& e,
1370 |  |  | const UChar* fmt,
1371 |  |  | match_flag_type flags = match_default)
1372 |  |  | {
1373 |  |  | U_NAMESPACE_QUALIFIER UnicodeString result;
1374 |  |  | BOOST_REGEX_DETAIL_NS::unicode_string_out_iterator i(result);
1375 |  |  | u32regex_replace(i, s.getBuffer(), s.getBuffer()+s.length(), e, fmt, flags);
1376 |  |  | return result;
1377 |  |  | }
1378 |  |  |
1379 |  | 1837x | inline U_NAMESPACE_QUALIFIER UnicodeString u32regex_replace(const U_NAMESPACE_QUALIFIER UnicodeString& s,
1380 |  |  | const u32regex& e,
1381 |  |  | const U_NAMESPACE_QUALIFIER UnicodeString& fmt,
1382 |  |  | match_flag_type flags = match_default)
1383 |  |  | {
1384 |  | 1837x | U_NAMESPACE_QUALIFIER UnicodeString result;
1385 |  | 1837x | BOOST_REGEX_DETAIL_NS::unicode_string_out_iterator i(result);
1386 |  | 1837x | BOOST_REGEX_DETAIL_NS::do_regex_replace(
1387 |  | 1837x | BOOST_REGEX_DETAIL_NS::make_utf32_out(i, static_cast<std::integral_constant<int, 2> const*>(0)),
1388 |  | 1837x | BOOST_REGEX_DETAIL_NS::make_utf32_seq(s.getBuffer(), s.getBuffer()+s.length(), static_cast<std::integral_constant<int, 2> const*>(0)),
1389 |  |  | e,
1390 |  | 1837x | BOOST_REGEX_DETAIL_NS::make_utf32_seq(fmt.getBuffer(), fmt.getBuffer() + fmt.length(), static_cast<std::integral_constant<int, 2> const*>(0)),
1391 |  |  | flags);
1392 |  | 3521x | return result;
1393 |  | ✗ | }
1394 |  |  |
1395 |  |  | } // namespace boost.
1396 |  |  |
1397 |  |  | #ifdef BOOST_REGEX_MSVC
1398 |  |  | #pragma warning (pop)
1399 |  |  | #endif
1400 |  |  |
1401 |  |  | #include <boost/regex/v5/u32regex_iterator.hpp>
1402 |  |  | #include <boost/regex/v5/u32regex_token_iterator.hpp>
1403 |  |  |
1404 |  |  | #endif
1405 |  |  |