From 7772ca7ce81ee5ac2fdf5590bdfe922b8313d621 Mon Sep 17 00:00:00 2001 From: stryku Date: Wed, 9 Jan 2019 21:46:14 +0100 Subject: [PATCH] Removed parsed_specs_checker class --- include/fmt/core.h | 6 ++--- include/fmt/format.h | 3 ++- include/fmt/prepare.h | 54 ++++++++++++++++++------------------------- 3 files changed, 27 insertions(+), 36 deletions(-) diff --git a/include/fmt/core.h b/include/fmt/core.h index f4d80b65..2e0acd84 100644 --- a/include/fmt/core.h +++ b/include/fmt/core.h @@ -881,9 +881,9 @@ FMT_CONSTEXPR typename internal::result_of::type template class basic_parse_context : private ErrorHandler { private: - basic_string_view primary_format_str_; - basic_string_view format_str_; - int next_arg_id_; + basic_string_view primary_format_str_; + basic_string_view format_str_; + int next_arg_id_; public: typedef Char char_type; diff --git a/include/fmt/format.h b/include/fmt/format.h index b52afa13..cb0af4ad 100644 --- a/include/fmt/format.h +++ b/include/fmt/format.h @@ -1596,7 +1596,8 @@ class specs_setter { basic_format_specs &specs_; }; -template class numeric_specs_checker { +template +class numeric_specs_checker { public: FMT_CONSTEXPR numeric_specs_checker(ErrorHandler &eh, internal::type arg_type) : error_handler_(eh), arg_type_(arg_type) {} diff --git a/include/fmt/prepare.h b/include/fmt/prepare.h index dbaf742e..498805eb 100644 --- a/include/fmt/prepare.h +++ b/include/fmt/prepare.h @@ -202,35 +202,6 @@ private: basic_parse_context parse_context_; }; -template class parsed_specs_checker { -public: - FMT_CONSTEXPR parsed_specs_checker(ErrorHandler &error_handler, - internal::type arg_type) - : checker_(error_handler, arg_type) {} - - template - FMT_CONSTEXPR void check(const basic_format_specs &specs) { - if (specs.align_ == ALIGN_NUMERIC) { - checker_.require_numeric_argument(); - } - - if (specs.has(PLUS_FLAG | MINUS_FLAG | SIGN_FLAG)) { - checker_.check_sign(); - } - - if (specs.has(HASH_FLAG)) { - checker_.require_numeric_argument(); - } - - if (specs.has_precision()) { - checker_.check_precision(); - } - } - -private: - numeric_specs_checker checker_; -}; - template class prepared_format { public: @@ -344,9 +315,7 @@ private: handle_dynamic_spec( specs.precision, specs.precision_ref, ctx); - internal::error_handler h; - parsed_specs_checker checker(h, arg.type()); - checker.check(specs); + check_prepared_specs(specs, arg.type()); advance_parse_context_to_specification(ctx, part); ctx.advance_to( visit_format_arg(arg_formatter(ctx, &specs), arg)); @@ -373,6 +342,27 @@ private: ctx.advance_to(stopped_at); } + template + void check_prepared_specs(const basic_format_specs &specs, internal::type arg_type) const { + internal::error_handler h; + numeric_specs_checker checker(h, arg_type); + if (specs.align_ == ALIGN_NUMERIC) { + checker.require_numeric_argument(); + } + + if (specs.has(PLUS_FLAG | MINUS_FLAG | SIGN_FLAG)) { + checker.check_sign(); + } + + if (specs.has(HASH_FLAG)) { + checker.require_numeric_argument(); + } + + if (specs.has_precision()) { + checker.check_precision(); + } + } + private: Format format_; PreparedPartsProvider parts_provider_;