HikoGUI
A low latency retained GUI
Loading...
Searching...
No Matches
src
ttauri
i18n
iso_639.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
20
class
iso_639
{
21
public
:
22
constexpr
iso_639
(
iso_639
const
&)
noexcept
=
default
;
23
constexpr
iso_639
(
iso_639
&&)
noexcept
=
default
;
24
constexpr
iso_639
&operator=(
iso_639
const
&)
noexcept
=
default
;
25
constexpr
iso_639
&operator=(
iso_639
&&)
noexcept
=
default
;
26
27
constexpr
iso_639
() noexcept : v0(0), v1(0), v2(0) {}
28
29
constexpr
iso_639
(std::string_view str)
noexcept
30
{
31
if
(std::size(str) == 0) {
32
_v0 = 0;
33
_v1 = 0;
34
_v2 = 0;
35
}
else
if
(std::size(str) == 2) {
36
_v0 = to_lower(str[0]);
37
_v1 = to_lower(str[1]);
38
_v2 = 0;
39
}
else
if
(std::size(str) == 3) {
40
_v0 = to_lower(str[0]);
41
_v1 = to_lower(str[1]);
42
_v2 = to_lower(str[2]);
43
}
else
{
44
tt_no_default();
45
}
46
}
47
48
constexpr
explicit
operator
bool ()
const
noexcept
49
{
50
return
_v0 == 0 and _v1 == 0 and _v2 == 0;
51
}
52
53
constexpr
explicit
operator
std::string
()
const
noexcept
54
{
55
auto
r =
std::string
{};
56
if
(_v0 == 0) {
57
return
r;
58
}
59
60
r += _v0;
61
if
(_v1 == 0) {
62
return
r;
63
}
64
65
r += _v1;
66
if
(_v2 == 0) {
67
return
r;
68
}
69
70
r += _v2;
71
return
r;
72
}
73
74
[[nodiscard]]
constexpr
friend
operator==(
iso_639
const
&lhs,
iso_639
const
&rhs)
noexcept
=
default
;
75
[[nodiscard]]
constexpr
friend
operator<=>(
iso_639
const
&lhs,
iso_639
const
&rhs)
noexcept
=
default
;
76
77
private
:
78
char
_v0;
79
char
_v1;
80
char
_v2;
81
};
82
83
}
84
tt::iso_639
ISO-639 language code.
Definition
iso_639.hpp:20
std::string
Generated on Mon Apr 22 2024 12:53:38 for HikoGUI by
1.10.0