diff options
author | 2022-04-30 06:42:09 +1000 | |
---|---|---|
committer | 2022-04-30 06:42:09 +1000 | |
commit | 6ff40e09bd378f937ebfcb7980f7f8975bceb138 (patch) | |
tree | 94c62275c72199fc4cbfcd424f93a6ec5cf4158c /src/lib/formats/fsmeta.cpp | |
parent | 96175af1ea556efa40a0fbef15ed3e23ec07528b (diff) |
Micscellaneous cleanup/fixes:
machine/z80scc.cpp: Fixed a cast-to-bool that broke detection of changes
to one register bit.
formats/fsmeta.cpp: Use visitors with variants where it makes sense.
docs: Updated minimum required SDL version to 2.0.6 for all targets,
added note that Python 3 is included with Xcode and updated instructions
for downloading stand-alone Python 3 for macOS.
ksys573.cpp: Don't create an insane number of textures for fghtmn and
pnchman internal artwork.
Tidied another batch of slot machine layouts.
Diffstat (limited to 'src/lib/formats/fsmeta.cpp')
-rw-r--r-- | src/lib/formats/fsmeta.cpp | 53 |
1 files changed, 21 insertions, 32 deletions
diff --git a/src/lib/formats/fsmeta.cpp b/src/lib/formats/fsmeta.cpp index 41ac767cd11..0e9b51094f0 100644 --- a/src/lib/formats/fsmeta.cpp +++ b/src/lib/formats/fsmeta.cpp @@ -34,48 +34,37 @@ const char *meta_data::entry_name(meta_name name) return ""; } -template<class... Ts> struct overloaded : Ts... { using Ts::operator()...; }; -template<class... Ts> overloaded(Ts...)->overloaded<Ts...>; +template <class... Ts> struct overloaded : Ts... { using Ts::operator()...; }; +template <class... Ts> overloaded(Ts...) -> overloaded<Ts...>; meta_type meta_value::type() const { std::optional<meta_type> result; - std::visit(overloaded - { - [&result](const std::string &) { result = meta_type::string; }, - [&result](std::uint64_t) { result = meta_type::number; }, - [&result](bool) { result = meta_type::flag; }, - [&result](const util::arbitrary_datetime &) { result = meta_type::date; } - }, value); + std::visit( + overloaded{ + [&result] (const std::string &) { result = meta_type::string; }, + [&result] (std::uint64_t) { result = meta_type::number; }, + [&result] (bool) { result = meta_type::flag; }, + [&result] (const util::arbitrary_datetime &) { result = meta_type::date; } }, + value); return *result; } std::string meta_value::to_string() const { std::string result; - - switch (type()) - { - case meta_type::string: - result = as_string(); - break; - case meta_type::number: - result = util::string_format("0x%x", as_number()); - break; - case meta_type::flag: - result = as_flag() ? "t" : "f"; - break; - case meta_type::date: - { - auto dt = as_date(); - result = util::string_format("%04d-%02d-%02d %02d:%02d:%02d", - dt.year, dt.month, dt.day_of_month, - dt.hour, dt.minute, dt.second); - } - break; - default: - throw false; - } + std::visit( + overloaded{ + [&result] (const std::string &val) { result = val; }, + [&result] (std::uint64_t val) { result = util::string_format("0x%x", val); }, + [&result] (bool val) { result = val ? "t" : "f"; }, + [&result] (const util::arbitrary_datetime &val) + { + result = util::string_format("%04d-%02d-%02d %02d:%02d:%02d", + val.year, val.month, val.day_of_month, + val.hour, val.minute, val.second); + } }, + value); return result; } |