27 date()
noexcept =
default;
32 constexpr date(Y y, M m, D d)
noexcept
33 : year{
static_cast<uint16_t
>(y) },
34 month{
static_cast<uint8_t
>(m) },
35 day{
static_cast<uint8_t
>(d) }
40 friend constexpr bool operator==(
const date& lhs,
const date& rhs)
noexcept
42 return lhs.year == rhs.year
43 && lhs.month == rhs.month
44 && lhs.day == rhs.day;
49 friend constexpr bool operator!=(
const date& lhs,
const date& rhs)
noexcept
58 static constexpr uint32_t pack(
const date& d)
noexcept
60 return (
static_cast<uint32_t
>(d.year) << 16) | (
static_cast<uint32_t
>(d.month) << 8)
61 |
static_cast<uint32_t
>(d.day);
69 friend constexpr bool operator<(
const date& lhs,
const date& rhs)
noexcept
71 return pack(lhs) < pack(rhs);
76 friend constexpr bool operator<=(
const date& lhs,
const date& rhs)
noexcept
78 return pack(lhs) <= pack(rhs);
83 friend constexpr bool operator>(
const date& lhs,
const date& rhs)
noexcept
85 return pack(lhs) > pack(rhs);
90 friend constexpr bool operator>=(
const date& lhs,
const date& rhs)
noexcept
92 return pack(lhs) >= pack(rhs);
104 friend std::ostream&
operator<<(std::ostream& lhs,
const date& rhs)
106 impl::print_to_stream(lhs, rhs);
134 typename S = uint8_t,
135 typename NS = uint32_t)
137 constexpr
time(H h, M m, S s = S{}, NS ns = NS{})
noexcept
138 : hour{ static_cast<uint8_t>(h) },
139 minute{ static_cast<uint8_t>(m) },
140 second{ static_cast<uint8_t>(s) },
141 nanosecond{ static_cast<uint32_t>(ns) }
148 return lhs.hour == rhs.hour
149 && lhs.minute == rhs.minute
150 && lhs.second == rhs.second
151 && lhs.nanosecond == rhs.nanosecond;
158 return !(lhs == rhs);
165 static constexpr uint64_t pack(
const time& t)
noexcept
167 return static_cast<uint64_t
>(t.hour) << 48 |
static_cast<uint64_t
>(t.minute) << 40
168 |
static_cast<uint64_t
>(t.second) << 32 |
static_cast<uint64_t
>(t.nanosecond);
178 return pack(lhs) < pack(rhs);
183 friend constexpr bool operator<=(
const time& lhs,
const time& rhs)
noexcept
185 return pack(lhs) <= pack(rhs);
190 friend constexpr bool operator>(
const time& lhs,
const time& rhs)
noexcept
192 return pack(lhs) > pack(rhs);
197 friend constexpr bool operator>=(
const time& lhs,
const time& rhs)
noexcept
199 return pack(lhs) >= pack(rhs);
212 friend std::ostream&
operator<<(std::ostream& lhs,
const time& rhs)
214 impl::print_to_stream(lhs, rhs);
253 : minutes{
static_cast<int16_t
>(
static_cast<impl::common_signed_type<H, M>
>(h)
254 * impl::common_signed_type<H, M>{ 60 }
255 +
static_cast<impl::common_signed_type<H, M>
>(m)) }
262 return lhs.minutes == rhs.minutes;
269 return lhs.minutes != rhs.minutes;
276 return lhs.minutes < rhs.minutes;
283 return lhs.minutes <= rhs.minutes;
290 return lhs.minutes > rhs.minutes;
297 return lhs.minutes >= rhs.minutes;
318 impl::print_to_stream(lhs, rhs);
358 explicit constexpr date_time(
const toml::date& d)
noexcept
368 explicit constexpr date_time(
const toml::time& t)
noexcept
380 constexpr date_time(
const toml::date& d,
const toml::time& t,
const toml::time_offset& off) noexcept
390 return !
offset.has_value();
397 return lhs.date == rhs.date
398 && lhs.time == rhs.time
399 && lhs.offset == rhs.offset;
406 return !(lhs == rhs);
413 if (lhs.date != rhs.date)
414 return lhs.date < rhs.date;
415 if (lhs.time != rhs.time)
416 return lhs.time < rhs.time;
417 return lhs.offset < rhs.offset;
424 if (lhs.date != rhs.date)
425 return lhs.date < rhs.date;
426 if (lhs.time != rhs.time)
427 return lhs.time < rhs.time;
428 return lhs.offset <= rhs.offset;
435 return !(lhs <= rhs);
459 impl::print_to_stream(lhs, rhs);
TOML_NAMESPACE_START
Definition date_time.hpp:12
TOML_ABI_NAMESPACE_END
Definition date_time.hpp:464
TOML_NAMESPACE_END
Definition date_time.hpp:466
std::basic_ostream< Char > & operator<<(std::basic_ostream< Char > &lhs, node_type rhs)
Pretty-prints the value of a node_type to a stream.
Definition forward_declarations.hpp:256
#define TOML_HAS_CUSTOM_OPTIONAL_TYPE
Definition preprocessor.hpp:1101
bool operator==(const json_pointer< RefStringTypeLhs > &lhs, const json_pointer< RefStringTypeRhs > &rhs) noexcept
Definition json.h:14737
bool operator!=(const json_pointer< RefStringTypeLhs > &lhs, const json_pointer< RefStringTypeRhs > &rhs) noexcept
Definition json.h:14762
bool operator<(const json_pointer< RefStringTypeLhs > &lhs, const json_pointer< RefStringTypeRhs > &rhs) noexcept
Definition json.h:14787
The root namespace for all toml++ functions and types.
Definition forward_declarations.hpp:199
#define TOML_NODISCARD_CTOR
Definition preprocessor.hpp:446
#define TOML_TRIVIAL_ABI
Definition preprocessor.hpp:430
#define TOML_ABI_NAMESPACE_BOOL(cond, T, F)
Definition preprocessor.hpp:1323
#define TOML_CONSTRAINED_TEMPLATE(condition,...)
Definition preprocessor.hpp:1260
#define TOML_PURE_GETTER
Definition preprocessor.hpp:474
#define TOML_PURE_INLINE_GETTER
Definition preprocessor.hpp:479
A date-time.
Definition date_time.hpp:327
TOML_NODISCARD_CTOR constexpr date_time(const toml::date &d) noexcept
Constructs a local date-time.
Definition date_time.hpp:358
toml::date date
The date component.
Definition date_time.hpp:329
TOML_PURE_INLINE_GETTER friend constexpr bool operator>(const date_time &lhs, const date_time &rhs) noexcept
Greater-than operator.
Definition date_time.hpp:433
TOML_PURE_INLINE_GETTER friend constexpr bool operator!=(const date_time &lhs, const date_time &rhs) noexcept
Inequality operator.
Definition date_time.hpp:404
TOML_PURE_GETTER friend constexpr bool operator==(const date_time &lhs, const date_time &rhs) noexcept
Equality operator.
Definition date_time.hpp:395
toml::time time
The time component.
Definition date_time.hpp:332
TOML_PURE_GETTER friend constexpr bool operator<(const date_time &lhs, const date_time &rhs) noexcept
Less-than operator.
Definition date_time.hpp:411
TOML_PURE_GETTER friend constexpr bool operator<=(const date_time &lhs, const date_time &rhs) noexcept
Less-than-or-equal-to operator.
Definition date_time.hpp:422
TOML_NODISCARD_CTOR date_time() noexcept=default
Default constructor. Does not initialize the members.
TOML_PURE_INLINE_GETTER constexpr bool is_local() const noexcept
Returns true if this date_time does not contain timezone offset information.
Definition date_time.hpp:388
TOML_PURE_INLINE_GETTER friend constexpr bool operator>=(const date_time &lhs, const date_time &rhs) noexcept
Greater-than-or-equal-to operator.
Definition date_time.hpp:440
friend std::ostream & operator<<(std::ostream &lhs, const date_time &rhs)
Prints a date_time out to a stream in RFC 3339 format. \detail \cpp std::cout << toml::date_time{ { 1...
Definition date_time.hpp:457
TOML_NODISCARD_CTOR constexpr date_time(const toml::date &d, const toml::time &t, const toml::time_offset &off) noexcept
Constructs an offset date-time.
Definition date_time.hpp:380
optional< toml::time_offset > offset
The timezone offset component.
Definition date_time.hpp:337
TOML_NODISCARD_CTOR constexpr date_time(const toml::time &t) noexcept
Constructs a local date-time.
Definition date_time.hpp:368
A timezone offset.
Definition date_time.hpp:221
TOML_PURE_INLINE_GETTER friend constexpr bool operator<=(time_offset lhs, time_offset rhs) noexcept
Less-than-or-equal-to operator.
Definition date_time.hpp:281
friend std::ostream & operator<<(std::ostream &lhs, const time_offset &rhs)
Prints a time_offset out to a stream as +-HH:MM or Z (per RFC 3339). \detail \cpp std::cout << toml::...
Definition date_time.hpp:316
TOML_PURE_INLINE_GETTER friend constexpr bool operator>(time_offset lhs, time_offset rhs) noexcept
Greater-than operator.
Definition date_time.hpp:288
TOML_PURE_INLINE_GETTER friend constexpr bool operator<(time_offset lhs, time_offset rhs) noexcept
Less-than operator.
Definition date_time.hpp:274
TOML_PURE_INLINE_GETTER friend constexpr bool operator>=(time_offset lhs, time_offset rhs) noexcept
Greater-than-or-equal-to operator.
Definition date_time.hpp:295
int16_t minutes
Offset from UTC+0, in minutes.
Definition date_time.hpp:223
TOML_PURE_INLINE_GETTER friend constexpr bool operator==(time_offset lhs, time_offset rhs) noexcept
Equality operator.
Definition date_time.hpp:260
TOML_PURE_INLINE_GETTER friend constexpr bool operator!=(time_offset lhs, time_offset rhs) noexcept
Inequality operator.
Definition date_time.hpp:267
TOML_NODISCARD_CTOR time_offset() noexcept=default
Default constructor. Does not initialize the members.
A local time-of-day.
Definition date_time.hpp:113
uint8_t minute
The minute component, from 0 - 59.
Definition date_time.hpp:118
uint32_t nanosecond
The fractional nanoseconds component, from 0 - 999999999.
Definition date_time.hpp:124
uint8_t hour
The hour component, from 0 - 23.
Definition date_time.hpp:115
uint8_t second
The second component, from 0 - 59.
Definition date_time.hpp:121
TOML_NODISCARD_CTOR time() noexcept=default
Default constructor. Does not initialize the members.