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>
constexpr auto operator""_const_fmt() {
constexpr auto operator""_fmt() {
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>
constexpr parse_result_t<FormatType> parse_type(unsigned i) {
++i;
switch (s[i]) {
case 's':
return {true, i, FormatType::s};
return {true, ++i, FormatType::s};
case 'c':
return {true, i, FormatType::c};
return {true, ++i, FormatType::c};
case 'b':
return {true, i, FormatType::b};
return {true, ++i, FormatType::b};
case 'B':
return {true, i, FormatType::B};
return {true, ++i, FormatType::B};
case 'd':
return {true, i, FormatType::d};
return {true, ++i, FormatType::d};
case 'o':
return {true, i, FormatType::o};
return {true, ++i, FormatType::o};
case 'x':
return {true, i, FormatType::x};
return {true, ++i, FormatType::x};
case 'X':
return {true, i, FormatType::X};
return {true, ++i, FormatType::X};
case 'a':
return {true, i, FormatType::a};
return {true, ++i, FormatType::a};
case 'A':
return {true, i, FormatType::A};
return {true, ++i, FormatType::A};
case 'e':
return {true, i, FormatType::e};
return {true, ++i, FormatType::e};
case 'E':
return {true, i, FormatType::E};
return {true, ++i, FormatType::E};
case 'f':
return {true, i, FormatType::f};
return {true, ++i, FormatType::f};
case 'F':
return {true, i, FormatType::F};
return {true, ++i, FormatType::F};
case 'g':
return {true, i, FormatType::g};
return {true, ++i, FormatType::g};
case 'G':
return {true, i, FormatType::G};
return {true, ++i, FormatType::G};
case 'p':
return {true, i, FormatType::p};
return {true, ++i, FormatType::p};
default:
--i;
return {false, i, FormatType::s};
}
}

View File

@ -4,7 +4,7 @@
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)
std::cout << c;