sandbox
Loading...
Searching...
No Matches
time.hpp
1// SPDX-License-Identifier: MIT
2#ifndef LIBSBX_UNITS_TIME_HPP_
3#define LIBSBX_UNITS_TIME_HPP_
4
5#include <libsbx/units/quantity.hpp>
6
7namespace sbx::units {
8
9namespace detail {
10
11struct time_tag { };
12
13} // namespace detail
14
25
26namespace literals {
27
28constexpr auto operator""_y(long double value) -> year {
29 return year{static_cast<year::value_type>(value)};
30}
31
32constexpr auto operator""_y(unsigned long long value) -> year {
33 return year{static_cast<year::value_type>(value)};
34}
35
36constexpr auto operator""_mo(long double value) -> month {
37 return month{static_cast<month::value_type>(value)};
38}
39
40constexpr auto operator""_mo(unsigned long long value) -> month {
41 return month{static_cast<month::value_type>(value)};
42}
43
44constexpr auto operator""_w(long double value) -> week {
45 return week{static_cast<week::value_type>(value)};
46}
47
48constexpr auto operator""_w(unsigned long long value) -> week {
49 return week{static_cast<week::value_type>(value)};
50}
51
52constexpr auto operator""_d(long double value) -> day {
53 return day{static_cast<day::value_type>(value)};
54}
55
56constexpr auto operator""_d(unsigned long long value) -> day {
57 return day{static_cast<day::value_type>(value)};
58}
59
60constexpr auto operator""_h(long double value) -> hour {
61 return hour{static_cast<hour::value_type>(value)};
62}
63
64constexpr auto operator""_h(unsigned long long value) -> hour {
65 return hour{static_cast<hour::value_type>(value)};
66}
67
68constexpr auto operator""_min(long double value) -> minute {
69 return minute{static_cast<minute::value_type>(value)};
70}
71
72constexpr auto operator""_min(unsigned long long value) -> minute {
73 return minute{static_cast<minute::value_type>(value)};
74}
75
76constexpr auto operator""_s(long double value) -> second {
77 return second{static_cast<second::value_type>(value)};
78}
79
80constexpr auto operator""_s(unsigned long long value) -> second {
81 return second{static_cast<second::value_type>(value)};
82}
83
84constexpr auto operator""_ms(long double value) -> millisecond {
85 return millisecond{static_cast<millisecond::value_type>(value)};
86}
87
88constexpr auto operator""_ms(unsigned long long value) -> millisecond {
89 return millisecond{static_cast<millisecond::value_type>(value)};
90}
91
92constexpr auto operator""_us(long double value) -> microsecond {
93 return microsecond{static_cast<microsecond::value_type>(value)};
94}
95
96constexpr auto operator""_us(unsigned long long value) -> microsecond {
97 return microsecond{static_cast<microsecond::value_type>(value)};
98}
99
100constexpr auto operator""_ns(long double value) -> nanosecond {
101 return nanosecond{static_cast<nanosecond::value_type>(value)};
102}
103
104constexpr auto operator""_ns(unsigned long long value) -> nanosecond {
105 return nanosecond{static_cast<nanosecond::value_type>(value)};
106}
107
108};
109
110} // namespace sbx::units
111
112#endif // LIBSBX_UNITS_TIME_HPP_
Definition: quantity.hpp:66
Definition: time.hpp:11