MCPcopy Create free account
hub / github.com/boostorg/parser / call

Method call

include/boost/parser/parser.hpp:5477–5574  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

5475 typename Context,
5476 typename SkipParser>
5477 std::conditional_t<
5478 detail::in_recursion<Context, tag_type>,
5479 detail::nope,
5480 attr_type>
5481 call(
5482 Iter & first,
5483 Sentinel last,
5484 Context const & context,
5485 SkipParser const & skip,
5486 detail::flags flags,
5487 bool & success) const
5488 {
5489 constexpr bool in_recursion =
5490 detail::in_recursion<Context, tag_type>;
5491
5492 if constexpr (in_recursion)
5493 flags = detail::disable_attrs(flags);
5494
5495 attr_type retval{};
5496 locals_type locals = detail::make_locals<locals_type>(context);
5497 auto params = detail::resolve_rule_params(context, params_);
5498 tag_type * const tag_ptr = nullptr;
5499 auto const rule_context = detail::make_rule_context(
5500 context, tag_ptr, retval, locals, params);
5501#if BOOST_PARSER_DO_TRACE
5502 [[maybe_unused]] auto _ = detail::scoped_trace(
5503 *this, first, last, rule_context, flags, retval);
5504#endif
5505
5506 bool dont_assign = false;
5507 if constexpr (in_recursion) {
5508 // We have to use this out-arg overload for iterations >= 1 in
5509 // recursive rules, since every iteration past the first is
5510 // defined to return nope.
5511 parse_rule(
5512 tag_ptr,
5513 first,
5514 last,
5515 rule_context,
5516 skip,
5517 flags,
5518 success,
5519 dont_assign,
5520 retval);
5521 } else {
5522 auto attr = parse_rule(
5523 tag_ptr,
5524 first,
5525 last,
5526 rule_context,
5527 skip,
5528 flags,
5529 success,
5530 dont_assign);
5531 if (success && !dont_assign) {
5532 if constexpr (!detail::is_nope_v<decltype(attr)>)
5533 detail::assign(retval, std::move(attr));
5534 }

Callers

nothing calls this directly

Calls 7

resolve_rule_paramsFunction · 0.85
make_rule_contextFunction · 0.85
scoped_traceFunction · 0.85
assignFunction · 0.85
_callbacksFunction · 0.85
callFunction · 0.85
move_backFunction · 0.85

Tested by

no test coverage detected