MCPcopy Create free account
hub / github.com/fmtlib/fmt / parse_dynamic_spec

Function parse_dynamic_spec

include/fmt/base.h:1383–1413  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1381// Parses integer | "{" [arg_id] "}".
1382template <typename Char>
1383FMT_CONSTEXPR auto parse_dynamic_spec(const Char* begin, const Char* end,
1384 int& value, arg_ref<Char>& ref,
1385 parse_context<Char>& ctx)
1386 -> parse_dynamic_spec_result<Char> {
1387 FMT_ASSERT(begin != end, "");
1388 auto kind = arg_id_kind::none;
1389 if ('0' <= *begin && *begin <= '9') {
1390 int val = parse_nonnegative_int(begin, end, -1);
1391 if (val == -1) report_error("number is too big");
1392 value = val;
1393 } else {
1394 if (*begin == '{') {
1395 ++begin;
1396 if (begin != end) {
1397 Char c = *begin;
1398 if (c == '}' || c == ':') {
1399 int id = ctx.next_arg_id();
1400 ref = id;
1401 kind = arg_id_kind::index;
1402 ctx.check_dynamic_spec(id);
1403 } else {
1404 begin = parse_arg_id(begin, end,
1405 dynamic_spec_handler<Char>{ctx, ref, kind});
1406 }
1407 }
1408 if (begin != end && *begin == '}') return {++begin, kind};
1409 }
1410 report_error("invalid format string");
1411 }
1412 return {begin, kind};
1413}
1414
1415template <typename Char>
1416FMT_CONSTEXPR auto parse_width(const Char* begin, const Char* end,

Callers 2

parse_widthFunction · 0.85
parse_precisionFunction · 0.85

Calls 5

parse_nonnegative_intFunction · 0.85
report_errorFunction · 0.85
parse_arg_idFunction · 0.70
next_arg_idMethod · 0.45
check_dynamic_specMethod · 0.45

Tested by

no test coverage detected