HikoGUI
A low latency retained GUI
Loading...
Searching...
No Matches
src
ttauri
i18n
iso_3166.hpp
1
// Copyright Take Vos 2021.
2
// Distributed under the Boost Software License, Version 1.0.
3
// (See accompanying file LICENSE_1_0.txt or copy at https://www.boost.org/LICENSE_1_0.txt)
4
5
#pragma once
6
7
#include <cctype>
8
#include "../assert.hpp"
9
#include "../strings.hpp"
10
11
namespace
tt {
12
17
class
iso_3166
{
18
public
:
19
constexpr
iso_3166
(
iso_3166
const
&)
noexcept
=
default
;
20
constexpr
iso_3166
(
iso_3166
&&)
noexcept
=
default
;
21
constexpr
iso_3166
&operator=(
iso_3166
const
&)
noexcept
=
default
;
22
constexpr
iso_3166
&operator=(
iso_3166
&&)
noexcept
=
default
;
23
24
constexpr
iso_3166
() noexcept : v0(0), v1(0) {}
25
26
constexpr
iso_3166
(std::string_view str)
noexcept
27
{
28
if
(std::size(str) == 0) {
29
_v0 = 0;
30
_v1 = 0;
31
}
else
if
(std::size(str) == 2) {
32
_v0 = to_upper(str[0]);
33
_v1 = to_upper(str[1]);
34
}
else
{
35
tt_no_default();
36
}
37
}
38
39
constexpr
explicit
operator
bool ()
const
noexcept
40
{
41
return
_v0 == 0 and _v1 == 0;
42
}
43
44
constexpr
explicit
operator
std::string
()
const
noexcept
45
{
46
auto
r =
std::string
{};
47
if
(_v0 == 0) {
48
return
r;
49
}
50
51
r += _v0;
52
if
(_v1 == 0) {
53
return
r;
54
}
55
56
r += _v1;
57
return
r;
58
}
59
60
[[nodiscard]]
constexpr
friend
operator==(
iso_3166
const
&lhs,
iso_3166
const
&rhs)
noexcept
=
default
;
61
[[nodiscard]]
constexpr
friend
operator<=>(
iso_3166
const
&lhs,
iso_3166
const
&rhs)
noexcept
=
default
;
62
63
private
:
64
char
_v0;
65
char
_v1;
66
};
67
68
}
69
tt::iso_3166
ISO-3166 country code.
Definition
iso_3166.hpp:17
std::string
Generated on Mon Apr 22 2024 12:53:34 for HikoGUI by
1.10.0