| 9663 | detail::is_equality_comparable_with_v<I, S>>> |
| 9664 | #endif |
| 9665 | bool callback_prefix_parse( |
| 9666 | I & first, |
| 9667 | S last, |
| 9668 | parser_interface<Parser, GlobalState, ErrorHandler> const & parser, |
| 9669 | Callbacks const & callbacks, |
| 9670 | trace trace_mode = trace::off) |
| 9671 | { |
| 9672 | if constexpr (!detail::is_char8_iter_v<I>) { |
| 9673 | if (trace_mode == trace::on) { |
| 9674 | return detail::callback_parse_impl<( |
| 9675 | true && BOOST_PARSER_DO_TRACE)>( |
| 9676 | first, last, parser, parser.error_handler_, callbacks); |
| 9677 | } else { |
| 9678 | return detail::callback_parse_impl<false>( |
| 9679 | first, last, parser, parser.error_handler_, callbacks); |
| 9680 | } |
| 9681 | } else { |
| 9682 | auto r = |
| 9683 | BOOST_PARSER_SUBRANGE(first, last) | detail::text::as_utf32; |
| 9684 | auto f = r.begin(); |
| 9685 | auto const l = r.end(); |
| 9686 | auto _ = detail::scoped_base_assign(first, f); |
| 9687 | if (trace_mode == trace::on) { |
| 9688 | return detail::callback_parse_impl<( |
| 9689 | true && BOOST_PARSER_DO_TRACE)>( |
| 9690 | f, l, parser, parser.error_handler_, callbacks); |
| 9691 | } else { |
| 9692 | return detail::callback_parse_impl<false>( |
| 9693 | f, l, parser, parser.error_handler_, callbacks); |
| 9694 | } |
| 9695 | } |
| 9696 | } |
| 9697 | |
| 9698 | /** Parses `r` using `parser`, and returns whether the parse was |
| 9699 | successful. The entire input range `r` must be consumed for the parse |
no test coverage detected