include/boost/regex/v5/icu.hpp
83.6% Lines (310/371)
50.5% List of functions (97/192)
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 |