qtty-cpp 0.4.5
Header-only C++ wrapper for qtty
Loading...
Searching...
No Matches
power.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 YoctowattTag {};
11struct ZeptowattTag {};
12struct AttowattTag {};
13struct FemtowattTag {};
14struct PicowattTag {};
15struct NanowattTag {};
16struct MicrowattTag {};
17struct MilliwattTag {};
18struct DeciwattTag {};
19struct WattTag {};
20struct DecawattTag {};
21struct HectowattTag {};
22struct KilowattTag {};
23struct MegawattTag {};
24struct GigawattTag {};
25struct TerawattTag {};
26struct PetawattTag {};
27struct ExawattTag {};
28struct ZettawattTag {};
29struct YottawattTag {};
34
35template <> struct UnitTraits<YoctowattTag> {
36 static constexpr UnitId unit_id() { return UNIT_ID_YOCTOWATT; }
37 static constexpr std::string_view symbol() { return "yW"; }
38 static constexpr DimensionId dimension() { return DIMENSION_ID_POWER; }
39};
40template <> struct UnitTraits<ZeptowattTag> {
41 static constexpr UnitId unit_id() { return UNIT_ID_ZEPTOWATT; }
42 static constexpr std::string_view symbol() { return "zW"; }
43 static constexpr DimensionId dimension() { return DIMENSION_ID_POWER; }
44};
45template <> struct UnitTraits<AttowattTag> {
46 static constexpr UnitId unit_id() { return UNIT_ID_ATTOWATT; }
47 static constexpr std::string_view symbol() { return "aW"; }
48 static constexpr DimensionId dimension() { return DIMENSION_ID_POWER; }
49};
50template <> struct UnitTraits<FemtowattTag> {
51 static constexpr UnitId unit_id() { return UNIT_ID_FEMTOWATT; }
52 static constexpr std::string_view symbol() { return "fW"; }
53 static constexpr DimensionId dimension() { return DIMENSION_ID_POWER; }
54};
55template <> struct UnitTraits<PicowattTag> {
56 static constexpr UnitId unit_id() { return UNIT_ID_PICOWATT; }
57 static constexpr std::string_view symbol() { return "pW"; }
58 static constexpr DimensionId dimension() { return DIMENSION_ID_POWER; }
59};
60template <> struct UnitTraits<NanowattTag> {
61 static constexpr UnitId unit_id() { return UNIT_ID_NANOWATT; }
62 static constexpr std::string_view symbol() { return "nW"; }
63 static constexpr DimensionId dimension() { return DIMENSION_ID_POWER; }
64};
65template <> struct UnitTraits<MicrowattTag> {
66 static constexpr UnitId unit_id() { return UNIT_ID_MICROWATT; }
67 static constexpr std::string_view symbol() { return "µW"; }
68 static constexpr DimensionId dimension() { return DIMENSION_ID_POWER; }
69};
70template <> struct UnitTraits<MilliwattTag> {
71 static constexpr UnitId unit_id() { return UNIT_ID_MILLIWATT; }
72 static constexpr std::string_view symbol() { return "mW"; }
73 static constexpr DimensionId dimension() { return DIMENSION_ID_POWER; }
74};
75template <> struct UnitTraits<DeciwattTag> {
76 static constexpr UnitId unit_id() { return UNIT_ID_DECIWATT; }
77 static constexpr std::string_view symbol() { return "dW"; }
78 static constexpr DimensionId dimension() { return DIMENSION_ID_POWER; }
79};
80template <> struct UnitTraits<WattTag> {
81 static constexpr UnitId unit_id() { return UNIT_ID_WATT; }
82 static constexpr std::string_view symbol() { return "W"; }
83 static constexpr DimensionId dimension() { return DIMENSION_ID_POWER; }
84};
85template <> struct UnitTraits<DecawattTag> {
86 static constexpr UnitId unit_id() { return UNIT_ID_DECAWATT; }
87 static constexpr std::string_view symbol() { return "daW"; }
88 static constexpr DimensionId dimension() { return DIMENSION_ID_POWER; }
89};
90template <> struct UnitTraits<HectowattTag> {
91 static constexpr UnitId unit_id() { return UNIT_ID_HECTOWATT; }
92 static constexpr std::string_view symbol() { return "hW"; }
93 static constexpr DimensionId dimension() { return DIMENSION_ID_POWER; }
94};
95template <> struct UnitTraits<KilowattTag> {
96 static constexpr UnitId unit_id() { return UNIT_ID_KILOWATT; }
97 static constexpr std::string_view symbol() { return "kW"; }
98 static constexpr DimensionId dimension() { return DIMENSION_ID_POWER; }
99};
100template <> struct UnitTraits<MegawattTag> {
101 static constexpr UnitId unit_id() { return UNIT_ID_MEGAWATT; }
102 static constexpr std::string_view symbol() { return "MW"; }
103 static constexpr DimensionId dimension() { return DIMENSION_ID_POWER; }
104};
105template <> struct UnitTraits<GigawattTag> {
106 static constexpr UnitId unit_id() { return UNIT_ID_GIGAWATT; }
107 static constexpr std::string_view symbol() { return "GW"; }
108 static constexpr DimensionId dimension() { return DIMENSION_ID_POWER; }
109};
110template <> struct UnitTraits<TerawattTag> {
111 static constexpr UnitId unit_id() { return UNIT_ID_TERAWATT; }
112 static constexpr std::string_view symbol() { return "TW"; }
113 static constexpr DimensionId dimension() { return DIMENSION_ID_POWER; }
114};
115template <> struct UnitTraits<PetawattTag> {
116 static constexpr UnitId unit_id() { return UNIT_ID_PETAWATT; }
117 static constexpr std::string_view symbol() { return "PW"; }
118 static constexpr DimensionId dimension() { return DIMENSION_ID_POWER; }
119};
120template <> struct UnitTraits<ExawattTag> {
121 static constexpr UnitId unit_id() { return UNIT_ID_EXAWATT; }
122 static constexpr std::string_view symbol() { return "EW"; }
123 static constexpr DimensionId dimension() { return DIMENSION_ID_POWER; }
124};
125template <> struct UnitTraits<ZettawattTag> {
126 static constexpr UnitId unit_id() { return UNIT_ID_ZETTAWATT; }
127 static constexpr std::string_view symbol() { return "ZW"; }
128 static constexpr DimensionId dimension() { return DIMENSION_ID_POWER; }
129};
130template <> struct UnitTraits<YottawattTag> {
131 static constexpr UnitId unit_id() { return UNIT_ID_YOTTAWATT; }
132 static constexpr std::string_view symbol() { return "YW"; }
133 static constexpr DimensionId dimension() { return DIMENSION_ID_POWER; }
134};
135template <> struct UnitTraits<ErgPerSecondTag> {
136 static constexpr UnitId unit_id() { return UNIT_ID_ERG_PER_SECOND; }
137 static constexpr std::string_view symbol() { return "erg/s"; }
138 static constexpr DimensionId dimension() { return DIMENSION_ID_POWER; }
139};
140template <> struct UnitTraits<HorsepowerMetricTag> {
141 static constexpr UnitId unit_id() { return UNIT_ID_HORSEPOWER_METRIC; }
142 static constexpr std::string_view symbol() { return "PS"; }
143 static constexpr DimensionId dimension() { return DIMENSION_ID_POWER; }
144};
146 static constexpr UnitId unit_id() { return UNIT_ID_HORSEPOWER_ELECTRIC; }
147 static constexpr std::string_view symbol() { return "hp_e"; }
148 static constexpr DimensionId dimension() { return DIMENSION_ID_POWER; }
149};
150template <> struct UnitTraits<SolarLuminosityTag> {
151 static constexpr UnitId unit_id() { return UNIT_ID_SOLAR_LUMINOSITY; }
152 static constexpr std::string_view symbol() { return "L☉"; }
153 static constexpr DimensionId dimension() { return DIMENSION_ID_POWER; }
154};
155
180
181} // namespace qtty
constexpr bool is_angular_v
Definition angles.hpp:49
static constexpr std::string_view symbol()
Definition power.hpp:47
static constexpr DimensionId dimension()
Definition power.hpp:48
static constexpr UnitId unit_id()
Definition power.hpp:46
static constexpr std::string_view symbol()
Definition power.hpp:87
static constexpr DimensionId dimension()
Definition power.hpp:88
static constexpr UnitId unit_id()
Definition power.hpp:86
static constexpr DimensionId dimension()
Definition power.hpp:78
static constexpr std::string_view symbol()
Definition power.hpp:77
static constexpr UnitId unit_id()
Definition power.hpp:76
static constexpr std::string_view symbol()
Definition power.hpp:137
static constexpr DimensionId dimension()
Definition power.hpp:138
static constexpr UnitId unit_id()
Definition power.hpp:136
static constexpr UnitId unit_id()
Definition power.hpp:121
static constexpr DimensionId dimension()
Definition power.hpp:123
static constexpr std::string_view symbol()
Definition power.hpp:122
static constexpr UnitId unit_id()
Definition power.hpp:51
static constexpr DimensionId dimension()
Definition power.hpp:53
static constexpr std::string_view symbol()
Definition power.hpp:52
static constexpr std::string_view symbol()
Definition power.hpp:107
static constexpr DimensionId dimension()
Definition power.hpp:108
static constexpr UnitId unit_id()
Definition power.hpp:106
static constexpr std::string_view symbol()
Definition power.hpp:92
static constexpr DimensionId dimension()
Definition power.hpp:93
static constexpr UnitId unit_id()
Definition power.hpp:91
static constexpr std::string_view symbol()
Definition power.hpp:147
static constexpr DimensionId dimension()
Definition power.hpp:148
static constexpr UnitId unit_id()
Definition power.hpp:146
static constexpr UnitId unit_id()
Definition power.hpp:141
static constexpr DimensionId dimension()
Definition power.hpp:143
static constexpr std::string_view symbol()
Definition power.hpp:142
static constexpr std::string_view symbol()
Definition power.hpp:97
static constexpr UnitId unit_id()
Definition power.hpp:96
static constexpr DimensionId dimension()
Definition power.hpp:98
static constexpr UnitId unit_id()
Definition power.hpp:101
static constexpr std::string_view symbol()
Definition power.hpp:102
static constexpr DimensionId dimension()
Definition power.hpp:103
static constexpr DimensionId dimension()
Definition power.hpp:68
static constexpr std::string_view symbol()
Definition power.hpp:67
static constexpr UnitId unit_id()
Definition power.hpp:66
static constexpr UnitId unit_id()
Definition power.hpp:71
static constexpr std::string_view symbol()
Definition power.hpp:72
static constexpr DimensionId dimension()
Definition power.hpp:73
static constexpr std::string_view symbol()
Definition power.hpp:62
static constexpr DimensionId dimension()
Definition power.hpp:63
static constexpr UnitId unit_id()
Definition power.hpp:61
static constexpr DimensionId dimension()
Definition power.hpp:118
static constexpr UnitId unit_id()
Definition power.hpp:116
static constexpr std::string_view symbol()
Definition power.hpp:117
static constexpr DimensionId dimension()
Definition power.hpp:58
static constexpr std::string_view symbol()
Definition power.hpp:57
static constexpr UnitId unit_id()
Definition power.hpp:56
static constexpr DimensionId dimension()
Definition power.hpp:153
static constexpr UnitId unit_id()
Definition power.hpp:151
static constexpr std::string_view symbol()
Definition power.hpp:152
static constexpr DimensionId dimension()
Definition power.hpp:113
static constexpr UnitId unit_id()
Definition power.hpp:111
static constexpr std::string_view symbol()
Definition power.hpp:112
static constexpr std::string_view symbol()
Definition power.hpp:82
static constexpr DimensionId dimension()
Definition power.hpp:83
static constexpr UnitId unit_id()
Definition power.hpp:81
static constexpr UnitId unit_id()
Definition power.hpp:36
static constexpr std::string_view symbol()
Definition power.hpp:37
static constexpr DimensionId dimension()
Definition power.hpp:38
static constexpr std::string_view symbol()
Definition power.hpp:132
static constexpr UnitId unit_id()
Definition power.hpp:131
static constexpr DimensionId dimension()
Definition power.hpp:133
static constexpr DimensionId dimension()
Definition power.hpp:43
static constexpr UnitId unit_id()
Definition power.hpp:41
static constexpr std::string_view symbol()
Definition power.hpp:42
static constexpr DimensionId dimension()
Definition power.hpp:128
static constexpr UnitId unit_id()
Definition power.hpp:126
static constexpr std::string_view symbol()
Definition power.hpp:127