Removed parsed_specs_checker class

This commit is contained in:
stryku 2019-01-09 21:46:14 +01:00
parent c735a69ef8
commit 7772ca7ce8
3 changed files with 27 additions and 36 deletions

View File

@ -881,9 +881,9 @@ FMT_CONSTEXPR typename internal::result_of<Visitor(int)>::type
template <typename Char, typename ErrorHandler = internal::error_handler>
class basic_parse_context : private ErrorHandler {
private:
basic_string_view<Char> primary_format_str_;
basic_string_view<Char> format_str_;
int next_arg_id_;
basic_string_view<Char> primary_format_str_;
basic_string_view<Char> format_str_;
int next_arg_id_;
public:
typedef Char char_type;

View File

@ -1596,7 +1596,8 @@ class specs_setter {
basic_format_specs<Char> &specs_;
};
template <typename ErrorHandler> class numeric_specs_checker {
template <typename ErrorHandler>
class numeric_specs_checker {
public:
FMT_CONSTEXPR numeric_specs_checker(ErrorHandler &eh, internal::type arg_type)
: error_handler_(eh), arg_type_(arg_type) {}

View File

@ -202,35 +202,6 @@ private:
basic_parse_context<Char> parse_context_;
};
template <typename ErrorHandler> class parsed_specs_checker {
public:
FMT_CONSTEXPR parsed_specs_checker(ErrorHandler &error_handler,
internal::type arg_type)
: checker_(error_handler, arg_type) {}
template <typename Char>
FMT_CONSTEXPR void check(const basic_format_specs<Char> &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<ErrorHandler> checker_;
};
template <typename Format, typename PreparedPartsProvider, typename... Args>
class prepared_format {
public:
@ -344,9 +315,7 @@ private:
handle_dynamic_spec<internal::precision_checker>(
specs.precision, specs.precision_ref, ctx);
internal::error_handler h;
parsed_specs_checker<internal::error_handler> 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<Range>(ctx, &specs), arg));
@ -373,6 +342,27 @@ private:
ctx.advance_to(stopped_at);
}
template <typename Char>
void check_prepared_specs(const basic_format_specs<Char> &specs, internal::type arg_type) const {
internal::error_handler h;
numeric_specs_checker<internal::error_handler> 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_;