qtty-cpp 0.4.5
Header-only C++ wrapper for qtty
Loading...
Searching...
No Matches
volume.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 CubicMeterTag {};
14struct LiterTag {};
15struct MilliliterTag {};
16struct MicroliterTag {};
17struct CentiliterTag {};
18struct DeciliterTag {};
19struct CubicInchTag {};
20struct CubicFootTag {};
21struct UsGallonTag {};
23
24template <> struct UnitTraits<CubicMeterTag> {
25 static constexpr UnitId unit_id() { return UNIT_ID_CUBIC_METER; }
26 static constexpr std::string_view symbol() { return "m³"; }
27 static constexpr DimensionId dimension() { return DIMENSION_ID_VOLUME; }
28};
29template <> struct UnitTraits<CubicKilometerTag> {
30 static constexpr UnitId unit_id() { return UNIT_ID_CUBIC_KILOMETER; }
31 static constexpr std::string_view symbol() { return "km³"; }
32 static constexpr DimensionId dimension() { return DIMENSION_ID_VOLUME; }
33};
34template <> struct UnitTraits<CubicCentimeterTag> {
35 static constexpr UnitId unit_id() { return UNIT_ID_CUBIC_CENTIMETER; }
36 static constexpr std::string_view symbol() { return "cm³"; }
37 static constexpr DimensionId dimension() { return DIMENSION_ID_VOLUME; }
38};
39template <> struct UnitTraits<CubicMillimeterTag> {
40 static constexpr UnitId unit_id() { return UNIT_ID_CUBIC_MILLIMETER; }
41 static constexpr std::string_view symbol() { return "mm³"; }
42 static constexpr DimensionId dimension() { return DIMENSION_ID_VOLUME; }
43};
44template <> struct UnitTraits<LiterTag> {
45 static constexpr UnitId unit_id() { return UNIT_ID_LITER; }
46 static constexpr std::string_view symbol() { return "L"; }
47 static constexpr DimensionId dimension() { return DIMENSION_ID_VOLUME; }
48};
49template <> struct UnitTraits<MilliliterTag> {
50 static constexpr UnitId unit_id() { return UNIT_ID_MILLILITER; }
51 static constexpr std::string_view symbol() { return "mL"; }
52 static constexpr DimensionId dimension() { return DIMENSION_ID_VOLUME; }
53};
54template <> struct UnitTraits<MicroliterTag> {
55 static constexpr UnitId unit_id() { return UNIT_ID_MICROLITER; }
56 static constexpr std::string_view symbol() { return "µL"; }
57 static constexpr DimensionId dimension() { return DIMENSION_ID_VOLUME; }
58};
59template <> struct UnitTraits<CentiliterTag> {
60 static constexpr UnitId unit_id() { return UNIT_ID_CENTILITER; }
61 static constexpr std::string_view symbol() { return "cL"; }
62 static constexpr DimensionId dimension() { return DIMENSION_ID_VOLUME; }
63};
64template <> struct UnitTraits<DeciliterTag> {
65 static constexpr UnitId unit_id() { return UNIT_ID_DECILITER; }
66 static constexpr std::string_view symbol() { return "dL"; }
67 static constexpr DimensionId dimension() { return DIMENSION_ID_VOLUME; }
68};
69template <> struct UnitTraits<CubicInchTag> {
70 static constexpr UnitId unit_id() { return UNIT_ID_CUBIC_INCH; }
71 static constexpr std::string_view symbol() { return "in³"; }
72 static constexpr DimensionId dimension() { return DIMENSION_ID_VOLUME; }
73};
74template <> struct UnitTraits<CubicFootTag> {
75 static constexpr UnitId unit_id() { return UNIT_ID_CUBIC_FOOT; }
76 static constexpr std::string_view symbol() { return "ft³"; }
77 static constexpr DimensionId dimension() { return DIMENSION_ID_VOLUME; }
78};
79template <> struct UnitTraits<UsGallonTag> {
80 static constexpr UnitId unit_id() { return UNIT_ID_US_GALLON; }
81 static constexpr std::string_view symbol() { return "gal"; }
82 static constexpr DimensionId dimension() { return DIMENSION_ID_VOLUME; }
83};
84template <> struct UnitTraits<UsFluidOunceTag> {
85 static constexpr UnitId unit_id() { return UNIT_ID_US_FLUID_OUNCE; }
86 static constexpr std::string_view symbol() { return "fl oz"; }
87 static constexpr DimensionId dimension() { return DIMENSION_ID_VOLUME; }
88};
89
103
104} // namespace qtty
constexpr bool is_angular_v
Definition angles.hpp:49
static constexpr UnitId unit_id()
Definition volume.hpp:60
static constexpr std::string_view symbol()
Definition volume.hpp:61
static constexpr DimensionId dimension()
Definition volume.hpp:62
static constexpr DimensionId dimension()
Definition volume.hpp:37
static constexpr std::string_view symbol()
Definition volume.hpp:36
static constexpr UnitId unit_id()
Definition volume.hpp:35
static constexpr UnitId unit_id()
Definition volume.hpp:75
static constexpr DimensionId dimension()
Definition volume.hpp:77
static constexpr std::string_view symbol()
Definition volume.hpp:76
static constexpr UnitId unit_id()
Definition volume.hpp:70
static constexpr DimensionId dimension()
Definition volume.hpp:72
static constexpr std::string_view symbol()
Definition volume.hpp:71
static constexpr std::string_view symbol()
Definition volume.hpp:31
static constexpr UnitId unit_id()
Definition volume.hpp:30
static constexpr DimensionId dimension()
Definition volume.hpp:32
static constexpr DimensionId dimension()
Definition volume.hpp:27
static constexpr std::string_view symbol()
Definition volume.hpp:26
static constexpr UnitId unit_id()
Definition volume.hpp:25
static constexpr DimensionId dimension()
Definition volume.hpp:42
static constexpr UnitId unit_id()
Definition volume.hpp:40
static constexpr std::string_view symbol()
Definition volume.hpp:41
static constexpr std::string_view symbol()
Definition volume.hpp:66
static constexpr DimensionId dimension()
Definition volume.hpp:67
static constexpr UnitId unit_id()
Definition volume.hpp:65
static constexpr std::string_view symbol()
Definition volume.hpp:46
static constexpr DimensionId dimension()
Definition volume.hpp:47
static constexpr UnitId unit_id()
Definition volume.hpp:45
static constexpr DimensionId dimension()
Definition volume.hpp:57
static constexpr std::string_view symbol()
Definition volume.hpp:56
static constexpr UnitId unit_id()
Definition volume.hpp:55
static constexpr UnitId unit_id()
Definition volume.hpp:50
static constexpr DimensionId dimension()
Definition volume.hpp:52
static constexpr std::string_view symbol()
Definition volume.hpp:51
static constexpr DimensionId dimension()
Definition volume.hpp:87
static constexpr std::string_view symbol()
Definition volume.hpp:86
static constexpr UnitId unit_id()
Definition volume.hpp:85
static constexpr DimensionId dimension()
Definition volume.hpp:82
static constexpr UnitId unit_id()
Definition volume.hpp:80
static constexpr std::string_view symbol()
Definition volume.hpp:81