libpromeki
1.0.0-alpha
PROfessional MEdia toolKIt
Loading...
Searching...
No Matches
char.h
Go to the documentation of this file.
1
8
#pragma once
9
10
11
#include <promeki/config.h>
12
#if PROMEKI_ENABLE_CORE
13
#include <cstdint>
14
#include <cstddef>
15
#include <
promeki/namespace.h
>
16
17
PROMEKI_NAMESPACE_BEGIN
18
31
class
Char {
32
public
:
34
Char() : _cp(0) {}
35
37
Char(
char
c) : _cp(static_cast<unsigned char>(c)) {}
38
40
explicit
Char(
char32_t
cp) : _cp(cp) {}
41
43
char32_t
codepoint()
const
{
return
_cp; }
44
46
bool
isNull()
const
{
return
_cp == 0; }
47
49
bool
isAscii()
const
{
return
_cp < 0x80; }
50
52
bool
isAlpha()
const
;
53
55
bool
isDigit()
const
;
56
58
bool
isAlphaNumeric()
const
;
59
61
bool
isSpace()
const
;
62
64
bool
isUpper()
const
;
65
67
bool
isLower()
const
;
68
70
bool
isPrintable()
const
;
71
73
bool
isHexDigit()
const
{
74
return
(_cp >=
'0'
&& _cp <=
'9'
) || (_cp >=
'a'
&& _cp <=
'f'
) || (_cp >=
'A'
&& _cp <=
'F'
);
75
}
76
81
int
hexDigitValue()
const
{
82
if
(_cp >=
'0'
&& _cp <=
'9'
)
return
_cp -
'0'
;
83
if
(_cp >=
'a'
&& _cp <=
'f'
)
return
10 + _cp -
'a'
;
84
if
(_cp >=
'A'
&& _cp <=
'F'
)
return
10 + _cp -
'A'
;
85
return
-1;
86
}
87
89
Char toUpper()
const
;
90
92
Char toLower()
const
;
93
95
size_t
utf8ByteCount()
const
;
96
102
size_t
toUtf8(
char
*buf)
const
;
103
110
static
Char fromUtf8(
const
char
*buf,
size_t
*bytesRead =
nullptr
);
111
112
bool
operator==(Char o)
const
{
return
_cp == o._cp; }
113
bool
operator==(
char
c)
const
{
return
_cp ==
static_cast<
unsigned
char
>
(c); }
114
bool
operator!=(Char o)
const
{
return
_cp != o._cp; }
115
bool
operator<(Char o)
const
{
return
_cp < o._cp; }
116
bool
operator<=(Char o)
const
{
return
_cp <= o._cp; }
117
bool
operator>(Char o)
const
{
return
_cp > o._cp; }
118
bool
operator>=(Char o)
const
{
return
_cp >= o._cp; }
119
120
private
:
121
char32_t
_cp;
122
};
123
124
PROMEKI_NAMESPACE_END
125
126
#endif
// PROMEKI_ENABLE_CORE
namespace.h
include
promeki
char.h
Generated on 2026-05-21 02:27:58 from commit ffbc5cc (1.0.0-alpha).