| 167 | non-overlapping. */ |
| 168 | template<typename FwdIter, typename Sentinel, typename Func> |
| 169 | Func foreach_subrange(FwdIter first, Sentinel last, Func f) |
| 170 | { |
| 171 | while (first != last) { |
| 172 | auto const & x = *first; |
| 173 | auto const next = boost::parser::detail::text::find_not(first, last, x); |
| 174 | if (first != next) { |
| 175 | f(boost::parser::detail::text::foreach_subrange_range<FwdIter, Sentinel>( |
| 176 | first, next)); |
| 177 | } |
| 178 | first = next; |
| 179 | } |
| 180 | return f; |
| 181 | } |
| 182 | |
| 183 | /** Calls `f(sub)` for each subrange `sub` in `[first, last)`. A subrange |
| 184 | is a contiguous subsequence of elements that for each element `e`, |
nothing calls this directly
no test coverage detected