Fixed parse issues: Format Type not being correctly parsed

This commit is contained in:
Andreas Tsouchlos 2021-11-25 16:25:39 +01:00
parent 7743c95631
commit afa7831e93
3 changed files with 19 additions and 21 deletions

View File

@ -138,7 +138,7 @@ class fmt_literal_obj_t {
}; };
template <detail::ConstString t_s> template <detail::ConstString t_s>
constexpr auto operator""_const_fmt() { constexpr auto operator""_fmt() {
return fmt_literal_obj_t<t_s>{}; return fmt_literal_obj_t<t_s>{};
} }

View File

@ -118,44 +118,42 @@ constexpr parse_result_t<unsigned> parse_number(unsigned i) {
template <ConstString s> template <ConstString s>
constexpr parse_result_t<FormatType> parse_type(unsigned i) { constexpr parse_result_t<FormatType> parse_type(unsigned i) {
++i;
switch (s[i]) { switch (s[i]) {
case 's': case 's':
return {true, i, FormatType::s}; return {true, ++i, FormatType::s};
case 'c': case 'c':
return {true, i, FormatType::c}; return {true, ++i, FormatType::c};
case 'b': case 'b':
return {true, i, FormatType::b}; return {true, ++i, FormatType::b};
case 'B': case 'B':
return {true, i, FormatType::B}; return {true, ++i, FormatType::B};
case 'd': case 'd':
return {true, i, FormatType::d}; return {true, ++i, FormatType::d};
case 'o': case 'o':
return {true, i, FormatType::o}; return {true, ++i, FormatType::o};
case 'x': case 'x':
return {true, i, FormatType::x}; return {true, ++i, FormatType::x};
case 'X': case 'X':
return {true, i, FormatType::X}; return {true, ++i, FormatType::X};
case 'a': case 'a':
return {true, i, FormatType::a}; return {true, ++i, FormatType::a};
case 'A': case 'A':
return {true, i, FormatType::A}; return {true, ++i, FormatType::A};
case 'e': case 'e':
return {true, i, FormatType::e}; return {true, ++i, FormatType::e};
case 'E': case 'E':
return {true, i, FormatType::E}; return {true, ++i, FormatType::E};
case 'f': case 'f':
return {true, i, FormatType::f}; return {true, ++i, FormatType::f};
case 'F': case 'F':
return {true, i, FormatType::F}; return {true, ++i, FormatType::F};
case 'g': case 'g':
return {true, i, FormatType::g}; return {true, ++i, FormatType::g};
case 'G': case 'G':
return {true, i, FormatType::G}; return {true, ++i, FormatType::G};
case 'p': case 'p':
return {true, i, FormatType::p}; return {true, ++i, FormatType::p};
default: default:
--i;
return {false, i, FormatType::s}; return {false, i, FormatType::s};
} }
} }

View File

@ -4,7 +4,7 @@
int main() { int main() {
constexpr auto formatted = "Test: {:012.5} {:6} {:8}"_const_fmt(142.4334, "abcdef", -1234); constexpr auto formatted = "Test: {:012.5} {:6} {:8}"_fmt(142.4334, "abcdef", -1234);
for (const auto& c : formatted) for (const auto& c : formatted)
std::cout << c; std::cout << c;