aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorVictor Zverovich <viz@meta.com>2023-12-31 18:00:14 -0800
committerVictor Zverovich <viz@meta.com>2023-12-31 18:00:14 -0800
commitf5ca178c12fa15865332380424d87fcfc061a98c (patch)
tree7a9aac97e879089e587aa063e2065d26bb08a896
parent138a64bfb1fee43f3d758e8e88c10c6b80d35235 (diff)
downloadfmtlib-f5ca178c12fa15865332380424d87fcfc061a98c.tar.gz
Complete scan_handler
-rw-r--r--test/scan.h13
1 files changed, 5 insertions, 8 deletions
diff --git a/test/scan.h b/test/scan.h
index 86ce06d8..b9f29ccd 100644
--- a/test/scan.h
+++ b/test/scan.h
@@ -546,9 +546,9 @@ struct arg_scanner {
iterator end;
const format_specs<>& specs;
- template <typename T, FMT_ENABLE_IF(std::is_integral<T>::value)>
- auto operator()(T) -> iterator {
- // TODO
+ template <typename T>
+ auto operator()(T&&) -> iterator {
+ // TODO: implement
return begin;
}
};
@@ -589,8 +589,7 @@ struct scan_handler : error_handler {
scan_arg arg = scan_ctx_.arg(arg_id);
auto it = scan_ctx_.begin(), end = scan_ctx_.end();
while (it != end && is_whitespace(*it)) ++it;
- arg.visit(default_arg_scanner{it, end});
- scan_ctx_.advance_to(it);
+ scan_ctx_.advance_to(arg.visit(default_arg_scanner{it, end}));
}
auto on_format_specs(int arg_id, const char* begin, const char* end) -> const
@@ -602,9 +601,7 @@ struct scan_handler : error_handler {
begin = parse_scan_specs(begin, end, specs, arg.type());
if (begin == end || *begin != '}') on_error("missing '}' in format string");
auto s = arg_scanner{scan_ctx_.begin(), scan_ctx_.end(), specs};
- // TODO: scan argument according to specs
- (void)s;
- // context.advance_to(visit_format_arg(s, arg));
+ scan_ctx_.advance_to(arg.visit(s));
return begin;
}