qtty-cpp 0.4.5
Header-only C++ wrapper for qtty
Loading...
Searching...
No Matches
mass.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 YoctogramTag {};
11struct ZeptogramTag {};
12struct AttogramTag {};
13struct FemtogramTag {};
14struct PicogramTag {};
15struct NanogramTag {};
16struct MicrogramTag {};
17struct MilligramTag {};
18struct CentigramTag {};
19struct DecigramTag {};
20struct GramTag {};
21struct DecagramTag {};
22struct HectogramTag {};
23struct KilogramTag {};
24struct MegagramTag {};
25struct GigagramTag {};
26struct TeragramTag {};
27struct PetagramTag {};
28struct ExagramTag {};
29struct ZettagramTag {};
30struct YottagramTag {};
31struct GrainTag {};
32struct OunceTag {};
33struct PoundTag {};
34struct StoneTag {};
35struct ShortTonTag {};
36struct LongTonTag {};
37struct CaratTag {};
38struct TonneTag {};
40struct SolarMassTag {};
41
42template <> struct UnitTraits<YoctogramTag> {
43 static constexpr UnitId unit_id() { return UNIT_ID_YOCTOGRAM; }
44 static constexpr std::string_view symbol() { return "yg"; }
45 static constexpr DimensionId dimension() { return DIMENSION_ID_MASS; }
46};
47template <> struct UnitTraits<ZeptogramTag> {
48 static constexpr UnitId unit_id() { return UNIT_ID_ZEPTOGRAM; }
49 static constexpr std::string_view symbol() { return "zg"; }
50 static constexpr DimensionId dimension() { return DIMENSION_ID_MASS; }
51};
52template <> struct UnitTraits<AttogramTag> {
53 static constexpr UnitId unit_id() { return UNIT_ID_ATTOGRAM; }
54 static constexpr std::string_view symbol() { return "ag"; }
55 static constexpr DimensionId dimension() { return DIMENSION_ID_MASS; }
56};
57template <> struct UnitTraits<FemtogramTag> {
58 static constexpr UnitId unit_id() { return UNIT_ID_FEMTOGRAM; }
59 static constexpr std::string_view symbol() { return "fg"; }
60 static constexpr DimensionId dimension() { return DIMENSION_ID_MASS; }
61};
62template <> struct UnitTraits<PicogramTag> {
63 static constexpr UnitId unit_id() { return UNIT_ID_PICOGRAM; }
64 static constexpr std::string_view symbol() { return "pg"; }
65 static constexpr DimensionId dimension() { return DIMENSION_ID_MASS; }
66};
67template <> struct UnitTraits<NanogramTag> {
68 static constexpr UnitId unit_id() { return UNIT_ID_NANOGRAM; }
69 static constexpr std::string_view symbol() { return "ng"; }
70 static constexpr DimensionId dimension() { return DIMENSION_ID_MASS; }
71};
72template <> struct UnitTraits<MicrogramTag> {
73 static constexpr UnitId unit_id() { return UNIT_ID_MICROGRAM; }
74 static constexpr std::string_view symbol() { return "µg"; }
75 static constexpr DimensionId dimension() { return DIMENSION_ID_MASS; }
76};
77template <> struct UnitTraits<MilligramTag> {
78 static constexpr UnitId unit_id() { return UNIT_ID_MILLIGRAM; }
79 static constexpr std::string_view symbol() { return "mg"; }
80 static constexpr DimensionId dimension() { return DIMENSION_ID_MASS; }
81};
82template <> struct UnitTraits<CentigramTag> {
83 static constexpr UnitId unit_id() { return UNIT_ID_CENTIGRAM; }
84 static constexpr std::string_view symbol() { return "cg"; }
85 static constexpr DimensionId dimension() { return DIMENSION_ID_MASS; }
86};
87template <> struct UnitTraits<DecigramTag> {
88 static constexpr UnitId unit_id() { return UNIT_ID_DECIGRAM; }
89 static constexpr std::string_view symbol() { return "dg"; }
90 static constexpr DimensionId dimension() { return DIMENSION_ID_MASS; }
91};
92template <> struct UnitTraits<GramTag> {
93 static constexpr UnitId unit_id() { return UNIT_ID_GRAM; }
94 static constexpr std::string_view symbol() { return "g"; }
95 static constexpr DimensionId dimension() { return DIMENSION_ID_MASS; }
96};
97template <> struct UnitTraits<DecagramTag> {
98 static constexpr UnitId unit_id() { return UNIT_ID_DECAGRAM; }
99 static constexpr std::string_view symbol() { return "dag"; }
100 static constexpr DimensionId dimension() { return DIMENSION_ID_MASS; }
101};
102template <> struct UnitTraits<HectogramTag> {
103 static constexpr UnitId unit_id() { return UNIT_ID_HECTOGRAM; }
104 static constexpr std::string_view symbol() { return "hg"; }
105 static constexpr DimensionId dimension() { return DIMENSION_ID_MASS; }
106};
107template <> struct UnitTraits<KilogramTag> {
108 static constexpr UnitId unit_id() { return UNIT_ID_KILOGRAM; }
109 static constexpr std::string_view symbol() { return "kg"; }
110 static constexpr DimensionId dimension() { return DIMENSION_ID_MASS; }
111};
112template <> struct UnitTraits<MegagramTag> {
113 static constexpr UnitId unit_id() { return UNIT_ID_MEGAGRAM; }
114 static constexpr std::string_view symbol() { return "Mg"; }
115 static constexpr DimensionId dimension() { return DIMENSION_ID_MASS; }
116};
117template <> struct UnitTraits<GigagramTag> {
118 static constexpr UnitId unit_id() { return UNIT_ID_GIGAGRAM; }
119 static constexpr std::string_view symbol() { return "Gg"; }
120 static constexpr DimensionId dimension() { return DIMENSION_ID_MASS; }
121};
122template <> struct UnitTraits<TeragramTag> {
123 static constexpr UnitId unit_id() { return UNIT_ID_TERAGRAM; }
124 static constexpr std::string_view symbol() { return "Tg"; }
125 static constexpr DimensionId dimension() { return DIMENSION_ID_MASS; }
126};
127template <> struct UnitTraits<PetagramTag> {
128 static constexpr UnitId unit_id() { return UNIT_ID_PETAGRAM; }
129 static constexpr std::string_view symbol() { return "Pg"; }
130 static constexpr DimensionId dimension() { return DIMENSION_ID_MASS; }
131};
132template <> struct UnitTraits<ExagramTag> {
133 static constexpr UnitId unit_id() { return UNIT_ID_EXAGRAM; }
134 static constexpr std::string_view symbol() { return "Eg"; }
135 static constexpr DimensionId dimension() { return DIMENSION_ID_MASS; }
136};
137template <> struct UnitTraits<ZettagramTag> {
138 static constexpr UnitId unit_id() { return UNIT_ID_ZETTAGRAM; }
139 static constexpr std::string_view symbol() { return "Zg"; }
140 static constexpr DimensionId dimension() { return DIMENSION_ID_MASS; }
141};
142template <> struct UnitTraits<YottagramTag> {
143 static constexpr UnitId unit_id() { return UNIT_ID_YOTTAGRAM; }
144 static constexpr std::string_view symbol() { return "Yg"; }
145 static constexpr DimensionId dimension() { return DIMENSION_ID_MASS; }
146};
147template <> struct UnitTraits<GrainTag> {
148 static constexpr UnitId unit_id() { return UNIT_ID_GRAIN; }
149 static constexpr std::string_view symbol() { return "gr"; }
150 static constexpr DimensionId dimension() { return DIMENSION_ID_MASS; }
151};
152template <> struct UnitTraits<OunceTag> {
153 static constexpr UnitId unit_id() { return UNIT_ID_OUNCE; }
154 static constexpr std::string_view symbol() { return "oz"; }
155 static constexpr DimensionId dimension() { return DIMENSION_ID_MASS; }
156};
157template <> struct UnitTraits<PoundTag> {
158 static constexpr UnitId unit_id() { return UNIT_ID_POUND; }
159 static constexpr std::string_view symbol() { return "lb"; }
160 static constexpr DimensionId dimension() { return DIMENSION_ID_MASS; }
161};
162template <> struct UnitTraits<StoneTag> {
163 static constexpr UnitId unit_id() { return UNIT_ID_STONE; }
164 static constexpr std::string_view symbol() { return "st"; }
165 static constexpr DimensionId dimension() { return DIMENSION_ID_MASS; }
166};
167template <> struct UnitTraits<ShortTonTag> {
168 static constexpr UnitId unit_id() { return UNIT_ID_SHORT_TON; }
169 static constexpr std::string_view symbol() { return "ton_us"; }
170 static constexpr DimensionId dimension() { return DIMENSION_ID_MASS; }
171};
172template <> struct UnitTraits<LongTonTag> {
173 static constexpr UnitId unit_id() { return UNIT_ID_LONG_TON; }
174 static constexpr std::string_view symbol() { return "ton_uk"; }
175 static constexpr DimensionId dimension() { return DIMENSION_ID_MASS; }
176};
177template <> struct UnitTraits<CaratTag> {
178 static constexpr UnitId unit_id() { return UNIT_ID_CARAT; }
179 static constexpr std::string_view symbol() { return "ct"; }
180 static constexpr DimensionId dimension() { return DIMENSION_ID_MASS; }
181};
182template <> struct UnitTraits<TonneTag> {
183 static constexpr UnitId unit_id() { return UNIT_ID_TONNE; }
184 static constexpr std::string_view symbol() { return "t"; }
185 static constexpr DimensionId dimension() { return DIMENSION_ID_MASS; }
186};
187template <> struct UnitTraits<AtomicMassUnitTag> {
188 static constexpr UnitId unit_id() { return UNIT_ID_ATOMIC_MASS_UNIT; }
189 static constexpr std::string_view symbol() { return "u"; }
190 static constexpr DimensionId dimension() { return DIMENSION_ID_MASS; }
191};
192template <> struct UnitTraits<SolarMassTag> {
193 static constexpr UnitId unit_id() { return UNIT_ID_SOLAR_MASS; }
194 static constexpr std::string_view symbol() { return "M☉"; }
195 static constexpr DimensionId dimension() { return DIMENSION_ID_MASS; }
196};
197
229
230} // namespace qtty
constexpr bool is_angular_v
Definition angles.hpp:49
static constexpr DimensionId dimension()
Definition mass.hpp:190
static constexpr UnitId unit_id()
Definition mass.hpp:188
static constexpr std::string_view symbol()
Definition mass.hpp:189
static constexpr std::string_view symbol()
Definition mass.hpp:54
static constexpr UnitId unit_id()
Definition mass.hpp:53
static constexpr DimensionId dimension()
Definition mass.hpp:55
static constexpr UnitId unit_id()
Definition mass.hpp:178
static constexpr std::string_view symbol()
Definition mass.hpp:179
static constexpr DimensionId dimension()
Definition mass.hpp:180
static constexpr std::string_view symbol()
Definition mass.hpp:84
static constexpr UnitId unit_id()
Definition mass.hpp:83
static constexpr DimensionId dimension()
Definition mass.hpp:85
static constexpr DimensionId dimension()
Definition mass.hpp:100
static constexpr UnitId unit_id()
Definition mass.hpp:98
static constexpr std::string_view symbol()
Definition mass.hpp:99
static constexpr DimensionId dimension()
Definition mass.hpp:90
static constexpr std::string_view symbol()
Definition mass.hpp:89
static constexpr UnitId unit_id()
Definition mass.hpp:88
static constexpr std::string_view symbol()
Definition mass.hpp:134
static constexpr UnitId unit_id()
Definition mass.hpp:133
static constexpr DimensionId dimension()
Definition mass.hpp:135
static constexpr UnitId unit_id()
Definition mass.hpp:58
static constexpr std::string_view symbol()
Definition mass.hpp:59
static constexpr DimensionId dimension()
Definition mass.hpp:60
static constexpr DimensionId dimension()
Definition mass.hpp:120
static constexpr std::string_view symbol()
Definition mass.hpp:119
static constexpr UnitId unit_id()
Definition mass.hpp:118
static constexpr std::string_view symbol()
Definition mass.hpp:149
static constexpr DimensionId dimension()
Definition mass.hpp:150
static constexpr UnitId unit_id()
Definition mass.hpp:148
static constexpr UnitId unit_id()
Definition mass.hpp:93
static constexpr DimensionId dimension()
Definition mass.hpp:95
static constexpr std::string_view symbol()
Definition mass.hpp:94
static constexpr std::string_view symbol()
Definition mass.hpp:104
static constexpr UnitId unit_id()
Definition mass.hpp:103
static constexpr DimensionId dimension()
Definition mass.hpp:105
static constexpr std::string_view symbol()
Definition mass.hpp:109
static constexpr UnitId unit_id()
Definition mass.hpp:108
static constexpr DimensionId dimension()
Definition mass.hpp:110
static constexpr DimensionId dimension()
Definition mass.hpp:175
static constexpr std::string_view symbol()
Definition mass.hpp:174
static constexpr UnitId unit_id()
Definition mass.hpp:173
static constexpr std::string_view symbol()
Definition mass.hpp:114
static constexpr UnitId unit_id()
Definition mass.hpp:113
static constexpr DimensionId dimension()
Definition mass.hpp:115
static constexpr std::string_view symbol()
Definition mass.hpp:74
static constexpr UnitId unit_id()
Definition mass.hpp:73
static constexpr DimensionId dimension()
Definition mass.hpp:75
static constexpr std::string_view symbol()
Definition mass.hpp:79
static constexpr DimensionId dimension()
Definition mass.hpp:80
static constexpr UnitId unit_id()
Definition mass.hpp:78
static constexpr UnitId unit_id()
Definition mass.hpp:68
static constexpr DimensionId dimension()
Definition mass.hpp:70
static constexpr std::string_view symbol()
Definition mass.hpp:69
static constexpr UnitId unit_id()
Definition mass.hpp:153
static constexpr std::string_view symbol()
Definition mass.hpp:154
static constexpr DimensionId dimension()
Definition mass.hpp:155
static constexpr std::string_view symbol()
Definition mass.hpp:129
static constexpr UnitId unit_id()
Definition mass.hpp:128
static constexpr DimensionId dimension()
Definition mass.hpp:130
static constexpr UnitId unit_id()
Definition mass.hpp:63
static constexpr DimensionId dimension()
Definition mass.hpp:65
static constexpr std::string_view symbol()
Definition mass.hpp:64
static constexpr UnitId unit_id()
Definition mass.hpp:158
static constexpr std::string_view symbol()
Definition mass.hpp:159
static constexpr DimensionId dimension()
Definition mass.hpp:160
static constexpr std::string_view symbol()
Definition mass.hpp:169
static constexpr DimensionId dimension()
Definition mass.hpp:170
static constexpr UnitId unit_id()
Definition mass.hpp:168
static constexpr UnitId unit_id()
Definition mass.hpp:193
static constexpr DimensionId dimension()
Definition mass.hpp:195
static constexpr std::string_view symbol()
Definition mass.hpp:194
static constexpr std::string_view symbol()
Definition mass.hpp:164
static constexpr UnitId unit_id()
Definition mass.hpp:163
static constexpr DimensionId dimension()
Definition mass.hpp:165
static constexpr UnitId unit_id()
Definition mass.hpp:123
static constexpr std::string_view symbol()
Definition mass.hpp:124
static constexpr DimensionId dimension()
Definition mass.hpp:125
static constexpr std::string_view symbol()
Definition mass.hpp:184
static constexpr UnitId unit_id()
Definition mass.hpp:183
static constexpr DimensionId dimension()
Definition mass.hpp:185
static constexpr UnitId unit_id()
Definition mass.hpp:43
static constexpr std::string_view symbol()
Definition mass.hpp:44
static constexpr DimensionId dimension()
Definition mass.hpp:45
static constexpr DimensionId dimension()
Definition mass.hpp:145
static constexpr UnitId unit_id()
Definition mass.hpp:143
static constexpr std::string_view symbol()
Definition mass.hpp:144
static constexpr std::string_view symbol()
Definition mass.hpp:49
static constexpr UnitId unit_id()
Definition mass.hpp:48
static constexpr DimensionId dimension()
Definition mass.hpp:50
static constexpr std::string_view symbol()
Definition mass.hpp:139
static constexpr UnitId unit_id()
Definition mass.hpp:138
static constexpr DimensionId dimension()
Definition mass.hpp:140