qtty-cpp 0.4.5
Header-only C++ wrapper for qtty
Loading...
Searching...
No Matches
energy.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 JouleTag {};
11struct PicojouleTag {};
12struct NanojouleTag {};
13struct MicrojouleTag {};
14struct MillijouleTag {};
15struct KilojouleTag {};
16struct MegajouleTag {};
17struct GigajouleTag {};
18struct TerajouleTag {};
19struct WattHourTag {};
21struct ErgTag {};
25struct CalorieTag {};
28struct ThermTag {};
29
30template <> struct UnitTraits<JouleTag> {
31 static constexpr UnitId unit_id() { return UNIT_ID_JOULE; }
32 static constexpr std::string_view symbol() { return "J"; }
33 static constexpr DimensionId dimension() { return DIMENSION_ID_ENERGY; }
34};
35template <> struct UnitTraits<PicojouleTag> {
36 static constexpr UnitId unit_id() { return UNIT_ID_PICOJOULE; }
37 static constexpr std::string_view symbol() { return "pJ"; }
38 static constexpr DimensionId dimension() { return DIMENSION_ID_ENERGY; }
39};
40template <> struct UnitTraits<NanojouleTag> {
41 static constexpr UnitId unit_id() { return UNIT_ID_NANOJOULE; }
42 static constexpr std::string_view symbol() { return "nJ"; }
43 static constexpr DimensionId dimension() { return DIMENSION_ID_ENERGY; }
44};
45template <> struct UnitTraits<MicrojouleTag> {
46 static constexpr UnitId unit_id() { return UNIT_ID_MICROJOULE; }
47 static constexpr std::string_view symbol() { return "µJ"; }
48 static constexpr DimensionId dimension() { return DIMENSION_ID_ENERGY; }
49};
50template <> struct UnitTraits<MillijouleTag> {
51 static constexpr UnitId unit_id() { return UNIT_ID_MILLIJOULE; }
52 static constexpr std::string_view symbol() { return "mJ"; }
53 static constexpr DimensionId dimension() { return DIMENSION_ID_ENERGY; }
54};
55template <> struct UnitTraits<KilojouleTag> {
56 static constexpr UnitId unit_id() { return UNIT_ID_KILOJOULE; }
57 static constexpr std::string_view symbol() { return "kJ"; }
58 static constexpr DimensionId dimension() { return DIMENSION_ID_ENERGY; }
59};
60template <> struct UnitTraits<MegajouleTag> {
61 static constexpr UnitId unit_id() { return UNIT_ID_MEGAJOULE; }
62 static constexpr std::string_view symbol() { return "MJ"; }
63 static constexpr DimensionId dimension() { return DIMENSION_ID_ENERGY; }
64};
65template <> struct UnitTraits<GigajouleTag> {
66 static constexpr UnitId unit_id() { return UNIT_ID_GIGAJOULE; }
67 static constexpr std::string_view symbol() { return "GJ"; }
68 static constexpr DimensionId dimension() { return DIMENSION_ID_ENERGY; }
69};
70template <> struct UnitTraits<TerajouleTag> {
71 static constexpr UnitId unit_id() { return UNIT_ID_TERAJOULE; }
72 static constexpr std::string_view symbol() { return "TJ"; }
73 static constexpr DimensionId dimension() { return DIMENSION_ID_ENERGY; }
74};
75template <> struct UnitTraits<WattHourTag> {
76 static constexpr UnitId unit_id() { return UNIT_ID_WATT_HOUR; }
77 static constexpr std::string_view symbol() { return "Wh"; }
78 static constexpr DimensionId dimension() { return DIMENSION_ID_ENERGY; }
79};
80template <> struct UnitTraits<KilowattHourTag> {
81 static constexpr UnitId unit_id() { return UNIT_ID_KILOWATT_HOUR; }
82 static constexpr std::string_view symbol() { return "kWh"; }
83 static constexpr DimensionId dimension() { return DIMENSION_ID_ENERGY; }
84};
85template <> struct UnitTraits<ErgTag> {
86 static constexpr UnitId unit_id() { return UNIT_ID_ERG; }
87 static constexpr std::string_view symbol() { return "erg"; }
88 static constexpr DimensionId dimension() { return DIMENSION_ID_ENERGY; }
89};
90template <> struct UnitTraits<ElectronvoltTag> {
91 static constexpr UnitId unit_id() { return UNIT_ID_ELECTRONVOLT; }
92 static constexpr std::string_view symbol() { return "eV"; }
93 static constexpr DimensionId dimension() { return DIMENSION_ID_ENERGY; }
94};
95template <> struct UnitTraits<KiloelectronvoltTag> {
96 static constexpr UnitId unit_id() { return UNIT_ID_KILOELECTRONVOLT; }
97 static constexpr std::string_view symbol() { return "keV"; }
98 static constexpr DimensionId dimension() { return DIMENSION_ID_ENERGY; }
99};
100template <> struct UnitTraits<MegaelectronvoltTag> {
101 static constexpr UnitId unit_id() { return UNIT_ID_MEGAELECTRONVOLT; }
102 static constexpr std::string_view symbol() { return "MeV"; }
103 static constexpr DimensionId dimension() { return DIMENSION_ID_ENERGY; }
104};
105template <> struct UnitTraits<CalorieTag> {
106 static constexpr UnitId unit_id() { return UNIT_ID_CALORIE; }
107 static constexpr std::string_view symbol() { return "cal"; }
108 static constexpr DimensionId dimension() { return DIMENSION_ID_ENERGY; }
109};
110template <> struct UnitTraits<KilocalorieTag> {
111 static constexpr UnitId unit_id() { return UNIT_ID_KILOCALORIE; }
112 static constexpr std::string_view symbol() { return "kcal"; }
113 static constexpr DimensionId dimension() { return DIMENSION_ID_ENERGY; }
114};
116 static constexpr UnitId unit_id() { return UNIT_ID_BRITISH_THERMAL_UNIT; }
117 static constexpr std::string_view symbol() { return "BTU"; }
118 static constexpr DimensionId dimension() { return DIMENSION_ID_ENERGY; }
119};
120template <> struct UnitTraits<ThermTag> {
121 static constexpr UnitId unit_id() { return UNIT_ID_THERM; }
122 static constexpr std::string_view symbol() { return "therm"; }
123 static constexpr DimensionId dimension() { return DIMENSION_ID_ENERGY; }
124};
125
145
146} // namespace qtty
constexpr bool is_angular_v
Definition angles.hpp:49
static constexpr UnitId unit_id()
Definition energy.hpp:116
static constexpr DimensionId dimension()
Definition energy.hpp:118
static constexpr std::string_view symbol()
Definition energy.hpp:117
static constexpr DimensionId dimension()
Definition energy.hpp:108
static constexpr UnitId unit_id()
Definition energy.hpp:106
static constexpr std::string_view symbol()
Definition energy.hpp:107
static constexpr DimensionId dimension()
Definition energy.hpp:93
static constexpr std::string_view symbol()
Definition energy.hpp:92
static constexpr UnitId unit_id()
Definition energy.hpp:91
static constexpr DimensionId dimension()
Definition energy.hpp:88
static constexpr UnitId unit_id()
Definition energy.hpp:86
static constexpr std::string_view symbol()
Definition energy.hpp:87
static constexpr DimensionId dimension()
Definition energy.hpp:68
static constexpr UnitId unit_id()
Definition energy.hpp:66
static constexpr std::string_view symbol()
Definition energy.hpp:67
static constexpr DimensionId dimension()
Definition energy.hpp:33
static constexpr UnitId unit_id()
Definition energy.hpp:31
static constexpr std::string_view symbol()
Definition energy.hpp:32
static constexpr std::string_view symbol()
Definition energy.hpp:112
static constexpr UnitId unit_id()
Definition energy.hpp:111
static constexpr DimensionId dimension()
Definition energy.hpp:113
static constexpr UnitId unit_id()
Definition energy.hpp:96
static constexpr std::string_view symbol()
Definition energy.hpp:97
static constexpr DimensionId dimension()
Definition energy.hpp:98
static constexpr UnitId unit_id()
Definition energy.hpp:56
static constexpr DimensionId dimension()
Definition energy.hpp:58
static constexpr std::string_view symbol()
Definition energy.hpp:57
static constexpr DimensionId dimension()
Definition energy.hpp:83
static constexpr std::string_view symbol()
Definition energy.hpp:82
static constexpr UnitId unit_id()
Definition energy.hpp:81
static constexpr UnitId unit_id()
Definition energy.hpp:101
static constexpr DimensionId dimension()
Definition energy.hpp:103
static constexpr std::string_view symbol()
Definition energy.hpp:102
static constexpr DimensionId dimension()
Definition energy.hpp:63
static constexpr std::string_view symbol()
Definition energy.hpp:62
static constexpr UnitId unit_id()
Definition energy.hpp:61
static constexpr UnitId unit_id()
Definition energy.hpp:46
static constexpr std::string_view symbol()
Definition energy.hpp:47
static constexpr DimensionId dimension()
Definition energy.hpp:48
static constexpr UnitId unit_id()
Definition energy.hpp:51
static constexpr DimensionId dimension()
Definition energy.hpp:53
static constexpr std::string_view symbol()
Definition energy.hpp:52
static constexpr UnitId unit_id()
Definition energy.hpp:41
static constexpr std::string_view symbol()
Definition energy.hpp:42
static constexpr DimensionId dimension()
Definition energy.hpp:43
static constexpr UnitId unit_id()
Definition energy.hpp:36
static constexpr std::string_view symbol()
Definition energy.hpp:37
static constexpr DimensionId dimension()
Definition energy.hpp:38
static constexpr std::string_view symbol()
Definition energy.hpp:72
static constexpr DimensionId dimension()
Definition energy.hpp:73
static constexpr UnitId unit_id()
Definition energy.hpp:71
static constexpr std::string_view symbol()
Definition energy.hpp:122
static constexpr DimensionId dimension()
Definition energy.hpp:123
static constexpr UnitId unit_id()
Definition energy.hpp:121
static constexpr DimensionId dimension()
Definition energy.hpp:78
static constexpr std::string_view symbol()
Definition energy.hpp:77
static constexpr UnitId unit_id()
Definition energy.hpp:76