@@ -16,6 +16,10 @@ ADA_POP_DISABLE_WARNINGS
16
16
17
17
namespace ada ::unicode {
18
18
19
+ constexpr bool is_tabs_or_newline (char c) noexcept {
20
+ return c == ' \r ' || c == ' \n ' || c == ' \t ' ;
21
+ }
22
+
19
23
constexpr uint64_t broadcast (uint8_t v) noexcept {
20
24
return 0x101010101010101ull * v;
21
25
}
@@ -50,13 +54,8 @@ ada_really_inline bool has_tabs_or_newline(
50
54
std::string_view user_input) noexcept {
51
55
// first check for short strings in which case we do it naively.
52
56
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);
60
59
}
61
60
// fast path for long strings (expected to be common)
62
61
size_t i = 0 ;
@@ -94,13 +93,8 @@ ada_really_inline bool has_tabs_or_newline(
94
93
std::string_view user_input) noexcept {
95
94
// first check for short strings in which case we do it naively.
96
95
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);
104
98
}
105
99
// fast path for long strings (expected to be common)
106
100
size_t i = 0 ;
0 commit comments