ECSTASY
All in the name
Loading...
Searching...
No Matches
TomlConversion.cpp
Go to the documentation of this file.
1
11
12#include "TomlConversion.hpp"
13
14namespace util::serialization
15{
17 {
18 return toml::date(static_cast<int>(date.year()), static_cast<unsigned int>(date.month()),
19 static_cast<unsigned int>(date.day()));
20 }
21
23 {
25
26 return toml::time(
27 time.hours().count(), time.minutes().count(), time.seconds().count(), time.subseconds().count());
28 }
29
31 {
32#ifdef _MSC_VER
33 std::chrono::system_clock::time_point t2(
34 std::chrono::duration_cast<std::chrono::microseconds>(dateTime.time_since_epoch()));
35 auto dp = floor<std::chrono::days>(t2);
36
37 return toml::date_time(toToml(INode::Date(dp)), toToml(dateTime - floor<std::chrono::days>(dateTime)));
38
39#else
40 auto dp = floor<std::chrono::days>(dateTime);
41 return toml::date_time(toToml(INode::Date(dp)), toToml(dateTime - dp));
42#endif
43 }
44
46 {
47 return INode::Date(std::chrono::year(date.year), std::chrono::month(date.month), std::chrono::day(date.day));
48 }
49
51 {
52 return INode::Time(std::chrono::duration_cast<std::chrono::nanoseconds>(std::chrono::hours(time.hour))
53 + std::chrono::duration_cast<std::chrono::nanoseconds>(std::chrono::minutes(time.minute))
54 + std::chrono::duration_cast<std::chrono::nanoseconds>(std::chrono::seconds(time.second))
55 + std::chrono::nanoseconds(time.nanosecond));
56 }
57
59 {
60 return INode::DateTime(
61 static_cast<std::chrono::sys_days>(fromToml(dateTime.date)).time_since_epoch() + fromToml(dateTime.time));
62 }
63} // namespace util::serialization
Toml conversion interface.
std::chrono::year_month_day Date
Type::Date underlying type.
Definition INode.hpp:58
std::chrono::nanoseconds Time
Type::Time underlying type.
Definition INode.hpp:61
std::chrono::high_resolution_clock::time_point DateTime
Type::DateTime underlying type.
Definition INode.hpp:64
static toml::date toToml(const INode::Date &date) noexcept
Convert a INode::Date to a toml::date.
static INode::Date fromToml(const toml::date &date) noexcept
Convert a toml::date to a INode::Date.