qtty-cpp 0.4.5
Header-only C++ wrapper for qtty
Loading...
Searching...
No Matches
angular.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
11struct RadianTag {};
14struct ArcsecondTag {};
15struct ArcminuteTag {};
16struct DegreeTag {};
17struct GradianTag {};
18struct TurnTag {};
19struct HourAngleTag {};
20
21template <> struct UnitTraits<MilliradianTag> {
22 static constexpr UnitId unit_id() { return UNIT_ID_MILLIRADIAN; }
23 static constexpr std::string_view symbol() { return "mrad"; }
24 static constexpr DimensionId dimension() { return DIMENSION_ID_ANGLE; }
25};
26template <> struct UnitTraits<RadianTag> {
27 static constexpr UnitId unit_id() { return UNIT_ID_RADIAN; }
28 static constexpr std::string_view symbol() { return "rad"; }
29 static constexpr DimensionId dimension() { return DIMENSION_ID_ANGLE; }
30};
31template <> struct UnitTraits<MicroArcsecondTag> {
32 static constexpr UnitId unit_id() { return UNIT_ID_MICRO_ARCSECOND; }
33 static constexpr std::string_view symbol() { return "μas"; }
34 static constexpr DimensionId dimension() { return DIMENSION_ID_ANGLE; }
35};
36template <> struct UnitTraits<MilliArcsecondTag> {
37 static constexpr UnitId unit_id() { return UNIT_ID_MILLI_ARCSECOND; }
38 static constexpr std::string_view symbol() { return "mas"; }
39 static constexpr DimensionId dimension() { return DIMENSION_ID_ANGLE; }
40};
41template <> struct UnitTraits<ArcsecondTag> {
42 static constexpr UnitId unit_id() { return UNIT_ID_ARCSECOND; }
43 static constexpr std::string_view symbol() { return "″"; }
44 static constexpr DimensionId dimension() { return DIMENSION_ID_ANGLE; }
45};
46template <> struct UnitTraits<ArcminuteTag> {
47 static constexpr UnitId unit_id() { return UNIT_ID_ARCMINUTE; }
48 static constexpr std::string_view symbol() { return "′"; }
49 static constexpr DimensionId dimension() { return DIMENSION_ID_ANGLE; }
50};
51template <> struct UnitTraits<DegreeTag> {
52 static constexpr UnitId unit_id() { return UNIT_ID_DEGREE; }
53 static constexpr std::string_view symbol() { return "°"; }
54 static constexpr DimensionId dimension() { return DIMENSION_ID_ANGLE; }
55};
56template <> struct UnitTraits<GradianTag> {
57 static constexpr UnitId unit_id() { return UNIT_ID_GRADIAN; }
58 static constexpr std::string_view symbol() { return "gon"; }
59 static constexpr DimensionId dimension() { return DIMENSION_ID_ANGLE; }
60};
61template <> struct UnitTraits<TurnTag> {
62 static constexpr UnitId unit_id() { return UNIT_ID_TURN; }
63 static constexpr std::string_view symbol() { return "tr"; }
64 static constexpr DimensionId dimension() { return DIMENSION_ID_ANGLE; }
65};
66template <> struct UnitTraits<HourAngleTag> {
67 static constexpr UnitId unit_id() { return UNIT_ID_HOUR_ANGLE; }
68 static constexpr std::string_view symbol() { return "h"; }
69 static constexpr DimensionId dimension() { return DIMENSION_ID_ANGLE; }
70};
71
82
83} // namespace qtty
constexpr bool is_angular_v
Definition angles.hpp:49
static constexpr UnitId unit_id()
Definition angular.hpp:47
static constexpr std::string_view symbol()
Definition angular.hpp:48
static constexpr DimensionId dimension()
Definition angular.hpp:49
static constexpr UnitId unit_id()
Definition angular.hpp:42
static constexpr std::string_view symbol()
Definition angular.hpp:43
static constexpr DimensionId dimension()
Definition angular.hpp:44
static constexpr UnitId unit_id()
Definition angular.hpp:52
static constexpr DimensionId dimension()
Definition angular.hpp:54
static constexpr std::string_view symbol()
Definition angular.hpp:53
static constexpr std::string_view symbol()
Definition angular.hpp:58
static constexpr DimensionId dimension()
Definition angular.hpp:59
static constexpr UnitId unit_id()
Definition angular.hpp:57
static constexpr std::string_view symbol()
Definition angular.hpp:68
static constexpr DimensionId dimension()
Definition angular.hpp:69
static constexpr UnitId unit_id()
Definition angular.hpp:67
static constexpr DimensionId dimension()
Definition angular.hpp:34
static constexpr std::string_view symbol()
Definition angular.hpp:33
static constexpr UnitId unit_id()
Definition angular.hpp:32
static constexpr DimensionId dimension()
Definition angular.hpp:39
static constexpr UnitId unit_id()
Definition angular.hpp:37
static constexpr std::string_view symbol()
Definition angular.hpp:38
static constexpr UnitId unit_id()
Definition angular.hpp:22
static constexpr DimensionId dimension()
Definition angular.hpp:24
static constexpr std::string_view symbol()
Definition angular.hpp:23
static constexpr DimensionId dimension()
Definition angular.hpp:29
static constexpr UnitId unit_id()
Definition angular.hpp:27
static constexpr std::string_view symbol()
Definition angular.hpp:28
static constexpr UnitId unit_id()
Definition angular.hpp:62
static constexpr std::string_view symbol()
Definition angular.hpp:63
static constexpr DimensionId dimension()
Definition angular.hpp:64