Commit 3947a7a9 authored by Victor Zverovich's avatar Victor Zverovich

Move check_sign to anonymous namespace.

parent ab35af53
......@@ -188,6 +188,20 @@ const Char *find_closing_brace(const Char *s, int num_open_braces = 1) {
throw fmt::FormatError("unmatched '{' in format");
}
template <typename Char>
void check_sign(const Char *&s, const Arg &arg) {
char sign = static_cast<char>(*s);
if (arg.type > Arg::LAST_NUMERIC_TYPE) {
throw fmt::FormatError(fmt::format(
"format specifier '{}' requires numeric argument", sign));
}
if (arg.type == Arg::UINT || arg.type == Arg::ULONG_LONG) {
throw fmt::FormatError(fmt::format(
"format specifier '{}' requires signed argument", sign));
}
++s;
}
// Checks if an argument is a valid printf width specifier and sets
// left alignment if it is negative.
class WidthHandler : public fmt::internal::ArgVisitor<WidthHandler, unsigned> {
......@@ -759,21 +773,6 @@ inline const Arg &fmt::BasicFormatter<Char>::parse_arg_index(const Char *&s) {
return *arg;
}
template <typename Char>
void fmt::BasicFormatter<Char>::check_sign(
const Char *&s, const Arg &arg) {
char sign = static_cast<char>(*s);
if (arg.type > Arg::LAST_NUMERIC_TYPE) {
throw FormatError(fmt::format(
"format specifier '{}' requires numeric argument", sign));
}
if (arg.type == Arg::UINT || arg.type == Arg::ULONG_LONG) {
throw FormatError(fmt::format(
"format specifier '{}' requires signed argument", sign));
}
++s;
}
const Arg *fmt::internal::FormatterBase::next_arg(const char *&error) {
if (next_arg_index_ < 0) {
error = "cannot switch from manual to automatic argument indexing";
......
......@@ -889,8 +889,6 @@ private:
// Parses argument index and returns corresponding argument.
const internal::Arg &parse_arg_index(const Char *&s);
void check_sign(const Char *&s, const internal::Arg &arg);
public:
explicit BasicFormatter(BasicWriter<Char> &w) : writer_(w) {}
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment