@@ -16,6 +16,10 @@ ADA_POP_DISABLE_WARNINGS
1616
1717namespace ada ::unicode {
1818
19+ constexpr bool is_tabs_or_newline (char c) noexcept {
20+ return c == ' \r ' || c == ' \n ' || c == ' \t ' ;
21+ }
22+
1923constexpr uint64_t broadcast (uint8_t v) noexcept {
2024 return 0x101010101010101ull * v;
2125}
@@ -50,13 +54,8 @@ ada_really_inline bool has_tabs_or_newline(
5054 std::string_view user_input) noexcept {
5155 // first check for short strings in which case we do it naively.
5256 if (user_input.size () < 16 ) { // slow path
53- for (size_t i = 0 ; i < user_input.size (); i++) {
54- if (user_input[i] == ' \r ' || user_input[i] == ' \n ' ||
55- user_input[i] == ' \t ' ) {
56- return true ;
57- }
58- }
59- return false ;
57+ return std::any_of (user_input.begin (), user_input.end (),
58+ is_tabs_or_newline);
6059 }
6160 // fast path for long strings (expected to be common)
6261 size_t i = 0 ;
@@ -94,13 +93,8 @@ ada_really_inline bool has_tabs_or_newline(
9493 std::string_view user_input) noexcept {
9594 // first check for short strings in which case we do it naively.
9695 if (user_input.size () < 16 ) { // slow path
97- for (size_t i = 0 ; i < user_input.size (); i++) {
98- if (user_input[i] == ' \r ' || user_input[i] == ' \n ' ||
99- user_input[i] == ' \t ' ) {
100- return true ;
101- }
102- }
103- return false ;
96+ return std::any_of (user_input.begin (), user_input.end (),
97+ is_tabs_or_newline);
10498 }
10599 // fast path for long strings (expected to be common)
106100 size_t i = 0 ;
0 commit comments