diff options
author | 2022-04-30 05:25:09 +0200 | |
---|---|---|
committer | 2022-04-30 05:25:09 +0200 | |
commit | 0bd01cf258aac336d7000b836ff9018377ff486d (patch) | |
tree | db98a1962d0aa5ae2732e1f2f886436ec0c85414 /src/lib/formats/fsmeta.cpp | |
parent | f65c56c6c7685d502502ea8cc9d80d0e47ab36bf (diff) | |
parent | f63f1e12ed0b00cf051b4d90db9eb1b782a008af (diff) |
Merge branch 'master' of https://github.com/mamedev/mame
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; } |