qtty-cpp 0.4.5
Header-only C++ wrapper for qtty
Loading...
Searching...
No Matches
time.hpp
Go to the documentation of this file.
1// SPDX-License-Identifier: BSD-3-Clause
2// Copyright (C) 2026 Vallés Puig, Ramon
3
4#pragma once
5
6#include "../ffi_core.hpp"
7
8namespace qtty {
9
10struct AttosecondTag {};
12struct PicosecondTag {};
13struct NanosecondTag {};
17struct DecisecondTag {};
18struct SecondTag {};
19struct DecasecondTag {};
21struct KilosecondTag {};
22struct MegasecondTag {};
23struct GigasecondTag {};
24struct TerasecondTag {};
25struct MinuteTag {};
26struct HourTag {};
27struct DayTag {};
28struct WeekTag {};
29struct FortnightTag {};
30struct YearTag {};
31struct DecadeTag {};
32struct CenturyTag {};
33struct MillenniumTag {};
34struct JulianYearTag {};
39
40template <> struct UnitTraits<AttosecondTag> {
41 static constexpr UnitId unit_id() { return UNIT_ID_ATTOSECOND; }
42 static constexpr std::string_view symbol() { return "as"; }
43 static constexpr DimensionId dimension() { return DIMENSION_ID_TIME; }
44};
45template <> struct UnitTraits<FemtosecondTag> {
46 static constexpr UnitId unit_id() { return UNIT_ID_FEMTOSECOND; }
47 static constexpr std::string_view symbol() { return "fs"; }
48 static constexpr DimensionId dimension() { return DIMENSION_ID_TIME; }
49};
50template <> struct UnitTraits<PicosecondTag> {
51 static constexpr UnitId unit_id() { return UNIT_ID_PICOSECOND; }
52 static constexpr std::string_view symbol() { return "ps"; }
53 static constexpr DimensionId dimension() { return DIMENSION_ID_TIME; }
54};
55template <> struct UnitTraits<NanosecondTag> {
56 static constexpr UnitId unit_id() { return UNIT_ID_NANOSECOND; }
57 static constexpr std::string_view symbol() { return "ns"; }
58 static constexpr DimensionId dimension() { return DIMENSION_ID_TIME; }
59};
60template <> struct UnitTraits<MicrosecondTag> {
61 static constexpr UnitId unit_id() { return UNIT_ID_MICROSECOND; }
62 static constexpr std::string_view symbol() { return "µs"; }
63 static constexpr DimensionId dimension() { return DIMENSION_ID_TIME; }
64};
65template <> struct UnitTraits<MillisecondTag> {
66 static constexpr UnitId unit_id() { return UNIT_ID_MILLISECOND; }
67 static constexpr std::string_view symbol() { return "ms"; }
68 static constexpr DimensionId dimension() { return DIMENSION_ID_TIME; }
69};
70template <> struct UnitTraits<CentisecondTag> {
71 static constexpr UnitId unit_id() { return UNIT_ID_CENTISECOND; }
72 static constexpr std::string_view symbol() { return "cs"; }
73 static constexpr DimensionId dimension() { return DIMENSION_ID_TIME; }
74};
75template <> struct UnitTraits<DecisecondTag> {
76 static constexpr UnitId unit_id() { return UNIT_ID_DECISECOND; }
77 static constexpr std::string_view symbol() { return "ds"; }
78 static constexpr DimensionId dimension() { return DIMENSION_ID_TIME; }
79};
80template <> struct UnitTraits<SecondTag> {
81 static constexpr UnitId unit_id() { return UNIT_ID_SECOND; }
82 static constexpr std::string_view symbol() { return "s"; }
83 static constexpr DimensionId dimension() { return DIMENSION_ID_TIME; }
84};
85template <> struct UnitTraits<DecasecondTag> {
86 static constexpr UnitId unit_id() { return UNIT_ID_DECASECOND; }
87 static constexpr std::string_view symbol() { return "das"; }
88 static constexpr DimensionId dimension() { return DIMENSION_ID_TIME; }
89};
90template <> struct UnitTraits<HectosecondTag> {
91 static constexpr UnitId unit_id() { return UNIT_ID_HECTOSECOND; }
92 static constexpr std::string_view symbol() { return "hs"; }
93 static constexpr DimensionId dimension() { return DIMENSION_ID_TIME; }
94};
95template <> struct UnitTraits<KilosecondTag> {
96 static constexpr UnitId unit_id() { return UNIT_ID_KILOSECOND; }
97 static constexpr std::string_view symbol() { return "ks"; }
98 static constexpr DimensionId dimension() { return DIMENSION_ID_TIME; }
99};
100template <> struct UnitTraits<MegasecondTag> {
101 static constexpr UnitId unit_id() { return UNIT_ID_MEGASECOND; }
102 static constexpr std::string_view symbol() { return "Ms"; }
103 static constexpr DimensionId dimension() { return DIMENSION_ID_TIME; }
104};
105template <> struct UnitTraits<GigasecondTag> {
106 static constexpr UnitId unit_id() { return UNIT_ID_GIGASECOND; }
107 static constexpr std::string_view symbol() { return "Gs"; }
108 static constexpr DimensionId dimension() { return DIMENSION_ID_TIME; }
109};
110template <> struct UnitTraits<TerasecondTag> {
111 static constexpr UnitId unit_id() { return UNIT_ID_TERASECOND; }
112 static constexpr std::string_view symbol() { return "Ts"; }
113 static constexpr DimensionId dimension() { return DIMENSION_ID_TIME; }
114};
115template <> struct UnitTraits<MinuteTag> {
116 static constexpr UnitId unit_id() { return UNIT_ID_MINUTE; }
117 static constexpr std::string_view symbol() { return "min"; }
118 static constexpr DimensionId dimension() { return DIMENSION_ID_TIME; }
119};
120template <> struct UnitTraits<HourTag> {
121 static constexpr UnitId unit_id() { return UNIT_ID_HOUR; }
122 static constexpr std::string_view symbol() { return "h"; }
123 static constexpr DimensionId dimension() { return DIMENSION_ID_TIME; }
124};
125template <> struct UnitTraits<DayTag> {
126 static constexpr UnitId unit_id() { return UNIT_ID_DAY; }
127 static constexpr std::string_view symbol() { return "d"; }
128 static constexpr DimensionId dimension() { return DIMENSION_ID_TIME; }
129};
130template <> struct UnitTraits<WeekTag> {
131 static constexpr UnitId unit_id() { return UNIT_ID_WEEK; }
132 static constexpr std::string_view symbol() { return "wk"; }
133 static constexpr DimensionId dimension() { return DIMENSION_ID_TIME; }
134};
135template <> struct UnitTraits<FortnightTag> {
136 static constexpr UnitId unit_id() { return UNIT_ID_FORTNIGHT; }
137 static constexpr std::string_view symbol() { return "fn"; }
138 static constexpr DimensionId dimension() { return DIMENSION_ID_TIME; }
139};
140template <> struct UnitTraits<YearTag> {
141 static constexpr UnitId unit_id() { return UNIT_ID_YEAR; }
142 static constexpr std::string_view symbol() { return "yr"; }
143 static constexpr DimensionId dimension() { return DIMENSION_ID_TIME; }
144};
145template <> struct UnitTraits<DecadeTag> {
146 static constexpr UnitId unit_id() { return UNIT_ID_DECADE; }
147 static constexpr std::string_view symbol() { return "dec"; }
148 static constexpr DimensionId dimension() { return DIMENSION_ID_TIME; }
149};
150template <> struct UnitTraits<CenturyTag> {
151 static constexpr UnitId unit_id() { return UNIT_ID_CENTURY; }
152 static constexpr std::string_view symbol() { return "c"; }
153 static constexpr DimensionId dimension() { return DIMENSION_ID_TIME; }
154};
155template <> struct UnitTraits<MillenniumTag> {
156 static constexpr UnitId unit_id() { return UNIT_ID_MILLENNIUM; }
157 static constexpr std::string_view symbol() { return "mill"; }
158 static constexpr DimensionId dimension() { return DIMENSION_ID_TIME; }
159};
160template <> struct UnitTraits<JulianYearTag> {
161 static constexpr UnitId unit_id() { return UNIT_ID_JULIAN_YEAR; }
162 static constexpr std::string_view symbol() { return "a"; }
163 static constexpr DimensionId dimension() { return DIMENSION_ID_TIME; }
164};
165template <> struct UnitTraits<JulianCenturyTag> {
166 static constexpr UnitId unit_id() { return UNIT_ID_JULIAN_CENTURY; }
167 static constexpr std::string_view symbol() { return "JC"; }
168 static constexpr DimensionId dimension() { return DIMENSION_ID_TIME; }
169};
170template <> struct UnitTraits<SiderealDayTag> {
171 static constexpr UnitId unit_id() { return UNIT_ID_SIDEREAL_DAY; }
172 static constexpr std::string_view symbol() { return "sd"; }
173 static constexpr DimensionId dimension() { return DIMENSION_ID_TIME; }
174};
175template <> struct UnitTraits<SynodicMonthTag> {
176 static constexpr UnitId unit_id() { return UNIT_ID_SYNODIC_MONTH; }
177 static constexpr std::string_view symbol() { return "synmo"; }
178 static constexpr DimensionId dimension() { return DIMENSION_ID_TIME; }
179};
180template <> struct UnitTraits<SiderealYearTag> {
181 static constexpr UnitId unit_id() { return UNIT_ID_SIDEREAL_YEAR; }
182 static constexpr std::string_view symbol() { return "syr"; }
183 static constexpr DimensionId dimension() { return DIMENSION_ID_TIME; }
184};
185
215
216} // namespace qtty
constexpr bool is_angular_v
Definition angles.hpp:49
static constexpr DimensionId dimension()
Definition time.hpp:43
static constexpr UnitId unit_id()
Definition time.hpp:41
static constexpr std::string_view symbol()
Definition time.hpp:42
static constexpr UnitId unit_id()
Definition time.hpp:71
static constexpr std::string_view symbol()
Definition time.hpp:72
static constexpr DimensionId dimension()
Definition time.hpp:73
static constexpr DimensionId dimension()
Definition time.hpp:153
static constexpr std::string_view symbol()
Definition time.hpp:152
static constexpr UnitId unit_id()
Definition time.hpp:151
static constexpr std::string_view symbol()
Definition time.hpp:127
static constexpr DimensionId dimension()
Definition time.hpp:128
static constexpr UnitId unit_id()
Definition time.hpp:126
static constexpr DimensionId dimension()
Definition time.hpp:148
static constexpr std::string_view symbol()
Definition time.hpp:147
static constexpr UnitId unit_id()
Definition time.hpp:146
static constexpr UnitId unit_id()
Definition time.hpp:86
static constexpr std::string_view symbol()
Definition time.hpp:87
static constexpr DimensionId dimension()
Definition time.hpp:88
static constexpr DimensionId dimension()
Definition time.hpp:78
static constexpr std::string_view symbol()
Definition time.hpp:77
static constexpr UnitId unit_id()
Definition time.hpp:76
static constexpr std::string_view symbol()
Definition time.hpp:47
static constexpr DimensionId dimension()
Definition time.hpp:48
static constexpr UnitId unit_id()
Definition time.hpp:46
static constexpr DimensionId dimension()
Definition time.hpp:138
static constexpr UnitId unit_id()
Definition time.hpp:136
static constexpr std::string_view symbol()
Definition time.hpp:137
static constexpr UnitId unit_id()
Definition time.hpp:106
static constexpr DimensionId dimension()
Definition time.hpp:108
static constexpr std::string_view symbol()
Definition time.hpp:107
static constexpr DimensionId dimension()
Definition time.hpp:93
static constexpr std::string_view symbol()
Definition time.hpp:92
static constexpr UnitId unit_id()
Definition time.hpp:91
static constexpr UnitId unit_id()
Definition time.hpp:121
static constexpr DimensionId dimension()
Definition time.hpp:123
static constexpr std::string_view symbol()
Definition time.hpp:122
static constexpr DimensionId dimension()
Definition time.hpp:168
static constexpr std::string_view symbol()
Definition time.hpp:167
static constexpr UnitId unit_id()
Definition time.hpp:166
static constexpr UnitId unit_id()
Definition time.hpp:161
static constexpr DimensionId dimension()
Definition time.hpp:163
static constexpr std::string_view symbol()
Definition time.hpp:162
static constexpr DimensionId dimension()
Definition time.hpp:98
static constexpr UnitId unit_id()
Definition time.hpp:96
static constexpr std::string_view symbol()
Definition time.hpp:97
static constexpr DimensionId dimension()
Definition time.hpp:103
static constexpr std::string_view symbol()
Definition time.hpp:102
static constexpr UnitId unit_id()
Definition time.hpp:101
static constexpr UnitId unit_id()
Definition time.hpp:61
static constexpr std::string_view symbol()
Definition time.hpp:62
static constexpr DimensionId dimension()
Definition time.hpp:63
static constexpr UnitId unit_id()
Definition time.hpp:156
static constexpr std::string_view symbol()
Definition time.hpp:157
static constexpr DimensionId dimension()
Definition time.hpp:158
static constexpr UnitId unit_id()
Definition time.hpp:66
static constexpr std::string_view symbol()
Definition time.hpp:67
static constexpr DimensionId dimension()
Definition time.hpp:68
static constexpr std::string_view symbol()
Definition time.hpp:117
static constexpr UnitId unit_id()
Definition time.hpp:116
static constexpr DimensionId dimension()
Definition time.hpp:118
static constexpr DimensionId dimension()
Definition time.hpp:58
static constexpr UnitId unit_id()
Definition time.hpp:56
static constexpr std::string_view symbol()
Definition time.hpp:57
static constexpr DimensionId dimension()
Definition time.hpp:53
static constexpr UnitId unit_id()
Definition time.hpp:51
static constexpr std::string_view symbol()
Definition time.hpp:52
static constexpr DimensionId dimension()
Definition time.hpp:83
static constexpr std::string_view symbol()
Definition time.hpp:82
static constexpr UnitId unit_id()
Definition time.hpp:81
static constexpr DimensionId dimension()
Definition time.hpp:173
static constexpr std::string_view symbol()
Definition time.hpp:172
static constexpr UnitId unit_id()
Definition time.hpp:171
static constexpr UnitId unit_id()
Definition time.hpp:181
static constexpr DimensionId dimension()
Definition time.hpp:183
static constexpr std::string_view symbol()
Definition time.hpp:182
static constexpr DimensionId dimension()
Definition time.hpp:178
static constexpr std::string_view symbol()
Definition time.hpp:177
static constexpr UnitId unit_id()
Definition time.hpp:176
static constexpr std::string_view symbol()
Definition time.hpp:112
static constexpr DimensionId dimension()
Definition time.hpp:113
static constexpr UnitId unit_id()
Definition time.hpp:111
static constexpr DimensionId dimension()
Definition time.hpp:133
static constexpr std::string_view symbol()
Definition time.hpp:132
static constexpr UnitId unit_id()
Definition time.hpp:131
static constexpr DimensionId dimension()
Definition time.hpp:143
static constexpr std::string_view symbol()
Definition time.hpp:142
static constexpr UnitId unit_id()
Definition time.hpp:141