8constexpr struct ::timespec& copy(struct ::timespec& timespec,
const class ::time&
time)
11 timespec.tv_sec = (
decltype(timespec.tv_sec))
time.m_iSecond;
12 timespec.tv_nsec = (
decltype(timespec.tv_nsec))
time.m_iNanosecond;
19constexpr struct ::timespec& operator +=(struct ::timespec& timespec1,
const struct ::timespec& timespec2)
22 add_second_nanosecond(timespec1.tv_sec, timespec1.tv_nsec, timespec2.tv_sec, timespec2.tv_nsec);
29constexpr struct ::timespec operator +(
const struct ::timespec& timespec1,
const struct ::timespec& timespec2)
32 timespec timespec = timespec1;
34 add_second_nanosecond(timespec.tv_sec, timespec.tv_nsec, timespec2.tv_sec, timespec2.tv_nsec);
41constexpr struct ::timespec& operator -=(struct ::timespec& timespec1,
const struct ::timespec& timespec2)
44 subtract_second_nanosecond(timespec1.tv_sec, timespec1.tv_nsec, timespec2.tv_sec, timespec2.tv_nsec);
51constexpr struct ::timespec operator -(
const struct ::timespec& timespec1,
const struct ::timespec& timespec2)
54 timespec timespec = timespec1;
56 return timespec -= timespec2;
61constexpr bool operator >(
const struct ::timespec& timespec1,
const struct ::timespec& timespec2)
64 return timespec1.tv_sec > timespec2.tv_sec || (timespec1.tv_sec == timespec2.tv_sec && timespec1.tv_nsec > timespec2.tv_nsec);
69constexpr timespec& normalize(timespec& timespec)
72 timespec.tv_sec += timespec.tv_nsec / 1'000'000'000;
74 timespec.tv_nsec %= 1'000'000'000;
81inline timespec& operator +=(timespec& timespec,
const class time&
time)
84 return timespec += ::timespec
86 .tv_sec = (
decltype(::timespec::tv_sec))
time.m_iSecond,
87 .tv_nsec = (
decltype(::timespec::tv_nsec))
time.m_iNanosecond