summaryrefslogtreecommitdiffstatshomepage
path: root/src/lib/formats/fsmeta.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib/formats/fsmeta.cpp')
-rw-r--r--src/lib/formats/fsmeta.cpp53
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;
}