| 146 | } |
| 147 | |
| 148 | void StringView::forEachSplitView(StringView pattern, SplitCallback callback) const { |
| 149 | if (pattern.empty()) |
| 150 | return; |
| 151 | |
| 152 | size_t beg = 0; |
| 153 | while (true) { |
| 154 | size_t end = m_view.find(pattern.m_view, beg); |
| 155 | if (end == NPos) { |
| 156 | callback(m_view.substr(beg), beg, m_view.size() - beg); |
| 157 | break; |
| 158 | } |
| 159 | callback(m_view.substr(beg, end - beg), beg, end - beg); |
| 160 | beg = end + pattern.m_view.size(); |
| 161 | } |
| 162 | } |
| 163 | |
| 164 | bool StringView::hasChar(Char c) const { |
| 165 | for (Char ch : *this) |
no test coverage detected