| 2533 | typename ErrorHandler, |
| 2534 | typename Callbacks> |
| 2535 | bool callback_parse_impl( |
| 2536 | Iter & first, |
| 2537 | Sentinel last, |
| 2538 | Parser const & parser, |
| 2539 | ErrorHandler const & error_handler, |
| 2540 | Callbacks const & callbacks) |
| 2541 | { |
| 2542 | auto const initial_first = first; |
| 2543 | bool success = true; |
| 2544 | int trace_indent = 0; |
| 2545 | detail::symbol_table_tries_t symbol_table_tries; |
| 2546 | pending_symbol_table_operations_t pending_symbol_table_operations; |
| 2547 | scoped_apply_pending_symbol_table_operations apply_pending( |
| 2548 | pending_symbol_table_operations); |
| 2549 | auto context = detail::make_context<Debug, true>( |
| 2550 | first, |
| 2551 | last, |
| 2552 | success, |
| 2553 | trace_indent, |
| 2554 | error_handler, |
| 2555 | callbacks, |
| 2556 | parser.globals_, |
| 2557 | symbol_table_tries, |
| 2558 | pending_symbol_table_operations); |
| 2559 | auto const flags = |
| 2560 | Debug ? detail::enable_trace(detail::flags::gen_attrs) |
| 2561 | : detail::flags::gen_attrs; |
| 2562 | try { |
| 2563 | parser( |
| 2564 | first, |
| 2565 | last, |
| 2566 | context, |
| 2567 | detail::null_parser{}, |
| 2568 | flags, |
| 2569 | success); |
| 2570 | if (Debug) |
| 2571 | detail::final_trace(context, flags, nope{}); |
| 2572 | return success; |
| 2573 | } catch (parse_error<Iter> const & e) { |
| 2574 | if (error_handler(initial_first, last, e) == |
| 2575 | error_handler_result::rethrow) { |
| 2576 | throw; |
| 2577 | } |
| 2578 | return false; |
| 2579 | } |
| 2580 | } |
| 2581 | |
| 2582 | template< |
| 2583 | bool Debug, |
nothing calls this directly
no test coverage detected