Removed parsed_specs_checker class
This commit is contained in:
parent
c735a69ef8
commit
7772ca7ce8
@ -881,9 +881,9 @@ FMT_CONSTEXPR typename internal::result_of<Visitor(int)>::type
|
|||||||
template <typename Char, typename ErrorHandler = internal::error_handler>
|
template <typename Char, typename ErrorHandler = internal::error_handler>
|
||||||
class basic_parse_context : private ErrorHandler {
|
class basic_parse_context : private ErrorHandler {
|
||||||
private:
|
private:
|
||||||
basic_string_view<Char> primary_format_str_;
|
basic_string_view<Char> primary_format_str_;
|
||||||
basic_string_view<Char> format_str_;
|
basic_string_view<Char> format_str_;
|
||||||
int next_arg_id_;
|
int next_arg_id_;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
typedef Char char_type;
|
typedef Char char_type;
|
||||||
|
|||||||
@ -1596,7 +1596,8 @@ class specs_setter {
|
|||||||
basic_format_specs<Char> &specs_;
|
basic_format_specs<Char> &specs_;
|
||||||
};
|
};
|
||||||
|
|
||||||
template <typename ErrorHandler> class numeric_specs_checker {
|
template <typename ErrorHandler>
|
||||||
|
class numeric_specs_checker {
|
||||||
public:
|
public:
|
||||||
FMT_CONSTEXPR numeric_specs_checker(ErrorHandler &eh, internal::type arg_type)
|
FMT_CONSTEXPR numeric_specs_checker(ErrorHandler &eh, internal::type arg_type)
|
||||||
: error_handler_(eh), arg_type_(arg_type) {}
|
: error_handler_(eh), arg_type_(arg_type) {}
|
||||||
|
|||||||
@ -202,35 +202,6 @@ private:
|
|||||||
basic_parse_context<Char> parse_context_;
|
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>
|
template <typename Format, typename PreparedPartsProvider, typename... Args>
|
||||||
class prepared_format {
|
class prepared_format {
|
||||||
public:
|
public:
|
||||||
@ -344,9 +315,7 @@ private:
|
|||||||
handle_dynamic_spec<internal::precision_checker>(
|
handle_dynamic_spec<internal::precision_checker>(
|
||||||
specs.precision, specs.precision_ref, ctx);
|
specs.precision, specs.precision_ref, ctx);
|
||||||
|
|
||||||
internal::error_handler h;
|
check_prepared_specs(specs, arg.type());
|
||||||
parsed_specs_checker<internal::error_handler> checker(h, arg.type());
|
|
||||||
checker.check(specs);
|
|
||||||
advance_parse_context_to_specification(ctx, part);
|
advance_parse_context_to_specification(ctx, part);
|
||||||
ctx.advance_to(
|
ctx.advance_to(
|
||||||
visit_format_arg(arg_formatter<Range>(ctx, &specs), arg));
|
visit_format_arg(arg_formatter<Range>(ctx, &specs), arg));
|
||||||
@ -373,6 +342,27 @@ private:
|
|||||||
ctx.advance_to(stopped_at);
|
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:
|
private:
|
||||||
Format format_;
|
Format format_;
|
||||||
PreparedPartsProvider parts_provider_;
|
PreparedPartsProvider parts_provider_;
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user