diff --git a/bom_8hpp.html b/bom_8hpp.html new file mode 100644 index 0000000..1789575 --- /dev/null +++ b/bom_8hpp.html @@ -0,0 +1,100 @@ + + + + + + + +peelo-unicode: include/peelo/unicode/bom.hpp File Reference + + + + + + +
+
+ + + + + + +
+
peelo-unicode +
+
+
+ + + + + + + +
+
+
+Namespaces | +Enumerations | +Functions
+
bom.hpp File Reference
+
+
+
#include <array>
+#include <cstring>
+#include <optional>
+#include <string>
+
+

Go to the source code of this file.

+ + + + + + +

+Namespaces

namespace  peelo
 
namespace  peelo::unicode
 
+ + + +

+Enumerations

enum class  peelo::unicode::bom {
+  peelo::unicode::utf8 +, peelo::unicode::utf16_be +, peelo::unicode::utf16_le +, peelo::unicode::utf32_be +,
+  peelo::unicode::utf32_le +, peelo::unicode::utf7 +, peelo::unicode::utf1 +, peelo::unicode::utf_ebcdic +,
+  peelo::unicode::scsu +, peelo::unicode::bocu_1 +, peelo::unicode::gb18030 +
+ }
 
+ + + + + +

+Functions

std::optional< bom > peelo::unicode::detect_bom (const char *input, std::size_t length)
 
std::optional< bom > peelo::unicode::detect_bom (const std::string &input)
 
+
+ + + + diff --git a/bom_8hpp_source.html b/bom_8hpp_source.html new file mode 100644 index 0000000..7c01876 --- /dev/null +++ b/bom_8hpp_source.html @@ -0,0 +1,211 @@ + + + + + + + +peelo-unicode: include/peelo/unicode/bom.hpp Source File + + + + + + +
+
+ + + + + + +
+
peelo-unicode +
+
+
+ + + + + + + +
+
+
bom.hpp
+
+
+Go to the documentation of this file.
1/*
+
2 * Copyright (c) 2018-2024, peelo.net
+
3 * All rights reserved.
+
4 *
+
5 * Redistribution and use in source and binary forms, with or without
+
6 * modification, are permitted provided that the following conditions are met:
+
7 *
+
8 * * Redistributions of source code must retain the above copyright notice,
+
9 * this list of conditions and the following disclaimer.
+
10 *
+
11 * * Redistributions in binary form must reproduce the above copyright notice,
+
12 * this list of conditions and the following disclaimer in the documentation
+
13 * and/or other materials provided with the distribution.
+
14 *
+
15 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+
16 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+
17 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+
18 * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
+
19 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+
20 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+
21 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+
22 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+
23 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+
24 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+
25 * POSSIBILITY OF SUCH DAMAGE.
+
26 */
+
27#pragma once
+
28
+
29#include <array>
+
30#include <cstring>
+
31#include <optional>
+
32#include <string>
+
33
+ +
35{
+
39 enum class bom
+
40 {
+
41 utf8,
+ + + + +
46 utf7,
+
47 utf1,
+ +
49 scsu,
+
50 bocu_1,
+
51 gb18030,
+
52 };
+
53
+
62 inline std::optional<bom>
+
63 detect_bom(const char* input, std::size_t length)
+
64 {
+
65 struct bom_info
+
66 {
+
67 const char* bytes;
+
68 std::size_t length;
+
69 bom type;
+
70 };
+
71 static constexpr std::size_t bom_array_size = 11;
+
72 static const std::array<bom_info, bom_array_size> bom_array =
+
73 {{
+
74 {
+
75 "\xef\xbb\xbf",
+
76 3,
+ +
78 },
+
79 {
+
80 "\0\0\xfe\xff",
+
81 4,
+ +
83 },
+
84 {
+
85 "\xff\xfe\0\0",
+
86 4,
+ +
88 },
+
89 {
+
90 "\xfe\xff",
+
91 2,
+ +
93 },
+
94 {
+
95 "\xff\xfe",
+
96 2,
+ +
98 },
+
99 {
+
100 "\x2b\x2f\x76",
+
101 3,
+
102 bom::utf7,
+
103 },
+
104 {
+
105 "\xf7\x64\x4c",
+
106 3,
+
107 bom::utf1,
+
108 },
+
109 {
+
110 "\xdd\x73\x66\x73",
+
111 4,
+ +
113 },
+
114 {
+
115 "\x0e\xfe\xff",
+
116 3,
+ +
118 },
+
119 {
+
120 "\xfb\xee\x28",
+
121 3,
+ +
123 },
+
124 {
+
125 "\x84\x31\x95\x33",
+
126 4,
+ +
128 },
+
129 }};
+
130
+
131 for (std::size_t i = 0; i < bom_array_size; ++i)
+
132 {
+
133 const auto& info = bom_array[i];
+
134
+
135 if (length < info.length)
+
136 {
+
137 continue;
+
138 }
+
139 else if (!std::memcmp(input, info.bytes, info.length))
+
140 {
+
141 return info.type;
+
142 }
+
143 }
+
144
+
145 return std::nullopt;
+
146 }
+
147
+
155 inline std::optional<bom>
+
156 detect_bom(const std::string& input)
+
157 {
+
158 return detect_bom(input.c_str(), input.length());
+
159 }
+
160}
+
Definition: bom.hpp:35
+
bom
Definition: bom.hpp:40
+ + + + + + + + + + + +
std::optional< bom > detect_bom(const char *input, std::size_t length)
Definition: bom.hpp:63
+
+ + + + diff --git a/ctype_2__utils_8hpp.html b/ctype_2__utils_8hpp.html index 71241d3..66c4282 100644 --- a/ctype_2__utils_8hpp.html +++ b/ctype_2__utils_8hpp.html @@ -2,8 +2,8 @@ - - + + peelo-unicode: include/peelo/unicode/ctype/_utils.hpp File Reference @@ -16,8 +16,8 @@
- - + @@ -26,15 +26,16 @@
+
peelo-unicode
- + +/* @license-end */ +
-
-
_utils.hpp
+
_utils.hpp
-Go to the documentation of this file.
1 /*
-
2  * Copyright (c) 2018-2024, peelo.net
-
3  * All rights reserved.
-
4  *
-
5  * Redistribution and use in source and binary forms, with or without
-
6  * modification, are permitted provided that the following conditions are met:
-
7  *
-
8  * * Redistributions of source code must retain the above copyright notice,
-
9  * this list of conditions and the following disclaimer.
-
10  *
-
11  * * Redistributions in binary form must reproduce the above copyright notice,
-
12  * this list of conditions and the following disclaimer in the documentation
-
13  * and/or other materials provided with the distribution.
-
14  *
-
15  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-
16  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-
17  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-
18  * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
-
19  * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-
20  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-
21  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-
22  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-
23  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-
24  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-
25  * POSSIBILITY OF SUCH DAMAGE.
-
26  */
-
27 #pragma once
-
28 
-
29 #include <array>
-
30 #include <unordered_map>
-
31 #include <utility>
-
32 
-
33 namespace peelo::unicode::ctype::utils
-
34 {
-
35  using range = std::pair<char32_t, char32_t>;
-
36 
-
37  template<std::size_t Size>
-
38  inline bool
-
39  table_lookup(const std::array<range, Size>& table, char32_t c)
-
40  {
-
41  const auto size = table.size();
-
42 
-
43  for (std::size_t i = 0; i < size; ++i)
-
44  {
-
45  const auto& range = table[i];
-
46 
-
47  if (c >= range.first && c <= range.second)
-
48  {
-
49  return true;
-
50  }
-
51  }
-
52 
-
53  return false;
-
54  }
-
55 
-
56  inline char32_t
-
57  case_lookup(const std::unordered_map<char32_t, char32_t>& map, char32_t c)
-
58  {
-
59  const auto i = map.find(c);
-
60 
-
61  if (i != std::end(map))
-
62  {
-
63  return i->second;
-
64  }
-
65 
-
66  return c;
-
67  }
-
68 }
+Go to the documentation of this file.
1/*
+
2 * Copyright (c) 2018-2024, peelo.net
+
3 * All rights reserved.
+
4 *
+
5 * Redistribution and use in source and binary forms, with or without
+
6 * modification, are permitted provided that the following conditions are met:
+
7 *
+
8 * * Redistributions of source code must retain the above copyright notice,
+
9 * this list of conditions and the following disclaimer.
+
10 *
+
11 * * Redistributions in binary form must reproduce the above copyright notice,
+
12 * this list of conditions and the following disclaimer in the documentation
+
13 * and/or other materials provided with the distribution.
+
14 *
+
15 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+
16 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+
17 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+
18 * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
+
19 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+
20 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+
21 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+
22 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+
23 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+
24 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+
25 * POSSIBILITY OF SUCH DAMAGE.
+
26 */
+
27#pragma once
+
28
+
29#include <array>
+
30#include <unordered_map>
+
31#include <utility>
+
32
+
33namespace peelo::unicode::ctype::utils
+
34{
+
35 using range = std::pair<char32_t, char32_t>;
+
36
+
37 template<std::size_t Size>
+
38 inline bool
+
39 table_lookup(const std::array<range, Size>& table, char32_t c)
+
40 {
+
41 const auto size = table.size();
+
42
+
43 for (std::size_t i = 0; i < size; ++i)
+
44 {
+
45 const auto& range = table[i];
+
46
+
47 if (c >= range.first && c <= range.second)
+
48 {
+
49 return true;
+
50 }
+
51 }
+
52
+
53 return false;
+
54 }
+
55
+
56 inline char32_t
+
57 case_lookup(const std::unordered_map<char32_t, char32_t>& map, char32_t c)
+
58 {
+
59 const auto i = map.find(c);
+
60
+
61 if (i != std::end(map))
+
62 {
+
63 return i->second;
+
64 }
+
65
+
66 return c;
+
67 }
+
68}
diff --git a/ctype_8hpp.html b/ctype_8hpp.html index 9756be1..b334038 100644 --- a/ctype_8hpp.html +++ b/ctype_8hpp.html @@ -2,8 +2,8 @@ - - + + peelo-unicode: include/peelo/unicode/ctype.hpp File Reference @@ -16,8 +16,8 @@
- - + @@ -26,15 +26,16 @@
+
peelo-unicode
- + +/* @license-end */ +
-
-
ctype.hpp File Reference
+
ctype.hpp File Reference
#include <peelo/unicode/ctype/isalnum.hpp>
@@ -67,7 +67,7 @@
diff --git a/ctype_8hpp_source.html b/ctype_8hpp_source.html index 42277af..11f4a52 100644 --- a/ctype_8hpp_source.html +++ b/ctype_8hpp_source.html @@ -2,8 +2,8 @@ - - + + peelo-unicode: include/peelo/unicode/ctype.hpp Source File @@ -16,8 +16,8 @@
- - + @@ -26,15 +26,16 @@
+
peelo-unicode
- + +/* @license-end */ +
-
-
ctype.hpp
+
ctype.hpp
-Go to the documentation of this file.
1 /*
-
2  * Copyright (c) 2018-2024, peelo.net
-
3  * All rights reserved.
-
4  *
-
5  * Redistribution and use in source and binary forms, with or without
-
6  * modification, are permitted provided that the following conditions are met:
-
7  *
-
8  * * Redistributions of source code must retain the above copyright notice,
-
9  * this list of conditions and the following disclaimer.
-
10  *
-
11  * * Redistributions in binary form must reproduce the above copyright notice,
-
12  * this list of conditions and the following disclaimer in the documentation
-
13  * and/or other materials provided with the distribution.
-
14  *
-
15  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-
16  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-
17  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-
18  * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
-
19  * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-
20  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-
21  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-
22  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-
23  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-
24  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-
25  * POSSIBILITY OF SUCH DAMAGE.
-
26  */
-
27 #pragma once
-
28 
- - - - - - - - - - - - - - - - +Go to the documentation of this file.
1/*
+
2 * Copyright (c) 2018-2024, peelo.net
+
3 * All rights reserved.
+
4 *
+
5 * Redistribution and use in source and binary forms, with or without
+
6 * modification, are permitted provided that the following conditions are met:
+
7 *
+
8 * * Redistributions of source code must retain the above copyright notice,
+
9 * this list of conditions and the following disclaimer.
+
10 *
+
11 * * Redistributions in binary form must reproduce the above copyright notice,
+
12 * this list of conditions and the following disclaimer in the documentation
+
13 * and/or other materials provided with the distribution.
+
14 *
+
15 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+
16 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+
17 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+
18 * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
+
19 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+
20 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+
21 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+
22 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+
23 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+
24 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+
25 * POSSIBILITY OF SUCH DAMAGE.
+
26 */
+
27#pragma once
+
28
+ + + + + + + + + + + + + + + + @@ -109,7 +109,7 @@
diff --git a/dir_30bb860588f86a592f62c1b922374aed.html b/dir_30bb860588f86a592f62c1b922374aed.html index b8ed89f..09eb5ab 100644 --- a/dir_30bb860588f86a592f62c1b922374aed.html +++ b/dir_30bb860588f86a592f62c1b922374aed.html @@ -2,8 +2,8 @@ - - + + peelo-unicode: include/peelo Directory Reference @@ -16,8 +16,8 @@
- - + @@ -26,15 +26,16 @@
+
peelo-unicode
- + +/* @license-end */ +
-
-
peelo Directory Reference
+
peelo Directory Reference
- - +

+

Directories

directory  unicode
directory  unicode
 
diff --git a/dir_6ab5d527d00be5a7494465c18b0e1b22.html b/dir_6ab5d527d00be5a7494465c18b0e1b22.html index 1635fc3..d6bad85 100644 --- a/dir_6ab5d527d00be5a7494465c18b0e1b22.html +++ b/dir_6ab5d527d00be5a7494465c18b0e1b22.html @@ -2,8 +2,8 @@ - - + + peelo-unicode: include/peelo/unicode/ctype Directory Reference @@ -16,8 +16,8 @@
- - + @@ -26,15 +26,16 @@
+
peelo-unicode
- + +/* @license-end */ +
-
-
ctype Directory Reference
+
ctype Directory Reference
- - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - +

+

Files

file  _utils.hpp [code]
file  _utils.hpp [code]
 
file  isalnum.hpp [code]
file  isalnum.hpp [code]
 
file  isalpha.hpp [code]
file  isalpha.hpp [code]
 
file  isblank.hpp [code]
file  isblank.hpp [code]
 
file  iscntrl.hpp [code]
file  iscntrl.hpp [code]
 
file  isdigit.hpp [code]
file  isdigit.hpp [code]
 
file  isemoji.hpp [code]
file  isemoji.hpp [code]
 
file  isgraph.hpp [code]
file  isgraph.hpp [code]
 
file  islower.hpp [code]
file  islower.hpp [code]
 
file  isprint.hpp [code]
file  isprint.hpp [code]
 
file  ispunct.hpp [code]
file  ispunct.hpp [code]
 
file  isspace.hpp [code]
file  isspace.hpp [code]
 
file  isupper.hpp [code]
file  isupper.hpp [code]
 
file  isvalid.hpp [code]
file  isvalid.hpp [code]
 
file  isxdigit.hpp [code]
file  isxdigit.hpp [code]
 
file  tolower.hpp [code]
file  tolower.hpp [code]
 
file  toupper.hpp [code]
file  toupper.hpp [code]
 
diff --git a/dir_a9729aafd692d2e4af55dcaece299be5.html b/dir_a9729aafd692d2e4af55dcaece299be5.html index c1005f3..3782acd 100644 --- a/dir_a9729aafd692d2e4af55dcaece299be5.html +++ b/dir_a9729aafd692d2e4af55dcaece299be5.html @@ -2,8 +2,8 @@ - - + + peelo-unicode: include/peelo/unicode/encoding Directory Reference @@ -16,8 +16,8 @@
- - + @@ -26,15 +26,16 @@
+
peelo-unicode
- + +/* @license-end */ +
-
-
encoding Directory Reference
+
encoding Directory Reference
- - + - + - + - + - + - +

+

Files

file  _utils.hpp [code]
file  _utils.hpp [code]
 
file  utf16be.hpp [code]
file  utf16be.hpp [code]
 
file  utf16le.hpp [code]
file  utf16le.hpp [code]
 
file  utf32be.hpp [code]
file  utf32be.hpp [code]
 
file  utf32le.hpp [code]
file  utf32le.hpp [code]
 
file  utf8.hpp [code]
file  utf8.hpp [code]
 
diff --git a/dir_d44c64559bbebec7f509842c48db8b23.html b/dir_d44c64559bbebec7f509842c48db8b23.html index c24eaa5..789a536 100644 --- a/dir_d44c64559bbebec7f509842c48db8b23.html +++ b/dir_d44c64559bbebec7f509842c48db8b23.html @@ -2,8 +2,8 @@ - - + + peelo-unicode: include Directory Reference @@ -16,8 +16,8 @@
- - + @@ -26,15 +26,16 @@
+
peelo-unicode
- + +/* @license-end */ +
-
-
include Directory Reference
+
include Directory Reference
- - +

+

Directories

directory  peelo
directory  peelo
 
diff --git a/dir_d73cbd30c9a1b2725c0a4716bc33e62d.html b/dir_d73cbd30c9a1b2725c0a4716bc33e62d.html index 5ae76f8..f413d56 100644 --- a/dir_d73cbd30c9a1b2725c0a4716bc33e62d.html +++ b/dir_d73cbd30c9a1b2725c0a4716bc33e62d.html @@ -2,8 +2,8 @@ - - + + peelo-unicode: include/peelo/unicode Directory Reference @@ -16,8 +16,8 @@
- - + @@ -26,15 +26,16 @@
+
peelo-unicode
- + +/* @license-end */ +
-
-
unicode Directory Reference
+
unicode Directory Reference
- - + - +

+

Directories

directory  ctype
directory  ctype
 
directory  encoding
directory  encoding
 
- - + - + + +

+

Files

file  ctype.hpp [code]
file  bom.hpp [code]
 
file  encoding.hpp [code]
file  ctype.hpp [code]
 
file  encoding.hpp [code]
 
diff --git a/doxygen.css b/doxygen.css index ffbff02..2010785 100644 --- a/doxygen.css +++ b/doxygen.css @@ -1,4 +1,4 @@ -/* The standard CSS for doxygen 1.9.1 */ +/* The standard CSS for doxygen 1.9.4 */ body, table, div, p, dl { font: 400 14px/22px Roboto,sans-serif; @@ -228,6 +228,33 @@ a.codeRef, a.codeRef:visited, a.lineRef, a.lineRef:visited { color: #4665A2; } +a.code.hl_class { /* style for links to class names in code snippets */ } +a.code.hl_struct { /* style for links to struct names in code snippets */ } +a.code.hl_union { /* style for links to union names in code snippets */ } +a.code.hl_interface { /* style for links to interface names in code snippets */ } +a.code.hl_protocol { /* style for links to protocol names in code snippets */ } +a.code.hl_category { /* style for links to category names in code snippets */ } +a.code.hl_exception { /* style for links to exception names in code snippets */ } +a.code.hl_service { /* style for links to service names in code snippets */ } +a.code.hl_singleton { /* style for links to singleton names in code snippets */ } +a.code.hl_concept { /* style for links to concept names in code snippets */ } +a.code.hl_namespace { /* style for links to namespace names in code snippets */ } +a.code.hl_package { /* style for links to package names in code snippets */ } +a.code.hl_define { /* style for links to macro names in code snippets */ } +a.code.hl_function { /* style for links to function names in code snippets */ } +a.code.hl_variable { /* style for links to variable names in code snippets */ } +a.code.hl_typedef { /* style for links to typedef names in code snippets */ } +a.code.hl_enumvalue { /* style for links to enum value names in code snippets */ } +a.code.hl_enumeration { /* style for links to enumeration names in code snippets */ } +a.code.hl_signal { /* style for links to Qt signal names in code snippets */ } +a.code.hl_slot { /* style for links to Qt slot names in code snippets */ } +a.code.hl_friend { /* style for links to friend names in code snippets */ } +a.code.hl_dcop { /* style for links to KDE3 DCOP names in code snippets */ } +a.code.hl_property { /* style for links to property names in code snippets */ } +a.code.hl_event { /* style for links to event names in code snippets */ } +a.code.hl_sequence { /* style for links to sequence names in code snippets */ } +a.code.hl_dictionary { /* style for links to dictionary names in code snippets */ } + /* @end */ dl.el { @@ -235,7 +262,7 @@ dl.el { } ul { - overflow: hidden; /*Fixed: list item bullets overlap floating elements*/ + overflow: visible; } #side-nav ul { @@ -313,6 +340,7 @@ div.line.glow { span.lineno { padding-right: 4px; + margin-right: 9px; text-align: right; border-right: 2px solid #0F0; background-color: #E8E8E8; @@ -439,6 +467,12 @@ img.footer { vertical-align: middle; } +.compoundTemplParams { + color: #4665A2; + font-size: 80%; + line-height: 120%; +} + /* @group Code Colorization */ span.keyword { @@ -1322,6 +1356,11 @@ dl.section dd { } +#projectrow +{ + height: 56px; +} + #projectlogo { text-align: center; @@ -1337,18 +1376,19 @@ dl.section dd { #projectalign { vertical-align: middle; + padding-left: 0.5em; } #projectname { - font: 300% Tahoma, Arial,sans-serif; + font: 200% Tahoma, Arial,sans-serif; margin: 0px; padding: 2px 0px; } #projectbrief { - font: 120% Tahoma, Arial,sans-serif; + font: 90% Tahoma, Arial,sans-serif; margin: 0px; padding: 0px; } @@ -1487,6 +1527,10 @@ span.emoji { */ } +span.obfuscator { + display: none; +} + .PageDocRTL-title div.toc li.level1 { margin-left: 0 !important; margin-right: 0; @@ -1541,7 +1585,7 @@ tr.heading h2 { #powerTip { cursor: default; - white-space: nowrap; + /*white-space: nowrap;*/ background-color: white; border: 1px solid gray; border-radius: 4px 4px 4px 4px; @@ -1780,6 +1824,10 @@ table.DocNodeLTR { margin-left: 0; } +code.JavaDocCode { + direction:ltr; +} + tt, code, kbd, samp { display: inline-block; diff --git a/encoding_2__utils_8hpp.html b/encoding_2__utils_8hpp.html index 0596464..eb2fa08 100644 --- a/encoding_2__utils_8hpp.html +++ b/encoding_2__utils_8hpp.html @@ -2,8 +2,8 @@ - - + + peelo-unicode: include/peelo/unicode/encoding/_utils.hpp File Reference @@ -16,8 +16,8 @@
- - + @@ -26,15 +26,16 @@
+
peelo-unicode
- + +/* @license-end */ +
-
-
_utils.hpp
+
_utils.hpp
-Go to the documentation of this file.
1 /*
-
2  * Copyright (c) 2018-2024, peelo.net
-
3  * All rights reserved.
-
4  *
-
5  * Redistribution and use in source and binary forms, with or without
-
6  * modification, are permitted provided that the following conditions are met:
-
7  *
-
8  * * Redistributions of source code must retain the above copyright notice,
-
9  * this list of conditions and the following disclaimer.
-
10  *
-
11  * * Redistributions in binary form must reproduce the above copyright notice,
-
12  * this list of conditions and the following disclaimer in the documentation
-
13  * and/or other materials provided with the distribution.
-
14  *
-
15  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-
16  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-
17  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-
18  * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
-
19  * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-
20  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-
21  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-
22  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-
23  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-
24  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-
25  * POSSIBILITY OF SUCH DAMAGE.
-
26  */
-
27 #pragma once
-
28 
-
29 #include <cstddef>
-
30 #include <string>
-
31 
- -
33 
-
34 namespace peelo::unicode::encoding::utils
-
35 {
-
36  using encode_callback = void(*)(
-
37  char32_t codepoint,
-
38  std::string& output
-
39  );
-
40  using decode_callback = bool(*)(
-
41  const char* input,
-
42  std::size_t& i,
-
43  const std::size_t length,
-
44  char32_t& result
-
45  );
-
46 
-
47  inline std::string
-
48  encode(
-
49  const char32_t* input,
-
50  std::size_t length,
-
51  encode_callback callback
-
52  )
-
53  {
-
54  std::string result;
-
55 
-
56  for (std::size_t i = 0; i < length; ++i)
-
57  {
-
58  const auto& c = input[i];
-
59 
-
60  if (!ctype::isvalid(c))
-
61  {
-
62  continue;
-
63  }
-
64  callback(c, result);
-
65  }
-
66 
-
67  return result;
-
68  }
-
69 
-
70  inline bool
-
71  encode_validate(
-
72  const char32_t* input,
-
73  std::size_t length,
-
74  std::string& output,
-
75  encode_callback callback
-
76  )
-
77  {
-
78  for (std::size_t i = 0; i < length; ++i)
-
79  {
-
80  const auto& c = input[i];
-
81 
-
82  if (!ctype::isvalid(c))
-
83  {
-
84  return false;
-
85  }
-
86  callback(c, output);
-
87  }
-
88 
-
89  return true;
-
90  }
-
91 
-
92  inline std::u32string
-
93  decode(const char* input, std::size_t length, decode_callback callback)
-
94  {
-
95  std::u32string result;
-
96 
-
97  for (std::size_t i = 0; i < length;)
-
98  {
-
99  char32_t c;
-
100 
-
101  if (!callback(input, i, length, c))
-
102  {
-
103  continue;
-
104  }
-
105  result.append(1, c);
-
106  }
-
107 
-
108  return result;
-
109  }
-
110 
-
111  inline bool
-
112  decode_validate(
-
113  const char* input,
-
114  std::size_t length,
-
115  std::u32string& output,
-
116  decode_callback callback
-
117  )
-
118  {
-
119  for (std::size_t i = 0; i < length;)
-
120  {
-
121  char32_t c;
-
122 
-
123  if (!callback(input, i, length, c))
-
124  {
-
125  return false;
-
126  }
-
127  output.append(1, c);
-
128  }
-
129 
-
130  return true;
-
131  }
-
132 }
+Go to the documentation of this file.
1/*
+
2 * Copyright (c) 2018-2024, peelo.net
+
3 * All rights reserved.
+
4 *
+
5 * Redistribution and use in source and binary forms, with or without
+
6 * modification, are permitted provided that the following conditions are met:
+
7 *
+
8 * * Redistributions of source code must retain the above copyright notice,
+
9 * this list of conditions and the following disclaimer.
+
10 *
+
11 * * Redistributions in binary form must reproduce the above copyright notice,
+
12 * this list of conditions and the following disclaimer in the documentation
+
13 * and/or other materials provided with the distribution.
+
14 *
+
15 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+
16 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+
17 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+
18 * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
+
19 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+
20 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+
21 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+
22 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+
23 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+
24 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+
25 * POSSIBILITY OF SUCH DAMAGE.
+
26 */
+
27#pragma once
+
28
+
29#include <cstddef>
+
30#include <string>
+
31
+ +
33
+
34namespace peelo::unicode::encoding::utils
+
35{
+
36 using encode_callback = void(*)(
+
37 char32_t codepoint,
+
38 std::string& output
+
39 );
+
40 using decode_callback = bool(*)(
+
41 const char* input,
+
42 std::size_t& i,
+
43 const std::size_t length,
+
44 char32_t& result
+
45 );
+
46
+
47 inline std::string
+
48 encode(
+
49 const char32_t* input,
+
50 std::size_t length,
+
51 encode_callback callback
+
52 )
+
53 {
+
54 std::string result;
+
55
+
56 for (std::size_t i = 0; i < length; ++i)
+
57 {
+
58 const auto& c = input[i];
+
59
+
60 if (!ctype::isvalid(c))
+
61 {
+
62 continue;
+
63 }
+
64 callback(c, result);
+
65 }
+
66
+
67 return result;
+
68 }
+
69
+
70 inline bool
+
71 encode_validate(
+
72 const char32_t* input,
+
73 std::size_t length,
+
74 std::string& output,
+
75 encode_callback callback
+
76 )
+
77 {
+
78 for (std::size_t i = 0; i < length; ++i)
+
79 {
+
80 const auto& c = input[i];
+
81
+
82 if (!ctype::isvalid(c))
+
83 {
+
84 return false;
+
85 }
+
86 callback(c, output);
+
87 }
+
88
+
89 return true;
+
90 }
+
91
+
92 inline std::u32string
+
93 decode(const char* input, std::size_t length, decode_callback callback)
+
94 {
+
95 std::u32string result;
+
96
+
97 for (std::size_t i = 0; i < length;)
+
98 {
+
99 char32_t c;
+
100
+
101 if (!callback(input, i, length, c))
+
102 {
+
103 continue;
+
104 }
+
105 result.append(1, c);
+
106 }
+
107
+
108 return result;
+
109 }
+
110
+
111 inline bool
+
112 decode_validate(
+
113 const char* input,
+
114 std::size_t length,
+
115 std::u32string& output,
+
116 decode_callback callback
+
117 )
+
118 {
+
119 for (std::size_t i = 0; i < length;)
+
120 {
+
121 char32_t c;
+
122
+
123 if (!callback(input, i, length, c))
+
124 {
+
125 return false;
+
126 }
+
127 output.append(1, c);
+
128 }
+
129
+
130 return true;
+
131 }
+
132}
bool isvalid(char32_t c)
Definition: isvalid.hpp:35
diff --git a/encoding_8hpp.html b/encoding_8hpp.html index 9d2c3e0..7c3d5a4 100644 --- a/encoding_8hpp.html +++ b/encoding_8hpp.html @@ -2,8 +2,8 @@ - - + + peelo-unicode: include/peelo/unicode/encoding.hpp File Reference @@ -16,8 +16,8 @@
- - + @@ -26,15 +26,16 @@
+
peelo-unicode
- + +/* @license-end */ +
-
-
encoding.hpp File Reference
+
encoding.hpp File Reference
#include <peelo/unicode/encoding/utf8.hpp>
@@ -56,7 +56,7 @@
diff --git a/encoding_8hpp_source.html b/encoding_8hpp_source.html index 201ee88..289c4b4 100644 --- a/encoding_8hpp_source.html +++ b/encoding_8hpp_source.html @@ -2,8 +2,8 @@ - - + + peelo-unicode: include/peelo/unicode/encoding.hpp Source File @@ -16,8 +16,8 @@
- - + @@ -26,15 +26,16 @@
+
peelo-unicode
- + +/* @license-end */ +
-
-
encoding.hpp
+
encoding.hpp
-Go to the documentation of this file.
1 /*
-
2  * Copyright (c) 2018-2024, peelo.net
-
3  * All rights reserved.
-
4  *
-
5  * Redistribution and use in source and binary forms, with or without
-
6  * modification, are permitted provided that the following conditions are met:
-
7  *
-
8  * * Redistributions of source code must retain the above copyright notice,
-
9  * this list of conditions and the following disclaimer.
-
10  *
-
11  * * Redistributions in binary form must reproduce the above copyright notice,
-
12  * this list of conditions and the following disclaimer in the documentation
-
13  * and/or other materials provided with the distribution.
-
14  *
-
15  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-
16  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-
17  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-
18  * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
-
19  * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-
20  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-
21  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-
22  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-
23  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-
24  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-
25  * POSSIBILITY OF SUCH DAMAGE.
-
26  */
-
27 #pragma once
-
28 
- - - - - +Go to the documentation of this file.
1/*
+
2 * Copyright (c) 2018-2024, peelo.net
+
3 * All rights reserved.
+
4 *
+
5 * Redistribution and use in source and binary forms, with or without
+
6 * modification, are permitted provided that the following conditions are met:
+
7 *
+
8 * * Redistributions of source code must retain the above copyright notice,
+
9 * this list of conditions and the following disclaimer.
+
10 *
+
11 * * Redistributions in binary form must reproduce the above copyright notice,
+
12 * this list of conditions and the following disclaimer in the documentation
+
13 * and/or other materials provided with the distribution.
+
14 *
+
15 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+
16 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+
17 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+
18 * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
+
19 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+
20 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+
21 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+
22 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+
23 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+
24 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+
25 * POSSIBILITY OF SUCH DAMAGE.
+
26 */
+
27#pragma once
+
28
+ + + + + @@ -87,7 +87,7 @@
diff --git a/files.html b/files.html index 890733e..cfd44d8 100644 --- a/files.html +++ b/files.html @@ -2,8 +2,8 @@ - - + + peelo-unicode: File List @@ -16,8 +16,8 @@
- - + @@ -26,20 +26,20 @@
+
peelo-unicode
- + +/* @license-end */ +
-
-
File List
+
File List
Here is a list of all files with brief descriptions:
@@ -72,14 +72,15 @@  utf32be.hpp  utf32le.hpp  utf8.hpp - ctype.hpp - encoding.hpp + bom.hpp + ctype.hpp + encoding.hpp
diff --git a/index.html b/index.html index 3a1d7e9..5f21d27 100644 --- a/index.html +++ b/index.html @@ -2,8 +2,8 @@ - - + + peelo-unicode: Main Page @@ -16,8 +16,8 @@
- - + @@ -26,26 +26,26 @@
+
peelo-unicode
- + +/* @license-end */ +
-
-
peelo-unicode Documentation
+
peelo-unicode Documentation
diff --git a/isalnum_8hpp.html b/isalnum_8hpp.html index 11f22b2..3c33065 100644 --- a/isalnum_8hpp.html +++ b/isalnum_8hpp.html @@ -2,8 +2,8 @@ - - + + peelo-unicode: include/peelo/unicode/ctype/isalnum.hpp File Reference @@ -16,8 +16,8 @@
- - + @@ -26,15 +26,16 @@
+
peelo-unicode
- + +/* @license-end */ +
#include <peelo/unicode/ctype/isalpha.hpp>
@@ -54,16 +54,16 @@

Go to the source code of this file.

- - + - + - +

+

Namespaces

 peelo
namespace  peelo
 
 peelo::unicode
namespace  peelo::unicode
 
 peelo::unicode::ctype
namespace  peelo::unicode::ctype
 
- @@ -71,7 +71,7 @@ diff --git a/isalnum_8hpp_source.html b/isalnum_8hpp_source.html index 367deaa..7f1bc74 100644 --- a/isalnum_8hpp_source.html +++ b/isalnum_8hpp_source.html @@ -2,8 +2,8 @@ - - + +peelo-unicode: include/peelo/unicode/ctype/isalnum.hpp Source File @@ -16,8 +16,8 @@

+

Functions

bool peelo::unicode::ctype::isalnum (char32_t c)
 
- - + @@ -26,15 +26,16 @@
+
peelo-unicode
- + +/* @license-end */ +
-
-
isalnum.hpp
+
isalnum.hpp
-Go to the documentation of this file.
1 /*
-
2  * Copyright (c) 2018-2024, peelo.net
-
3  * All rights reserved.
-
4  *
-
5  * Redistribution and use in source and binary forms, with or without
-
6  * modification, are permitted provided that the following conditions are met:
-
7  *
-
8  * * Redistributions of source code must retain the above copyright notice,
-
9  * this list of conditions and the following disclaimer.
-
10  *
-
11  * * Redistributions in binary form must reproduce the above copyright notice,
-
12  * this list of conditions and the following disclaimer in the documentation
-
13  * and/or other materials provided with the distribution.
-
14  *
-
15  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-
16  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-
17  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-
18  * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
-
19  * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-
20  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-
21  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-
22  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-
23  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-
24  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-
25  * POSSIBILITY OF SUCH DAMAGE.
-
26  */
-
27 #pragma once
-
28 
- - -
31 
-
32 namespace peelo::unicode::ctype
-
33 {
-
37  inline bool
-
38  isalnum(char32_t c)
-
39  {
-
40  return isdigit(c) || isalpha(c);
-
41  }
-
42 }
+Go to the documentation of this file.
1/*
+
2 * Copyright (c) 2018-2024, peelo.net
+
3 * All rights reserved.
+
4 *
+
5 * Redistribution and use in source and binary forms, with or without
+
6 * modification, are permitted provided that the following conditions are met:
+
7 *
+
8 * * Redistributions of source code must retain the above copyright notice,
+
9 * this list of conditions and the following disclaimer.
+
10 *
+
11 * * Redistributions in binary form must reproduce the above copyright notice,
+
12 * this list of conditions and the following disclaimer in the documentation
+
13 * and/or other materials provided with the distribution.
+
14 *
+
15 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+
16 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+
17 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+
18 * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
+
19 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+
20 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+
21 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+
22 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+
23 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+
24 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+
25 * POSSIBILITY OF SUCH DAMAGE.
+
26 */
+
27#pragma once
+
28
+ + +
31
+ +
33{
+
37 inline bool
+
38 isalnum(char32_t c)
+
39 {
+
40 return isdigit(c) || isalpha(c);
+
41 }
+
42}
Definition: _utils.hpp:34
@@ -94,7 +94,7 @@
diff --git a/isalpha_8hpp.html b/isalpha_8hpp.html index 0276db1..ca8a08a 100644 --- a/isalpha_8hpp.html +++ b/isalpha_8hpp.html @@ -2,8 +2,8 @@ - - + + peelo-unicode: include/peelo/unicode/ctype/isalpha.hpp File Reference @@ -16,8 +16,8 @@
- - + @@ -26,15 +26,16 @@
+
peelo-unicode
- + +/* @license-end */ +

Go to the source code of this file.

- - + - + - +

+

Namespaces

 peelo
namespace  peelo
 
 peelo::unicode
namespace  peelo::unicode
 
 peelo::unicode::ctype
namespace  peelo::unicode::ctype
 
- @@ -70,7 +70,7 @@ diff --git a/isalpha_8hpp_source.html b/isalpha_8hpp_source.html index f0ce7d6..6547c3c 100644 --- a/isalpha_8hpp_source.html +++ b/isalpha_8hpp_source.html @@ -2,8 +2,8 @@ - - + +peelo-unicode: include/peelo/unicode/ctype/isalpha.hpp Source File @@ -16,8 +16,8 @@

+

Functions

bool peelo::unicode::ctype::isalpha (char32_t c)
 
- - + @@ -26,15 +26,16 @@
+
peelo-unicode
- + +/* @license-end */ +
-
-
isalpha.hpp
+
isalpha.hpp
-Go to the documentation of this file.
1 /*
-
2  * Copyright (c) 2018-2024, peelo.net
-
3  * All rights reserved.
-
4  *
-
5  * Redistribution and use in source and binary forms, with or without
-
6  * modification, are permitted provided that the following conditions are met:
-
7  *
-
8  * * Redistributions of source code must retain the above copyright notice,
-
9  * this list of conditions and the following disclaimer.
-
10  *
-
11  * * Redistributions in binary form must reproduce the above copyright notice,
-
12  * this list of conditions and the following disclaimer in the documentation
-
13  * and/or other materials provided with the distribution.
-
14  *
-
15  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-
16  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-
17  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-
18  * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
-
19  * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-
20  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-
21  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-
22  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-
23  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-
24  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-
25  * POSSIBILITY OF SUCH DAMAGE.
-
26  */
-
27 #pragma once
-
28 
- -
30 
-
31 namespace peelo::unicode::ctype
-
32 {
-
36  inline bool
-
37  isalpha(char32_t c)
-
38  {
-
39  static const std::array<utils::range, 733> alpha_table =
-
40  {{
-
41  { 0x0041, 0x005a, }, { 0x0061, 0x007a, }, { 0x00aa, 0x00aa, },
-
42  { 0x00b5, 0x00b5, }, { 0x00ba, 0x00ba, }, { 0x00c0, 0x00d6, },
-
43  { 0x00d8, 0x00f6, }, { 0x00f8, 0x02c1, }, { 0x02c6, 0x02d1, },
-
44  { 0x02e0, 0x02e4, }, { 0x02ec, 0x02ec, }, { 0x02ee, 0x02ee, },
-
45  { 0x0345, 0x0345, }, { 0x0370, 0x0374, }, { 0x0376, 0x0377, },
-
46  { 0x037a, 0x037d, }, { 0x037f, 0x037f, }, { 0x0386, 0x0386, },
-
47  { 0x0388, 0x038a, }, { 0x038c, 0x038c, }, { 0x038e, 0x03a1, },
-
48  { 0x03a3, 0x03f5, }, { 0x03f7, 0x0481, }, { 0x048a, 0x052f, },
-
49  { 0x0531, 0x0556, }, { 0x0559, 0x0559, }, { 0x0560, 0x0588, },
-
50  { 0x05b0, 0x05bd, }, { 0x05bf, 0x05bf, }, { 0x05c1, 0x05c2, },
-
51  { 0x05c4, 0x05c5, }, { 0x05c7, 0x05c7, }, { 0x05d0, 0x05ea, },
-
52  { 0x05ef, 0x05f2, }, { 0x0610, 0x061a, }, { 0x0620, 0x0657, },
-
53  { 0x0659, 0x065f, }, { 0x066e, 0x06d3, }, { 0x06d5, 0x06dc, },
-
54  { 0x06e1, 0x06e8, }, { 0x06ed, 0x06ef, }, { 0x06fa, 0x06fc, },
-
55  { 0x06ff, 0x06ff, }, { 0x0710, 0x073f, }, { 0x074d, 0x07b1, },
-
56  { 0x07ca, 0x07ea, }, { 0x07f4, 0x07f5, }, { 0x07fa, 0x07fa, },
-
57  { 0x0800, 0x0817, }, { 0x081a, 0x082c, }, { 0x0840, 0x0858, },
-
58  { 0x0860, 0x086a, }, { 0x0870, 0x0887, }, { 0x0889, 0x088e, },
-
59  { 0x08a0, 0x08c9, }, { 0x08d4, 0x08df, }, { 0x08e3, 0x08e9, },
-
60  { 0x08f0, 0x093b, }, { 0x093d, 0x094c, }, { 0x094e, 0x0950, },
-
61  { 0x0955, 0x0963, }, { 0x0971, 0x0983, }, { 0x0985, 0x098c, },
-
62  { 0x098f, 0x0990, }, { 0x0993, 0x09a8, }, { 0x09aa, 0x09b0, },
-
63  { 0x09b2, 0x09b2, }, { 0x09b6, 0x09b9, }, { 0x09bd, 0x09c4, },
-
64  { 0x09c7, 0x09c8, }, { 0x09cb, 0x09cc, }, { 0x09ce, 0x09ce, },
-
65  { 0x09d7, 0x09d7, }, { 0x09dc, 0x09dd, }, { 0x09df, 0x09e3, },
-
66  { 0x09f0, 0x09f1, }, { 0x09fc, 0x09fc, }, { 0x0a01, 0x0a03, },
-
67  { 0x0a05, 0x0a0a, }, { 0x0a0f, 0x0a10, }, { 0x0a13, 0x0a28, },
-
68  { 0x0a2a, 0x0a30, }, { 0x0a32, 0x0a33, }, { 0x0a35, 0x0a36, },
-
69  { 0x0a38, 0x0a39, }, { 0x0a3e, 0x0a42, }, { 0x0a47, 0x0a48, },
-
70  { 0x0a4b, 0x0a4c, }, { 0x0a51, 0x0a51, }, { 0x0a59, 0x0a5c, },
-
71  { 0x0a5e, 0x0a5e, }, { 0x0a70, 0x0a75, }, { 0x0a81, 0x0a83, },
-
72  { 0x0a85, 0x0a8d, }, { 0x0a8f, 0x0a91, }, { 0x0a93, 0x0aa8, },
-
73  { 0x0aaa, 0x0ab0, }, { 0x0ab2, 0x0ab3, }, { 0x0ab5, 0x0ab9, },
-
74  { 0x0abd, 0x0ac5, }, { 0x0ac7, 0x0ac9, }, { 0x0acb, 0x0acc, },
-
75  { 0x0ad0, 0x0ad0, }, { 0x0ae0, 0x0ae3, }, { 0x0af9, 0x0afc, },
-
76  { 0x0b01, 0x0b03, }, { 0x0b05, 0x0b0c, }, { 0x0b0f, 0x0b10, },
-
77  { 0x0b13, 0x0b28, }, { 0x0b2a, 0x0b30, }, { 0x0b32, 0x0b33, },
-
78  { 0x0b35, 0x0b39, }, { 0x0b3d, 0x0b44, }, { 0x0b47, 0x0b48, },
-
79  { 0x0b4b, 0x0b4c, }, { 0x0b56, 0x0b57, }, { 0x0b5c, 0x0b5d, },
-
80  { 0x0b5f, 0x0b63, }, { 0x0b71, 0x0b71, }, { 0x0b82, 0x0b83, },
-
81  { 0x0b85, 0x0b8a, }, { 0x0b8e, 0x0b90, }, { 0x0b92, 0x0b95, },
-
82  { 0x0b99, 0x0b9a, }, { 0x0b9c, 0x0b9c, }, { 0x0b9e, 0x0b9f, },
-
83  { 0x0ba3, 0x0ba4, }, { 0x0ba8, 0x0baa, }, { 0x0bae, 0x0bb9, },
-
84  { 0x0bbe, 0x0bc2, }, { 0x0bc6, 0x0bc8, }, { 0x0bca, 0x0bcc, },
-
85  { 0x0bd0, 0x0bd0, }, { 0x0bd7, 0x0bd7, }, { 0x0c00, 0x0c0c, },
-
86  { 0x0c0e, 0x0c10, }, { 0x0c12, 0x0c28, }, { 0x0c2a, 0x0c39, },
-
87  { 0x0c3d, 0x0c44, }, { 0x0c46, 0x0c48, }, { 0x0c4a, 0x0c4c, },
-
88  { 0x0c55, 0x0c56, }, { 0x0c58, 0x0c5a, }, { 0x0c5d, 0x0c5d, },
-
89  { 0x0c60, 0x0c63, }, { 0x0c80, 0x0c83, }, { 0x0c85, 0x0c8c, },
-
90  { 0x0c8e, 0x0c90, }, { 0x0c92, 0x0ca8, }, { 0x0caa, 0x0cb3, },
-
91  { 0x0cb5, 0x0cb9, }, { 0x0cbd, 0x0cc4, }, { 0x0cc6, 0x0cc8, },
-
92  { 0x0cca, 0x0ccc, }, { 0x0cd5, 0x0cd6, }, { 0x0cdd, 0x0cde, },
-
93  { 0x0ce0, 0x0ce3, }, { 0x0cf1, 0x0cf3, }, { 0x0d00, 0x0d0c, },
-
94  { 0x0d0e, 0x0d10, }, { 0x0d12, 0x0d3a, }, { 0x0d3d, 0x0d44, },
-
95  { 0x0d46, 0x0d48, }, { 0x0d4a, 0x0d4c, }, { 0x0d4e, 0x0d4e, },
-
96  { 0x0d54, 0x0d57, }, { 0x0d5f, 0x0d63, }, { 0x0d7a, 0x0d7f, },
-
97  { 0x0d81, 0x0d83, }, { 0x0d85, 0x0d96, }, { 0x0d9a, 0x0db1, },
-
98  { 0x0db3, 0x0dbb, }, { 0x0dbd, 0x0dbd, }, { 0x0dc0, 0x0dc6, },
-
99  { 0x0dcf, 0x0dd4, }, { 0x0dd6, 0x0dd6, }, { 0x0dd8, 0x0ddf, },
-
100  { 0x0df2, 0x0df3, }, { 0x0e01, 0x0e3a, }, { 0x0e40, 0x0e46, },
-
101  { 0x0e4d, 0x0e4d, }, { 0x0e81, 0x0e82, }, { 0x0e84, 0x0e84, },
-
102  { 0x0e86, 0x0e8a, }, { 0x0e8c, 0x0ea3, }, { 0x0ea5, 0x0ea5, },
-
103  { 0x0ea7, 0x0eb9, }, { 0x0ebb, 0x0ebd, }, { 0x0ec0, 0x0ec4, },
-
104  { 0x0ec6, 0x0ec6, }, { 0x0ecd, 0x0ecd, }, { 0x0edc, 0x0edf, },
-
105  { 0x0f00, 0x0f00, }, { 0x0f40, 0x0f47, }, { 0x0f49, 0x0f6c, },
-
106  { 0x0f71, 0x0f83, }, { 0x0f88, 0x0f97, }, { 0x0f99, 0x0fbc, },
-
107  { 0x1000, 0x1036, }, { 0x1038, 0x1038, }, { 0x103b, 0x103f, },
-
108  { 0x1050, 0x108f, }, { 0x109a, 0x109d, }, { 0x10a0, 0x10c5, },
-
109  { 0x10c7, 0x10c7, }, { 0x10cd, 0x10cd, }, { 0x10d0, 0x10fa, },
-
110  { 0x10fc, 0x1248, }, { 0x124a, 0x124d, }, { 0x1250, 0x1256, },
-
111  { 0x1258, 0x1258, }, { 0x125a, 0x125d, }, { 0x1260, 0x1288, },
-
112  { 0x128a, 0x128d, }, { 0x1290, 0x12b0, }, { 0x12b2, 0x12b5, },
-
113  { 0x12b8, 0x12be, }, { 0x12c0, 0x12c0, }, { 0x12c2, 0x12c5, },
-
114  { 0x12c8, 0x12d6, }, { 0x12d8, 0x1310, }, { 0x1312, 0x1315, },
-
115  { 0x1318, 0x135a, }, { 0x1380, 0x138f, }, { 0x13a0, 0x13f5, },
-
116  { 0x13f8, 0x13fd, }, { 0x1401, 0x166c, }, { 0x166f, 0x167f, },
-
117  { 0x1681, 0x169a, }, { 0x16a0, 0x16ea, }, { 0x16ee, 0x16f8, },
-
118  { 0x1700, 0x1713, }, { 0x171f, 0x1733, }, { 0x1740, 0x1753, },
-
119  { 0x1760, 0x176c, }, { 0x176e, 0x1770, }, { 0x1772, 0x1773, },
-
120  { 0x1780, 0x17b3, }, { 0x17b6, 0x17c8, }, { 0x17d7, 0x17d7, },
-
121  { 0x17dc, 0x17dc, }, { 0x1820, 0x1878, }, { 0x1880, 0x18aa, },
-
122  { 0x18b0, 0x18f5, }, { 0x1900, 0x191e, }, { 0x1920, 0x192b, },
-
123  { 0x1930, 0x1938, }, { 0x1950, 0x196d, }, { 0x1970, 0x1974, },
-
124  { 0x1980, 0x19ab, }, { 0x19b0, 0x19c9, }, { 0x1a00, 0x1a1b, },
-
125  { 0x1a20, 0x1a5e, }, { 0x1a61, 0x1a74, }, { 0x1aa7, 0x1aa7, },
-
126  { 0x1abf, 0x1ac0, }, { 0x1acc, 0x1ace, }, { 0x1b00, 0x1b33, },
-
127  { 0x1b35, 0x1b43, }, { 0x1b45, 0x1b4c, }, { 0x1b80, 0x1ba9, },
-
128  { 0x1bac, 0x1baf, }, { 0x1bba, 0x1be5, }, { 0x1be7, 0x1bf1, },
-
129  { 0x1c00, 0x1c36, }, { 0x1c4d, 0x1c4f, }, { 0x1c5a, 0x1c7d, },
-
130  { 0x1c80, 0x1c88, }, { 0x1c90, 0x1cba, }, { 0x1cbd, 0x1cbf, },
-
131  { 0x1ce9, 0x1cec, }, { 0x1cee, 0x1cf3, }, { 0x1cf5, 0x1cf6, },
-
132  { 0x1cfa, 0x1cfa, }, { 0x1d00, 0x1dbf, }, { 0x1de7, 0x1df4, },
-
133  { 0x1e00, 0x1f15, }, { 0x1f18, 0x1f1d, }, { 0x1f20, 0x1f45, },
-
134  { 0x1f48, 0x1f4d, }, { 0x1f50, 0x1f57, }, { 0x1f59, 0x1f59, },
-
135  { 0x1f5b, 0x1f5b, }, { 0x1f5d, 0x1f5d, }, { 0x1f5f, 0x1f7d, },
-
136  { 0x1f80, 0x1fb4, }, { 0x1fb6, 0x1fbc, }, { 0x1fbe, 0x1fbe, },
-
137  { 0x1fc2, 0x1fc4, }, { 0x1fc6, 0x1fcc, }, { 0x1fd0, 0x1fd3, },
-
138  { 0x1fd6, 0x1fdb, }, { 0x1fe0, 0x1fec, }, { 0x1ff2, 0x1ff4, },
-
139  { 0x1ff6, 0x1ffc, }, { 0x2071, 0x2071, }, { 0x207f, 0x207f, },
-
140  { 0x2090, 0x209c, }, { 0x2102, 0x2102, }, { 0x2107, 0x2107, },
-
141  { 0x210a, 0x2113, }, { 0x2115, 0x2115, }, { 0x2119, 0x211d, },
-
142  { 0x2124, 0x2124, }, { 0x2126, 0x2126, }, { 0x2128, 0x2128, },
-
143  { 0x212a, 0x212d, }, { 0x212f, 0x2139, }, { 0x213c, 0x213f, },
-
144  { 0x2145, 0x2149, }, { 0x214e, 0x214e, }, { 0x2160, 0x2188, },
-
145  { 0x24b6, 0x24e9, }, { 0x2c00, 0x2ce4, }, { 0x2ceb, 0x2cee, },
-
146  { 0x2cf2, 0x2cf3, }, { 0x2d00, 0x2d25, }, { 0x2d27, 0x2d27, },
-
147  { 0x2d2d, 0x2d2d, }, { 0x2d30, 0x2d67, }, { 0x2d6f, 0x2d6f, },
-
148  { 0x2d80, 0x2d96, }, { 0x2da0, 0x2da6, }, { 0x2da8, 0x2dae, },
-
149  { 0x2db0, 0x2db6, }, { 0x2db8, 0x2dbe, }, { 0x2dc0, 0x2dc6, },
-
150  { 0x2dc8, 0x2dce, }, { 0x2dd0, 0x2dd6, }, { 0x2dd8, 0x2dde, },
-
151  { 0x2de0, 0x2dff, }, { 0x2e2f, 0x2e2f, }, { 0x3005, 0x3007, },
-
152  { 0x3021, 0x3029, }, { 0x3031, 0x3035, }, { 0x3038, 0x303c, },
-
153  { 0x3041, 0x3096, }, { 0x309d, 0x309f, }, { 0x30a1, 0x30fa, },
-
154  { 0x30fc, 0x30ff, }, { 0x3105, 0x312f, }, { 0x3131, 0x318e, },
-
155  { 0x31a0, 0x31bf, }, { 0x31f0, 0x31ff, }, { 0x3400, 0x4dbf, },
-
156  { 0x4e00, 0xa48c, }, { 0xa4d0, 0xa4fd, }, { 0xa500, 0xa60c, },
-
157  { 0xa610, 0xa61f, }, { 0xa62a, 0xa62b, }, { 0xa640, 0xa66e, },
-
158  { 0xa674, 0xa67b, }, { 0xa67f, 0xa6ef, }, { 0xa717, 0xa71f, },
-
159  { 0xa722, 0xa788, }, { 0xa78b, 0xa7ca, }, { 0xa7d0, 0xa7d1, },
-
160  { 0xa7d3, 0xa7d3, }, { 0xa7d5, 0xa7d9, }, { 0xa7f2, 0xa805, },
-
161  { 0xa807, 0xa827, }, { 0xa840, 0xa873, }, { 0xa880, 0xa8c3, },
-
162  { 0xa8c5, 0xa8c5, }, { 0xa8f2, 0xa8f7, }, { 0xa8fb, 0xa8fb, },
-
163  { 0xa8fd, 0xa8ff, }, { 0xa90a, 0xa92a, }, { 0xa930, 0xa952, },
-
164  { 0xa960, 0xa97c, }, { 0xa980, 0xa9b2, }, { 0xa9b4, 0xa9bf, },
-
165  { 0xa9cf, 0xa9cf, }, { 0xa9e0, 0xa9ef, }, { 0xa9fa, 0xa9fe, },
-
166  { 0xaa00, 0xaa36, }, { 0xaa40, 0xaa4d, }, { 0xaa60, 0xaa76, },
-
167  { 0xaa7a, 0xaabe, }, { 0xaac0, 0xaac0, }, { 0xaac2, 0xaac2, },
-
168  { 0xaadb, 0xaadd, }, { 0xaae0, 0xaaef, }, { 0xaaf2, 0xaaf5, },
-
169  { 0xab01, 0xab06, }, { 0xab09, 0xab0e, }, { 0xab11, 0xab16, },
-
170  { 0xab20, 0xab26, }, { 0xab28, 0xab2e, }, { 0xab30, 0xab5a, },
-
171  { 0xab5c, 0xab69, }, { 0xab70, 0xabea, }, { 0xac00, 0xd7a3, },
-
172  { 0xd7b0, 0xd7c6, }, { 0xd7cb, 0xd7fb, }, { 0xf900, 0xfa6d, },
-
173  { 0xfa70, 0xfad9, }, { 0xfb00, 0xfb06, }, { 0xfb13, 0xfb17, },
-
174  { 0xfb1d, 0xfb28, }, { 0xfb2a, 0xfb36, }, { 0xfb38, 0xfb3c, },
-
175  { 0xfb3e, 0xfb3e, }, { 0xfb40, 0xfb41, }, { 0xfb43, 0xfb44, },
-
176  { 0xfb46, 0xfbb1, }, { 0xfbd3, 0xfd3d, }, { 0xfd50, 0xfd8f, },
-
177  { 0xfd92, 0xfdc7, }, { 0xfdf0, 0xfdfb, }, { 0xfe70, 0xfe74, },
-
178  { 0xfe76, 0xfefc, }, { 0xff21, 0xff3a, }, { 0xff41, 0xff5a, },
-
179  { 0xff66, 0xffbe, }, { 0xffc2, 0xffc7, }, { 0xffca, 0xffcf, },
-
180  { 0xffd2, 0xffd7, }, { 0xffda, 0xffdc, }, { 0x10000, 0x1000b, },
-
181  { 0x1000d, 0x10026, }, { 0x10028, 0x1003a, }, { 0x1003c, 0x1003d, },
-
182  { 0x1003f, 0x1004d, }, { 0x10050, 0x1005d, }, { 0x10080, 0x100fa, },
-
183  { 0x10140, 0x10174, }, { 0x10280, 0x1029c, }, { 0x102a0, 0x102d0, },
-
184  { 0x10300, 0x1031f, }, { 0x1032d, 0x1034a, }, { 0x10350, 0x1037a, },
-
185  { 0x10380, 0x1039d, }, { 0x103a0, 0x103c3, }, { 0x103c8, 0x103cf, },
-
186  { 0x103d1, 0x103d5, }, { 0x10400, 0x1049d, }, { 0x104b0, 0x104d3, },
-
187  { 0x104d8, 0x104fb, }, { 0x10500, 0x10527, }, { 0x10530, 0x10563, },
-
188  { 0x10570, 0x1057a, }, { 0x1057c, 0x1058a, }, { 0x1058c, 0x10592, },
-
189  { 0x10594, 0x10595, }, { 0x10597, 0x105a1, }, { 0x105a3, 0x105b1, },
-
190  { 0x105b3, 0x105b9, }, { 0x105bb, 0x105bc, }, { 0x10600, 0x10736, },
-
191  { 0x10740, 0x10755, }, { 0x10760, 0x10767, }, { 0x10780, 0x10785, },
-
192  { 0x10787, 0x107b0, }, { 0x107b2, 0x107ba, }, { 0x10800, 0x10805, },
-
193  { 0x10808, 0x10808, }, { 0x1080a, 0x10835, }, { 0x10837, 0x10838, },
-
194  { 0x1083c, 0x1083c, }, { 0x1083f, 0x10855, }, { 0x10860, 0x10876, },
-
195  { 0x10880, 0x1089e, }, { 0x108e0, 0x108f2, }, { 0x108f4, 0x108f5, },
-
196  { 0x10900, 0x10915, }, { 0x10920, 0x10939, }, { 0x10980, 0x109b7, },
-
197  { 0x109be, 0x109bf, }, { 0x10a00, 0x10a03, }, { 0x10a05, 0x10a06, },
-
198  { 0x10a0c, 0x10a13, }, { 0x10a15, 0x10a17, }, { 0x10a19, 0x10a35, },
-
199  { 0x10a60, 0x10a7c, }, { 0x10a80, 0x10a9c, }, { 0x10ac0, 0x10ac7, },
-
200  { 0x10ac9, 0x10ae4, }, { 0x10b00, 0x10b35, }, { 0x10b40, 0x10b55, },
-
201  { 0x10b60, 0x10b72, }, { 0x10b80, 0x10b91, }, { 0x10c00, 0x10c48, },
-
202  { 0x10c80, 0x10cb2, }, { 0x10cc0, 0x10cf2, }, { 0x10d00, 0x10d27, },
-
203  { 0x10e80, 0x10ea9, }, { 0x10eab, 0x10eac, }, { 0x10eb0, 0x10eb1, },
-
204  { 0x10f00, 0x10f1c, }, { 0x10f27, 0x10f27, }, { 0x10f30, 0x10f45, },
-
205  { 0x10f70, 0x10f81, }, { 0x10fb0, 0x10fc4, }, { 0x10fe0, 0x10ff6, },
-
206  { 0x11000, 0x11045, }, { 0x11071, 0x11075, }, { 0x11080, 0x110b8, },
-
207  { 0x110c2, 0x110c2, }, { 0x110d0, 0x110e8, }, { 0x11100, 0x11132, },
-
208  { 0x11144, 0x11147, }, { 0x11150, 0x11172, }, { 0x11176, 0x11176, },
-
209  { 0x11180, 0x111bf, }, { 0x111c1, 0x111c4, }, { 0x111ce, 0x111cf, },
-
210  { 0x111da, 0x111da, }, { 0x111dc, 0x111dc, }, { 0x11200, 0x11211, },
-
211  { 0x11213, 0x11234, }, { 0x11237, 0x11237, }, { 0x1123e, 0x11241, },
-
212  { 0x11280, 0x11286, }, { 0x11288, 0x11288, }, { 0x1128a, 0x1128d, },
-
213  { 0x1128f, 0x1129d, }, { 0x1129f, 0x112a8, }, { 0x112b0, 0x112e8, },
-
214  { 0x11300, 0x11303, }, { 0x11305, 0x1130c, }, { 0x1130f, 0x11310, },
-
215  { 0x11313, 0x11328, }, { 0x1132a, 0x11330, }, { 0x11332, 0x11333, },
-
216  { 0x11335, 0x11339, }, { 0x1133d, 0x11344, }, { 0x11347, 0x11348, },
-
217  { 0x1134b, 0x1134c, }, { 0x11350, 0x11350, }, { 0x11357, 0x11357, },
-
218  { 0x1135d, 0x11363, }, { 0x11400, 0x11441, }, { 0x11443, 0x11445, },
-
219  { 0x11447, 0x1144a, }, { 0x1145f, 0x11461, }, { 0x11480, 0x114c1, },
-
220  { 0x114c4, 0x114c5, }, { 0x114c7, 0x114c7, }, { 0x11580, 0x115b5, },
-
221  { 0x115b8, 0x115be, }, { 0x115d8, 0x115dd, }, { 0x11600, 0x1163e, },
-
222  { 0x11640, 0x11640, }, { 0x11644, 0x11644, }, { 0x11680, 0x116b5, },
-
223  { 0x116b8, 0x116b8, }, { 0x11700, 0x1171a, }, { 0x1171d, 0x1172a, },
-
224  { 0x11740, 0x11746, }, { 0x11800, 0x11838, }, { 0x118a0, 0x118df, },
-
225  { 0x118ff, 0x11906, }, { 0x11909, 0x11909, }, { 0x1190c, 0x11913, },
-
226  { 0x11915, 0x11916, }, { 0x11918, 0x11935, }, { 0x11937, 0x11938, },
-
227  { 0x1193b, 0x1193c, }, { 0x1193f, 0x11942, }, { 0x119a0, 0x119a7, },
-
228  { 0x119aa, 0x119d7, }, { 0x119da, 0x119df, }, { 0x119e1, 0x119e1, },
-
229  { 0x119e3, 0x119e4, }, { 0x11a00, 0x11a32, }, { 0x11a35, 0x11a3e, },
-
230  { 0x11a50, 0x11a97, }, { 0x11a9d, 0x11a9d, }, { 0x11ab0, 0x11af8, },
-
231  { 0x11c00, 0x11c08, }, { 0x11c0a, 0x11c36, }, { 0x11c38, 0x11c3e, },
-
232  { 0x11c40, 0x11c40, }, { 0x11c72, 0x11c8f, }, { 0x11c92, 0x11ca7, },
-
233  { 0x11ca9, 0x11cb6, }, { 0x11d00, 0x11d06, }, { 0x11d08, 0x11d09, },
-
234  { 0x11d0b, 0x11d36, }, { 0x11d3a, 0x11d3a, }, { 0x11d3c, 0x11d3d, },
-
235  { 0x11d3f, 0x11d41, }, { 0x11d43, 0x11d43, }, { 0x11d46, 0x11d47, },
-
236  { 0x11d60, 0x11d65, }, { 0x11d67, 0x11d68, }, { 0x11d6a, 0x11d8e, },
-
237  { 0x11d90, 0x11d91, }, { 0x11d93, 0x11d96, }, { 0x11d98, 0x11d98, },
-
238  { 0x11ee0, 0x11ef6, }, { 0x11f00, 0x11f10, }, { 0x11f12, 0x11f3a, },
-
239  { 0x11f3e, 0x11f40, }, { 0x11fb0, 0x11fb0, }, { 0x12000, 0x12399, },
-
240  { 0x12400, 0x1246e, }, { 0x12480, 0x12543, }, { 0x12f90, 0x12ff0, },
-
241  { 0x13000, 0x1342f, }, { 0x13441, 0x13446, }, { 0x14400, 0x14646, },
-
242  { 0x16800, 0x16a38, }, { 0x16a40, 0x16a5e, }, { 0x16a70, 0x16abe, },
-
243  { 0x16ad0, 0x16aed, }, { 0x16b00, 0x16b2f, }, { 0x16b40, 0x16b43, },
-
244  { 0x16b63, 0x16b77, }, { 0x16b7d, 0x16b8f, }, { 0x16e40, 0x16e7f, },
-
245  { 0x16f00, 0x16f4a, }, { 0x16f4f, 0x16f87, }, { 0x16f8f, 0x16f9f, },
-
246  { 0x16fe0, 0x16fe1, }, { 0x16fe3, 0x16fe3, }, { 0x16ff0, 0x16ff1, },
-
247  { 0x17000, 0x187f7, }, { 0x18800, 0x18cd5, }, { 0x18d00, 0x18d08, },
-
248  { 0x1aff0, 0x1aff3, }, { 0x1aff5, 0x1affb, }, { 0x1affd, 0x1affe, },
-
249  { 0x1b000, 0x1b122, }, { 0x1b132, 0x1b132, }, { 0x1b150, 0x1b152, },
-
250  { 0x1b155, 0x1b155, }, { 0x1b164, 0x1b167, }, { 0x1b170, 0x1b2fb, },
-
251  { 0x1bc00, 0x1bc6a, }, { 0x1bc70, 0x1bc7c, }, { 0x1bc80, 0x1bc88, },
-
252  { 0x1bc90, 0x1bc99, }, { 0x1bc9e, 0x1bc9e, }, { 0x1d400, 0x1d454, },
-
253  { 0x1d456, 0x1d49c, }, { 0x1d49e, 0x1d49f, }, { 0x1d4a2, 0x1d4a2, },
-
254  { 0x1d4a5, 0x1d4a6, }, { 0x1d4a9, 0x1d4ac, }, { 0x1d4ae, 0x1d4b9, },
-
255  { 0x1d4bb, 0x1d4bb, }, { 0x1d4bd, 0x1d4c3, }, { 0x1d4c5, 0x1d505, },
-
256  { 0x1d507, 0x1d50a, }, { 0x1d50d, 0x1d514, }, { 0x1d516, 0x1d51c, },
-
257  { 0x1d51e, 0x1d539, }, { 0x1d53b, 0x1d53e, }, { 0x1d540, 0x1d544, },
-
258  { 0x1d546, 0x1d546, }, { 0x1d54a, 0x1d550, }, { 0x1d552, 0x1d6a5, },
-
259  { 0x1d6a8, 0x1d6c0, }, { 0x1d6c2, 0x1d6da, }, { 0x1d6dc, 0x1d6fa, },
-
260  { 0x1d6fc, 0x1d714, }, { 0x1d716, 0x1d734, }, { 0x1d736, 0x1d74e, },
-
261  { 0x1d750, 0x1d76e, }, { 0x1d770, 0x1d788, }, { 0x1d78a, 0x1d7a8, },
-
262  { 0x1d7aa, 0x1d7c2, }, { 0x1d7c4, 0x1d7cb, }, { 0x1df00, 0x1df1e, },
-
263  { 0x1df25, 0x1df2a, }, { 0x1e000, 0x1e006, }, { 0x1e008, 0x1e018, },
-
264  { 0x1e01b, 0x1e021, }, { 0x1e023, 0x1e024, }, { 0x1e026, 0x1e02a, },
-
265  { 0x1e030, 0x1e06d, }, { 0x1e08f, 0x1e08f, }, { 0x1e100, 0x1e12c, },
-
266  { 0x1e137, 0x1e13d, }, { 0x1e14e, 0x1e14e, }, { 0x1e290, 0x1e2ad, },
-
267  { 0x1e2c0, 0x1e2eb, }, { 0x1e4d0, 0x1e4eb, }, { 0x1e7e0, 0x1e7e6, },
-
268  { 0x1e7e8, 0x1e7eb, }, { 0x1e7ed, 0x1e7ee, }, { 0x1e7f0, 0x1e7fe, },
-
269  { 0x1e800, 0x1e8c4, }, { 0x1e900, 0x1e943, }, { 0x1e947, 0x1e947, },
-
270  { 0x1e94b, 0x1e94b, }, { 0x1ee00, 0x1ee03, }, { 0x1ee05, 0x1ee1f, },
-
271  { 0x1ee21, 0x1ee22, }, { 0x1ee24, 0x1ee24, }, { 0x1ee27, 0x1ee27, },
-
272  { 0x1ee29, 0x1ee32, }, { 0x1ee34, 0x1ee37, }, { 0x1ee39, 0x1ee39, },
-
273  { 0x1ee3b, 0x1ee3b, }, { 0x1ee42, 0x1ee42, }, { 0x1ee47, 0x1ee47, },
-
274  { 0x1ee49, 0x1ee49, }, { 0x1ee4b, 0x1ee4b, }, { 0x1ee4d, 0x1ee4f, },
-
275  { 0x1ee51, 0x1ee52, }, { 0x1ee54, 0x1ee54, }, { 0x1ee57, 0x1ee57, },
-
276  { 0x1ee59, 0x1ee59, }, { 0x1ee5b, 0x1ee5b, }, { 0x1ee5d, 0x1ee5d, },
-
277  { 0x1ee5f, 0x1ee5f, }, { 0x1ee61, 0x1ee62, }, { 0x1ee64, 0x1ee64, },
-
278  { 0x1ee67, 0x1ee6a, }, { 0x1ee6c, 0x1ee72, }, { 0x1ee74, 0x1ee77, },
-
279  { 0x1ee79, 0x1ee7c, }, { 0x1ee7e, 0x1ee7e, }, { 0x1ee80, 0x1ee89, },
-
280  { 0x1ee8b, 0x1ee9b, }, { 0x1eea1, 0x1eea3, }, { 0x1eea5, 0x1eea9, },
-
281  { 0x1eeab, 0x1eebb, }, { 0x1f130, 0x1f149, }, { 0x1f150, 0x1f169, },
-
282  { 0x1f170, 0x1f189, }, { 0x20000, 0x2a6df, }, { 0x2a700, 0x2b739, },
-
283  { 0x2b740, 0x2b81d, }, { 0x2b820, 0x2cea1, }, { 0x2ceb0, 0x2ebe0, },
-
284  { 0x2ebf0, 0x2ee5d, }, { 0x2f800, 0x2fa1d, }, { 0x30000, 0x3134a, },
-
285  { 0x31350, 0x323af, },
-
286  }};
-
287 
-
288  return utils::table_lookup(alpha_table, c);
-
289  }
-
290 }
+Go to the documentation of this file.
1/*
+
2 * Copyright (c) 2018-2024, peelo.net
+
3 * All rights reserved.
+
4 *
+
5 * Redistribution and use in source and binary forms, with or without
+
6 * modification, are permitted provided that the following conditions are met:
+
7 *
+
8 * * Redistributions of source code must retain the above copyright notice,
+
9 * this list of conditions and the following disclaimer.
+
10 *
+
11 * * Redistributions in binary form must reproduce the above copyright notice,
+
12 * this list of conditions and the following disclaimer in the documentation
+
13 * and/or other materials provided with the distribution.
+
14 *
+
15 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+
16 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+
17 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+
18 * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
+
19 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+
20 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+
21 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+
22 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+
23 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+
24 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+
25 * POSSIBILITY OF SUCH DAMAGE.
+
26 */
+
27#pragma once
+
28
+ +
30
+ +
32{
+
36 inline bool
+
37 isalpha(char32_t c)
+
38 {
+
39 static const std::array<utils::range, 733> alpha_table =
+
40 {{
+
41 { 0x0041, 0x005a, }, { 0x0061, 0x007a, }, { 0x00aa, 0x00aa, },
+
42 { 0x00b5, 0x00b5, }, { 0x00ba, 0x00ba, }, { 0x00c0, 0x00d6, },
+
43 { 0x00d8, 0x00f6, }, { 0x00f8, 0x02c1, }, { 0x02c6, 0x02d1, },
+
44 { 0x02e0, 0x02e4, }, { 0x02ec, 0x02ec, }, { 0x02ee, 0x02ee, },
+
45 { 0x0345, 0x0345, }, { 0x0370, 0x0374, }, { 0x0376, 0x0377, },
+
46 { 0x037a, 0x037d, }, { 0x037f, 0x037f, }, { 0x0386, 0x0386, },
+
47 { 0x0388, 0x038a, }, { 0x038c, 0x038c, }, { 0x038e, 0x03a1, },
+
48 { 0x03a3, 0x03f5, }, { 0x03f7, 0x0481, }, { 0x048a, 0x052f, },
+
49 { 0x0531, 0x0556, }, { 0x0559, 0x0559, }, { 0x0560, 0x0588, },
+
50 { 0x05b0, 0x05bd, }, { 0x05bf, 0x05bf, }, { 0x05c1, 0x05c2, },
+
51 { 0x05c4, 0x05c5, }, { 0x05c7, 0x05c7, }, { 0x05d0, 0x05ea, },
+
52 { 0x05ef, 0x05f2, }, { 0x0610, 0x061a, }, { 0x0620, 0x0657, },
+
53 { 0x0659, 0x065f, }, { 0x066e, 0x06d3, }, { 0x06d5, 0x06dc, },
+
54 { 0x06e1, 0x06e8, }, { 0x06ed, 0x06ef, }, { 0x06fa, 0x06fc, },
+
55 { 0x06ff, 0x06ff, }, { 0x0710, 0x073f, }, { 0x074d, 0x07b1, },
+
56 { 0x07ca, 0x07ea, }, { 0x07f4, 0x07f5, }, { 0x07fa, 0x07fa, },
+
57 { 0x0800, 0x0817, }, { 0x081a, 0x082c, }, { 0x0840, 0x0858, },
+
58 { 0x0860, 0x086a, }, { 0x0870, 0x0887, }, { 0x0889, 0x088e, },
+
59 { 0x08a0, 0x08c9, }, { 0x08d4, 0x08df, }, { 0x08e3, 0x08e9, },
+
60 { 0x08f0, 0x093b, }, { 0x093d, 0x094c, }, { 0x094e, 0x0950, },
+
61 { 0x0955, 0x0963, }, { 0x0971, 0x0983, }, { 0x0985, 0x098c, },
+
62 { 0x098f, 0x0990, }, { 0x0993, 0x09a8, }, { 0x09aa, 0x09b0, },
+
63 { 0x09b2, 0x09b2, }, { 0x09b6, 0x09b9, }, { 0x09bd, 0x09c4, },
+
64 { 0x09c7, 0x09c8, }, { 0x09cb, 0x09cc, }, { 0x09ce, 0x09ce, },
+
65 { 0x09d7, 0x09d7, }, { 0x09dc, 0x09dd, }, { 0x09df, 0x09e3, },
+
66 { 0x09f0, 0x09f1, }, { 0x09fc, 0x09fc, }, { 0x0a01, 0x0a03, },
+
67 { 0x0a05, 0x0a0a, }, { 0x0a0f, 0x0a10, }, { 0x0a13, 0x0a28, },
+
68 { 0x0a2a, 0x0a30, }, { 0x0a32, 0x0a33, }, { 0x0a35, 0x0a36, },
+
69 { 0x0a38, 0x0a39, }, { 0x0a3e, 0x0a42, }, { 0x0a47, 0x0a48, },
+
70 { 0x0a4b, 0x0a4c, }, { 0x0a51, 0x0a51, }, { 0x0a59, 0x0a5c, },
+
71 { 0x0a5e, 0x0a5e, }, { 0x0a70, 0x0a75, }, { 0x0a81, 0x0a83, },
+
72 { 0x0a85, 0x0a8d, }, { 0x0a8f, 0x0a91, }, { 0x0a93, 0x0aa8, },
+
73 { 0x0aaa, 0x0ab0, }, { 0x0ab2, 0x0ab3, }, { 0x0ab5, 0x0ab9, },
+
74 { 0x0abd, 0x0ac5, }, { 0x0ac7, 0x0ac9, }, { 0x0acb, 0x0acc, },
+
75 { 0x0ad0, 0x0ad0, }, { 0x0ae0, 0x0ae3, }, { 0x0af9, 0x0afc, },
+
76 { 0x0b01, 0x0b03, }, { 0x0b05, 0x0b0c, }, { 0x0b0f, 0x0b10, },
+
77 { 0x0b13, 0x0b28, }, { 0x0b2a, 0x0b30, }, { 0x0b32, 0x0b33, },
+
78 { 0x0b35, 0x0b39, }, { 0x0b3d, 0x0b44, }, { 0x0b47, 0x0b48, },
+
79 { 0x0b4b, 0x0b4c, }, { 0x0b56, 0x0b57, }, { 0x0b5c, 0x0b5d, },
+
80 { 0x0b5f, 0x0b63, }, { 0x0b71, 0x0b71, }, { 0x0b82, 0x0b83, },
+
81 { 0x0b85, 0x0b8a, }, { 0x0b8e, 0x0b90, }, { 0x0b92, 0x0b95, },
+
82 { 0x0b99, 0x0b9a, }, { 0x0b9c, 0x0b9c, }, { 0x0b9e, 0x0b9f, },
+
83 { 0x0ba3, 0x0ba4, }, { 0x0ba8, 0x0baa, }, { 0x0bae, 0x0bb9, },
+
84 { 0x0bbe, 0x0bc2, }, { 0x0bc6, 0x0bc8, }, { 0x0bca, 0x0bcc, },
+
85 { 0x0bd0, 0x0bd0, }, { 0x0bd7, 0x0bd7, }, { 0x0c00, 0x0c0c, },
+
86 { 0x0c0e, 0x0c10, }, { 0x0c12, 0x0c28, }, { 0x0c2a, 0x0c39, },
+
87 { 0x0c3d, 0x0c44, }, { 0x0c46, 0x0c48, }, { 0x0c4a, 0x0c4c, },
+
88 { 0x0c55, 0x0c56, }, { 0x0c58, 0x0c5a, }, { 0x0c5d, 0x0c5d, },
+
89 { 0x0c60, 0x0c63, }, { 0x0c80, 0x0c83, }, { 0x0c85, 0x0c8c, },
+
90 { 0x0c8e, 0x0c90, }, { 0x0c92, 0x0ca8, }, { 0x0caa, 0x0cb3, },
+
91 { 0x0cb5, 0x0cb9, }, { 0x0cbd, 0x0cc4, }, { 0x0cc6, 0x0cc8, },
+
92 { 0x0cca, 0x0ccc, }, { 0x0cd5, 0x0cd6, }, { 0x0cdd, 0x0cde, },
+
93 { 0x0ce0, 0x0ce3, }, { 0x0cf1, 0x0cf3, }, { 0x0d00, 0x0d0c, },
+
94 { 0x0d0e, 0x0d10, }, { 0x0d12, 0x0d3a, }, { 0x0d3d, 0x0d44, },
+
95 { 0x0d46, 0x0d48, }, { 0x0d4a, 0x0d4c, }, { 0x0d4e, 0x0d4e, },
+
96 { 0x0d54, 0x0d57, }, { 0x0d5f, 0x0d63, }, { 0x0d7a, 0x0d7f, },
+
97 { 0x0d81, 0x0d83, }, { 0x0d85, 0x0d96, }, { 0x0d9a, 0x0db1, },
+
98 { 0x0db3, 0x0dbb, }, { 0x0dbd, 0x0dbd, }, { 0x0dc0, 0x0dc6, },
+
99 { 0x0dcf, 0x0dd4, }, { 0x0dd6, 0x0dd6, }, { 0x0dd8, 0x0ddf, },
+
100 { 0x0df2, 0x0df3, }, { 0x0e01, 0x0e3a, }, { 0x0e40, 0x0e46, },
+
101 { 0x0e4d, 0x0e4d, }, { 0x0e81, 0x0e82, }, { 0x0e84, 0x0e84, },
+
102 { 0x0e86, 0x0e8a, }, { 0x0e8c, 0x0ea3, }, { 0x0ea5, 0x0ea5, },
+
103 { 0x0ea7, 0x0eb9, }, { 0x0ebb, 0x0ebd, }, { 0x0ec0, 0x0ec4, },
+
104 { 0x0ec6, 0x0ec6, }, { 0x0ecd, 0x0ecd, }, { 0x0edc, 0x0edf, },
+
105 { 0x0f00, 0x0f00, }, { 0x0f40, 0x0f47, }, { 0x0f49, 0x0f6c, },
+
106 { 0x0f71, 0x0f83, }, { 0x0f88, 0x0f97, }, { 0x0f99, 0x0fbc, },
+
107 { 0x1000, 0x1036, }, { 0x1038, 0x1038, }, { 0x103b, 0x103f, },
+
108 { 0x1050, 0x108f, }, { 0x109a, 0x109d, }, { 0x10a0, 0x10c5, },
+
109 { 0x10c7, 0x10c7, }, { 0x10cd, 0x10cd, }, { 0x10d0, 0x10fa, },
+
110 { 0x10fc, 0x1248, }, { 0x124a, 0x124d, }, { 0x1250, 0x1256, },
+
111 { 0x1258, 0x1258, }, { 0x125a, 0x125d, }, { 0x1260, 0x1288, },
+
112 { 0x128a, 0x128d, }, { 0x1290, 0x12b0, }, { 0x12b2, 0x12b5, },
+
113 { 0x12b8, 0x12be, }, { 0x12c0, 0x12c0, }, { 0x12c2, 0x12c5, },
+
114 { 0x12c8, 0x12d6, }, { 0x12d8, 0x1310, }, { 0x1312, 0x1315, },
+
115 { 0x1318, 0x135a, }, { 0x1380, 0x138f, }, { 0x13a0, 0x13f5, },
+
116 { 0x13f8, 0x13fd, }, { 0x1401, 0x166c, }, { 0x166f, 0x167f, },
+
117 { 0x1681, 0x169a, }, { 0x16a0, 0x16ea, }, { 0x16ee, 0x16f8, },
+
118 { 0x1700, 0x1713, }, { 0x171f, 0x1733, }, { 0x1740, 0x1753, },
+
119 { 0x1760, 0x176c, }, { 0x176e, 0x1770, }, { 0x1772, 0x1773, },
+
120 { 0x1780, 0x17b3, }, { 0x17b6, 0x17c8, }, { 0x17d7, 0x17d7, },
+
121 { 0x17dc, 0x17dc, }, { 0x1820, 0x1878, }, { 0x1880, 0x18aa, },
+
122 { 0x18b0, 0x18f5, }, { 0x1900, 0x191e, }, { 0x1920, 0x192b, },
+
123 { 0x1930, 0x1938, }, { 0x1950, 0x196d, }, { 0x1970, 0x1974, },
+
124 { 0x1980, 0x19ab, }, { 0x19b0, 0x19c9, }, { 0x1a00, 0x1a1b, },
+
125 { 0x1a20, 0x1a5e, }, { 0x1a61, 0x1a74, }, { 0x1aa7, 0x1aa7, },
+
126 { 0x1abf, 0x1ac0, }, { 0x1acc, 0x1ace, }, { 0x1b00, 0x1b33, },
+
127 { 0x1b35, 0x1b43, }, { 0x1b45, 0x1b4c, }, { 0x1b80, 0x1ba9, },
+
128 { 0x1bac, 0x1baf, }, { 0x1bba, 0x1be5, }, { 0x1be7, 0x1bf1, },
+
129 { 0x1c00, 0x1c36, }, { 0x1c4d, 0x1c4f, }, { 0x1c5a, 0x1c7d, },
+
130 { 0x1c80, 0x1c88, }, { 0x1c90, 0x1cba, }, { 0x1cbd, 0x1cbf, },
+
131 { 0x1ce9, 0x1cec, }, { 0x1cee, 0x1cf3, }, { 0x1cf5, 0x1cf6, },
+
132 { 0x1cfa, 0x1cfa, }, { 0x1d00, 0x1dbf, }, { 0x1de7, 0x1df4, },
+
133 { 0x1e00, 0x1f15, }, { 0x1f18, 0x1f1d, }, { 0x1f20, 0x1f45, },
+
134 { 0x1f48, 0x1f4d, }, { 0x1f50, 0x1f57, }, { 0x1f59, 0x1f59, },
+
135 { 0x1f5b, 0x1f5b, }, { 0x1f5d, 0x1f5d, }, { 0x1f5f, 0x1f7d, },
+
136 { 0x1f80, 0x1fb4, }, { 0x1fb6, 0x1fbc, }, { 0x1fbe, 0x1fbe, },
+
137 { 0x1fc2, 0x1fc4, }, { 0x1fc6, 0x1fcc, }, { 0x1fd0, 0x1fd3, },
+
138 { 0x1fd6, 0x1fdb, }, { 0x1fe0, 0x1fec, }, { 0x1ff2, 0x1ff4, },
+
139 { 0x1ff6, 0x1ffc, }, { 0x2071, 0x2071, }, { 0x207f, 0x207f, },
+
140 { 0x2090, 0x209c, }, { 0x2102, 0x2102, }, { 0x2107, 0x2107, },
+
141 { 0x210a, 0x2113, }, { 0x2115, 0x2115, }, { 0x2119, 0x211d, },
+
142 { 0x2124, 0x2124, }, { 0x2126, 0x2126, }, { 0x2128, 0x2128, },
+
143 { 0x212a, 0x212d, }, { 0x212f, 0x2139, }, { 0x213c, 0x213f, },
+
144 { 0x2145, 0x2149, }, { 0x214e, 0x214e, }, { 0x2160, 0x2188, },
+
145 { 0x24b6, 0x24e9, }, { 0x2c00, 0x2ce4, }, { 0x2ceb, 0x2cee, },
+
146 { 0x2cf2, 0x2cf3, }, { 0x2d00, 0x2d25, }, { 0x2d27, 0x2d27, },
+
147 { 0x2d2d, 0x2d2d, }, { 0x2d30, 0x2d67, }, { 0x2d6f, 0x2d6f, },
+
148 { 0x2d80, 0x2d96, }, { 0x2da0, 0x2da6, }, { 0x2da8, 0x2dae, },
+
149 { 0x2db0, 0x2db6, }, { 0x2db8, 0x2dbe, }, { 0x2dc0, 0x2dc6, },
+
150 { 0x2dc8, 0x2dce, }, { 0x2dd0, 0x2dd6, }, { 0x2dd8, 0x2dde, },
+
151 { 0x2de0, 0x2dff, }, { 0x2e2f, 0x2e2f, }, { 0x3005, 0x3007, },
+
152 { 0x3021, 0x3029, }, { 0x3031, 0x3035, }, { 0x3038, 0x303c, },
+
153 { 0x3041, 0x3096, }, { 0x309d, 0x309f, }, { 0x30a1, 0x30fa, },
+
154 { 0x30fc, 0x30ff, }, { 0x3105, 0x312f, }, { 0x3131, 0x318e, },
+
155 { 0x31a0, 0x31bf, }, { 0x31f0, 0x31ff, }, { 0x3400, 0x4dbf, },
+
156 { 0x4e00, 0xa48c, }, { 0xa4d0, 0xa4fd, }, { 0xa500, 0xa60c, },
+
157 { 0xa610, 0xa61f, }, { 0xa62a, 0xa62b, }, { 0xa640, 0xa66e, },
+
158 { 0xa674, 0xa67b, }, { 0xa67f, 0xa6ef, }, { 0xa717, 0xa71f, },
+
159 { 0xa722, 0xa788, }, { 0xa78b, 0xa7ca, }, { 0xa7d0, 0xa7d1, },
+
160 { 0xa7d3, 0xa7d3, }, { 0xa7d5, 0xa7d9, }, { 0xa7f2, 0xa805, },
+
161 { 0xa807, 0xa827, }, { 0xa840, 0xa873, }, { 0xa880, 0xa8c3, },
+
162 { 0xa8c5, 0xa8c5, }, { 0xa8f2, 0xa8f7, }, { 0xa8fb, 0xa8fb, },
+
163 { 0xa8fd, 0xa8ff, }, { 0xa90a, 0xa92a, }, { 0xa930, 0xa952, },
+
164 { 0xa960, 0xa97c, }, { 0xa980, 0xa9b2, }, { 0xa9b4, 0xa9bf, },
+
165 { 0xa9cf, 0xa9cf, }, { 0xa9e0, 0xa9ef, }, { 0xa9fa, 0xa9fe, },
+
166 { 0xaa00, 0xaa36, }, { 0xaa40, 0xaa4d, }, { 0xaa60, 0xaa76, },
+
167 { 0xaa7a, 0xaabe, }, { 0xaac0, 0xaac0, }, { 0xaac2, 0xaac2, },
+
168 { 0xaadb, 0xaadd, }, { 0xaae0, 0xaaef, }, { 0xaaf2, 0xaaf5, },
+
169 { 0xab01, 0xab06, }, { 0xab09, 0xab0e, }, { 0xab11, 0xab16, },
+
170 { 0xab20, 0xab26, }, { 0xab28, 0xab2e, }, { 0xab30, 0xab5a, },
+
171 { 0xab5c, 0xab69, }, { 0xab70, 0xabea, }, { 0xac00, 0xd7a3, },
+
172 { 0xd7b0, 0xd7c6, }, { 0xd7cb, 0xd7fb, }, { 0xf900, 0xfa6d, },
+
173 { 0xfa70, 0xfad9, }, { 0xfb00, 0xfb06, }, { 0xfb13, 0xfb17, },
+
174 { 0xfb1d, 0xfb28, }, { 0xfb2a, 0xfb36, }, { 0xfb38, 0xfb3c, },
+
175 { 0xfb3e, 0xfb3e, }, { 0xfb40, 0xfb41, }, { 0xfb43, 0xfb44, },
+
176 { 0xfb46, 0xfbb1, }, { 0xfbd3, 0xfd3d, }, { 0xfd50, 0xfd8f, },
+
177 { 0xfd92, 0xfdc7, }, { 0xfdf0, 0xfdfb, }, { 0xfe70, 0xfe74, },
+
178 { 0xfe76, 0xfefc, }, { 0xff21, 0xff3a, }, { 0xff41, 0xff5a, },
+
179 { 0xff66, 0xffbe, }, { 0xffc2, 0xffc7, }, { 0xffca, 0xffcf, },
+
180 { 0xffd2, 0xffd7, }, { 0xffda, 0xffdc, }, { 0x10000, 0x1000b, },
+
181 { 0x1000d, 0x10026, }, { 0x10028, 0x1003a, }, { 0x1003c, 0x1003d, },
+
182 { 0x1003f, 0x1004d, }, { 0x10050, 0x1005d, }, { 0x10080, 0x100fa, },
+
183 { 0x10140, 0x10174, }, { 0x10280, 0x1029c, }, { 0x102a0, 0x102d0, },
+
184 { 0x10300, 0x1031f, }, { 0x1032d, 0x1034a, }, { 0x10350, 0x1037a, },
+
185 { 0x10380, 0x1039d, }, { 0x103a0, 0x103c3, }, { 0x103c8, 0x103cf, },
+
186 { 0x103d1, 0x103d5, }, { 0x10400, 0x1049d, }, { 0x104b0, 0x104d3, },
+
187 { 0x104d8, 0x104fb, }, { 0x10500, 0x10527, }, { 0x10530, 0x10563, },
+
188 { 0x10570, 0x1057a, }, { 0x1057c, 0x1058a, }, { 0x1058c, 0x10592, },
+
189 { 0x10594, 0x10595, }, { 0x10597, 0x105a1, }, { 0x105a3, 0x105b1, },
+
190 { 0x105b3, 0x105b9, }, { 0x105bb, 0x105bc, }, { 0x10600, 0x10736, },
+
191 { 0x10740, 0x10755, }, { 0x10760, 0x10767, }, { 0x10780, 0x10785, },
+
192 { 0x10787, 0x107b0, }, { 0x107b2, 0x107ba, }, { 0x10800, 0x10805, },
+
193 { 0x10808, 0x10808, }, { 0x1080a, 0x10835, }, { 0x10837, 0x10838, },
+
194 { 0x1083c, 0x1083c, }, { 0x1083f, 0x10855, }, { 0x10860, 0x10876, },
+
195 { 0x10880, 0x1089e, }, { 0x108e0, 0x108f2, }, { 0x108f4, 0x108f5, },
+
196 { 0x10900, 0x10915, }, { 0x10920, 0x10939, }, { 0x10980, 0x109b7, },
+
197 { 0x109be, 0x109bf, }, { 0x10a00, 0x10a03, }, { 0x10a05, 0x10a06, },
+
198 { 0x10a0c, 0x10a13, }, { 0x10a15, 0x10a17, }, { 0x10a19, 0x10a35, },
+
199 { 0x10a60, 0x10a7c, }, { 0x10a80, 0x10a9c, }, { 0x10ac0, 0x10ac7, },
+
200 { 0x10ac9, 0x10ae4, }, { 0x10b00, 0x10b35, }, { 0x10b40, 0x10b55, },
+
201 { 0x10b60, 0x10b72, }, { 0x10b80, 0x10b91, }, { 0x10c00, 0x10c48, },
+
202 { 0x10c80, 0x10cb2, }, { 0x10cc0, 0x10cf2, }, { 0x10d00, 0x10d27, },
+
203 { 0x10e80, 0x10ea9, }, { 0x10eab, 0x10eac, }, { 0x10eb0, 0x10eb1, },
+
204 { 0x10f00, 0x10f1c, }, { 0x10f27, 0x10f27, }, { 0x10f30, 0x10f45, },
+
205 { 0x10f70, 0x10f81, }, { 0x10fb0, 0x10fc4, }, { 0x10fe0, 0x10ff6, },
+
206 { 0x11000, 0x11045, }, { 0x11071, 0x11075, }, { 0x11080, 0x110b8, },
+
207 { 0x110c2, 0x110c2, }, { 0x110d0, 0x110e8, }, { 0x11100, 0x11132, },
+
208 { 0x11144, 0x11147, }, { 0x11150, 0x11172, }, { 0x11176, 0x11176, },
+
209 { 0x11180, 0x111bf, }, { 0x111c1, 0x111c4, }, { 0x111ce, 0x111cf, },
+
210 { 0x111da, 0x111da, }, { 0x111dc, 0x111dc, }, { 0x11200, 0x11211, },
+
211 { 0x11213, 0x11234, }, { 0x11237, 0x11237, }, { 0x1123e, 0x11241, },
+
212 { 0x11280, 0x11286, }, { 0x11288, 0x11288, }, { 0x1128a, 0x1128d, },
+
213 { 0x1128f, 0x1129d, }, { 0x1129f, 0x112a8, }, { 0x112b0, 0x112e8, },
+
214 { 0x11300, 0x11303, }, { 0x11305, 0x1130c, }, { 0x1130f, 0x11310, },
+
215 { 0x11313, 0x11328, }, { 0x1132a, 0x11330, }, { 0x11332, 0x11333, },
+
216 { 0x11335, 0x11339, }, { 0x1133d, 0x11344, }, { 0x11347, 0x11348, },
+
217 { 0x1134b, 0x1134c, }, { 0x11350, 0x11350, }, { 0x11357, 0x11357, },
+
218 { 0x1135d, 0x11363, }, { 0x11400, 0x11441, }, { 0x11443, 0x11445, },
+
219 { 0x11447, 0x1144a, }, { 0x1145f, 0x11461, }, { 0x11480, 0x114c1, },
+
220 { 0x114c4, 0x114c5, }, { 0x114c7, 0x114c7, }, { 0x11580, 0x115b5, },
+
221 { 0x115b8, 0x115be, }, { 0x115d8, 0x115dd, }, { 0x11600, 0x1163e, },
+
222 { 0x11640, 0x11640, }, { 0x11644, 0x11644, }, { 0x11680, 0x116b5, },
+
223 { 0x116b8, 0x116b8, }, { 0x11700, 0x1171a, }, { 0x1171d, 0x1172a, },
+
224 { 0x11740, 0x11746, }, { 0x11800, 0x11838, }, { 0x118a0, 0x118df, },
+
225 { 0x118ff, 0x11906, }, { 0x11909, 0x11909, }, { 0x1190c, 0x11913, },
+
226 { 0x11915, 0x11916, }, { 0x11918, 0x11935, }, { 0x11937, 0x11938, },
+
227 { 0x1193b, 0x1193c, }, { 0x1193f, 0x11942, }, { 0x119a0, 0x119a7, },
+
228 { 0x119aa, 0x119d7, }, { 0x119da, 0x119df, }, { 0x119e1, 0x119e1, },
+
229 { 0x119e3, 0x119e4, }, { 0x11a00, 0x11a32, }, { 0x11a35, 0x11a3e, },
+
230 { 0x11a50, 0x11a97, }, { 0x11a9d, 0x11a9d, }, { 0x11ab0, 0x11af8, },
+
231 { 0x11c00, 0x11c08, }, { 0x11c0a, 0x11c36, }, { 0x11c38, 0x11c3e, },
+
232 { 0x11c40, 0x11c40, }, { 0x11c72, 0x11c8f, }, { 0x11c92, 0x11ca7, },
+
233 { 0x11ca9, 0x11cb6, }, { 0x11d00, 0x11d06, }, { 0x11d08, 0x11d09, },
+
234 { 0x11d0b, 0x11d36, }, { 0x11d3a, 0x11d3a, }, { 0x11d3c, 0x11d3d, },
+
235 { 0x11d3f, 0x11d41, }, { 0x11d43, 0x11d43, }, { 0x11d46, 0x11d47, },
+
236 { 0x11d60, 0x11d65, }, { 0x11d67, 0x11d68, }, { 0x11d6a, 0x11d8e, },
+
237 { 0x11d90, 0x11d91, }, { 0x11d93, 0x11d96, }, { 0x11d98, 0x11d98, },
+
238 { 0x11ee0, 0x11ef6, }, { 0x11f00, 0x11f10, }, { 0x11f12, 0x11f3a, },
+
239 { 0x11f3e, 0x11f40, }, { 0x11fb0, 0x11fb0, }, { 0x12000, 0x12399, },
+
240 { 0x12400, 0x1246e, }, { 0x12480, 0x12543, }, { 0x12f90, 0x12ff0, },
+
241 { 0x13000, 0x1342f, }, { 0x13441, 0x13446, }, { 0x14400, 0x14646, },
+
242 { 0x16800, 0x16a38, }, { 0x16a40, 0x16a5e, }, { 0x16a70, 0x16abe, },
+
243 { 0x16ad0, 0x16aed, }, { 0x16b00, 0x16b2f, }, { 0x16b40, 0x16b43, },
+
244 { 0x16b63, 0x16b77, }, { 0x16b7d, 0x16b8f, }, { 0x16e40, 0x16e7f, },
+
245 { 0x16f00, 0x16f4a, }, { 0x16f4f, 0x16f87, }, { 0x16f8f, 0x16f9f, },
+
246 { 0x16fe0, 0x16fe1, }, { 0x16fe3, 0x16fe3, }, { 0x16ff0, 0x16ff1, },
+
247 { 0x17000, 0x187f7, }, { 0x18800, 0x18cd5, }, { 0x18d00, 0x18d08, },
+
248 { 0x1aff0, 0x1aff3, }, { 0x1aff5, 0x1affb, }, { 0x1affd, 0x1affe, },
+
249 { 0x1b000, 0x1b122, }, { 0x1b132, 0x1b132, }, { 0x1b150, 0x1b152, },
+
250 { 0x1b155, 0x1b155, }, { 0x1b164, 0x1b167, }, { 0x1b170, 0x1b2fb, },
+
251 { 0x1bc00, 0x1bc6a, }, { 0x1bc70, 0x1bc7c, }, { 0x1bc80, 0x1bc88, },
+
252 { 0x1bc90, 0x1bc99, }, { 0x1bc9e, 0x1bc9e, }, { 0x1d400, 0x1d454, },
+
253 { 0x1d456, 0x1d49c, }, { 0x1d49e, 0x1d49f, }, { 0x1d4a2, 0x1d4a2, },
+
254 { 0x1d4a5, 0x1d4a6, }, { 0x1d4a9, 0x1d4ac, }, { 0x1d4ae, 0x1d4b9, },
+
255 { 0x1d4bb, 0x1d4bb, }, { 0x1d4bd, 0x1d4c3, }, { 0x1d4c5, 0x1d505, },
+
256 { 0x1d507, 0x1d50a, }, { 0x1d50d, 0x1d514, }, { 0x1d516, 0x1d51c, },
+
257 { 0x1d51e, 0x1d539, }, { 0x1d53b, 0x1d53e, }, { 0x1d540, 0x1d544, },
+
258 { 0x1d546, 0x1d546, }, { 0x1d54a, 0x1d550, }, { 0x1d552, 0x1d6a5, },
+
259 { 0x1d6a8, 0x1d6c0, }, { 0x1d6c2, 0x1d6da, }, { 0x1d6dc, 0x1d6fa, },
+
260 { 0x1d6fc, 0x1d714, }, { 0x1d716, 0x1d734, }, { 0x1d736, 0x1d74e, },
+
261 { 0x1d750, 0x1d76e, }, { 0x1d770, 0x1d788, }, { 0x1d78a, 0x1d7a8, },
+
262 { 0x1d7aa, 0x1d7c2, }, { 0x1d7c4, 0x1d7cb, }, { 0x1df00, 0x1df1e, },
+
263 { 0x1df25, 0x1df2a, }, { 0x1e000, 0x1e006, }, { 0x1e008, 0x1e018, },
+
264 { 0x1e01b, 0x1e021, }, { 0x1e023, 0x1e024, }, { 0x1e026, 0x1e02a, },
+
265 { 0x1e030, 0x1e06d, }, { 0x1e08f, 0x1e08f, }, { 0x1e100, 0x1e12c, },
+
266 { 0x1e137, 0x1e13d, }, { 0x1e14e, 0x1e14e, }, { 0x1e290, 0x1e2ad, },
+
267 { 0x1e2c0, 0x1e2eb, }, { 0x1e4d0, 0x1e4eb, }, { 0x1e7e0, 0x1e7e6, },
+
268 { 0x1e7e8, 0x1e7eb, }, { 0x1e7ed, 0x1e7ee, }, { 0x1e7f0, 0x1e7fe, },
+
269 { 0x1e800, 0x1e8c4, }, { 0x1e900, 0x1e943, }, { 0x1e947, 0x1e947, },
+
270 { 0x1e94b, 0x1e94b, }, { 0x1ee00, 0x1ee03, }, { 0x1ee05, 0x1ee1f, },
+
271 { 0x1ee21, 0x1ee22, }, { 0x1ee24, 0x1ee24, }, { 0x1ee27, 0x1ee27, },
+
272 { 0x1ee29, 0x1ee32, }, { 0x1ee34, 0x1ee37, }, { 0x1ee39, 0x1ee39, },
+
273 { 0x1ee3b, 0x1ee3b, }, { 0x1ee42, 0x1ee42, }, { 0x1ee47, 0x1ee47, },
+
274 { 0x1ee49, 0x1ee49, }, { 0x1ee4b, 0x1ee4b, }, { 0x1ee4d, 0x1ee4f, },
+
275 { 0x1ee51, 0x1ee52, }, { 0x1ee54, 0x1ee54, }, { 0x1ee57, 0x1ee57, },
+
276 { 0x1ee59, 0x1ee59, }, { 0x1ee5b, 0x1ee5b, }, { 0x1ee5d, 0x1ee5d, },
+
277 { 0x1ee5f, 0x1ee5f, }, { 0x1ee61, 0x1ee62, }, { 0x1ee64, 0x1ee64, },
+
278 { 0x1ee67, 0x1ee6a, }, { 0x1ee6c, 0x1ee72, }, { 0x1ee74, 0x1ee77, },
+
279 { 0x1ee79, 0x1ee7c, }, { 0x1ee7e, 0x1ee7e, }, { 0x1ee80, 0x1ee89, },
+
280 { 0x1ee8b, 0x1ee9b, }, { 0x1eea1, 0x1eea3, }, { 0x1eea5, 0x1eea9, },
+
281 { 0x1eeab, 0x1eebb, }, { 0x1f130, 0x1f149, }, { 0x1f150, 0x1f169, },
+
282 { 0x1f170, 0x1f189, }, { 0x20000, 0x2a6df, }, { 0x2a700, 0x2b739, },
+
283 { 0x2b740, 0x2b81d, }, { 0x2b820, 0x2cea1, }, { 0x2ceb0, 0x2ebe0, },
+
284 { 0x2ebf0, 0x2ee5d, }, { 0x2f800, 0x2fa1d, }, { 0x30000, 0x3134a, },
+
285 { 0x31350, 0x323af, },
+
286 }};
+
287
+
288 return utils::table_lookup(alpha_table, c);
+
289 }
+
290}
Definition: _utils.hpp:34
bool isalpha(char32_t c)
Definition: isalpha.hpp:37
diff --git a/isblank_8hpp.html b/isblank_8hpp.html index bebe46c..cb6b261 100644 --- a/isblank_8hpp.html +++ b/isblank_8hpp.html @@ -2,8 +2,8 @@ - - + + peelo-unicode: include/peelo/unicode/ctype/isblank.hpp File Reference @@ -16,8 +16,8 @@
- - + @@ -26,15 +26,16 @@
+
peelo-unicode
- + +/* @license-end */ +

Go to the source code of this file.

- - + - + - +

+

Namespaces

 peelo
namespace  peelo
 
 peelo::unicode
namespace  peelo::unicode
 
 peelo::unicode::ctype
namespace  peelo::unicode::ctype
 
- @@ -70,7 +70,7 @@ diff --git a/isblank_8hpp_source.html b/isblank_8hpp_source.html index 9632842..e34f678 100644 --- a/isblank_8hpp_source.html +++ b/isblank_8hpp_source.html @@ -2,8 +2,8 @@ - - + +peelo-unicode: include/peelo/unicode/ctype/isblank.hpp Source File @@ -16,8 +16,8 @@

+

Functions

bool peelo::unicode::ctype::isblank (char32_t c)
 
- - + @@ -26,15 +26,16 @@
+
peelo-unicode
- + +/* @license-end */ +
-
-
isblank.hpp
+
isblank.hpp
-Go to the documentation of this file.
1 /*
-
2  * Copyright (c) 2018-2024, peelo.net
-
3  * All rights reserved.
-
4  *
-
5  * Redistribution and use in source and binary forms, with or without
-
6  * modification, are permitted provided that the following conditions are met:
-
7  *
-
8  * * Redistributions of source code must retain the above copyright notice,
-
9  * this list of conditions and the following disclaimer.
-
10  *
-
11  * * Redistributions in binary form must reproduce the above copyright notice,
-
12  * this list of conditions and the following disclaimer in the documentation
-
13  * and/or other materials provided with the distribution.
-
14  *
-
15  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-
16  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-
17  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-
18  * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
-
19  * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-
20  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-
21  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-
22  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-
23  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-
24  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-
25  * POSSIBILITY OF SUCH DAMAGE.
-
26  */
-
27 #pragma once
-
28 
- -
30 
-
31 namespace peelo::unicode::ctype
-
32 {
-
36  inline bool
-
37  isblank(char32_t c)
-
38  {
-
39  static const std::array<utils::range, 8> blank_table =
-
40  {{
-
41  { 0x0009, 0x0009 }, { 0x0020, 0x0020 }, { 0x00a0, 0x00a0 },
-
42  { 0x1680, 0x1680 }, { 0x2000, 0x200a }, { 0x202f, 0x202f },
-
43  { 0x205f, 0x205f }, { 0x3000, 0x3000 },
-
44  }};
-
45 
-
46  return utils::table_lookup(blank_table, c);
-
47  }
-
48 }
+Go to the documentation of this file.
1/*
+
2 * Copyright (c) 2018-2024, peelo.net
+
3 * All rights reserved.
+
4 *
+
5 * Redistribution and use in source and binary forms, with or without
+
6 * modification, are permitted provided that the following conditions are met:
+
7 *
+
8 * * Redistributions of source code must retain the above copyright notice,
+
9 * this list of conditions and the following disclaimer.
+
10 *
+
11 * * Redistributions in binary form must reproduce the above copyright notice,
+
12 * this list of conditions and the following disclaimer in the documentation
+
13 * and/or other materials provided with the distribution.
+
14 *
+
15 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+
16 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+
17 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+
18 * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
+
19 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+
20 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+
21 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+
22 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+
23 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+
24 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+
25 * POSSIBILITY OF SUCH DAMAGE.
+
26 */
+
27#pragma once
+
28
+ +
30
+ +
32{
+
36 inline bool
+
37 isblank(char32_t c)
+
38 {
+
39 static const std::array<utils::range, 8> blank_table =
+
40 {{
+
41 { 0x0009, 0x0009 }, { 0x0020, 0x0020 }, { 0x00a0, 0x00a0 },
+
42 { 0x1680, 0x1680 }, { 0x2000, 0x200a }, { 0x202f, 0x202f },
+
43 { 0x205f, 0x205f }, { 0x3000, 0x3000 },
+
44 }};
+
45
+
46 return utils::table_lookup(blank_table, c);
+
47 }
+
48}
Definition: _utils.hpp:34
bool isblank(char32_t c)
Definition: isblank.hpp:37
diff --git a/iscntrl_8hpp.html b/iscntrl_8hpp.html index d8595e0..5612818 100644 --- a/iscntrl_8hpp.html +++ b/iscntrl_8hpp.html @@ -2,8 +2,8 @@ - - + + peelo-unicode: include/peelo/unicode/ctype/iscntrl.hpp File Reference @@ -16,8 +16,8 @@
- - + @@ -26,15 +26,16 @@
+
peelo-unicode
- + +/* @license-end */ +

Go to the source code of this file.

- - + - + - +

+

Namespaces

 peelo
namespace  peelo
 
 peelo::unicode
namespace  peelo::unicode
 
 peelo::unicode::ctype
namespace  peelo::unicode::ctype
 
- @@ -69,7 +69,7 @@ diff --git a/iscntrl_8hpp_source.html b/iscntrl_8hpp_source.html index ae20fb1..024464d 100644 --- a/iscntrl_8hpp_source.html +++ b/iscntrl_8hpp_source.html @@ -2,8 +2,8 @@ - - + +peelo-unicode: include/peelo/unicode/ctype/iscntrl.hpp Source File @@ -16,8 +16,8 @@

+

Functions

bool peelo::unicode::ctype::iscntrl (char32_t c)
 
- - + @@ -26,15 +26,16 @@
+
peelo-unicode
- + +/* @license-end */ +
-
-
iscntrl.hpp
+
iscntrl.hpp
-Go to the documentation of this file.
1 /*
-
2  * Copyright (c) 2018-2024, peelo.net
-
3  * All rights reserved.
-
4  *
-
5  * Redistribution and use in source and binary forms, with or without
-
6  * modification, are permitted provided that the following conditions are met:
-
7  *
-
8  * * Redistributions of source code must retain the above copyright notice,
-
9  * this list of conditions and the following disclaimer.
-
10  *
-
11  * * Redistributions in binary form must reproduce the above copyright notice,
-
12  * this list of conditions and the following disclaimer in the documentation
-
13  * and/or other materials provided with the distribution.
-
14  *
-
15  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-
16  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-
17  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-
18  * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
-
19  * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-
20  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-
21  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-
22  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-
23  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-
24  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-
25  * POSSIBILITY OF SUCH DAMAGE.
-
26  */
-
27 #pragma once
-
28 
-
29 namespace peelo::unicode::ctype
-
30 {
-
34  inline bool
-
35  iscntrl(char32_t c)
-
36  {
-
37  return (c >= 0x0000 && c <= 0x001f) || (c >= 0x007f && c <= 0x009f);
-
38  }
-
39 }
+Go to the documentation of this file.
1/*
+
2 * Copyright (c) 2018-2024, peelo.net
+
3 * All rights reserved.
+
4 *
+
5 * Redistribution and use in source and binary forms, with or without
+
6 * modification, are permitted provided that the following conditions are met:
+
7 *
+
8 * * Redistributions of source code must retain the above copyright notice,
+
9 * this list of conditions and the following disclaimer.
+
10 *
+
11 * * Redistributions in binary form must reproduce the above copyright notice,
+
12 * this list of conditions and the following disclaimer in the documentation
+
13 * and/or other materials provided with the distribution.
+
14 *
+
15 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+
16 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+
17 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+
18 * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
+
19 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+
20 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+
21 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+
22 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+
23 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+
24 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+
25 * POSSIBILITY OF SUCH DAMAGE.
+
26 */
+
27#pragma once
+
28
+ +
30{
+
34 inline bool
+
35 iscntrl(char32_t c)
+
36 {
+
37 return (c >= 0x0000 && c <= 0x001f) || (c >= 0x007f && c <= 0x009f);
+
38 }
+
39}
Definition: _utils.hpp:34
bool iscntrl(char32_t c)
Definition: iscntrl.hpp:35
diff --git a/isdigit_8hpp.html b/isdigit_8hpp.html index ffa7a7a..db8cbbf 100644 --- a/isdigit_8hpp.html +++ b/isdigit_8hpp.html @@ -2,8 +2,8 @@ - - + + peelo-unicode: include/peelo/unicode/ctype/isdigit.hpp File Reference @@ -16,8 +16,8 @@
- - + @@ -26,15 +26,16 @@
+
peelo-unicode
- + +/* @license-end */ +

Go to the source code of this file.

- - + - + - +

+

Namespaces

 peelo
namespace  peelo
 
 peelo::unicode
namespace  peelo::unicode
 
 peelo::unicode::ctype
namespace  peelo::unicode::ctype
 
- @@ -70,7 +70,7 @@ diff --git a/isdigit_8hpp_source.html b/isdigit_8hpp_source.html index e94bfff..76fd3d6 100644 --- a/isdigit_8hpp_source.html +++ b/isdigit_8hpp_source.html @@ -2,8 +2,8 @@ - - + +peelo-unicode: include/peelo/unicode/ctype/isdigit.hpp Source File @@ -16,8 +16,8 @@

+

Functions

bool peelo::unicode::ctype::isdigit (char32_t c)
 
- - + @@ -26,15 +26,16 @@
+
peelo-unicode
- + +/* @license-end */ +
-
-
isdigit.hpp
+
isdigit.hpp
-Go to the documentation of this file.
1 /*
-
2  * Copyright (c) 2018-2024, peelo.net
-
3  * All rights reserved.
-
4  *
-
5  * Redistribution and use in source and binary forms, with or without
-
6  * modification, are permitted provided that the following conditions are met:
-
7  *
-
8  * * Redistributions of source code must retain the above copyright notice,
-
9  * this list of conditions and the following disclaimer.
-
10  *
-
11  * * Redistributions in binary form must reproduce the above copyright notice,
-
12  * this list of conditions and the following disclaimer in the documentation
-
13  * and/or other materials provided with the distribution.
-
14  *
-
15  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-
16  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-
17  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-
18  * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
-
19  * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-
20  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-
21  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-
22  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-
23  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-
24  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-
25  * POSSIBILITY OF SUCH DAMAGE.
-
26  */
-
27 #pragma once
-
28 
- -
30 
-
31 namespace peelo::unicode::ctype
-
32 {
-
36  inline bool
-
37  isdigit(char32_t c)
-
38  {
-
39  static const std::array<utils::range, 64> digit_table =
-
40  {{
-
41  { 0x0030, 0x0039 }, { 0x0660, 0x0669 }, { 0x06F0, 0x06F9 },
-
42  { 0x07C0, 0x07C9 }, { 0x0966, 0x096F }, { 0x09E6, 0x09EF },
-
43  { 0x0A66, 0x0A6F }, { 0x0AE6, 0x0AEF }, { 0x0B66, 0x0B6F },
-
44  { 0x0BE6, 0x0BEF }, { 0x0C66, 0x0C6F }, { 0x0CE6, 0x0CEF },
-
45  { 0x0D66, 0x0D6F }, { 0x0DE6, 0x0DEF }, { 0x0E50, 0x0E59 },
-
46  { 0x0ED0, 0x0ED9 }, { 0x0F20, 0x0F29 }, { 0x1040, 0x1049 },
-
47  { 0x1090, 0x1099 }, { 0x17E0, 0x17E9 }, { 0x1810, 0x1819 },
-
48  { 0x1946, 0x194F }, { 0x19D0, 0x19D9 }, { 0x1A80, 0x1A89 },
-
49  { 0x1A90, 0x1A99 }, { 0x1B50, 0x1B59 }, { 0x1BB0, 0x1BB9 },
-
50  { 0x1C40, 0x1C49 }, { 0x1C50, 0x1C59 }, { 0xA620, 0xA629 },
-
51  { 0xA8D0, 0xA8D9 }, { 0xA900, 0xA909 }, { 0xA9D0, 0xA9D9 },
-
52  { 0xA9F0, 0xA9F9 }, { 0xAA50, 0xAA59 }, { 0xABF0, 0xABF9 },
-
53  { 0xFF10, 0xFF19 }, { 0x104A0, 0x104A9 }, { 0x10D30, 0x10D39 },
-
54  { 0x11066, 0x1106F }, { 0x110F0, 0x110F9 }, { 0x11136, 0x1113F },
-
55  { 0x111D0, 0x111D9 }, { 0x112F0, 0x112F9 }, { 0x11450, 0x11459 },
-
56  { 0x114D0, 0x114D9 }, { 0x11650, 0x11659 }, { 0x116C0, 0x116C9 },
-
57  { 0x11730, 0x11739 }, { 0x118E0, 0x118E9 }, { 0x11950, 0x11959 },
-
58  { 0x11C50, 0x11C59 }, { 0x11D50, 0x11D59 }, { 0x11DA0, 0x11DA9 },
-
59  { 0x11F50, 0x11F59 }, { 0x16A60, 0x16A69 }, { 0x16AC0, 0x16AC9 },
-
60  { 0x16B50, 0x16B59 }, { 0x1D7CE, 0x1D7FF }, { 0x1E140, 0x1E149 },
-
61  { 0x1E2F0, 0x1E2F9 }, { 0x1E4F0, 0x1E4F9 }, { 0x1E950, 0x1E959 },
-
62  { 0x1FBF0, 0x1FBF9 },
-
63  }};
-
64 
-
65  return utils::table_lookup(digit_table, c);
-
66  }
-
67 }
+Go to the documentation of this file.
1/*
+
2 * Copyright (c) 2018-2024, peelo.net
+
3 * All rights reserved.
+
4 *
+
5 * Redistribution and use in source and binary forms, with or without
+
6 * modification, are permitted provided that the following conditions are met:
+
7 *
+
8 * * Redistributions of source code must retain the above copyright notice,
+
9 * this list of conditions and the following disclaimer.
+
10 *
+
11 * * Redistributions in binary form must reproduce the above copyright notice,
+
12 * this list of conditions and the following disclaimer in the documentation
+
13 * and/or other materials provided with the distribution.
+
14 *
+
15 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+
16 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+
17 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+
18 * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
+
19 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+
20 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+
21 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+
22 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+
23 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+
24 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+
25 * POSSIBILITY OF SUCH DAMAGE.
+
26 */
+
27#pragma once
+
28
+ +
30
+ +
32{
+
36 inline bool
+
37 isdigit(char32_t c)
+
38 {
+
39 static const std::array<utils::range, 64> digit_table =
+
40 {{
+
41 { 0x0030, 0x0039 }, { 0x0660, 0x0669 }, { 0x06F0, 0x06F9 },
+
42 { 0x07C0, 0x07C9 }, { 0x0966, 0x096F }, { 0x09E6, 0x09EF },
+
43 { 0x0A66, 0x0A6F }, { 0x0AE6, 0x0AEF }, { 0x0B66, 0x0B6F },
+
44 { 0x0BE6, 0x0BEF }, { 0x0C66, 0x0C6F }, { 0x0CE6, 0x0CEF },
+
45 { 0x0D66, 0x0D6F }, { 0x0DE6, 0x0DEF }, { 0x0E50, 0x0E59 },
+
46 { 0x0ED0, 0x0ED9 }, { 0x0F20, 0x0F29 }, { 0x1040, 0x1049 },
+
47 { 0x1090, 0x1099 }, { 0x17E0, 0x17E9 }, { 0x1810, 0x1819 },
+
48 { 0x1946, 0x194F }, { 0x19D0, 0x19D9 }, { 0x1A80, 0x1A89 },
+
49 { 0x1A90, 0x1A99 }, { 0x1B50, 0x1B59 }, { 0x1BB0, 0x1BB9 },
+
50 { 0x1C40, 0x1C49 }, { 0x1C50, 0x1C59 }, { 0xA620, 0xA629 },
+
51 { 0xA8D0, 0xA8D9 }, { 0xA900, 0xA909 }, { 0xA9D0, 0xA9D9 },
+
52 { 0xA9F0, 0xA9F9 }, { 0xAA50, 0xAA59 }, { 0xABF0, 0xABF9 },
+
53 { 0xFF10, 0xFF19 }, { 0x104A0, 0x104A9 }, { 0x10D30, 0x10D39 },
+
54 { 0x11066, 0x1106F }, { 0x110F0, 0x110F9 }, { 0x11136, 0x1113F },
+
55 { 0x111D0, 0x111D9 }, { 0x112F0, 0x112F9 }, { 0x11450, 0x11459 },
+
56 { 0x114D0, 0x114D9 }, { 0x11650, 0x11659 }, { 0x116C0, 0x116C9 },
+
57 { 0x11730, 0x11739 }, { 0x118E0, 0x118E9 }, { 0x11950, 0x11959 },
+
58 { 0x11C50, 0x11C59 }, { 0x11D50, 0x11D59 }, { 0x11DA0, 0x11DA9 },
+
59 { 0x11F50, 0x11F59 }, { 0x16A60, 0x16A69 }, { 0x16AC0, 0x16AC9 },
+
60 { 0x16B50, 0x16B59 }, { 0x1D7CE, 0x1D7FF }, { 0x1E140, 0x1E149 },
+
61 { 0x1E2F0, 0x1E2F9 }, { 0x1E4F0, 0x1E4F9 }, { 0x1E950, 0x1E959 },
+
62 { 0x1FBF0, 0x1FBF9 },
+
63 }};
+
64
+
65 return utils::table_lookup(digit_table, c);
+
66 }
+
67}
Definition: _utils.hpp:34
bool isdigit(char32_t c)
Definition: isdigit.hpp:37
diff --git a/isemoji_8hpp.html b/isemoji_8hpp.html index dbb7f51..eddcf06 100644 --- a/isemoji_8hpp.html +++ b/isemoji_8hpp.html @@ -2,8 +2,8 @@ - - + + peelo-unicode: include/peelo/unicode/ctype/isemoji.hpp File Reference @@ -16,8 +16,8 @@
- - + @@ -26,15 +26,16 @@
+
peelo-unicode
- + +/* @license-end */ +
-
-
isemoji.hpp
+
isemoji.hpp
-Go to the documentation of this file.
1 /*
-
2  * Copyright (c) 2018-2024, peelo.net
-
3  * All rights reserved.
-
4  *
-
5  * Redistribution and use in source and binary forms, with or without
-
6  * modification, are permitted provided that the following conditions are met:
-
7  *
-
8  * * Redistributions of source code must retain the above copyright notice,
-
9  * this list of conditions and the following disclaimer.
-
10  *
-
11  * * Redistributions in binary form must reproduce the above copyright notice,
-
12  * this list of conditions and the following disclaimer in the documentation
-
13  * and/or other materials provided with the distribution.
-
14  *
-
15  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-
16  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-
17  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-
18  * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
-
19  * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-
20  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-
21  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-
22  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-
23  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-
24  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-
25  * POSSIBILITY OF SUCH DAMAGE.
-
26  */
-
27 #pragma once
-
28 
- -
30 
-
31 namespace peelo::unicode::ctype
-
32 {
-
36  static inline bool
-
37  isemoji(char32_t c)
-
38  {
-
39  // https://unicode.org/Public/15.1.0/ucd/emoji/emoji-data.txt
-
40  static const std::array<utils::range, 1258> emoji_table =
-
41  {{
-
42  { 0x0023, 0x0023 }, { 0x002A, 0x002A }, { 0x0030, 0x0039 },
-
43  { 0x00A9, 0x00A9 }, { 0x00AE, 0x00AE }, { 0x203C, 0x203C },
-
44  { 0x2049, 0x2049 }, { 0x2122, 0x2122 }, { 0x2139, 0x2139 },
-
45  { 0x2194, 0x2199 }, { 0x21A9, 0x21AA }, { 0x231A, 0x231B },
-
46  { 0x2328, 0x2328 }, { 0x23CF, 0x23CF }, { 0x23E9, 0x23EC },
-
47  { 0x23ED, 0x23EE }, { 0x23EF, 0x23EF }, { 0x23F0, 0x23F0 },
-
48  { 0x23F1, 0x23F2 }, { 0x23F3, 0x23F3 }, { 0x23F8, 0x23FA },
-
49  { 0x24C2, 0x24C2 }, { 0x25AA, 0x25AB }, { 0x25B6, 0x25B6 },
-
50  { 0x25C0, 0x25C0 }, { 0x25FB, 0x25FE }, { 0x2600, 0x2601 },
-
51  { 0x2602, 0x2603 }, { 0x2604, 0x2604 }, { 0x260E, 0x260E },
-
52  { 0x2611, 0x2611 }, { 0x2614, 0x2615 }, { 0x2618, 0x2618 },
-
53  { 0x261D, 0x261D }, { 0x2620, 0x2620 }, { 0x2622, 0x2623 },
-
54  { 0x2626, 0x2626 }, { 0x262A, 0x262A }, { 0x262E, 0x262E },
-
55  { 0x262F, 0x262F }, { 0x2638, 0x2639 }, { 0x263A, 0x263A },
-
56  { 0x2640, 0x2640 }, { 0x2642, 0x2642 }, { 0x2648, 0x2653 },
-
57  { 0x265F, 0x265F }, { 0x2660, 0x2660 }, { 0x2663, 0x2663 },
-
58  { 0x2665, 0x2666 }, { 0x2668, 0x2668 }, { 0x267B, 0x267B },
-
59  { 0x267E, 0x267E }, { 0x267F, 0x267F }, { 0x2692, 0x2692 },
-
60  { 0x2693, 0x2693 }, { 0x2694, 0x2694 }, { 0x2695, 0x2695 },
-
61  { 0x2696, 0x2697 }, { 0x2699, 0x2699 }, { 0x269B, 0x269C },
-
62  { 0x26A0, 0x26A1 }, { 0x26A7, 0x26A7 }, { 0x26AA, 0x26AB },
-
63  { 0x26B0, 0x26B1 }, { 0x26BD, 0x26BE }, { 0x26C4, 0x26C5 },
-
64  { 0x26C8, 0x26C8 }, { 0x26CE, 0x26CE }, { 0x26CF, 0x26CF },
-
65  { 0x26D1, 0x26D1 }, { 0x26D3, 0x26D3 }, { 0x26D4, 0x26D4 },
-
66  { 0x26E9, 0x26E9 }, { 0x26EA, 0x26EA }, { 0x26F0, 0x26F1 },
-
67  { 0x26F2, 0x26F3 }, { 0x26F4, 0x26F4 }, { 0x26F5, 0x26F5 },
-
68  { 0x26F7, 0x26F9 }, { 0x26FA, 0x26FA }, { 0x26FD, 0x26FD },
-
69  { 0x2702, 0x2702 }, { 0x2705, 0x2705 }, { 0x2708, 0x270C },
-
70  { 0x270D, 0x270D }, { 0x270F, 0x270F }, { 0x2712, 0x2712 },
-
71  { 0x2714, 0x2714 }, { 0x2716, 0x2716 }, { 0x271D, 0x271D },
-
72  { 0x2721, 0x2721 }, { 0x2728, 0x2728 }, { 0x2733, 0x2734 },
-
73  { 0x2744, 0x2744 }, { 0x2747, 0x2747 }, { 0x274C, 0x274C },
-
74  { 0x274E, 0x274E }, { 0x2753, 0x2755 }, { 0x2757, 0x2757 },
-
75  { 0x2763, 0x2763 }, { 0x2764, 0x2764 }, { 0x2795, 0x2797 },
-
76  { 0x27A1, 0x27A1 }, { 0x27B0, 0x27B0 }, { 0x27BF, 0x27BF },
-
77  { 0x2934, 0x2935 }, { 0x2B05, 0x2B07 }, { 0x2B1B, 0x2B1C },
-
78  { 0x2B50, 0x2B50 }, { 0x2B55, 0x2B55 }, { 0x3030, 0x3030 },
-
79  { 0x303D, 0x303D }, { 0x3297, 0x3297 }, { 0x3299, 0x3299 },
-
80  { 0x1F004, 0x1F004 }, { 0x1F0CF, 0x1F0CF }, { 0x1F170, 0x1F171 },
-
81  { 0x1F17E, 0x1F17F }, { 0x1F18E, 0x1F18E }, { 0x1F191, 0x1F19A },
-
82  { 0x1F1E6, 0x1F1FF }, { 0x1F201, 0x1F202 }, { 0x1F21A, 0x1F21A },
-
83  { 0x1F22F, 0x1F22F }, { 0x1F232, 0x1F23A }, { 0x1F250, 0x1F251 },
-
84  { 0x1F300, 0x1F30C }, { 0x1F30D, 0x1F30E }, { 0x1F30F, 0x1F30F },
-
85  { 0x1F310, 0x1F310 }, { 0x1F311, 0x1F311 }, { 0x1F312, 0x1F312 },
-
86  { 0x1F313, 0x1F315 }, { 0x1F316, 0x1F318 }, { 0x1F319, 0x1F319 },
-
87  { 0x1F31A, 0x1F31A }, { 0x1F31B, 0x1F31B }, { 0x1F31C, 0x1F31C },
-
88  { 0x1F31D, 0x1F31E }, { 0x1F31F, 0x1F320 }, { 0x1F321, 0x1F321 },
-
89  { 0x1F324, 0x1F32C }, { 0x1F32D, 0x1F32F }, { 0x1F330, 0x1F331 },
-
90  { 0x1F332, 0x1F333 }, { 0x1F334, 0x1F335 }, { 0x1F336, 0x1F336 },
-
91  { 0x1F337, 0x1F34A }, { 0x1F34B, 0x1F34B }, { 0x1F34C, 0x1F34F },
-
92  { 0x1F350, 0x1F350 }, { 0x1F351, 0x1F37B }, { 0x1F37C, 0x1F37C },
-
93  { 0x1F37D, 0x1F37D }, { 0x1F37E, 0x1F37F }, { 0x1F380, 0x1F393 },
-
94  { 0x1F396, 0x1F397 }, { 0x1F399, 0x1F39B }, { 0x1F39E, 0x1F39F },
-
95  { 0x1F3A0, 0x1F3C4 }, { 0x1F3C5, 0x1F3C5 }, { 0x1F3C6, 0x1F3C6 },
-
96  { 0x1F3C7, 0x1F3C7 }, { 0x1F3C8, 0x1F3C8 }, { 0x1F3C9, 0x1F3C9 },
-
97  { 0x1F3CA, 0x1F3CA }, { 0x1F3CB, 0x1F3CE }, { 0x1F3CF, 0x1F3D3 },
-
98  { 0x1F3D4, 0x1F3DF }, { 0x1F3E0, 0x1F3E3 }, { 0x1F3E4, 0x1F3E4 },
-
99  { 0x1F3E5, 0x1F3F0 }, { 0x1F3F3, 0x1F3F3 }, { 0x1F3F4, 0x1F3F4 },
-
100  { 0x1F3F5, 0x1F3F5 }, { 0x1F3F7, 0x1F3F7 }, { 0x1F3F8, 0x1F407 },
-
101  { 0x1F408, 0x1F408 }, { 0x1F409, 0x1F40B }, { 0x1F40C, 0x1F40E },
-
102  { 0x1F40F, 0x1F410 }, { 0x1F411, 0x1F412 }, { 0x1F413, 0x1F413 },
-
103  { 0x1F414, 0x1F414 }, { 0x1F415, 0x1F415 }, { 0x1F416, 0x1F416 },
-
104  { 0x1F417, 0x1F429 }, { 0x1F42A, 0x1F42A }, { 0x1F42B, 0x1F43E },
-
105  { 0x1F43F, 0x1F43F }, { 0x1F440, 0x1F440 }, { 0x1F441, 0x1F441 },
-
106  { 0x1F442, 0x1F464 }, { 0x1F465, 0x1F465 }, { 0x1F466, 0x1F46B },
-
107  { 0x1F46C, 0x1F46D }, { 0x1F46E, 0x1F4AC }, { 0x1F4AD, 0x1F4AD },
-
108  { 0x1F4AE, 0x1F4B5 }, { 0x1F4B6, 0x1F4B7 }, { 0x1F4B8, 0x1F4EB },
-
109  { 0x1F4EC, 0x1F4ED }, { 0x1F4EE, 0x1F4EE }, { 0x1F4EF, 0x1F4EF },
-
110  { 0x1F4F0, 0x1F4F4 }, { 0x1F4F5, 0x1F4F5 }, { 0x1F4F6, 0x1F4F7 },
-
111  { 0x1F4F8, 0x1F4F8 }, { 0x1F4F9, 0x1F4FC }, { 0x1F4FD, 0x1F4FD },
-
112  { 0x1F4FF, 0x1F502 }, { 0x1F503, 0x1F503 }, { 0x1F504, 0x1F507 },
-
113  { 0x1F508, 0x1F508 }, { 0x1F509, 0x1F509 }, { 0x1F50A, 0x1F514 },
-
114  { 0x1F515, 0x1F515 }, { 0x1F516, 0x1F52B }, { 0x1F52C, 0x1F52D },
-
115  { 0x1F52E, 0x1F53D }, { 0x1F549, 0x1F54A }, { 0x1F54B, 0x1F54E },
-
116  { 0x1F550, 0x1F55B }, { 0x1F55C, 0x1F567 }, { 0x1F56F, 0x1F570 },
-
117  { 0x1F573, 0x1F579 }, { 0x1F57A, 0x1F57A }, { 0x1F587, 0x1F587 },
-
118  { 0x1F58A, 0x1F58D }, { 0x1F590, 0x1F590 }, { 0x1F595, 0x1F596 },
-
119  { 0x1F5A4, 0x1F5A4 }, { 0x1F5A5, 0x1F5A5 }, { 0x1F5A8, 0x1F5A8 },
-
120  { 0x1F5B1, 0x1F5B2 }, { 0x1F5BC, 0x1F5BC }, { 0x1F5C2, 0x1F5C4 },
-
121  { 0x1F5D1, 0x1F5D3 }, { 0x1F5DC, 0x1F5DE }, { 0x1F5E1, 0x1F5E1 },
-
122  { 0x1F5E3, 0x1F5E3 }, { 0x1F5E8, 0x1F5E8 }, { 0x1F5EF, 0x1F5EF },
-
123  { 0x1F5F3, 0x1F5F3 }, { 0x1F5FA, 0x1F5FA }, { 0x1F5FB, 0x1F5FF },
-
124  { 0x1F600, 0x1F600 }, { 0x1F601, 0x1F606 }, { 0x1F607, 0x1F608 },
-
125  { 0x1F609, 0x1F60D }, { 0x1F60E, 0x1F60E }, { 0x1F60F, 0x1F60F },
-
126  { 0x1F610, 0x1F610 }, { 0x1F611, 0x1F611 }, { 0x1F612, 0x1F614 },
-
127  { 0x1F615, 0x1F615 }, { 0x1F616, 0x1F616 }, { 0x1F617, 0x1F617 },
-
128  { 0x1F618, 0x1F618 }, { 0x1F619, 0x1F619 }, { 0x1F61A, 0x1F61A },
-
129  { 0x1F61B, 0x1F61B }, { 0x1F61C, 0x1F61E }, { 0x1F61F, 0x1F61F },
-
130  { 0x1F620, 0x1F625 }, { 0x1F626, 0x1F627 }, { 0x1F628, 0x1F62B },
-
131  { 0x1F62C, 0x1F62C }, { 0x1F62D, 0x1F62D }, { 0x1F62E, 0x1F62F },
-
132  { 0x1F630, 0x1F633 }, { 0x1F634, 0x1F634 }, { 0x1F635, 0x1F635 },
-
133  { 0x1F636, 0x1F636 }, { 0x1F637, 0x1F640 }, { 0x1F641, 0x1F644 },
-
134  { 0x1F645, 0x1F64F }, { 0x1F680, 0x1F680 }, { 0x1F681, 0x1F682 },
-
135  { 0x1F683, 0x1F685 }, { 0x1F686, 0x1F686 }, { 0x1F687, 0x1F687 },
-
136  { 0x1F688, 0x1F688 }, { 0x1F689, 0x1F689 }, { 0x1F68A, 0x1F68B },
-
137  { 0x1F68C, 0x1F68C }, { 0x1F68D, 0x1F68D }, { 0x1F68E, 0x1F68E },
-
138  { 0x1F68F, 0x1F68F }, { 0x1F690, 0x1F690 }, { 0x1F691, 0x1F693 },
-
139  { 0x1F694, 0x1F694 }, { 0x1F695, 0x1F695 }, { 0x1F696, 0x1F696 },
-
140  { 0x1F697, 0x1F697 }, { 0x1F698, 0x1F698 }, { 0x1F699, 0x1F69A },
-
141  { 0x1F69B, 0x1F6A1 }, { 0x1F6A2, 0x1F6A2 }, { 0x1F6A3, 0x1F6A3 },
-
142  { 0x1F6A4, 0x1F6A5 }, { 0x1F6A6, 0x1F6A6 }, { 0x1F6A7, 0x1F6AD },
-
143  { 0x1F6AE, 0x1F6B1 }, { 0x1F6B2, 0x1F6B2 }, { 0x1F6B3, 0x1F6B5 },
-
144  { 0x1F6B6, 0x1F6B6 }, { 0x1F6B7, 0x1F6B8 }, { 0x1F6B9, 0x1F6BE },
-
145  { 0x1F6BF, 0x1F6BF }, { 0x1F6C0, 0x1F6C0 }, { 0x1F6C1, 0x1F6C5 },
-
146  { 0x1F6CB, 0x1F6CB }, { 0x1F6CC, 0x1F6CC }, { 0x1F6CD, 0x1F6CF },
-
147  { 0x1F6D0, 0x1F6D0 }, { 0x1F6D1, 0x1F6D2 }, { 0x1F6D5, 0x1F6D5 },
-
148  { 0x1F6D6, 0x1F6D7 }, { 0x1F6DC, 0x1F6DC }, { 0x1F6DD, 0x1F6DF },
-
149  { 0x1F6E0, 0x1F6E5 }, { 0x1F6E9, 0x1F6E9 }, { 0x1F6EB, 0x1F6EC },
-
150  { 0x1F6F0, 0x1F6F0 }, { 0x1F6F3, 0x1F6F3 }, { 0x1F6F4, 0x1F6F6 },
-
151  { 0x1F6F7, 0x1F6F8 }, { 0x1F6F9, 0x1F6F9 }, { 0x1F6FA, 0x1F6FA },
-
152  { 0x1F6FB, 0x1F6FC }, { 0x1F7E0, 0x1F7EB }, { 0x1F7F0, 0x1F7F0 },
-
153  { 0x1F90C, 0x1F90C }, { 0x1F90D, 0x1F90F }, { 0x1F910, 0x1F918 },
-
154  { 0x1F919, 0x1F91E }, { 0x1F91F, 0x1F91F }, { 0x1F920, 0x1F927 },
-
155  { 0x1F928, 0x1F92F }, { 0x1F930, 0x1F930 }, { 0x1F931, 0x1F932 },
-
156  { 0x1F933, 0x1F93A }, { 0x1F93C, 0x1F93E }, { 0x1F93F, 0x1F93F },
-
157  { 0x1F940, 0x1F945 }, { 0x1F947, 0x1F94B }, { 0x1F94C, 0x1F94C },
-
158  { 0x1F94D, 0x1F94F }, { 0x1F950, 0x1F95E }, { 0x1F95F, 0x1F96B },
-
159  { 0x1F96C, 0x1F970 }, { 0x1F971, 0x1F971 }, { 0x1F972, 0x1F972 },
-
160  { 0x1F973, 0x1F976 }, { 0x1F977, 0x1F978 }, { 0x1F979, 0x1F979 },
-
161  { 0x1F97A, 0x1F97A }, { 0x1F97B, 0x1F97B }, { 0x1F97C, 0x1F97F },
-
162  { 0x1F980, 0x1F984 }, { 0x1F985, 0x1F991 }, { 0x1F992, 0x1F997 },
-
163  { 0x1F998, 0x1F9A2 }, { 0x1F9A3, 0x1F9A4 }, { 0x1F9A5, 0x1F9AA },
-
164  { 0x1F9AB, 0x1F9AD }, { 0x1F9AE, 0x1F9AF }, { 0x1F9B0, 0x1F9B9 },
-
165  { 0x1F9BA, 0x1F9BF }, { 0x1F9C0, 0x1F9C0 }, { 0x1F9C1, 0x1F9C2 },
-
166  { 0x1F9C3, 0x1F9CA }, { 0x1F9CB, 0x1F9CB }, { 0x1F9CC, 0x1F9CC },
-
167  { 0x1F9CD, 0x1F9CF }, { 0x1F9D0, 0x1F9E6 }, { 0x1F9E7, 0x1F9FF },
-
168  { 0x1FA70, 0x1FA73 }, { 0x1FA74, 0x1FA74 }, { 0x1FA75, 0x1FA77 },
-
169  { 0x1FA78, 0x1FA7A }, { 0x1FA7B, 0x1FA7C }, { 0x1FA80, 0x1FA82 },
-
170  { 0x1FA83, 0x1FA86 }, { 0x1FA87, 0x1FA88 }, { 0x1FA90, 0x1FA95 },
-
171  { 0x1FA96, 0x1FAA8 }, { 0x1FAA9, 0x1FAAC }, { 0x1FAAD, 0x1FAAF },
-
172  { 0x1FAB0, 0x1FAB6 }, { 0x1FAB7, 0x1FABA }, { 0x1FABB, 0x1FABD },
-
173  { 0x1FABF, 0x1FABF }, { 0x1FAC0, 0x1FAC2 }, { 0x1FAC3, 0x1FAC5 },
-
174  { 0x1FACE, 0x1FACF }, { 0x1FAD0, 0x1FAD6 }, { 0x1FAD7, 0x1FAD9 },
-
175  { 0x1FADA, 0x1FADB }, { 0x1FAE0, 0x1FAE7 }, { 0x1FAE8, 0x1FAE8 },
-
176  { 0x1FAF0, 0x1FAF6 }, { 0x1FAF7, 0x1FAF8 }, { 0x231A, 0x231B },
-
177  { 0x23E9, 0x23EC }, { 0x23F0, 0x23F0 }, { 0x23F3, 0x23F3 },
-
178  { 0x25FD, 0x25FE }, { 0x2614, 0x2615 }, { 0x2648, 0x2653 },
-
179  { 0x267F, 0x267F }, { 0x2693, 0x2693 }, { 0x26A1, 0x26A1 },
-
180  { 0x26AA, 0x26AB }, { 0x26BD, 0x26BE }, { 0x26C4, 0x26C5 },
-
181  { 0x26CE, 0x26CE }, { 0x26D4, 0x26D4 }, { 0x26EA, 0x26EA },
-
182  { 0x26F2, 0x26F3 }, { 0x26F5, 0x26F5 }, { 0x26FA, 0x26FA },
-
183  { 0x26FD, 0x26FD }, { 0x2705, 0x2705 }, { 0x270A, 0x270B },
-
184  { 0x2728, 0x2728 }, { 0x274C, 0x274C }, { 0x274E, 0x274E },
-
185  { 0x2753, 0x2755 }, { 0x2757, 0x2757 }, { 0x2795, 0x2797 },
-
186  { 0x27B0, 0x27B0 }, { 0x27BF, 0x27BF }, { 0x2B1B, 0x2B1C },
-
187  { 0x2B50, 0x2B50 }, { 0x2B55, 0x2B55 }, { 0x1F004, 0x1F004 },
-
188  { 0x1F0CF, 0x1F0CF }, { 0x1F18E, 0x1F18E }, { 0x1F191, 0x1F19A },
-
189  { 0x1F1E6, 0x1F1FF }, { 0x1F201, 0x1F201 }, { 0x1F21A, 0x1F21A },
-
190  { 0x1F22F, 0x1F22F }, { 0x1F232, 0x1F236 }, { 0x1F238, 0x1F23A },
-
191  { 0x1F250, 0x1F251 }, { 0x1F300, 0x1F30C }, { 0x1F30D, 0x1F30E },
-
192  { 0x1F30F, 0x1F30F }, { 0x1F310, 0x1F310 }, { 0x1F311, 0x1F311 },
-
193  { 0x1F312, 0x1F312 }, { 0x1F313, 0x1F315 }, { 0x1F316, 0x1F318 },
-
194  { 0x1F319, 0x1F319 }, { 0x1F31A, 0x1F31A }, { 0x1F31B, 0x1F31B },
-
195  { 0x1F31C, 0x1F31C }, { 0x1F31D, 0x1F31E }, { 0x1F31F, 0x1F320 },
-
196  { 0x1F32D, 0x1F32F }, { 0x1F330, 0x1F331 }, { 0x1F332, 0x1F333 },
-
197  { 0x1F334, 0x1F335 }, { 0x1F337, 0x1F34A }, { 0x1F34B, 0x1F34B },
-
198  { 0x1F34C, 0x1F34F }, { 0x1F350, 0x1F350 }, { 0x1F351, 0x1F37B },
-
199  { 0x1F37C, 0x1F37C }, { 0x1F37E, 0x1F37F }, { 0x1F380, 0x1F393 },
-
200  { 0x1F3A0, 0x1F3C4 }, { 0x1F3C5, 0x1F3C5 }, { 0x1F3C6, 0x1F3C6 },
-
201  { 0x1F3C7, 0x1F3C7 }, { 0x1F3C8, 0x1F3C8 }, { 0x1F3C9, 0x1F3C9 },
-
202  { 0x1F3CA, 0x1F3CA }, { 0x1F3CF, 0x1F3D3 }, { 0x1F3E0, 0x1F3E3 },
-
203  { 0x1F3E4, 0x1F3E4 }, { 0x1F3E5, 0x1F3F0 }, { 0x1F3F4, 0x1F3F4 },
-
204  { 0x1F3F8, 0x1F407 }, { 0x1F408, 0x1F408 }, { 0x1F409, 0x1F40B },
-
205  { 0x1F40C, 0x1F40E }, { 0x1F40F, 0x1F410 }, { 0x1F411, 0x1F412 },
-
206  { 0x1F413, 0x1F413 }, { 0x1F414, 0x1F414 }, { 0x1F415, 0x1F415 },
-
207  { 0x1F416, 0x1F416 }, { 0x1F417, 0x1F429 }, { 0x1F42A, 0x1F42A },
-
208  { 0x1F42B, 0x1F43E }, { 0x1F440, 0x1F440 }, { 0x1F442, 0x1F464 },
-
209  { 0x1F465, 0x1F465 }, { 0x1F466, 0x1F46B }, { 0x1F46C, 0x1F46D },
-
210  { 0x1F46E, 0x1F4AC }, { 0x1F4AD, 0x1F4AD }, { 0x1F4AE, 0x1F4B5 },
-
211  { 0x1F4B6, 0x1F4B7 }, { 0x1F4B8, 0x1F4EB }, { 0x1F4EC, 0x1F4ED },
-
212  { 0x1F4EE, 0x1F4EE }, { 0x1F4EF, 0x1F4EF }, { 0x1F4F0, 0x1F4F4 },
-
213  { 0x1F4F5, 0x1F4F5 }, { 0x1F4F6, 0x1F4F7 }, { 0x1F4F8, 0x1F4F8 },
-
214  { 0x1F4F9, 0x1F4FC }, { 0x1F4FF, 0x1F502 }, { 0x1F503, 0x1F503 },
-
215  { 0x1F504, 0x1F507 }, { 0x1F508, 0x1F508 }, { 0x1F509, 0x1F509 },
-
216  { 0x1F50A, 0x1F514 }, { 0x1F515, 0x1F515 }, { 0x1F516, 0x1F52B },
-
217  { 0x1F52C, 0x1F52D }, { 0x1F52E, 0x1F53D }, { 0x1F54B, 0x1F54E },
-
218  { 0x1F550, 0x1F55B }, { 0x1F55C, 0x1F567 }, { 0x1F57A, 0x1F57A },
-
219  { 0x1F595, 0x1F596 }, { 0x1F5A4, 0x1F5A4 }, { 0x1F5FB, 0x1F5FF },
-
220  { 0x1F600, 0x1F600 }, { 0x1F601, 0x1F606 }, { 0x1F607, 0x1F608 },
-
221  { 0x1F609, 0x1F60D }, { 0x1F60E, 0x1F60E }, { 0x1F60F, 0x1F60F },
-
222  { 0x1F610, 0x1F610 }, { 0x1F611, 0x1F611 }, { 0x1F612, 0x1F614 },
-
223  { 0x1F615, 0x1F615 }, { 0x1F616, 0x1F616 }, { 0x1F617, 0x1F617 },
-
224  { 0x1F618, 0x1F618 }, { 0x1F619, 0x1F619 }, { 0x1F61A, 0x1F61A },
-
225  { 0x1F61B, 0x1F61B }, { 0x1F61C, 0x1F61E }, { 0x1F61F, 0x1F61F },
-
226  { 0x1F620, 0x1F625 }, { 0x1F626, 0x1F627 }, { 0x1F628, 0x1F62B },
-
227  { 0x1F62C, 0x1F62C }, { 0x1F62D, 0x1F62D }, { 0x1F62E, 0x1F62F },
-
228  { 0x1F630, 0x1F633 }, { 0x1F634, 0x1F634 }, { 0x1F635, 0x1F635 },
-
229  { 0x1F636, 0x1F636 }, { 0x1F637, 0x1F640 }, { 0x1F641, 0x1F644 },
-
230  { 0x1F645, 0x1F64F }, { 0x1F680, 0x1F680 }, { 0x1F681, 0x1F682 },
-
231  { 0x1F683, 0x1F685 }, { 0x1F686, 0x1F686 }, { 0x1F687, 0x1F687 },
-
232  { 0x1F688, 0x1F688 }, { 0x1F689, 0x1F689 }, { 0x1F68A, 0x1F68B },
-
233  { 0x1F68C, 0x1F68C }, { 0x1F68D, 0x1F68D }, { 0x1F68E, 0x1F68E },
-
234  { 0x1F68F, 0x1F68F }, { 0x1F690, 0x1F690 }, { 0x1F691, 0x1F693 },
-
235  { 0x1F694, 0x1F694 }, { 0x1F695, 0x1F695 }, { 0x1F696, 0x1F696 },
-
236  { 0x1F697, 0x1F697 }, { 0x1F698, 0x1F698 }, { 0x1F699, 0x1F69A },
-
237  { 0x1F69B, 0x1F6A1 }, { 0x1F6A2, 0x1F6A2 }, { 0x1F6A3, 0x1F6A3 },
-
238  { 0x1F6A4, 0x1F6A5 }, { 0x1F6A6, 0x1F6A6 }, { 0x1F6A7, 0x1F6AD },
-
239  { 0x1F6AE, 0x1F6B1 }, { 0x1F6B2, 0x1F6B2 }, { 0x1F6B3, 0x1F6B5 },
-
240  { 0x1F6B6, 0x1F6B6 }, { 0x1F6B7, 0x1F6B8 }, { 0x1F6B9, 0x1F6BE },
-
241  { 0x1F6BF, 0x1F6BF }, { 0x1F6C0, 0x1F6C0 }, { 0x1F6C1, 0x1F6C5 },
-
242  { 0x1F6CC, 0x1F6CC }, { 0x1F6D0, 0x1F6D0 }, { 0x1F6D1, 0x1F6D2 },
-
243  { 0x1F6D5, 0x1F6D5 }, { 0x1F6D6, 0x1F6D7 }, { 0x1F6DC, 0x1F6DC },
-
244  { 0x1F6DD, 0x1F6DF }, { 0x1F6EB, 0x1F6EC }, { 0x1F6F4, 0x1F6F6 },
-
245  { 0x1F6F7, 0x1F6F8 }, { 0x1F6F9, 0x1F6F9 }, { 0x1F6FA, 0x1F6FA },
-
246  { 0x1F6FB, 0x1F6FC }, { 0x1F7E0, 0x1F7EB }, { 0x1F7F0, 0x1F7F0 },
-
247  { 0x1F90C, 0x1F90C }, { 0x1F90D, 0x1F90F }, { 0x1F910, 0x1F918 },
-
248  { 0x1F919, 0x1F91E }, { 0x1F91F, 0x1F91F }, { 0x1F920, 0x1F927 },
-
249  { 0x1F928, 0x1F92F }, { 0x1F930, 0x1F930 }, { 0x1F931, 0x1F932 },
-
250  { 0x1F933, 0x1F93A }, { 0x1F93C, 0x1F93E }, { 0x1F93F, 0x1F93F },
-
251  { 0x1F940, 0x1F945 }, { 0x1F947, 0x1F94B }, { 0x1F94C, 0x1F94C },
-
252  { 0x1F94D, 0x1F94F }, { 0x1F950, 0x1F95E }, { 0x1F95F, 0x1F96B },
-
253  { 0x1F96C, 0x1F970 }, { 0x1F971, 0x1F971 }, { 0x1F972, 0x1F972 },
-
254  { 0x1F973, 0x1F976 }, { 0x1F977, 0x1F978 }, { 0x1F979, 0x1F979 },
-
255  { 0x1F97A, 0x1F97A }, { 0x1F97B, 0x1F97B }, { 0x1F97C, 0x1F97F },
-
256  { 0x1F980, 0x1F984 }, { 0x1F985, 0x1F991 }, { 0x1F992, 0x1F997 },
-
257  { 0x1F998, 0x1F9A2 }, { 0x1F9A3, 0x1F9A4 }, { 0x1F9A5, 0x1F9AA },
-
258  { 0x1F9AB, 0x1F9AD }, { 0x1F9AE, 0x1F9AF }, { 0x1F9B0, 0x1F9B9 },
-
259  { 0x1F9BA, 0x1F9BF }, { 0x1F9C0, 0x1F9C0 }, { 0x1F9C1, 0x1F9C2 },
-
260  { 0x1F9C3, 0x1F9CA }, { 0x1F9CB, 0x1F9CB }, { 0x1F9CC, 0x1F9CC },
-
261  { 0x1F9CD, 0x1F9CF }, { 0x1F9D0, 0x1F9E6 }, { 0x1F9E7, 0x1F9FF },
-
262  { 0x1FA70, 0x1FA73 }, { 0x1FA74, 0x1FA74 }, { 0x1FA75, 0x1FA77 },
-
263  { 0x1FA78, 0x1FA7A }, { 0x1FA7B, 0x1FA7C }, { 0x1FA80, 0x1FA82 },
-
264  { 0x1FA83, 0x1FA86 }, { 0x1FA87, 0x1FA88 }, { 0x1FA90, 0x1FA95 },
-
265  { 0x1FA96, 0x1FAA8 }, { 0x1FAA9, 0x1FAAC }, { 0x1FAAD, 0x1FAAF },
-
266  { 0x1FAB0, 0x1FAB6 }, { 0x1FAB7, 0x1FABA }, { 0x1FABB, 0x1FABD },
-
267  { 0x1FABF, 0x1FABF }, { 0x1FAC0, 0x1FAC2 }, { 0x1FAC3, 0x1FAC5 },
-
268  { 0x1FACE, 0x1FACF }, { 0x1FAD0, 0x1FAD6 }, { 0x1FAD7, 0x1FAD9 },
-
269  { 0x1FADA, 0x1FADB }, { 0x1FAE0, 0x1FAE7 }, { 0x1FAE8, 0x1FAE8 },
-
270  { 0x1FAF0, 0x1FAF6 }, { 0x1FAF7, 0x1FAF8 }, { 0x1F3FB, 0x1F3FF },
-
271  { 0x261D, 0x261D }, { 0x26F9, 0x26F9 }, { 0x270A, 0x270C },
-
272  { 0x270D, 0x270D }, { 0x1F385, 0x1F385 }, { 0x1F3C2, 0x1F3C4 },
-
273  { 0x1F3C7, 0x1F3C7 }, { 0x1F3CA, 0x1F3CA }, { 0x1F3CB, 0x1F3CC },
-
274  { 0x1F442, 0x1F443 }, { 0x1F446, 0x1F450 }, { 0x1F466, 0x1F46B },
-
275  { 0x1F46C, 0x1F46D }, { 0x1F46E, 0x1F478 }, { 0x1F47C, 0x1F47C },
-
276  { 0x1F481, 0x1F483 }, { 0x1F485, 0x1F487 }, { 0x1F48F, 0x1F48F },
-
277  { 0x1F491, 0x1F491 }, { 0x1F4AA, 0x1F4AA }, { 0x1F574, 0x1F575 },
-
278  { 0x1F57A, 0x1F57A }, { 0x1F590, 0x1F590 }, { 0x1F595, 0x1F596 },
-
279  { 0x1F645, 0x1F647 }, { 0x1F64B, 0x1F64F }, { 0x1F6A3, 0x1F6A3 },
-
280  { 0x1F6B4, 0x1F6B5 }, { 0x1F6B6, 0x1F6B6 }, { 0x1F6C0, 0x1F6C0 },
-
281  { 0x1F6CC, 0x1F6CC }, { 0x1F90C, 0x1F90C }, { 0x1F90F, 0x1F90F },
-
282  { 0x1F918, 0x1F918 }, { 0x1F919, 0x1F91E }, { 0x1F91F, 0x1F91F },
-
283  { 0x1F926, 0x1F926 }, { 0x1F930, 0x1F930 }, { 0x1F931, 0x1F932 },
-
284  { 0x1F933, 0x1F939 }, { 0x1F93C, 0x1F93E }, { 0x1F977, 0x1F977 },
-
285  { 0x1F9B5, 0x1F9B6 }, { 0x1F9B8, 0x1F9B9 }, { 0x1F9BB, 0x1F9BB },
-
286  { 0x1F9CD, 0x1F9CF }, { 0x1F9D1, 0x1F9DD }, { 0x1FAC3, 0x1FAC5 },
-
287  { 0x1FAF0, 0x1FAF6 }, { 0x1FAF7, 0x1FAF8 }, { 0x0023, 0x0023 },
-
288  { 0x002A, 0x002A }, { 0x0030, 0x0039 }, { 0x200D, 0x200D },
-
289  { 0x20E3, 0x20E3 }, { 0xFE0F, 0xFE0F }, { 0x1F1E6, 0x1F1FF },
-
290  { 0x1F3FB, 0x1F3FF }, { 0x1F9B0, 0x1F9B3 }, { 0xE0020, 0xE007F },
-
291  { 0x00A9, 0x00A9 }, { 0x00AE, 0x00AE }, { 0x203C, 0x203C },
-
292  { 0x2049, 0x2049 }, { 0x2122, 0x2122 }, { 0x2139, 0x2139 },
-
293  { 0x2194, 0x2199 }, { 0x21A9, 0x21AA }, { 0x231A, 0x231B },
-
294  { 0x2328, 0x2328 }, { 0x2388, 0x2388 }, { 0x23CF, 0x23CF },
-
295  { 0x23E9, 0x23EC }, { 0x23ED, 0x23EE }, { 0x23EF, 0x23EF },
-
296  { 0x23F0, 0x23F0 }, { 0x23F1, 0x23F2 }, { 0x23F3, 0x23F3 },
-
297  { 0x23F8, 0x23FA }, { 0x24C2, 0x24C2 }, { 0x25AA, 0x25AB },
-
298  { 0x25B6, 0x25B6 }, { 0x25C0, 0x25C0 }, { 0x25FB, 0x25FE },
-
299  { 0x2600, 0x2601 }, { 0x2602, 0x2603 }, { 0x2604, 0x2604 },
-
300  { 0x2605, 0x2605 }, { 0x2607, 0x260D }, { 0x260E, 0x260E },
-
301  { 0x260F, 0x2610 }, { 0x2611, 0x2611 }, { 0x2612, 0x2612 },
-
302  { 0x2614, 0x2615 }, { 0x2616, 0x2617 }, { 0x2618, 0x2618 },
-
303  { 0x2619, 0x261C }, { 0x261D, 0x261D }, { 0x261E, 0x261F },
-
304  { 0x2620, 0x2620 }, { 0x2621, 0x2621 }, { 0x2622, 0x2623 },
-
305  { 0x2624, 0x2625 }, { 0x2626, 0x2626 }, { 0x2627, 0x2629 },
-
306  { 0x262A, 0x262A }, { 0x262B, 0x262D }, { 0x262E, 0x262E },
-
307  { 0x262F, 0x262F }, { 0x2630, 0x2637 }, { 0x2638, 0x2639 },
-
308  { 0x263A, 0x263A }, { 0x263B, 0x263F }, { 0x2640, 0x2640 },
-
309  { 0x2641, 0x2641 }, { 0x2642, 0x2642 }, { 0x2643, 0x2647 },
-
310  { 0x2648, 0x2653 }, { 0x2654, 0x265E }, { 0x265F, 0x265F },
-
311  { 0x2660, 0x2660 }, { 0x2661, 0x2662 }, { 0x2663, 0x2663 },
-
312  { 0x2664, 0x2664 }, { 0x2665, 0x2666 }, { 0x2667, 0x2667 },
-
313  { 0x2668, 0x2668 }, { 0x2669, 0x267A }, { 0x267B, 0x267B },
-
314  { 0x267C, 0x267D }, { 0x267E, 0x267E }, { 0x267F, 0x267F },
-
315  { 0x2680, 0x2685 }, { 0x2690, 0x2691 }, { 0x2692, 0x2692 },
-
316  { 0x2693, 0x2693 }, { 0x2694, 0x2694 }, { 0x2695, 0x2695 },
-
317  { 0x2696, 0x2697 }, { 0x2698, 0x2698 }, { 0x2699, 0x2699 },
-
318  { 0x269A, 0x269A }, { 0x269B, 0x269C }, { 0x269D, 0x269F },
-
319  { 0x26A0, 0x26A1 }, { 0x26A2, 0x26A6 }, { 0x26A7, 0x26A7 },
-
320  { 0x26A8, 0x26A9 }, { 0x26AA, 0x26AB }, { 0x26AC, 0x26AF },
-
321  { 0x26B0, 0x26B1 }, { 0x26B2, 0x26BC }, { 0x26BD, 0x26BE },
-
322  { 0x26BF, 0x26C3 }, { 0x26C4, 0x26C5 }, { 0x26C6, 0x26C7 },
-
323  { 0x26C8, 0x26C8 }, { 0x26C9, 0x26CD }, { 0x26CE, 0x26CE },
-
324  { 0x26CF, 0x26CF }, { 0x26D0, 0x26D0 }, { 0x26D1, 0x26D1 },
-
325  { 0x26D2, 0x26D2 }, { 0x26D3, 0x26D3 }, { 0x26D4, 0x26D4 },
-
326  { 0x26D5, 0x26E8 }, { 0x26E9, 0x26E9 }, { 0x26EA, 0x26EA },
-
327  { 0x26EB, 0x26EF }, { 0x26F0, 0x26F1 }, { 0x26F2, 0x26F3 },
-
328  { 0x26F4, 0x26F4 }, { 0x26F5, 0x26F5 }, { 0x26F6, 0x26F6 },
-
329  { 0x26F7, 0x26F9 }, { 0x26FA, 0x26FA }, { 0x26FB, 0x26FC },
-
330  { 0x26FD, 0x26FD }, { 0x26FE, 0x2701 }, { 0x2702, 0x2702 },
-
331  { 0x2703, 0x2704 }, { 0x2705, 0x2705 }, { 0x2708, 0x270C },
-
332  { 0x270D, 0x270D }, { 0x270E, 0x270E }, { 0x270F, 0x270F },
-
333  { 0x2710, 0x2711 }, { 0x2712, 0x2712 }, { 0x2714, 0x2714 },
-
334  { 0x2716, 0x2716 }, { 0x271D, 0x271D }, { 0x2721, 0x2721 },
-
335  { 0x2728, 0x2728 }, { 0x2733, 0x2734 }, { 0x2744, 0x2744 },
-
336  { 0x2747, 0x2747 }, { 0x274C, 0x274C }, { 0x274E, 0x274E },
-
337  { 0x2753, 0x2755 }, { 0x2757, 0x2757 }, { 0x2763, 0x2763 },
-
338  { 0x2764, 0x2764 }, { 0x2765, 0x2767 }, { 0x2795, 0x2797 },
-
339  { 0x27A1, 0x27A1 }, { 0x27B0, 0x27B0 }, { 0x27BF, 0x27BF },
-
340  { 0x2934, 0x2935 }, { 0x2B05, 0x2B07 }, { 0x2B1B, 0x2B1C },
-
341  { 0x2B50, 0x2B50 }, { 0x2B55, 0x2B55 }, { 0x3030, 0x3030 },
-
342  { 0x303D, 0x303D }, { 0x3297, 0x3297 }, { 0x3299, 0x3299 },
-
343  { 0x1F000, 0x1F003 }, { 0x1F004, 0x1F004 }, { 0x1F005, 0x1F0CE },
-
344  { 0x1F0CF, 0x1F0CF }, { 0x1F0D0, 0x1F0FF }, { 0x1F10D, 0x1F10F },
-
345  { 0x1F12F, 0x1F12F }, { 0x1F16C, 0x1F16F }, { 0x1F170, 0x1F171 },
-
346  { 0x1F17E, 0x1F17F }, { 0x1F18E, 0x1F18E }, { 0x1F191, 0x1F19A },
-
347  { 0x1F1AD, 0x1F1E5 }, { 0x1F201, 0x1F202 }, { 0x1F203, 0x1F20F },
-
348  { 0x1F21A, 0x1F21A }, { 0x1F22F, 0x1F22F }, { 0x1F232, 0x1F23A },
-
349  { 0x1F23C, 0x1F23F }, { 0x1F249, 0x1F24F }, { 0x1F250, 0x1F251 },
-
350  { 0x1F252, 0x1F2FF }, { 0x1F300, 0x1F30C }, { 0x1F30D, 0x1F30E },
-
351  { 0x1F30F, 0x1F30F }, { 0x1F310, 0x1F310 }, { 0x1F311, 0x1F311 },
-
352  { 0x1F312, 0x1F312 }, { 0x1F313, 0x1F315 }, { 0x1F316, 0x1F318 },
-
353  { 0x1F319, 0x1F319 }, { 0x1F31A, 0x1F31A }, { 0x1F31B, 0x1F31B },
-
354  { 0x1F31C, 0x1F31C }, { 0x1F31D, 0x1F31E }, { 0x1F31F, 0x1F320 },
-
355  { 0x1F321, 0x1F321 }, { 0x1F322, 0x1F323 }, { 0x1F324, 0x1F32C },
-
356  { 0x1F32D, 0x1F32F }, { 0x1F330, 0x1F331 }, { 0x1F332, 0x1F333 },
-
357  { 0x1F334, 0x1F335 }, { 0x1F336, 0x1F336 }, { 0x1F337, 0x1F34A },
-
358  { 0x1F34B, 0x1F34B }, { 0x1F34C, 0x1F34F }, { 0x1F350, 0x1F350 },
-
359  { 0x1F351, 0x1F37B }, { 0x1F37C, 0x1F37C }, { 0x1F37D, 0x1F37D },
-
360  { 0x1F37E, 0x1F37F }, { 0x1F380, 0x1F393 }, { 0x1F394, 0x1F395 },
-
361  { 0x1F396, 0x1F397 }, { 0x1F398, 0x1F398 }, { 0x1F399, 0x1F39B },
-
362  { 0x1F39C, 0x1F39D }, { 0x1F39E, 0x1F39F }, { 0x1F3A0, 0x1F3C4 },
-
363  { 0x1F3C5, 0x1F3C5 }, { 0x1F3C6, 0x1F3C6 }, { 0x1F3C7, 0x1F3C7 },
-
364  { 0x1F3C8, 0x1F3C8 }, { 0x1F3C9, 0x1F3C9 }, { 0x1F3CA, 0x1F3CA },
-
365  { 0x1F3CB, 0x1F3CE }, { 0x1F3CF, 0x1F3D3 }, { 0x1F3D4, 0x1F3DF },
-
366  { 0x1F3E0, 0x1F3E3 }, { 0x1F3E4, 0x1F3E4 }, { 0x1F3E5, 0x1F3F0 },
-
367  { 0x1F3F1, 0x1F3F2 }, { 0x1F3F3, 0x1F3F3 }, { 0x1F3F4, 0x1F3F4 },
-
368  { 0x1F3F5, 0x1F3F5 }, { 0x1F3F6, 0x1F3F6 }, { 0x1F3F7, 0x1F3F7 },
-
369  { 0x1F3F8, 0x1F3FA }, { 0x1F400, 0x1F407 }, { 0x1F408, 0x1F408 },
-
370  { 0x1F409, 0x1F40B }, { 0x1F40C, 0x1F40E }, { 0x1F40F, 0x1F410 },
-
371  { 0x1F411, 0x1F412 }, { 0x1F413, 0x1F413 }, { 0x1F414, 0x1F414 },
-
372  { 0x1F415, 0x1F415 }, { 0x1F416, 0x1F416 }, { 0x1F417, 0x1F429 },
-
373  { 0x1F42A, 0x1F42A }, { 0x1F42B, 0x1F43E }, { 0x1F43F, 0x1F43F },
-
374  { 0x1F440, 0x1F440 }, { 0x1F441, 0x1F441 }, { 0x1F442, 0x1F464 },
-
375  { 0x1F465, 0x1F465 }, { 0x1F466, 0x1F46B }, { 0x1F46C, 0x1F46D },
-
376  { 0x1F46E, 0x1F4AC }, { 0x1F4AD, 0x1F4AD }, { 0x1F4AE, 0x1F4B5 },
-
377  { 0x1F4B6, 0x1F4B7 }, { 0x1F4B8, 0x1F4EB }, { 0x1F4EC, 0x1F4ED },
-
378  { 0x1F4EE, 0x1F4EE }, { 0x1F4EF, 0x1F4EF }, { 0x1F4F0, 0x1F4F4 },
-
379  { 0x1F4F5, 0x1F4F5 }, { 0x1F4F6, 0x1F4F7 }, { 0x1F4F8, 0x1F4F8 },
-
380  { 0x1F4F9, 0x1F4FC }, { 0x1F4FD, 0x1F4FD }, { 0x1F4FE, 0x1F4FE },
-
381  { 0x1F4FF, 0x1F502 }, { 0x1F503, 0x1F503 }, { 0x1F504, 0x1F507 },
-
382  { 0x1F508, 0x1F508 }, { 0x1F509, 0x1F509 }, { 0x1F50A, 0x1F514 },
-
383  { 0x1F515, 0x1F515 }, { 0x1F516, 0x1F52B }, { 0x1F52C, 0x1F52D },
-
384  { 0x1F52E, 0x1F53D }, { 0x1F546, 0x1F548 }, { 0x1F549, 0x1F54A },
-
385  { 0x1F54B, 0x1F54E }, { 0x1F54F, 0x1F54F }, { 0x1F550, 0x1F55B },
-
386  { 0x1F55C, 0x1F567 }, { 0x1F568, 0x1F56E }, { 0x1F56F, 0x1F570 },
-
387  { 0x1F571, 0x1F572 }, { 0x1F573, 0x1F579 }, { 0x1F57A, 0x1F57A },
-
388  { 0x1F57B, 0x1F586 }, { 0x1F587, 0x1F587 }, { 0x1F588, 0x1F589 },
-
389  { 0x1F58A, 0x1F58D }, { 0x1F58E, 0x1F58F }, { 0x1F590, 0x1F590 },
-
390  { 0x1F591, 0x1F594 }, { 0x1F595, 0x1F596 }, { 0x1F597, 0x1F5A3 },
-
391  { 0x1F5A4, 0x1F5A4 }, { 0x1F5A5, 0x1F5A5 }, { 0x1F5A6, 0x1F5A7 },
-
392  { 0x1F5A8, 0x1F5A8 }, { 0x1F5A9, 0x1F5B0 }, { 0x1F5B1, 0x1F5B2 },
-
393  { 0x1F5B3, 0x1F5BB }, { 0x1F5BC, 0x1F5BC }, { 0x1F5BD, 0x1F5C1 },
-
394  { 0x1F5C2, 0x1F5C4 }, { 0x1F5C5, 0x1F5D0 }, { 0x1F5D1, 0x1F5D3 },
-
395  { 0x1F5D4, 0x1F5DB }, { 0x1F5DC, 0x1F5DE }, { 0x1F5DF, 0x1F5E0 },
-
396  { 0x1F5E1, 0x1F5E1 }, { 0x1F5E2, 0x1F5E2 }, { 0x1F5E3, 0x1F5E3 },
-
397  { 0x1F5E4, 0x1F5E7 }, { 0x1F5E8, 0x1F5E8 }, { 0x1F5E9, 0x1F5EE },
-
398  { 0x1F5EF, 0x1F5EF }, { 0x1F5F0, 0x1F5F2 }, { 0x1F5F3, 0x1F5F3 },
-
399  { 0x1F5F4, 0x1F5F9 }, { 0x1F5FA, 0x1F5FA }, { 0x1F5FB, 0x1F5FF },
-
400  { 0x1F600, 0x1F600 }, { 0x1F601, 0x1F606 }, { 0x1F607, 0x1F608 },
-
401  { 0x1F609, 0x1F60D }, { 0x1F60E, 0x1F60E }, { 0x1F60F, 0x1F60F },
-
402  { 0x1F610, 0x1F610 }, { 0x1F611, 0x1F611 }, { 0x1F612, 0x1F614 },
-
403  { 0x1F615, 0x1F615 }, { 0x1F616, 0x1F616 }, { 0x1F617, 0x1F617 },
-
404  { 0x1F618, 0x1F618 }, { 0x1F619, 0x1F619 }, { 0x1F61A, 0x1F61A },
-
405  { 0x1F61B, 0x1F61B }, { 0x1F61C, 0x1F61E }, { 0x1F61F, 0x1F61F },
-
406  { 0x1F620, 0x1F625 }, { 0x1F626, 0x1F627 }, { 0x1F628, 0x1F62B },
-
407  { 0x1F62C, 0x1F62C }, { 0x1F62D, 0x1F62D }, { 0x1F62E, 0x1F62F },
-
408  { 0x1F630, 0x1F633 }, { 0x1F634, 0x1F634 }, { 0x1F635, 0x1F635 },
-
409  { 0x1F636, 0x1F636 }, { 0x1F637, 0x1F640 }, { 0x1F641, 0x1F644 },
-
410  { 0x1F645, 0x1F64F }, { 0x1F680, 0x1F680 }, { 0x1F681, 0x1F682 },
-
411  { 0x1F683, 0x1F685 }, { 0x1F686, 0x1F686 }, { 0x1F687, 0x1F687 },
-
412  { 0x1F688, 0x1F688 }, { 0x1F689, 0x1F689 }, { 0x1F68A, 0x1F68B },
-
413  { 0x1F68C, 0x1F68C }, { 0x1F68D, 0x1F68D }, { 0x1F68E, 0x1F68E },
-
414  { 0x1F68F, 0x1F68F }, { 0x1F690, 0x1F690 }, { 0x1F691, 0x1F693 },
-
415  { 0x1F694, 0x1F694 }, { 0x1F695, 0x1F695 }, { 0x1F696, 0x1F696 },
-
416  { 0x1F697, 0x1F697 }, { 0x1F698, 0x1F698 }, { 0x1F699, 0x1F69A },
-
417  { 0x1F69B, 0x1F6A1 }, { 0x1F6A2, 0x1F6A2 }, { 0x1F6A3, 0x1F6A3 },
-
418  { 0x1F6A4, 0x1F6A5 }, { 0x1F6A6, 0x1F6A6 }, { 0x1F6A7, 0x1F6AD },
-
419  { 0x1F6AE, 0x1F6B1 }, { 0x1F6B2, 0x1F6B2 }, { 0x1F6B3, 0x1F6B5 },
-
420  { 0x1F6B6, 0x1F6B6 }, { 0x1F6B7, 0x1F6B8 }, { 0x1F6B9, 0x1F6BE },
-
421  { 0x1F6BF, 0x1F6BF }, { 0x1F6C0, 0x1F6C0 }, { 0x1F6C1, 0x1F6C5 },
-
422  { 0x1F6C6, 0x1F6CA }, { 0x1F6CB, 0x1F6CB }, { 0x1F6CC, 0x1F6CC },
-
423  { 0x1F6CD, 0x1F6CF }, { 0x1F6D0, 0x1F6D0 }, { 0x1F6D1, 0x1F6D2 },
-
424  { 0x1F6D3, 0x1F6D4 }, { 0x1F6D5, 0x1F6D5 }, { 0x1F6D6, 0x1F6D7 },
-
425  { 0x1F6D8, 0x1F6DB }, { 0x1F6DC, 0x1F6DC }, { 0x1F6DD, 0x1F6DF },
-
426  { 0x1F6E0, 0x1F6E5 }, { 0x1F6E6, 0x1F6E8 }, { 0x1F6E9, 0x1F6E9 },
-
427  { 0x1F6EA, 0x1F6EA }, { 0x1F6EB, 0x1F6EC }, { 0x1F6ED, 0x1F6EF },
-
428  { 0x1F6F0, 0x1F6F0 }, { 0x1F6F1, 0x1F6F2 }, { 0x1F6F3, 0x1F6F3 },
-
429  { 0x1F6F4, 0x1F6F6 }, { 0x1F6F7, 0x1F6F8 }, { 0x1F6F9, 0x1F6F9 },
-
430  { 0x1F6FA, 0x1F6FA }, { 0x1F6FB, 0x1F6FC }, { 0x1F6FD, 0x1F6FF },
-
431  { 0x1F774, 0x1F77F }, { 0x1F7D5, 0x1F7DF }, { 0x1F7E0, 0x1F7EB },
-
432  { 0x1F7EC, 0x1F7EF }, { 0x1F7F0, 0x1F7F0 }, { 0x1F7F1, 0x1F7FF },
-
433  { 0x1F80C, 0x1F80F }, { 0x1F848, 0x1F84F }, { 0x1F85A, 0x1F85F },
-
434  { 0x1F888, 0x1F88F }, { 0x1F8AE, 0x1F8FF }, { 0x1F90C, 0x1F90C },
-
435  { 0x1F90D, 0x1F90F }, { 0x1F910, 0x1F918 }, { 0x1F919, 0x1F91E },
-
436  { 0x1F91F, 0x1F91F }, { 0x1F920, 0x1F927 }, { 0x1F928, 0x1F92F },
-
437  { 0x1F930, 0x1F930 }, { 0x1F931, 0x1F932 }, { 0x1F933, 0x1F93A },
-
438  { 0x1F93C, 0x1F93E }, { 0x1F93F, 0x1F93F }, { 0x1F940, 0x1F945 },
-
439  { 0x1F947, 0x1F94B }, { 0x1F94C, 0x1F94C }, { 0x1F94D, 0x1F94F },
-
440  { 0x1F950, 0x1F95E }, { 0x1F95F, 0x1F96B }, { 0x1F96C, 0x1F970 },
-
441  { 0x1F971, 0x1F971 }, { 0x1F972, 0x1F972 }, { 0x1F973, 0x1F976 },
-
442  { 0x1F977, 0x1F978 }, { 0x1F979, 0x1F979 }, { 0x1F97A, 0x1F97A },
-
443  { 0x1F97B, 0x1F97B }, { 0x1F97C, 0x1F97F }, { 0x1F980, 0x1F984 },
-
444  { 0x1F985, 0x1F991 }, { 0x1F992, 0x1F997 }, { 0x1F998, 0x1F9A2 },
-
445  { 0x1F9A3, 0x1F9A4 }, { 0x1F9A5, 0x1F9AA }, { 0x1F9AB, 0x1F9AD },
-
446  { 0x1F9AE, 0x1F9AF }, { 0x1F9B0, 0x1F9B9 }, { 0x1F9BA, 0x1F9BF },
-
447  { 0x1F9C0, 0x1F9C0 }, { 0x1F9C1, 0x1F9C2 }, { 0x1F9C3, 0x1F9CA },
-
448  { 0x1F9CB, 0x1F9CB }, { 0x1F9CC, 0x1F9CC }, { 0x1F9CD, 0x1F9CF },
-
449  { 0x1F9D0, 0x1F9E6 }, { 0x1F9E7, 0x1F9FF }, { 0x1FA00, 0x1FA6F },
-
450  { 0x1FA70, 0x1FA73 }, { 0x1FA74, 0x1FA74 }, { 0x1FA75, 0x1FA77 },
-
451  { 0x1FA78, 0x1FA7A }, { 0x1FA7B, 0x1FA7C }, { 0x1FA7D, 0x1FA7F },
-
452  { 0x1FA80, 0x1FA82 }, { 0x1FA83, 0x1FA86 }, { 0x1FA87, 0x1FA88 },
-
453  { 0x1FA89, 0x1FA8F }, { 0x1FA90, 0x1FA95 }, { 0x1FA96, 0x1FAA8 },
-
454  { 0x1FAA9, 0x1FAAC }, { 0x1FAAD, 0x1FAAF }, { 0x1FAB0, 0x1FAB6 },
-
455  { 0x1FAB7, 0x1FABA }, { 0x1FABB, 0x1FABD }, { 0x1FABE, 0x1FABE },
-
456  { 0x1FABF, 0x1FABF }, { 0x1FAC0, 0x1FAC2 }, { 0x1FAC3, 0x1FAC5 },
-
457  { 0x1FAC6, 0x1FACD }, { 0x1FACE, 0x1FACF }, { 0x1FAD0, 0x1FAD6 },
-
458  { 0x1FAD7, 0x1FAD9 }, { 0x1FADA, 0x1FADB }, { 0x1FADC, 0x1FADF },
-
459  { 0x1FAE0, 0x1FAE7 }, { 0x1FAE8, 0x1FAE8 }, { 0x1FAE9, 0x1FAEF },
-
460  { 0x1FAF0, 0x1FAF6 }, { 0x1FAF7, 0x1FAF8 }, { 0x1FAF9, 0x1FAFF },
-
461  { 0x1FC00, 0x1FFFD },
-
462  }};
-
463 
-
464  return utils::table_lookup(emoji_table, c);
-
465  }
-
466 }
+Go to the documentation of this file.
1/*
+
2 * Copyright (c) 2018-2024, peelo.net
+
3 * All rights reserved.
+
4 *
+
5 * Redistribution and use in source and binary forms, with or without
+
6 * modification, are permitted provided that the following conditions are met:
+
7 *
+
8 * * Redistributions of source code must retain the above copyright notice,
+
9 * this list of conditions and the following disclaimer.
+
10 *
+
11 * * Redistributions in binary form must reproduce the above copyright notice,
+
12 * this list of conditions and the following disclaimer in the documentation
+
13 * and/or other materials provided with the distribution.
+
14 *
+
15 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+
16 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+
17 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+
18 * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
+
19 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+
20 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+
21 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+
22 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+
23 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+
24 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+
25 * POSSIBILITY OF SUCH DAMAGE.
+
26 */
+
27#pragma once
+
28
+ +
30
+ +
32{
+
36 static inline bool
+
37 isemoji(char32_t c)
+
38 {
+
39 // https://unicode.org/Public/15.1.0/ucd/emoji/emoji-data.txt
+
40 static const std::array<utils::range, 1258> emoji_table =
+
41 {{
+
42 { 0x0023, 0x0023 }, { 0x002A, 0x002A }, { 0x0030, 0x0039 },
+
43 { 0x00A9, 0x00A9 }, { 0x00AE, 0x00AE }, { 0x203C, 0x203C },
+
44 { 0x2049, 0x2049 }, { 0x2122, 0x2122 }, { 0x2139, 0x2139 },
+
45 { 0x2194, 0x2199 }, { 0x21A9, 0x21AA }, { 0x231A, 0x231B },
+
46 { 0x2328, 0x2328 }, { 0x23CF, 0x23CF }, { 0x23E9, 0x23EC },
+
47 { 0x23ED, 0x23EE }, { 0x23EF, 0x23EF }, { 0x23F0, 0x23F0 },
+
48 { 0x23F1, 0x23F2 }, { 0x23F3, 0x23F3 }, { 0x23F8, 0x23FA },
+
49 { 0x24C2, 0x24C2 }, { 0x25AA, 0x25AB }, { 0x25B6, 0x25B6 },
+
50 { 0x25C0, 0x25C0 }, { 0x25FB, 0x25FE }, { 0x2600, 0x2601 },
+
51 { 0x2602, 0x2603 }, { 0x2604, 0x2604 }, { 0x260E, 0x260E },
+
52 { 0x2611, 0x2611 }, { 0x2614, 0x2615 }, { 0x2618, 0x2618 },
+
53 { 0x261D, 0x261D }, { 0x2620, 0x2620 }, { 0x2622, 0x2623 },
+
54 { 0x2626, 0x2626 }, { 0x262A, 0x262A }, { 0x262E, 0x262E },
+
55 { 0x262F, 0x262F }, { 0x2638, 0x2639 }, { 0x263A, 0x263A },
+
56 { 0x2640, 0x2640 }, { 0x2642, 0x2642 }, { 0x2648, 0x2653 },
+
57 { 0x265F, 0x265F }, { 0x2660, 0x2660 }, { 0x2663, 0x2663 },
+
58 { 0x2665, 0x2666 }, { 0x2668, 0x2668 }, { 0x267B, 0x267B },
+
59 { 0x267E, 0x267E }, { 0x267F, 0x267F }, { 0x2692, 0x2692 },
+
60 { 0x2693, 0x2693 }, { 0x2694, 0x2694 }, { 0x2695, 0x2695 },
+
61 { 0x2696, 0x2697 }, { 0x2699, 0x2699 }, { 0x269B, 0x269C },
+
62 { 0x26A0, 0x26A1 }, { 0x26A7, 0x26A7 }, { 0x26AA, 0x26AB },
+
63 { 0x26B0, 0x26B1 }, { 0x26BD, 0x26BE }, { 0x26C4, 0x26C5 },
+
64 { 0x26C8, 0x26C8 }, { 0x26CE, 0x26CE }, { 0x26CF, 0x26CF },
+
65 { 0x26D1, 0x26D1 }, { 0x26D3, 0x26D3 }, { 0x26D4, 0x26D4 },
+
66 { 0x26E9, 0x26E9 }, { 0x26EA, 0x26EA }, { 0x26F0, 0x26F1 },
+
67 { 0x26F2, 0x26F3 }, { 0x26F4, 0x26F4 }, { 0x26F5, 0x26F5 },
+
68 { 0x26F7, 0x26F9 }, { 0x26FA, 0x26FA }, { 0x26FD, 0x26FD },
+
69 { 0x2702, 0x2702 }, { 0x2705, 0x2705 }, { 0x2708, 0x270C },
+
70 { 0x270D, 0x270D }, { 0x270F, 0x270F }, { 0x2712, 0x2712 },
+
71 { 0x2714, 0x2714 }, { 0x2716, 0x2716 }, { 0x271D, 0x271D },
+
72 { 0x2721, 0x2721 }, { 0x2728, 0x2728 }, { 0x2733, 0x2734 },
+
73 { 0x2744, 0x2744 }, { 0x2747, 0x2747 }, { 0x274C, 0x274C },
+
74 { 0x274E, 0x274E }, { 0x2753, 0x2755 }, { 0x2757, 0x2757 },
+
75 { 0x2763, 0x2763 }, { 0x2764, 0x2764 }, { 0x2795, 0x2797 },
+
76 { 0x27A1, 0x27A1 }, { 0x27B0, 0x27B0 }, { 0x27BF, 0x27BF },
+
77 { 0x2934, 0x2935 }, { 0x2B05, 0x2B07 }, { 0x2B1B, 0x2B1C },
+
78 { 0x2B50, 0x2B50 }, { 0x2B55, 0x2B55 }, { 0x3030, 0x3030 },
+
79 { 0x303D, 0x303D }, { 0x3297, 0x3297 }, { 0x3299, 0x3299 },
+
80 { 0x1F004, 0x1F004 }, { 0x1F0CF, 0x1F0CF }, { 0x1F170, 0x1F171 },
+
81 { 0x1F17E, 0x1F17F }, { 0x1F18E, 0x1F18E }, { 0x1F191, 0x1F19A },
+
82 { 0x1F1E6, 0x1F1FF }, { 0x1F201, 0x1F202 }, { 0x1F21A, 0x1F21A },
+
83 { 0x1F22F, 0x1F22F }, { 0x1F232, 0x1F23A }, { 0x1F250, 0x1F251 },
+
84 { 0x1F300, 0x1F30C }, { 0x1F30D, 0x1F30E }, { 0x1F30F, 0x1F30F },
+
85 { 0x1F310, 0x1F310 }, { 0x1F311, 0x1F311 }, { 0x1F312, 0x1F312 },
+
86 { 0x1F313, 0x1F315 }, { 0x1F316, 0x1F318 }, { 0x1F319, 0x1F319 },
+
87 { 0x1F31A, 0x1F31A }, { 0x1F31B, 0x1F31B }, { 0x1F31C, 0x1F31C },
+
88 { 0x1F31D, 0x1F31E }, { 0x1F31F, 0x1F320 }, { 0x1F321, 0x1F321 },
+
89 { 0x1F324, 0x1F32C }, { 0x1F32D, 0x1F32F }, { 0x1F330, 0x1F331 },
+
90 { 0x1F332, 0x1F333 }, { 0x1F334, 0x1F335 }, { 0x1F336, 0x1F336 },
+
91 { 0x1F337, 0x1F34A }, { 0x1F34B, 0x1F34B }, { 0x1F34C, 0x1F34F },
+
92 { 0x1F350, 0x1F350 }, { 0x1F351, 0x1F37B }, { 0x1F37C, 0x1F37C },
+
93 { 0x1F37D, 0x1F37D }, { 0x1F37E, 0x1F37F }, { 0x1F380, 0x1F393 },
+
94 { 0x1F396, 0x1F397 }, { 0x1F399, 0x1F39B }, { 0x1F39E, 0x1F39F },
+
95 { 0x1F3A0, 0x1F3C4 }, { 0x1F3C5, 0x1F3C5 }, { 0x1F3C6, 0x1F3C6 },
+
96 { 0x1F3C7, 0x1F3C7 }, { 0x1F3C8, 0x1F3C8 }, { 0x1F3C9, 0x1F3C9 },
+
97 { 0x1F3CA, 0x1F3CA }, { 0x1F3CB, 0x1F3CE }, { 0x1F3CF, 0x1F3D3 },
+
98 { 0x1F3D4, 0x1F3DF }, { 0x1F3E0, 0x1F3E3 }, { 0x1F3E4, 0x1F3E4 },
+
99 { 0x1F3E5, 0x1F3F0 }, { 0x1F3F3, 0x1F3F3 }, { 0x1F3F4, 0x1F3F4 },
+
100 { 0x1F3F5, 0x1F3F5 }, { 0x1F3F7, 0x1F3F7 }, { 0x1F3F8, 0x1F407 },
+
101 { 0x1F408, 0x1F408 }, { 0x1F409, 0x1F40B }, { 0x1F40C, 0x1F40E },
+
102 { 0x1F40F, 0x1F410 }, { 0x1F411, 0x1F412 }, { 0x1F413, 0x1F413 },
+
103 { 0x1F414, 0x1F414 }, { 0x1F415, 0x1F415 }, { 0x1F416, 0x1F416 },
+
104 { 0x1F417, 0x1F429 }, { 0x1F42A, 0x1F42A }, { 0x1F42B, 0x1F43E },
+
105 { 0x1F43F, 0x1F43F }, { 0x1F440, 0x1F440 }, { 0x1F441, 0x1F441 },
+
106 { 0x1F442, 0x1F464 }, { 0x1F465, 0x1F465 }, { 0x1F466, 0x1F46B },
+
107 { 0x1F46C, 0x1F46D }, { 0x1F46E, 0x1F4AC }, { 0x1F4AD, 0x1F4AD },
+
108 { 0x1F4AE, 0x1F4B5 }, { 0x1F4B6, 0x1F4B7 }, { 0x1F4B8, 0x1F4EB },
+
109 { 0x1F4EC, 0x1F4ED }, { 0x1F4EE, 0x1F4EE }, { 0x1F4EF, 0x1F4EF },
+
110 { 0x1F4F0, 0x1F4F4 }, { 0x1F4F5, 0x1F4F5 }, { 0x1F4F6, 0x1F4F7 },
+
111 { 0x1F4F8, 0x1F4F8 }, { 0x1F4F9, 0x1F4FC }, { 0x1F4FD, 0x1F4FD },
+
112 { 0x1F4FF, 0x1F502 }, { 0x1F503, 0x1F503 }, { 0x1F504, 0x1F507 },
+
113 { 0x1F508, 0x1F508 }, { 0x1F509, 0x1F509 }, { 0x1F50A, 0x1F514 },
+
114 { 0x1F515, 0x1F515 }, { 0x1F516, 0x1F52B }, { 0x1F52C, 0x1F52D },
+
115 { 0x1F52E, 0x1F53D }, { 0x1F549, 0x1F54A }, { 0x1F54B, 0x1F54E },
+
116 { 0x1F550, 0x1F55B }, { 0x1F55C, 0x1F567 }, { 0x1F56F, 0x1F570 },
+
117 { 0x1F573, 0x1F579 }, { 0x1F57A, 0x1F57A }, { 0x1F587, 0x1F587 },
+
118 { 0x1F58A, 0x1F58D }, { 0x1F590, 0x1F590 }, { 0x1F595, 0x1F596 },
+
119 { 0x1F5A4, 0x1F5A4 }, { 0x1F5A5, 0x1F5A5 }, { 0x1F5A8, 0x1F5A8 },
+
120 { 0x1F5B1, 0x1F5B2 }, { 0x1F5BC, 0x1F5BC }, { 0x1F5C2, 0x1F5C4 },
+
121 { 0x1F5D1, 0x1F5D3 }, { 0x1F5DC, 0x1F5DE }, { 0x1F5E1, 0x1F5E1 },
+
122 { 0x1F5E3, 0x1F5E3 }, { 0x1F5E8, 0x1F5E8 }, { 0x1F5EF, 0x1F5EF },
+
123 { 0x1F5F3, 0x1F5F3 }, { 0x1F5FA, 0x1F5FA }, { 0x1F5FB, 0x1F5FF },
+
124 { 0x1F600, 0x1F600 }, { 0x1F601, 0x1F606 }, { 0x1F607, 0x1F608 },
+
125 { 0x1F609, 0x1F60D }, { 0x1F60E, 0x1F60E }, { 0x1F60F, 0x1F60F },
+
126 { 0x1F610, 0x1F610 }, { 0x1F611, 0x1F611 }, { 0x1F612, 0x1F614 },
+
127 { 0x1F615, 0x1F615 }, { 0x1F616, 0x1F616 }, { 0x1F617, 0x1F617 },
+
128 { 0x1F618, 0x1F618 }, { 0x1F619, 0x1F619 }, { 0x1F61A, 0x1F61A },
+
129 { 0x1F61B, 0x1F61B }, { 0x1F61C, 0x1F61E }, { 0x1F61F, 0x1F61F },
+
130 { 0x1F620, 0x1F625 }, { 0x1F626, 0x1F627 }, { 0x1F628, 0x1F62B },
+
131 { 0x1F62C, 0x1F62C }, { 0x1F62D, 0x1F62D }, { 0x1F62E, 0x1F62F },
+
132 { 0x1F630, 0x1F633 }, { 0x1F634, 0x1F634 }, { 0x1F635, 0x1F635 },
+
133 { 0x1F636, 0x1F636 }, { 0x1F637, 0x1F640 }, { 0x1F641, 0x1F644 },
+
134 { 0x1F645, 0x1F64F }, { 0x1F680, 0x1F680 }, { 0x1F681, 0x1F682 },
+
135 { 0x1F683, 0x1F685 }, { 0x1F686, 0x1F686 }, { 0x1F687, 0x1F687 },
+
136 { 0x1F688, 0x1F688 }, { 0x1F689, 0x1F689 }, { 0x1F68A, 0x1F68B },
+
137 { 0x1F68C, 0x1F68C }, { 0x1F68D, 0x1F68D }, { 0x1F68E, 0x1F68E },
+
138 { 0x1F68F, 0x1F68F }, { 0x1F690, 0x1F690 }, { 0x1F691, 0x1F693 },
+
139 { 0x1F694, 0x1F694 }, { 0x1F695, 0x1F695 }, { 0x1F696, 0x1F696 },
+
140 { 0x1F697, 0x1F697 }, { 0x1F698, 0x1F698 }, { 0x1F699, 0x1F69A },
+
141 { 0x1F69B, 0x1F6A1 }, { 0x1F6A2, 0x1F6A2 }, { 0x1F6A3, 0x1F6A3 },
+
142 { 0x1F6A4, 0x1F6A5 }, { 0x1F6A6, 0x1F6A6 }, { 0x1F6A7, 0x1F6AD },
+
143 { 0x1F6AE, 0x1F6B1 }, { 0x1F6B2, 0x1F6B2 }, { 0x1F6B3, 0x1F6B5 },
+
144 { 0x1F6B6, 0x1F6B6 }, { 0x1F6B7, 0x1F6B8 }, { 0x1F6B9, 0x1F6BE },
+
145 { 0x1F6BF, 0x1F6BF }, { 0x1F6C0, 0x1F6C0 }, { 0x1F6C1, 0x1F6C5 },
+
146 { 0x1F6CB, 0x1F6CB }, { 0x1F6CC, 0x1F6CC }, { 0x1F6CD, 0x1F6CF },
+
147 { 0x1F6D0, 0x1F6D0 }, { 0x1F6D1, 0x1F6D2 }, { 0x1F6D5, 0x1F6D5 },
+
148 { 0x1F6D6, 0x1F6D7 }, { 0x1F6DC, 0x1F6DC }, { 0x1F6DD, 0x1F6DF },
+
149 { 0x1F6E0, 0x1F6E5 }, { 0x1F6E9, 0x1F6E9 }, { 0x1F6EB, 0x1F6EC },
+
150 { 0x1F6F0, 0x1F6F0 }, { 0x1F6F3, 0x1F6F3 }, { 0x1F6F4, 0x1F6F6 },
+
151 { 0x1F6F7, 0x1F6F8 }, { 0x1F6F9, 0x1F6F9 }, { 0x1F6FA, 0x1F6FA },
+
152 { 0x1F6FB, 0x1F6FC }, { 0x1F7E0, 0x1F7EB }, { 0x1F7F0, 0x1F7F0 },
+
153 { 0x1F90C, 0x1F90C }, { 0x1F90D, 0x1F90F }, { 0x1F910, 0x1F918 },
+
154 { 0x1F919, 0x1F91E }, { 0x1F91F, 0x1F91F }, { 0x1F920, 0x1F927 },
+
155 { 0x1F928, 0x1F92F }, { 0x1F930, 0x1F930 }, { 0x1F931, 0x1F932 },
+
156 { 0x1F933, 0x1F93A }, { 0x1F93C, 0x1F93E }, { 0x1F93F, 0x1F93F },
+
157 { 0x1F940, 0x1F945 }, { 0x1F947, 0x1F94B }, { 0x1F94C, 0x1F94C },
+
158 { 0x1F94D, 0x1F94F }, { 0x1F950, 0x1F95E }, { 0x1F95F, 0x1F96B },
+
159 { 0x1F96C, 0x1F970 }, { 0x1F971, 0x1F971 }, { 0x1F972, 0x1F972 },
+
160 { 0x1F973, 0x1F976 }, { 0x1F977, 0x1F978 }, { 0x1F979, 0x1F979 },
+
161 { 0x1F97A, 0x1F97A }, { 0x1F97B, 0x1F97B }, { 0x1F97C, 0x1F97F },
+
162 { 0x1F980, 0x1F984 }, { 0x1F985, 0x1F991 }, { 0x1F992, 0x1F997 },
+
163 { 0x1F998, 0x1F9A2 }, { 0x1F9A3, 0x1F9A4 }, { 0x1F9A5, 0x1F9AA },
+
164 { 0x1F9AB, 0x1F9AD }, { 0x1F9AE, 0x1F9AF }, { 0x1F9B0, 0x1F9B9 },
+
165 { 0x1F9BA, 0x1F9BF }, { 0x1F9C0, 0x1F9C0 }, { 0x1F9C1, 0x1F9C2 },
+
166 { 0x1F9C3, 0x1F9CA }, { 0x1F9CB, 0x1F9CB }, { 0x1F9CC, 0x1F9CC },
+
167 { 0x1F9CD, 0x1F9CF }, { 0x1F9D0, 0x1F9E6 }, { 0x1F9E7, 0x1F9FF },
+
168 { 0x1FA70, 0x1FA73 }, { 0x1FA74, 0x1FA74 }, { 0x1FA75, 0x1FA77 },
+
169 { 0x1FA78, 0x1FA7A }, { 0x1FA7B, 0x1FA7C }, { 0x1FA80, 0x1FA82 },
+
170 { 0x1FA83, 0x1FA86 }, { 0x1FA87, 0x1FA88 }, { 0x1FA90, 0x1FA95 },
+
171 { 0x1FA96, 0x1FAA8 }, { 0x1FAA9, 0x1FAAC }, { 0x1FAAD, 0x1FAAF },
+
172 { 0x1FAB0, 0x1FAB6 }, { 0x1FAB7, 0x1FABA }, { 0x1FABB, 0x1FABD },
+
173 { 0x1FABF, 0x1FABF }, { 0x1FAC0, 0x1FAC2 }, { 0x1FAC3, 0x1FAC5 },
+
174 { 0x1FACE, 0x1FACF }, { 0x1FAD0, 0x1FAD6 }, { 0x1FAD7, 0x1FAD9 },
+
175 { 0x1FADA, 0x1FADB }, { 0x1FAE0, 0x1FAE7 }, { 0x1FAE8, 0x1FAE8 },
+
176 { 0x1FAF0, 0x1FAF6 }, { 0x1FAF7, 0x1FAF8 }, { 0x231A, 0x231B },
+
177 { 0x23E9, 0x23EC }, { 0x23F0, 0x23F0 }, { 0x23F3, 0x23F3 },
+
178 { 0x25FD, 0x25FE }, { 0x2614, 0x2615 }, { 0x2648, 0x2653 },
+
179 { 0x267F, 0x267F }, { 0x2693, 0x2693 }, { 0x26A1, 0x26A1 },
+
180 { 0x26AA, 0x26AB }, { 0x26BD, 0x26BE }, { 0x26C4, 0x26C5 },
+
181 { 0x26CE, 0x26CE }, { 0x26D4, 0x26D4 }, { 0x26EA, 0x26EA },
+
182 { 0x26F2, 0x26F3 }, { 0x26F5, 0x26F5 }, { 0x26FA, 0x26FA },
+
183 { 0x26FD, 0x26FD }, { 0x2705, 0x2705 }, { 0x270A, 0x270B },
+
184 { 0x2728, 0x2728 }, { 0x274C, 0x274C }, { 0x274E, 0x274E },
+
185 { 0x2753, 0x2755 }, { 0x2757, 0x2757 }, { 0x2795, 0x2797 },
+
186 { 0x27B0, 0x27B0 }, { 0x27BF, 0x27BF }, { 0x2B1B, 0x2B1C },
+
187 { 0x2B50, 0x2B50 }, { 0x2B55, 0x2B55 }, { 0x1F004, 0x1F004 },
+
188 { 0x1F0CF, 0x1F0CF }, { 0x1F18E, 0x1F18E }, { 0x1F191, 0x1F19A },
+
189 { 0x1F1E6, 0x1F1FF }, { 0x1F201, 0x1F201 }, { 0x1F21A, 0x1F21A },
+
190 { 0x1F22F, 0x1F22F }, { 0x1F232, 0x1F236 }, { 0x1F238, 0x1F23A },
+
191 { 0x1F250, 0x1F251 }, { 0x1F300, 0x1F30C }, { 0x1F30D, 0x1F30E },
+
192 { 0x1F30F, 0x1F30F }, { 0x1F310, 0x1F310 }, { 0x1F311, 0x1F311 },
+
193 { 0x1F312, 0x1F312 }, { 0x1F313, 0x1F315 }, { 0x1F316, 0x1F318 },
+
194 { 0x1F319, 0x1F319 }, { 0x1F31A, 0x1F31A }, { 0x1F31B, 0x1F31B },
+
195 { 0x1F31C, 0x1F31C }, { 0x1F31D, 0x1F31E }, { 0x1F31F, 0x1F320 },
+
196 { 0x1F32D, 0x1F32F }, { 0x1F330, 0x1F331 }, { 0x1F332, 0x1F333 },
+
197 { 0x1F334, 0x1F335 }, { 0x1F337, 0x1F34A }, { 0x1F34B, 0x1F34B },
+
198 { 0x1F34C, 0x1F34F }, { 0x1F350, 0x1F350 }, { 0x1F351, 0x1F37B },
+
199 { 0x1F37C, 0x1F37C }, { 0x1F37E, 0x1F37F }, { 0x1F380, 0x1F393 },
+
200 { 0x1F3A0, 0x1F3C4 }, { 0x1F3C5, 0x1F3C5 }, { 0x1F3C6, 0x1F3C6 },
+
201 { 0x1F3C7, 0x1F3C7 }, { 0x1F3C8, 0x1F3C8 }, { 0x1F3C9, 0x1F3C9 },
+
202 { 0x1F3CA, 0x1F3CA }, { 0x1F3CF, 0x1F3D3 }, { 0x1F3E0, 0x1F3E3 },
+
203 { 0x1F3E4, 0x1F3E4 }, { 0x1F3E5, 0x1F3F0 }, { 0x1F3F4, 0x1F3F4 },
+
204 { 0x1F3F8, 0x1F407 }, { 0x1F408, 0x1F408 }, { 0x1F409, 0x1F40B },
+
205 { 0x1F40C, 0x1F40E }, { 0x1F40F, 0x1F410 }, { 0x1F411, 0x1F412 },
+
206 { 0x1F413, 0x1F413 }, { 0x1F414, 0x1F414 }, { 0x1F415, 0x1F415 },
+
207 { 0x1F416, 0x1F416 }, { 0x1F417, 0x1F429 }, { 0x1F42A, 0x1F42A },
+
208 { 0x1F42B, 0x1F43E }, { 0x1F440, 0x1F440 }, { 0x1F442, 0x1F464 },
+
209 { 0x1F465, 0x1F465 }, { 0x1F466, 0x1F46B }, { 0x1F46C, 0x1F46D },
+
210 { 0x1F46E, 0x1F4AC }, { 0x1F4AD, 0x1F4AD }, { 0x1F4AE, 0x1F4B5 },
+
211 { 0x1F4B6, 0x1F4B7 }, { 0x1F4B8, 0x1F4EB }, { 0x1F4EC, 0x1F4ED },
+
212 { 0x1F4EE, 0x1F4EE }, { 0x1F4EF, 0x1F4EF }, { 0x1F4F0, 0x1F4F4 },
+
213 { 0x1F4F5, 0x1F4F5 }, { 0x1F4F6, 0x1F4F7 }, { 0x1F4F8, 0x1F4F8 },
+
214 { 0x1F4F9, 0x1F4FC }, { 0x1F4FF, 0x1F502 }, { 0x1F503, 0x1F503 },
+
215 { 0x1F504, 0x1F507 }, { 0x1F508, 0x1F508 }, { 0x1F509, 0x1F509 },
+
216 { 0x1F50A, 0x1F514 }, { 0x1F515, 0x1F515 }, { 0x1F516, 0x1F52B },
+
217 { 0x1F52C, 0x1F52D }, { 0x1F52E, 0x1F53D }, { 0x1F54B, 0x1F54E },
+
218 { 0x1F550, 0x1F55B }, { 0x1F55C, 0x1F567 }, { 0x1F57A, 0x1F57A },
+
219 { 0x1F595, 0x1F596 }, { 0x1F5A4, 0x1F5A4 }, { 0x1F5FB, 0x1F5FF },
+
220 { 0x1F600, 0x1F600 }, { 0x1F601, 0x1F606 }, { 0x1F607, 0x1F608 },
+
221 { 0x1F609, 0x1F60D }, { 0x1F60E, 0x1F60E }, { 0x1F60F, 0x1F60F },
+
222 { 0x1F610, 0x1F610 }, { 0x1F611, 0x1F611 }, { 0x1F612, 0x1F614 },
+
223 { 0x1F615, 0x1F615 }, { 0x1F616, 0x1F616 }, { 0x1F617, 0x1F617 },
+
224 { 0x1F618, 0x1F618 }, { 0x1F619, 0x1F619 }, { 0x1F61A, 0x1F61A },
+
225 { 0x1F61B, 0x1F61B }, { 0x1F61C, 0x1F61E }, { 0x1F61F, 0x1F61F },
+
226 { 0x1F620, 0x1F625 }, { 0x1F626, 0x1F627 }, { 0x1F628, 0x1F62B },
+
227 { 0x1F62C, 0x1F62C }, { 0x1F62D, 0x1F62D }, { 0x1F62E, 0x1F62F },
+
228 { 0x1F630, 0x1F633 }, { 0x1F634, 0x1F634 }, { 0x1F635, 0x1F635 },
+
229 { 0x1F636, 0x1F636 }, { 0x1F637, 0x1F640 }, { 0x1F641, 0x1F644 },
+
230 { 0x1F645, 0x1F64F }, { 0x1F680, 0x1F680 }, { 0x1F681, 0x1F682 },
+
231 { 0x1F683, 0x1F685 }, { 0x1F686, 0x1F686 }, { 0x1F687, 0x1F687 },
+
232 { 0x1F688, 0x1F688 }, { 0x1F689, 0x1F689 }, { 0x1F68A, 0x1F68B },
+
233 { 0x1F68C, 0x1F68C }, { 0x1F68D, 0x1F68D }, { 0x1F68E, 0x1F68E },
+
234 { 0x1F68F, 0x1F68F }, { 0x1F690, 0x1F690 }, { 0x1F691, 0x1F693 },
+
235 { 0x1F694, 0x1F694 }, { 0x1F695, 0x1F695 }, { 0x1F696, 0x1F696 },
+
236 { 0x1F697, 0x1F697 }, { 0x1F698, 0x1F698 }, { 0x1F699, 0x1F69A },
+
237 { 0x1F69B, 0x1F6A1 }, { 0x1F6A2, 0x1F6A2 }, { 0x1F6A3, 0x1F6A3 },
+
238 { 0x1F6A4, 0x1F6A5 }, { 0x1F6A6, 0x1F6A6 }, { 0x1F6A7, 0x1F6AD },
+
239 { 0x1F6AE, 0x1F6B1 }, { 0x1F6B2, 0x1F6B2 }, { 0x1F6B3, 0x1F6B5 },
+
240 { 0x1F6B6, 0x1F6B6 }, { 0x1F6B7, 0x1F6B8 }, { 0x1F6B9, 0x1F6BE },
+
241 { 0x1F6BF, 0x1F6BF }, { 0x1F6C0, 0x1F6C0 }, { 0x1F6C1, 0x1F6C5 },
+
242 { 0x1F6CC, 0x1F6CC }, { 0x1F6D0, 0x1F6D0 }, { 0x1F6D1, 0x1F6D2 },
+
243 { 0x1F6D5, 0x1F6D5 }, { 0x1F6D6, 0x1F6D7 }, { 0x1F6DC, 0x1F6DC },
+
244 { 0x1F6DD, 0x1F6DF }, { 0x1F6EB, 0x1F6EC }, { 0x1F6F4, 0x1F6F6 },
+
245 { 0x1F6F7, 0x1F6F8 }, { 0x1F6F9, 0x1F6F9 }, { 0x1F6FA, 0x1F6FA },
+
246 { 0x1F6FB, 0x1F6FC }, { 0x1F7E0, 0x1F7EB }, { 0x1F7F0, 0x1F7F0 },
+
247 { 0x1F90C, 0x1F90C }, { 0x1F90D, 0x1F90F }, { 0x1F910, 0x1F918 },
+
248 { 0x1F919, 0x1F91E }, { 0x1F91F, 0x1F91F }, { 0x1F920, 0x1F927 },
+
249 { 0x1F928, 0x1F92F }, { 0x1F930, 0x1F930 }, { 0x1F931, 0x1F932 },
+
250 { 0x1F933, 0x1F93A }, { 0x1F93C, 0x1F93E }, { 0x1F93F, 0x1F93F },
+
251 { 0x1F940, 0x1F945 }, { 0x1F947, 0x1F94B }, { 0x1F94C, 0x1F94C },
+
252 { 0x1F94D, 0x1F94F }, { 0x1F950, 0x1F95E }, { 0x1F95F, 0x1F96B },
+
253 { 0x1F96C, 0x1F970 }, { 0x1F971, 0x1F971 }, { 0x1F972, 0x1F972 },
+
254 { 0x1F973, 0x1F976 }, { 0x1F977, 0x1F978 }, { 0x1F979, 0x1F979 },
+
255 { 0x1F97A, 0x1F97A }, { 0x1F97B, 0x1F97B }, { 0x1F97C, 0x1F97F },
+
256 { 0x1F980, 0x1F984 }, { 0x1F985, 0x1F991 }, { 0x1F992, 0x1F997 },
+
257 { 0x1F998, 0x1F9A2 }, { 0x1F9A3, 0x1F9A4 }, { 0x1F9A5, 0x1F9AA },
+
258 { 0x1F9AB, 0x1F9AD }, { 0x1F9AE, 0x1F9AF }, { 0x1F9B0, 0x1F9B9 },
+
259 { 0x1F9BA, 0x1F9BF }, { 0x1F9C0, 0x1F9C0 }, { 0x1F9C1, 0x1F9C2 },
+
260 { 0x1F9C3, 0x1F9CA }, { 0x1F9CB, 0x1F9CB }, { 0x1F9CC, 0x1F9CC },
+
261 { 0x1F9CD, 0x1F9CF }, { 0x1F9D0, 0x1F9E6 }, { 0x1F9E7, 0x1F9FF },
+
262 { 0x1FA70, 0x1FA73 }, { 0x1FA74, 0x1FA74 }, { 0x1FA75, 0x1FA77 },
+
263 { 0x1FA78, 0x1FA7A }, { 0x1FA7B, 0x1FA7C }, { 0x1FA80, 0x1FA82 },
+
264 { 0x1FA83, 0x1FA86 }, { 0x1FA87, 0x1FA88 }, { 0x1FA90, 0x1FA95 },
+
265 { 0x1FA96, 0x1FAA8 }, { 0x1FAA9, 0x1FAAC }, { 0x1FAAD, 0x1FAAF },
+
266 { 0x1FAB0, 0x1FAB6 }, { 0x1FAB7, 0x1FABA }, { 0x1FABB, 0x1FABD },
+
267 { 0x1FABF, 0x1FABF }, { 0x1FAC0, 0x1FAC2 }, { 0x1FAC3, 0x1FAC5 },
+
268 { 0x1FACE, 0x1FACF }, { 0x1FAD0, 0x1FAD6 }, { 0x1FAD7, 0x1FAD9 },
+
269 { 0x1FADA, 0x1FADB }, { 0x1FAE0, 0x1FAE7 }, { 0x1FAE8, 0x1FAE8 },
+
270 { 0x1FAF0, 0x1FAF6 }, { 0x1FAF7, 0x1FAF8 }, { 0x1F3FB, 0x1F3FF },
+
271 { 0x261D, 0x261D }, { 0x26F9, 0x26F9 }, { 0x270A, 0x270C },
+
272 { 0x270D, 0x270D }, { 0x1F385, 0x1F385 }, { 0x1F3C2, 0x1F3C4 },
+
273 { 0x1F3C7, 0x1F3C7 }, { 0x1F3CA, 0x1F3CA }, { 0x1F3CB, 0x1F3CC },
+
274 { 0x1F442, 0x1F443 }, { 0x1F446, 0x1F450 }, { 0x1F466, 0x1F46B },
+
275 { 0x1F46C, 0x1F46D }, { 0x1F46E, 0x1F478 }, { 0x1F47C, 0x1F47C },
+
276 { 0x1F481, 0x1F483 }, { 0x1F485, 0x1F487 }, { 0x1F48F, 0x1F48F },
+
277 { 0x1F491, 0x1F491 }, { 0x1F4AA, 0x1F4AA }, { 0x1F574, 0x1F575 },
+
278 { 0x1F57A, 0x1F57A }, { 0x1F590, 0x1F590 }, { 0x1F595, 0x1F596 },
+
279 { 0x1F645, 0x1F647 }, { 0x1F64B, 0x1F64F }, { 0x1F6A3, 0x1F6A3 },
+
280 { 0x1F6B4, 0x1F6B5 }, { 0x1F6B6, 0x1F6B6 }, { 0x1F6C0, 0x1F6C0 },
+
281 { 0x1F6CC, 0x1F6CC }, { 0x1F90C, 0x1F90C }, { 0x1F90F, 0x1F90F },
+
282 { 0x1F918, 0x1F918 }, { 0x1F919, 0x1F91E }, { 0x1F91F, 0x1F91F },
+
283 { 0x1F926, 0x1F926 }, { 0x1F930, 0x1F930 }, { 0x1F931, 0x1F932 },
+
284 { 0x1F933, 0x1F939 }, { 0x1F93C, 0x1F93E }, { 0x1F977, 0x1F977 },
+
285 { 0x1F9B5, 0x1F9B6 }, { 0x1F9B8, 0x1F9B9 }, { 0x1F9BB, 0x1F9BB },
+
286 { 0x1F9CD, 0x1F9CF }, { 0x1F9D1, 0x1F9DD }, { 0x1FAC3, 0x1FAC5 },
+
287 { 0x1FAF0, 0x1FAF6 }, { 0x1FAF7, 0x1FAF8 }, { 0x0023, 0x0023 },
+
288 { 0x002A, 0x002A }, { 0x0030, 0x0039 }, { 0x200D, 0x200D },
+
289 { 0x20E3, 0x20E3 }, { 0xFE0F, 0xFE0F }, { 0x1F1E6, 0x1F1FF },
+
290 { 0x1F3FB, 0x1F3FF }, { 0x1F9B0, 0x1F9B3 }, { 0xE0020, 0xE007F },
+
291 { 0x00A9, 0x00A9 }, { 0x00AE, 0x00AE }, { 0x203C, 0x203C },
+
292 { 0x2049, 0x2049 }, { 0x2122, 0x2122 }, { 0x2139, 0x2139 },
+
293 { 0x2194, 0x2199 }, { 0x21A9, 0x21AA }, { 0x231A, 0x231B },
+
294 { 0x2328, 0x2328 }, { 0x2388, 0x2388 }, { 0x23CF, 0x23CF },
+
295 { 0x23E9, 0x23EC }, { 0x23ED, 0x23EE }, { 0x23EF, 0x23EF },
+
296 { 0x23F0, 0x23F0 }, { 0x23F1, 0x23F2 }, { 0x23F3, 0x23F3 },
+
297 { 0x23F8, 0x23FA }, { 0x24C2, 0x24C2 }, { 0x25AA, 0x25AB },
+
298 { 0x25B6, 0x25B6 }, { 0x25C0, 0x25C0 }, { 0x25FB, 0x25FE },
+
299 { 0x2600, 0x2601 }, { 0x2602, 0x2603 }, { 0x2604, 0x2604 },
+
300 { 0x2605, 0x2605 }, { 0x2607, 0x260D }, { 0x260E, 0x260E },
+
301 { 0x260F, 0x2610 }, { 0x2611, 0x2611 }, { 0x2612, 0x2612 },
+
302 { 0x2614, 0x2615 }, { 0x2616, 0x2617 }, { 0x2618, 0x2618 },
+
303 { 0x2619, 0x261C }, { 0x261D, 0x261D }, { 0x261E, 0x261F },
+
304 { 0x2620, 0x2620 }, { 0x2621, 0x2621 }, { 0x2622, 0x2623 },
+
305 { 0x2624, 0x2625 }, { 0x2626, 0x2626 }, { 0x2627, 0x2629 },
+
306 { 0x262A, 0x262A }, { 0x262B, 0x262D }, { 0x262E, 0x262E },
+
307 { 0x262F, 0x262F }, { 0x2630, 0x2637 }, { 0x2638, 0x2639 },
+
308 { 0x263A, 0x263A }, { 0x263B, 0x263F }, { 0x2640, 0x2640 },
+
309 { 0x2641, 0x2641 }, { 0x2642, 0x2642 }, { 0x2643, 0x2647 },
+
310 { 0x2648, 0x2653 }, { 0x2654, 0x265E }, { 0x265F, 0x265F },
+
311 { 0x2660, 0x2660 }, { 0x2661, 0x2662 }, { 0x2663, 0x2663 },
+
312 { 0x2664, 0x2664 }, { 0x2665, 0x2666 }, { 0x2667, 0x2667 },
+
313 { 0x2668, 0x2668 }, { 0x2669, 0x267A }, { 0x267B, 0x267B },
+
314 { 0x267C, 0x267D }, { 0x267E, 0x267E }, { 0x267F, 0x267F },
+
315 { 0x2680, 0x2685 }, { 0x2690, 0x2691 }, { 0x2692, 0x2692 },
+
316 { 0x2693, 0x2693 }, { 0x2694, 0x2694 }, { 0x2695, 0x2695 },
+
317 { 0x2696, 0x2697 }, { 0x2698, 0x2698 }, { 0x2699, 0x2699 },
+
318 { 0x269A, 0x269A }, { 0x269B, 0x269C }, { 0x269D, 0x269F },
+
319 { 0x26A0, 0x26A1 }, { 0x26A2, 0x26A6 }, { 0x26A7, 0x26A7 },
+
320 { 0x26A8, 0x26A9 }, { 0x26AA, 0x26AB }, { 0x26AC, 0x26AF },
+
321 { 0x26B0, 0x26B1 }, { 0x26B2, 0x26BC }, { 0x26BD, 0x26BE },
+
322 { 0x26BF, 0x26C3 }, { 0x26C4, 0x26C5 }, { 0x26C6, 0x26C7 },
+
323 { 0x26C8, 0x26C8 }, { 0x26C9, 0x26CD }, { 0x26CE, 0x26CE },
+
324 { 0x26CF, 0x26CF }, { 0x26D0, 0x26D0 }, { 0x26D1, 0x26D1 },
+
325 { 0x26D2, 0x26D2 }, { 0x26D3, 0x26D3 }, { 0x26D4, 0x26D4 },
+
326 { 0x26D5, 0x26E8 }, { 0x26E9, 0x26E9 }, { 0x26EA, 0x26EA },
+
327 { 0x26EB, 0x26EF }, { 0x26F0, 0x26F1 }, { 0x26F2, 0x26F3 },
+
328 { 0x26F4, 0x26F4 }, { 0x26F5, 0x26F5 }, { 0x26F6, 0x26F6 },
+
329 { 0x26F7, 0x26F9 }, { 0x26FA, 0x26FA }, { 0x26FB, 0x26FC },
+
330 { 0x26FD, 0x26FD }, { 0x26FE, 0x2701 }, { 0x2702, 0x2702 },
+
331 { 0x2703, 0x2704 }, { 0x2705, 0x2705 }, { 0x2708, 0x270C },
+
332 { 0x270D, 0x270D }, { 0x270E, 0x270E }, { 0x270F, 0x270F },
+
333 { 0x2710, 0x2711 }, { 0x2712, 0x2712 }, { 0x2714, 0x2714 },
+
334 { 0x2716, 0x2716 }, { 0x271D, 0x271D }, { 0x2721, 0x2721 },
+
335 { 0x2728, 0x2728 }, { 0x2733, 0x2734 }, { 0x2744, 0x2744 },
+
336 { 0x2747, 0x2747 }, { 0x274C, 0x274C }, { 0x274E, 0x274E },
+
337 { 0x2753, 0x2755 }, { 0x2757, 0x2757 }, { 0x2763, 0x2763 },
+
338 { 0x2764, 0x2764 }, { 0x2765, 0x2767 }, { 0x2795, 0x2797 },
+
339 { 0x27A1, 0x27A1 }, { 0x27B0, 0x27B0 }, { 0x27BF, 0x27BF },
+
340 { 0x2934, 0x2935 }, { 0x2B05, 0x2B07 }, { 0x2B1B, 0x2B1C },
+
341 { 0x2B50, 0x2B50 }, { 0x2B55, 0x2B55 }, { 0x3030, 0x3030 },
+
342 { 0x303D, 0x303D }, { 0x3297, 0x3297 }, { 0x3299, 0x3299 },
+
343 { 0x1F000, 0x1F003 }, { 0x1F004, 0x1F004 }, { 0x1F005, 0x1F0CE },
+
344 { 0x1F0CF, 0x1F0CF }, { 0x1F0D0, 0x1F0FF }, { 0x1F10D, 0x1F10F },
+
345 { 0x1F12F, 0x1F12F }, { 0x1F16C, 0x1F16F }, { 0x1F170, 0x1F171 },
+
346 { 0x1F17E, 0x1F17F }, { 0x1F18E, 0x1F18E }, { 0x1F191, 0x1F19A },
+
347 { 0x1F1AD, 0x1F1E5 }, { 0x1F201, 0x1F202 }, { 0x1F203, 0x1F20F },
+
348 { 0x1F21A, 0x1F21A }, { 0x1F22F, 0x1F22F }, { 0x1F232, 0x1F23A },
+
349 { 0x1F23C, 0x1F23F }, { 0x1F249, 0x1F24F }, { 0x1F250, 0x1F251 },
+
350 { 0x1F252, 0x1F2FF }, { 0x1F300, 0x1F30C }, { 0x1F30D, 0x1F30E },
+
351 { 0x1F30F, 0x1F30F }, { 0x1F310, 0x1F310 }, { 0x1F311, 0x1F311 },
+
352 { 0x1F312, 0x1F312 }, { 0x1F313, 0x1F315 }, { 0x1F316, 0x1F318 },
+
353 { 0x1F319, 0x1F319 }, { 0x1F31A, 0x1F31A }, { 0x1F31B, 0x1F31B },
+
354 { 0x1F31C, 0x1F31C }, { 0x1F31D, 0x1F31E }, { 0x1F31F, 0x1F320 },
+
355 { 0x1F321, 0x1F321 }, { 0x1F322, 0x1F323 }, { 0x1F324, 0x1F32C },
+
356 { 0x1F32D, 0x1F32F }, { 0x1F330, 0x1F331 }, { 0x1F332, 0x1F333 },
+
357 { 0x1F334, 0x1F335 }, { 0x1F336, 0x1F336 }, { 0x1F337, 0x1F34A },
+
358 { 0x1F34B, 0x1F34B }, { 0x1F34C, 0x1F34F }, { 0x1F350, 0x1F350 },
+
359 { 0x1F351, 0x1F37B }, { 0x1F37C, 0x1F37C }, { 0x1F37D, 0x1F37D },
+
360 { 0x1F37E, 0x1F37F }, { 0x1F380, 0x1F393 }, { 0x1F394, 0x1F395 },
+
361 { 0x1F396, 0x1F397 }, { 0x1F398, 0x1F398 }, { 0x1F399, 0x1F39B },
+
362 { 0x1F39C, 0x1F39D }, { 0x1F39E, 0x1F39F }, { 0x1F3A0, 0x1F3C4 },
+
363 { 0x1F3C5, 0x1F3C5 }, { 0x1F3C6, 0x1F3C6 }, { 0x1F3C7, 0x1F3C7 },
+
364 { 0x1F3C8, 0x1F3C8 }, { 0x1F3C9, 0x1F3C9 }, { 0x1F3CA, 0x1F3CA },
+
365 { 0x1F3CB, 0x1F3CE }, { 0x1F3CF, 0x1F3D3 }, { 0x1F3D4, 0x1F3DF },
+
366 { 0x1F3E0, 0x1F3E3 }, { 0x1F3E4, 0x1F3E4 }, { 0x1F3E5, 0x1F3F0 },
+
367 { 0x1F3F1, 0x1F3F2 }, { 0x1F3F3, 0x1F3F3 }, { 0x1F3F4, 0x1F3F4 },
+
368 { 0x1F3F5, 0x1F3F5 }, { 0x1F3F6, 0x1F3F6 }, { 0x1F3F7, 0x1F3F7 },
+
369 { 0x1F3F8, 0x1F3FA }, { 0x1F400, 0x1F407 }, { 0x1F408, 0x1F408 },
+
370 { 0x1F409, 0x1F40B }, { 0x1F40C, 0x1F40E }, { 0x1F40F, 0x1F410 },
+
371 { 0x1F411, 0x1F412 }, { 0x1F413, 0x1F413 }, { 0x1F414, 0x1F414 },
+
372 { 0x1F415, 0x1F415 }, { 0x1F416, 0x1F416 }, { 0x1F417, 0x1F429 },
+
373 { 0x1F42A, 0x1F42A }, { 0x1F42B, 0x1F43E }, { 0x1F43F, 0x1F43F },
+
374 { 0x1F440, 0x1F440 }, { 0x1F441, 0x1F441 }, { 0x1F442, 0x1F464 },
+
375 { 0x1F465, 0x1F465 }, { 0x1F466, 0x1F46B }, { 0x1F46C, 0x1F46D },
+
376 { 0x1F46E, 0x1F4AC }, { 0x1F4AD, 0x1F4AD }, { 0x1F4AE, 0x1F4B5 },
+
377 { 0x1F4B6, 0x1F4B7 }, { 0x1F4B8, 0x1F4EB }, { 0x1F4EC, 0x1F4ED },
+
378 { 0x1F4EE, 0x1F4EE }, { 0x1F4EF, 0x1F4EF }, { 0x1F4F0, 0x1F4F4 },
+
379 { 0x1F4F5, 0x1F4F5 }, { 0x1F4F6, 0x1F4F7 }, { 0x1F4F8, 0x1F4F8 },
+
380 { 0x1F4F9, 0x1F4FC }, { 0x1F4FD, 0x1F4FD }, { 0x1F4FE, 0x1F4FE },
+
381 { 0x1F4FF, 0x1F502 }, { 0x1F503, 0x1F503 }, { 0x1F504, 0x1F507 },
+
382 { 0x1F508, 0x1F508 }, { 0x1F509, 0x1F509 }, { 0x1F50A, 0x1F514 },
+
383 { 0x1F515, 0x1F515 }, { 0x1F516, 0x1F52B }, { 0x1F52C, 0x1F52D },
+
384 { 0x1F52E, 0x1F53D }, { 0x1F546, 0x1F548 }, { 0x1F549, 0x1F54A },
+
385 { 0x1F54B, 0x1F54E }, { 0x1F54F, 0x1F54F }, { 0x1F550, 0x1F55B },
+
386 { 0x1F55C, 0x1F567 }, { 0x1F568, 0x1F56E }, { 0x1F56F, 0x1F570 },
+
387 { 0x1F571, 0x1F572 }, { 0x1F573, 0x1F579 }, { 0x1F57A, 0x1F57A },
+
388 { 0x1F57B, 0x1F586 }, { 0x1F587, 0x1F587 }, { 0x1F588, 0x1F589 },
+
389 { 0x1F58A, 0x1F58D }, { 0x1F58E, 0x1F58F }, { 0x1F590, 0x1F590 },
+
390 { 0x1F591, 0x1F594 }, { 0x1F595, 0x1F596 }, { 0x1F597, 0x1F5A3 },
+
391 { 0x1F5A4, 0x1F5A4 }, { 0x1F5A5, 0x1F5A5 }, { 0x1F5A6, 0x1F5A7 },
+
392 { 0x1F5A8, 0x1F5A8 }, { 0x1F5A9, 0x1F5B0 }, { 0x1F5B1, 0x1F5B2 },
+
393 { 0x1F5B3, 0x1F5BB }, { 0x1F5BC, 0x1F5BC }, { 0x1F5BD, 0x1F5C1 },
+
394 { 0x1F5C2, 0x1F5C4 }, { 0x1F5C5, 0x1F5D0 }, { 0x1F5D1, 0x1F5D3 },
+
395 { 0x1F5D4, 0x1F5DB }, { 0x1F5DC, 0x1F5DE }, { 0x1F5DF, 0x1F5E0 },
+
396 { 0x1F5E1, 0x1F5E1 }, { 0x1F5E2, 0x1F5E2 }, { 0x1F5E3, 0x1F5E3 },
+
397 { 0x1F5E4, 0x1F5E7 }, { 0x1F5E8, 0x1F5E8 }, { 0x1F5E9, 0x1F5EE },
+
398 { 0x1F5EF, 0x1F5EF }, { 0x1F5F0, 0x1F5F2 }, { 0x1F5F3, 0x1F5F3 },
+
399 { 0x1F5F4, 0x1F5F9 }, { 0x1F5FA, 0x1F5FA }, { 0x1F5FB, 0x1F5FF },
+
400 { 0x1F600, 0x1F600 }, { 0x1F601, 0x1F606 }, { 0x1F607, 0x1F608 },
+
401 { 0x1F609, 0x1F60D }, { 0x1F60E, 0x1F60E }, { 0x1F60F, 0x1F60F },
+
402 { 0x1F610, 0x1F610 }, { 0x1F611, 0x1F611 }, { 0x1F612, 0x1F614 },
+
403 { 0x1F615, 0x1F615 }, { 0x1F616, 0x1F616 }, { 0x1F617, 0x1F617 },
+
404 { 0x1F618, 0x1F618 }, { 0x1F619, 0x1F619 }, { 0x1F61A, 0x1F61A },
+
405 { 0x1F61B, 0x1F61B }, { 0x1F61C, 0x1F61E }, { 0x1F61F, 0x1F61F },
+
406 { 0x1F620, 0x1F625 }, { 0x1F626, 0x1F627 }, { 0x1F628, 0x1F62B },
+
407 { 0x1F62C, 0x1F62C }, { 0x1F62D, 0x1F62D }, { 0x1F62E, 0x1F62F },
+
408 { 0x1F630, 0x1F633 }, { 0x1F634, 0x1F634 }, { 0x1F635, 0x1F635 },
+
409 { 0x1F636, 0x1F636 }, { 0x1F637, 0x1F640 }, { 0x1F641, 0x1F644 },
+
410 { 0x1F645, 0x1F64F }, { 0x1F680, 0x1F680 }, { 0x1F681, 0x1F682 },
+
411 { 0x1F683, 0x1F685 }, { 0x1F686, 0x1F686 }, { 0x1F687, 0x1F687 },
+
412 { 0x1F688, 0x1F688 }, { 0x1F689, 0x1F689 }, { 0x1F68A, 0x1F68B },
+
413 { 0x1F68C, 0x1F68C }, { 0x1F68D, 0x1F68D }, { 0x1F68E, 0x1F68E },
+
414 { 0x1F68F, 0x1F68F }, { 0x1F690, 0x1F690 }, { 0x1F691, 0x1F693 },
+
415 { 0x1F694, 0x1F694 }, { 0x1F695, 0x1F695 }, { 0x1F696, 0x1F696 },
+
416 { 0x1F697, 0x1F697 }, { 0x1F698, 0x1F698 }, { 0x1F699, 0x1F69A },
+
417 { 0x1F69B, 0x1F6A1 }, { 0x1F6A2, 0x1F6A2 }, { 0x1F6A3, 0x1F6A3 },
+
418 { 0x1F6A4, 0x1F6A5 }, { 0x1F6A6, 0x1F6A6 }, { 0x1F6A7, 0x1F6AD },
+
419 { 0x1F6AE, 0x1F6B1 }, { 0x1F6B2, 0x1F6B2 }, { 0x1F6B3, 0x1F6B5 },
+
420 { 0x1F6B6, 0x1F6B6 }, { 0x1F6B7, 0x1F6B8 }, { 0x1F6B9, 0x1F6BE },
+
421 { 0x1F6BF, 0x1F6BF }, { 0x1F6C0, 0x1F6C0 }, { 0x1F6C1, 0x1F6C5 },
+
422 { 0x1F6C6, 0x1F6CA }, { 0x1F6CB, 0x1F6CB }, { 0x1F6CC, 0x1F6CC },
+
423 { 0x1F6CD, 0x1F6CF }, { 0x1F6D0, 0x1F6D0 }, { 0x1F6D1, 0x1F6D2 },
+
424 { 0x1F6D3, 0x1F6D4 }, { 0x1F6D5, 0x1F6D5 }, { 0x1F6D6, 0x1F6D7 },
+
425 { 0x1F6D8, 0x1F6DB }, { 0x1F6DC, 0x1F6DC }, { 0x1F6DD, 0x1F6DF },
+
426 { 0x1F6E0, 0x1F6E5 }, { 0x1F6E6, 0x1F6E8 }, { 0x1F6E9, 0x1F6E9 },
+
427 { 0x1F6EA, 0x1F6EA }, { 0x1F6EB, 0x1F6EC }, { 0x1F6ED, 0x1F6EF },
+
428 { 0x1F6F0, 0x1F6F0 }, { 0x1F6F1, 0x1F6F2 }, { 0x1F6F3, 0x1F6F3 },
+
429 { 0x1F6F4, 0x1F6F6 }, { 0x1F6F7, 0x1F6F8 }, { 0x1F6F9, 0x1F6F9 },
+
430 { 0x1F6FA, 0x1F6FA }, { 0x1F6FB, 0x1F6FC }, { 0x1F6FD, 0x1F6FF },
+
431 { 0x1F774, 0x1F77F }, { 0x1F7D5, 0x1F7DF }, { 0x1F7E0, 0x1F7EB },
+
432 { 0x1F7EC, 0x1F7EF }, { 0x1F7F0, 0x1F7F0 }, { 0x1F7F1, 0x1F7FF },
+
433 { 0x1F80C, 0x1F80F }, { 0x1F848, 0x1F84F }, { 0x1F85A, 0x1F85F },
+
434 { 0x1F888, 0x1F88F }, { 0x1F8AE, 0x1F8FF }, { 0x1F90C, 0x1F90C },
+
435 { 0x1F90D, 0x1F90F }, { 0x1F910, 0x1F918 }, { 0x1F919, 0x1F91E },
+
436 { 0x1F91F, 0x1F91F }, { 0x1F920, 0x1F927 }, { 0x1F928, 0x1F92F },
+
437 { 0x1F930, 0x1F930 }, { 0x1F931, 0x1F932 }, { 0x1F933, 0x1F93A },
+
438 { 0x1F93C, 0x1F93E }, { 0x1F93F, 0x1F93F }, { 0x1F940, 0x1F945 },
+
439 { 0x1F947, 0x1F94B }, { 0x1F94C, 0x1F94C }, { 0x1F94D, 0x1F94F },
+
440 { 0x1F950, 0x1F95E }, { 0x1F95F, 0x1F96B }, { 0x1F96C, 0x1F970 },
+
441 { 0x1F971, 0x1F971 }, { 0x1F972, 0x1F972 }, { 0x1F973, 0x1F976 },
+
442 { 0x1F977, 0x1F978 }, { 0x1F979, 0x1F979 }, { 0x1F97A, 0x1F97A },
+
443 { 0x1F97B, 0x1F97B }, { 0x1F97C, 0x1F97F }, { 0x1F980, 0x1F984 },
+
444 { 0x1F985, 0x1F991 }, { 0x1F992, 0x1F997 }, { 0x1F998, 0x1F9A2 },
+
445 { 0x1F9A3, 0x1F9A4 }, { 0x1F9A5, 0x1F9AA }, { 0x1F9AB, 0x1F9AD },
+
446 { 0x1F9AE, 0x1F9AF }, { 0x1F9B0, 0x1F9B9 }, { 0x1F9BA, 0x1F9BF },
+
447 { 0x1F9C0, 0x1F9C0 }, { 0x1F9C1, 0x1F9C2 }, { 0x1F9C3, 0x1F9CA },
+
448 { 0x1F9CB, 0x1F9CB }, { 0x1F9CC, 0x1F9CC }, { 0x1F9CD, 0x1F9CF },
+
449 { 0x1F9D0, 0x1F9E6 }, { 0x1F9E7, 0x1F9FF }, { 0x1FA00, 0x1FA6F },
+
450 { 0x1FA70, 0x1FA73 }, { 0x1FA74, 0x1FA74 }, { 0x1FA75, 0x1FA77 },
+
451 { 0x1FA78, 0x1FA7A }, { 0x1FA7B, 0x1FA7C }, { 0x1FA7D, 0x1FA7F },
+
452 { 0x1FA80, 0x1FA82 }, { 0x1FA83, 0x1FA86 }, { 0x1FA87, 0x1FA88 },
+
453 { 0x1FA89, 0x1FA8F }, { 0x1FA90, 0x1FA95 }, { 0x1FA96, 0x1FAA8 },
+
454 { 0x1FAA9, 0x1FAAC }, { 0x1FAAD, 0x1FAAF }, { 0x1FAB0, 0x1FAB6 },
+
455 { 0x1FAB7, 0x1FABA }, { 0x1FABB, 0x1FABD }, { 0x1FABE, 0x1FABE },
+
456 { 0x1FABF, 0x1FABF }, { 0x1FAC0, 0x1FAC2 }, { 0x1FAC3, 0x1FAC5 },
+
457 { 0x1FAC6, 0x1FACD }, { 0x1FACE, 0x1FACF }, { 0x1FAD0, 0x1FAD6 },
+
458 { 0x1FAD7, 0x1FAD9 }, { 0x1FADA, 0x1FADB }, { 0x1FADC, 0x1FADF },
+
459 { 0x1FAE0, 0x1FAE7 }, { 0x1FAE8, 0x1FAE8 }, { 0x1FAE9, 0x1FAEF },
+
460 { 0x1FAF0, 0x1FAF6 }, { 0x1FAF7, 0x1FAF8 }, { 0x1FAF9, 0x1FAFF },
+
461 { 0x1FC00, 0x1FFFD },
+
462 }};
+
463
+
464 return utils::table_lookup(emoji_table, c);
+
465 }
+
466}
Definition: _utils.hpp:34
diff --git a/isgraph_8hpp.html b/isgraph_8hpp.html index 6123ada..c084daa 100644 --- a/isgraph_8hpp.html +++ b/isgraph_8hpp.html @@ -2,8 +2,8 @@ - - + + peelo-unicode: include/peelo/unicode/ctype/isgraph.hpp File Reference @@ -16,8 +16,8 @@
- - + @@ -26,15 +26,16 @@
+
peelo-unicode
- + +/* @license-end */ +

Go to the source code of this file.

- - + - + - +

+

Namespaces

 peelo
namespace  peelo
 
 peelo::unicode
namespace  peelo::unicode
 
 peelo::unicode::ctype
namespace  peelo::unicode::ctype
 
- @@ -70,7 +70,7 @@ diff --git a/isgraph_8hpp_source.html b/isgraph_8hpp_source.html index a1dea2c..abec31a 100644 --- a/isgraph_8hpp_source.html +++ b/isgraph_8hpp_source.html @@ -2,8 +2,8 @@ - - + +peelo-unicode: include/peelo/unicode/ctype/isgraph.hpp Source File @@ -16,8 +16,8 @@

+

Functions

bool peelo::unicode::ctype::isgraph (char32_t c)
 
- - + @@ -26,15 +26,16 @@
+
peelo-unicode
- + +/* @license-end */ +
-
-
isgraph.hpp
+
isgraph.hpp
-Go to the documentation of this file.
1 /*
-
2  * Copyright (c) 2018-2024, peelo.net
-
3  * All rights reserved.
-
4  *
-
5  * Redistribution and use in source and binary forms, with or without
-
6  * modification, are permitted provided that the following conditions are met:
-
7  *
-
8  * * Redistributions of source code must retain the above copyright notice,
-
9  * this list of conditions and the following disclaimer.
-
10  *
-
11  * * Redistributions in binary form must reproduce the above copyright notice,
-
12  * this list of conditions and the following disclaimer in the documentation
-
13  * and/or other materials provided with the distribution.
-
14  *
-
15  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-
16  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-
17  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-
18  * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
-
19  * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-
20  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-
21  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-
22  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-
23  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-
24  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-
25  * POSSIBILITY OF SUCH DAMAGE.
-
26  */
-
27 #pragma once
-
28 
- -
30 
-
31 namespace peelo::unicode::ctype
-
32 {
-
37  inline bool
-
38  isgraph(char32_t c)
-
39  {
-
40  static const std::array<utils::range, 713> graph_table =
-
41  {{
-
42  { 0x0021, 0x007e, }, { 0x00a1, 0x0377, }, { 0x037a, 0x037f, },
-
43  { 0x0384, 0x038a, }, { 0x038c, 0x038c, }, { 0x038e, 0x03a1, },
-
44  { 0x03a3, 0x052f, }, { 0x0531, 0x0556, }, { 0x0559, 0x058a, },
-
45  { 0x058d, 0x058f, }, { 0x0591, 0x05c7, }, { 0x05d0, 0x05ea, },
-
46  { 0x05ef, 0x05f4, }, { 0x0600, 0x070d, }, { 0x070f, 0x074a, },
-
47  { 0x074d, 0x07b1, }, { 0x07c0, 0x07fa, }, { 0x07fd, 0x082d, },
-
48  { 0x0830, 0x083e, }, { 0x0840, 0x085b, }, { 0x085e, 0x085e, },
-
49  { 0x0860, 0x086a, }, { 0x0870, 0x088e, }, { 0x0890, 0x0891, },
-
50  { 0x0898, 0x0983, }, { 0x0985, 0x098c, }, { 0x098f, 0x0990, },
-
51  { 0x0993, 0x09a8, }, { 0x09aa, 0x09b0, }, { 0x09b2, 0x09b2, },
-
52  { 0x09b6, 0x09b9, }, { 0x09bc, 0x09c4, }, { 0x09c7, 0x09c8, },
-
53  { 0x09cb, 0x09ce, }, { 0x09d7, 0x09d7, }, { 0x09dc, 0x09dd, },
-
54  { 0x09df, 0x09e3, }, { 0x09e6, 0x09fe, }, { 0x0a01, 0x0a03, },
-
55  { 0x0a05, 0x0a0a, }, { 0x0a0f, 0x0a10, }, { 0x0a13, 0x0a28, },
-
56  { 0x0a2a, 0x0a30, }, { 0x0a32, 0x0a33, }, { 0x0a35, 0x0a36, },
-
57  { 0x0a38, 0x0a39, }, { 0x0a3c, 0x0a3c, }, { 0x0a3e, 0x0a42, },
-
58  { 0x0a47, 0x0a48, }, { 0x0a4b, 0x0a4d, }, { 0x0a51, 0x0a51, },
-
59  { 0x0a59, 0x0a5c, }, { 0x0a5e, 0x0a5e, }, { 0x0a66, 0x0a76, },
-
60  { 0x0a81, 0x0a83, }, { 0x0a85, 0x0a8d, }, { 0x0a8f, 0x0a91, },
-
61  { 0x0a93, 0x0aa8, }, { 0x0aaa, 0x0ab0, }, { 0x0ab2, 0x0ab3, },
-
62  { 0x0ab5, 0x0ab9, }, { 0x0abc, 0x0ac5, }, { 0x0ac7, 0x0ac9, },
-
63  { 0x0acb, 0x0acd, }, { 0x0ad0, 0x0ad0, }, { 0x0ae0, 0x0ae3, },
-
64  { 0x0ae6, 0x0af1, }, { 0x0af9, 0x0aff, }, { 0x0b01, 0x0b03, },
-
65  { 0x0b05, 0x0b0c, }, { 0x0b0f, 0x0b10, }, { 0x0b13, 0x0b28, },
-
66  { 0x0b2a, 0x0b30, }, { 0x0b32, 0x0b33, }, { 0x0b35, 0x0b39, },
-
67  { 0x0b3c, 0x0b44, }, { 0x0b47, 0x0b48, }, { 0x0b4b, 0x0b4d, },
-
68  { 0x0b55, 0x0b57, }, { 0x0b5c, 0x0b5d, }, { 0x0b5f, 0x0b63, },
-
69  { 0x0b66, 0x0b77, }, { 0x0b82, 0x0b83, }, { 0x0b85, 0x0b8a, },
-
70  { 0x0b8e, 0x0b90, }, { 0x0b92, 0x0b95, }, { 0x0b99, 0x0b9a, },
-
71  { 0x0b9c, 0x0b9c, }, { 0x0b9e, 0x0b9f, }, { 0x0ba3, 0x0ba4, },
-
72  { 0x0ba8, 0x0baa, }, { 0x0bae, 0x0bb9, }, { 0x0bbe, 0x0bc2, },
-
73  { 0x0bc6, 0x0bc8, }, { 0x0bca, 0x0bcd, }, { 0x0bd0, 0x0bd0, },
-
74  { 0x0bd7, 0x0bd7, }, { 0x0be6, 0x0bfa, }, { 0x0c00, 0x0c0c, },
-
75  { 0x0c0e, 0x0c10, }, { 0x0c12, 0x0c28, }, { 0x0c2a, 0x0c39, },
-
76  { 0x0c3c, 0x0c44, }, { 0x0c46, 0x0c48, }, { 0x0c4a, 0x0c4d, },
-
77  { 0x0c55, 0x0c56, }, { 0x0c58, 0x0c5a, }, { 0x0c5d, 0x0c5d, },
-
78  { 0x0c60, 0x0c63, }, { 0x0c66, 0x0c6f, }, { 0x0c77, 0x0c8c, },
-
79  { 0x0c8e, 0x0c90, }, { 0x0c92, 0x0ca8, }, { 0x0caa, 0x0cb3, },
-
80  { 0x0cb5, 0x0cb9, }, { 0x0cbc, 0x0cc4, }, { 0x0cc6, 0x0cc8, },
-
81  { 0x0cca, 0x0ccd, }, { 0x0cd5, 0x0cd6, }, { 0x0cdd, 0x0cde, },
-
82  { 0x0ce0, 0x0ce3, }, { 0x0ce6, 0x0cef, }, { 0x0cf1, 0x0cf3, },
-
83  { 0x0d00, 0x0d0c, }, { 0x0d0e, 0x0d10, }, { 0x0d12, 0x0d44, },
-
84  { 0x0d46, 0x0d48, }, { 0x0d4a, 0x0d4f, }, { 0x0d54, 0x0d63, },
-
85  { 0x0d66, 0x0d7f, }, { 0x0d81, 0x0d83, }, { 0x0d85, 0x0d96, },
-
86  { 0x0d9a, 0x0db1, }, { 0x0db3, 0x0dbb, }, { 0x0dbd, 0x0dbd, },
-
87  { 0x0dc0, 0x0dc6, }, { 0x0dca, 0x0dca, }, { 0x0dcf, 0x0dd4, },
-
88  { 0x0dd6, 0x0dd6, }, { 0x0dd8, 0x0ddf, }, { 0x0de6, 0x0def, },
-
89  { 0x0df2, 0x0df4, }, { 0x0e01, 0x0e3a, }, { 0x0e3f, 0x0e5b, },
-
90  { 0x0e81, 0x0e82, }, { 0x0e84, 0x0e84, }, { 0x0e86, 0x0e8a, },
-
91  { 0x0e8c, 0x0ea3, }, { 0x0ea5, 0x0ea5, }, { 0x0ea7, 0x0ebd, },
-
92  { 0x0ec0, 0x0ec4, }, { 0x0ec6, 0x0ec6, }, { 0x0ec8, 0x0ece, },
-
93  { 0x0ed0, 0x0ed9, }, { 0x0edc, 0x0edf, }, { 0x0f00, 0x0f47, },
-
94  { 0x0f49, 0x0f6c, }, { 0x0f71, 0x0f97, }, { 0x0f99, 0x0fbc, },
-
95  { 0x0fbe, 0x0fcc, }, { 0x0fce, 0x0fda, }, { 0x1000, 0x10c5, },
-
96  { 0x10c7, 0x10c7, }, { 0x10cd, 0x10cd, }, { 0x10d0, 0x1248, },
-
97  { 0x124a, 0x124d, }, { 0x1250, 0x1256, }, { 0x1258, 0x1258, },
-
98  { 0x125a, 0x125d, }, { 0x1260, 0x1288, }, { 0x128a, 0x128d, },
-
99  { 0x1290, 0x12b0, }, { 0x12b2, 0x12b5, }, { 0x12b8, 0x12be, },
-
100  { 0x12c0, 0x12c0, }, { 0x12c2, 0x12c5, }, { 0x12c8, 0x12d6, },
-
101  { 0x12d8, 0x1310, }, { 0x1312, 0x1315, }, { 0x1318, 0x135a, },
-
102  { 0x135d, 0x137c, }, { 0x1380, 0x1399, }, { 0x13a0, 0x13f5, },
-
103  { 0x13f8, 0x13fd, }, { 0x1400, 0x167f, }, { 0x1681, 0x169c, },
-
104  { 0x16a0, 0x16f8, }, { 0x1700, 0x1715, }, { 0x171f, 0x1736, },
-
105  { 0x1740, 0x1753, }, { 0x1760, 0x176c, }, { 0x176e, 0x1770, },
-
106  { 0x1772, 0x1773, }, { 0x1780, 0x17dd, }, { 0x17e0, 0x17e9, },
-
107  { 0x17f0, 0x17f9, }, { 0x1800, 0x1819, }, { 0x1820, 0x1878, },
-
108  { 0x1880, 0x18aa, }, { 0x18b0, 0x18f5, }, { 0x1900, 0x191e, },
-
109  { 0x1920, 0x192b, }, { 0x1930, 0x193b, }, { 0x1940, 0x1940, },
-
110  { 0x1944, 0x196d, }, { 0x1970, 0x1974, }, { 0x1980, 0x19ab, },
-
111  { 0x19b0, 0x19c9, }, { 0x19d0, 0x19da, }, { 0x19de, 0x1a1b, },
-
112  { 0x1a1e, 0x1a5e, }, { 0x1a60, 0x1a7c, }, { 0x1a7f, 0x1a89, },
-
113  { 0x1a90, 0x1a99, }, { 0x1aa0, 0x1aad, }, { 0x1ab0, 0x1ace, },
-
114  { 0x1b00, 0x1b4c, }, { 0x1b50, 0x1b7e, }, { 0x1b80, 0x1bf3, },
-
115  { 0x1bfc, 0x1c37, }, { 0x1c3b, 0x1c49, }, { 0x1c4d, 0x1c88, },
-
116  { 0x1c90, 0x1cba, }, { 0x1cbd, 0x1cc7, }, { 0x1cd0, 0x1cfa, },
-
117  { 0x1d00, 0x1f15, }, { 0x1f18, 0x1f1d, }, { 0x1f20, 0x1f45, },
-
118  { 0x1f48, 0x1f4d, }, { 0x1f50, 0x1f57, }, { 0x1f59, 0x1f59, },
-
119  { 0x1f5b, 0x1f5b, }, { 0x1f5d, 0x1f5d, }, { 0x1f5f, 0x1f7d, },
-
120  { 0x1f80, 0x1fb4, }, { 0x1fb6, 0x1fc4, }, { 0x1fc6, 0x1fd3, },
-
121  { 0x1fd6, 0x1fdb, }, { 0x1fdd, 0x1fef, }, { 0x1ff2, 0x1ff4, },
-
122  { 0x1ff6, 0x1ffe, }, { 0x200b, 0x2027, }, { 0x202a, 0x202e, },
-
123  { 0x2030, 0x205e, }, { 0x2060, 0x2064, }, { 0x2066, 0x2071, },
-
124  { 0x2074, 0x208e, }, { 0x2090, 0x209c, }, { 0x20a0, 0x20c0, },
-
125  { 0x20d0, 0x20f0, }, { 0x2100, 0x218b, }, { 0x2190, 0x2426, },
-
126  { 0x2440, 0x244a, }, { 0x2460, 0x2b73, }, { 0x2b76, 0x2b95, },
-
127  { 0x2b97, 0x2cf3, }, { 0x2cf9, 0x2d25, }, { 0x2d27, 0x2d27, },
-
128  { 0x2d2d, 0x2d2d, }, { 0x2d30, 0x2d67, }, { 0x2d6f, 0x2d70, },
-
129  { 0x2d7f, 0x2d96, }, { 0x2da0, 0x2da6, }, { 0x2da8, 0x2dae, },
-
130  { 0x2db0, 0x2db6, }, { 0x2db8, 0x2dbe, }, { 0x2dc0, 0x2dc6, },
-
131  { 0x2dc8, 0x2dce, }, { 0x2dd0, 0x2dd6, }, { 0x2dd8, 0x2dde, },
-
132  { 0x2de0, 0x2e5d, }, { 0x2e80, 0x2e99, }, { 0x2e9b, 0x2ef3, },
-
133  { 0x2f00, 0x2fd5, }, { 0x2ff0, 0x2fff, }, { 0x3001, 0x303f, },
-
134  { 0x3041, 0x3096, }, { 0x3099, 0x30ff, }, { 0x3105, 0x312f, },
-
135  { 0x3131, 0x318e, }, { 0x3190, 0x31e3, }, { 0x31ef, 0x321e, },
-
136  { 0x3220, 0xa48c, }, { 0xa490, 0xa4c6, }, { 0xa4d0, 0xa62b, },
-
137  { 0xa640, 0xa6f7, }, { 0xa700, 0xa7ca, }, { 0xa7d0, 0xa7d1, },
-
138  { 0xa7d3, 0xa7d3, }, { 0xa7d5, 0xa7d9, }, { 0xa7f2, 0xa82c, },
-
139  { 0xa830, 0xa839, }, { 0xa840, 0xa877, }, { 0xa880, 0xa8c5, },
-
140  { 0xa8ce, 0xa8d9, }, { 0xa8e0, 0xa953, }, { 0xa95f, 0xa97c, },
-
141  { 0xa980, 0xa9cd, }, { 0xa9cf, 0xa9d9, }, { 0xa9de, 0xa9fe, },
-
142  { 0xaa00, 0xaa36, }, { 0xaa40, 0xaa4d, }, { 0xaa50, 0xaa59, },
-
143  { 0xaa5c, 0xaac2, }, { 0xaadb, 0xaaf6, }, { 0xab01, 0xab06, },
-
144  { 0xab09, 0xab0e, }, { 0xab11, 0xab16, }, { 0xab20, 0xab26, },
-
145  { 0xab28, 0xab2e, }, { 0xab30, 0xab6b, }, { 0xab70, 0xabed, },
-
146  { 0xabf0, 0xabf9, }, { 0xac00, 0xd7a3, }, { 0xd7b0, 0xd7c6, },
-
147  { 0xd7cb, 0xd7fb, }, { 0xe000, 0xfa6d, }, { 0xfa70, 0xfad9, },
-
148  { 0xfb00, 0xfb06, }, { 0xfb13, 0xfb17, }, { 0xfb1d, 0xfb36, },
-
149  { 0xfb38, 0xfb3c, }, { 0xfb3e, 0xfb3e, }, { 0xfb40, 0xfb41, },
-
150  { 0xfb43, 0xfb44, }, { 0xfb46, 0xfbc2, }, { 0xfbd3, 0xfd8f, },
-
151  { 0xfd92, 0xfdc7, }, { 0xfdcf, 0xfdcf, }, { 0xfdf0, 0xfe19, },
-
152  { 0xfe20, 0xfe52, }, { 0xfe54, 0xfe66, }, { 0xfe68, 0xfe6b, },
-
153  { 0xfe70, 0xfe74, }, { 0xfe76, 0xfefc, }, { 0xfeff, 0xfeff, },
-
154  { 0xff01, 0xffbe, }, { 0xffc2, 0xffc7, }, { 0xffca, 0xffcf, },
-
155  { 0xffd2, 0xffd7, }, { 0xffda, 0xffdc, }, { 0xffe0, 0xffe6, },
-
156  { 0xffe8, 0xffee, }, { 0xfff9, 0xfffd, }, { 0x10000, 0x1000b, },
-
157  { 0x1000d, 0x10026, }, { 0x10028, 0x1003a, }, { 0x1003c, 0x1003d, },
-
158  { 0x1003f, 0x1004d, }, { 0x10050, 0x1005d, }, { 0x10080, 0x100fa, },
-
159  { 0x10100, 0x10102, }, { 0x10107, 0x10133, }, { 0x10137, 0x1018e, },
-
160  { 0x10190, 0x1019c, }, { 0x101a0, 0x101a0, }, { 0x101d0, 0x101fd, },
-
161  { 0x10280, 0x1029c, }, { 0x102a0, 0x102d0, }, { 0x102e0, 0x102fb, },
-
162  { 0x10300, 0x10323, }, { 0x1032d, 0x1034a, }, { 0x10350, 0x1037a, },
-
163  { 0x10380, 0x1039d, }, { 0x1039f, 0x103c3, }, { 0x103c8, 0x103d5, },
-
164  { 0x10400, 0x1049d, }, { 0x104a0, 0x104a9, }, { 0x104b0, 0x104d3, },
-
165  { 0x104d8, 0x104fb, }, { 0x10500, 0x10527, }, { 0x10530, 0x10563, },
-
166  { 0x1056f, 0x1057a, }, { 0x1057c, 0x1058a, }, { 0x1058c, 0x10592, },
-
167  { 0x10594, 0x10595, }, { 0x10597, 0x105a1, }, { 0x105a3, 0x105b1, },
-
168  { 0x105b3, 0x105b9, }, { 0x105bb, 0x105bc, }, { 0x10600, 0x10736, },
-
169  { 0x10740, 0x10755, }, { 0x10760, 0x10767, }, { 0x10780, 0x10785, },
-
170  { 0x10787, 0x107b0, }, { 0x107b2, 0x107ba, }, { 0x10800, 0x10805, },
-
171  { 0x10808, 0x10808, }, { 0x1080a, 0x10835, }, { 0x10837, 0x10838, },
-
172  { 0x1083c, 0x1083c, }, { 0x1083f, 0x10855, }, { 0x10857, 0x1089e, },
-
173  { 0x108a7, 0x108af, }, { 0x108e0, 0x108f2, }, { 0x108f4, 0x108f5, },
-
174  { 0x108fb, 0x1091b, }, { 0x1091f, 0x10939, }, { 0x1093f, 0x1093f, },
-
175  { 0x10980, 0x109b7, }, { 0x109bc, 0x109cf, }, { 0x109d2, 0x10a03, },
-
176  { 0x10a05, 0x10a06, }, { 0x10a0c, 0x10a13, }, { 0x10a15, 0x10a17, },
-
177  { 0x10a19, 0x10a35, }, { 0x10a38, 0x10a3a, }, { 0x10a3f, 0x10a48, },
-
178  { 0x10a50, 0x10a58, }, { 0x10a60, 0x10a9f, }, { 0x10ac0, 0x10ae6, },
-
179  { 0x10aeb, 0x10af6, }, { 0x10b00, 0x10b35, }, { 0x10b39, 0x10b55, },
-
180  { 0x10b58, 0x10b72, }, { 0x10b78, 0x10b91, }, { 0x10b99, 0x10b9c, },
-
181  { 0x10ba9, 0x10baf, }, { 0x10c00, 0x10c48, }, { 0x10c80, 0x10cb2, },
-
182  { 0x10cc0, 0x10cf2, }, { 0x10cfa, 0x10d27, }, { 0x10d30, 0x10d39, },
-
183  { 0x10e60, 0x10e7e, }, { 0x10e80, 0x10ea9, }, { 0x10eab, 0x10ead, },
-
184  { 0x10eb0, 0x10eb1, }, { 0x10efd, 0x10f27, }, { 0x10f30, 0x10f59, },
-
185  { 0x10f70, 0x10f89, }, { 0x10fb0, 0x10fcb, }, { 0x10fe0, 0x10ff6, },
-
186  { 0x11000, 0x1104d, }, { 0x11052, 0x11075, }, { 0x1107f, 0x110c2, },
-
187  { 0x110cd, 0x110cd, }, { 0x110d0, 0x110e8, }, { 0x110f0, 0x110f9, },
-
188  { 0x11100, 0x11134, }, { 0x11136, 0x11147, }, { 0x11150, 0x11176, },
-
189  { 0x11180, 0x111df, }, { 0x111e1, 0x111f4, }, { 0x11200, 0x11211, },
-
190  { 0x11213, 0x11241, }, { 0x11280, 0x11286, }, { 0x11288, 0x11288, },
-
191  { 0x1128a, 0x1128d, }, { 0x1128f, 0x1129d, }, { 0x1129f, 0x112a9, },
-
192  { 0x112b0, 0x112ea, }, { 0x112f0, 0x112f9, }, { 0x11300, 0x11303, },
-
193  { 0x11305, 0x1130c, }, { 0x1130f, 0x11310, }, { 0x11313, 0x11328, },
-
194  { 0x1132a, 0x11330, }, { 0x11332, 0x11333, }, { 0x11335, 0x11339, },
-
195  { 0x1133b, 0x11344, }, { 0x11347, 0x11348, }, { 0x1134b, 0x1134d, },
-
196  { 0x11350, 0x11350, }, { 0x11357, 0x11357, }, { 0x1135d, 0x11363, },
-
197  { 0x11366, 0x1136c, }, { 0x11370, 0x11374, }, { 0x11400, 0x1145b, },
-
198  { 0x1145d, 0x11461, }, { 0x11480, 0x114c7, }, { 0x114d0, 0x114d9, },
-
199  { 0x11580, 0x115b5, }, { 0x115b8, 0x115dd, }, { 0x11600, 0x11644, },
-
200  { 0x11650, 0x11659, }, { 0x11660, 0x1166c, }, { 0x11680, 0x116b9, },
-
201  { 0x116c0, 0x116c9, }, { 0x11700, 0x1171a, }, { 0x1171d, 0x1172b, },
-
202  { 0x11730, 0x11746, }, { 0x11800, 0x1183b, }, { 0x118a0, 0x118f2, },
-
203  { 0x118ff, 0x11906, }, { 0x11909, 0x11909, }, { 0x1190c, 0x11913, },
-
204  { 0x11915, 0x11916, }, { 0x11918, 0x11935, }, { 0x11937, 0x11938, },
-
205  { 0x1193b, 0x11946, }, { 0x11950, 0x11959, }, { 0x119a0, 0x119a7, },
-
206  { 0x119aa, 0x119d7, }, { 0x119da, 0x119e4, }, { 0x11a00, 0x11a47, },
-
207  { 0x11a50, 0x11aa2, }, { 0x11ab0, 0x11af8, }, { 0x11b00, 0x11b09, },
-
208  { 0x11c00, 0x11c08, }, { 0x11c0a, 0x11c36, }, { 0x11c38, 0x11c45, },
-
209  { 0x11c50, 0x11c6c, }, { 0x11c70, 0x11c8f, }, { 0x11c92, 0x11ca7, },
-
210  { 0x11ca9, 0x11cb6, }, { 0x11d00, 0x11d06, }, { 0x11d08, 0x11d09, },
-
211  { 0x11d0b, 0x11d36, }, { 0x11d3a, 0x11d3a, }, { 0x11d3c, 0x11d3d, },
-
212  { 0x11d3f, 0x11d47, }, { 0x11d50, 0x11d59, }, { 0x11d60, 0x11d65, },
-
213  { 0x11d67, 0x11d68, }, { 0x11d6a, 0x11d8e, }, { 0x11d90, 0x11d91, },
-
214  { 0x11d93, 0x11d98, }, { 0x11da0, 0x11da9, }, { 0x11ee0, 0x11ef8, },
-
215  { 0x11f00, 0x11f10, }, { 0x11f12, 0x11f3a, }, { 0x11f3e, 0x11f59, },
-
216  { 0x11fb0, 0x11fb0, }, { 0x11fc0, 0x11ff1, }, { 0x11fff, 0x12399, },
-
217  { 0x12400, 0x1246e, }, { 0x12470, 0x12474, }, { 0x12480, 0x12543, },
-
218  { 0x12f90, 0x12ff2, }, { 0x13000, 0x13455, }, { 0x14400, 0x14646, },
-
219  { 0x16800, 0x16a38, }, { 0x16a40, 0x16a5e, }, { 0x16a60, 0x16a69, },
-
220  { 0x16a6e, 0x16abe, }, { 0x16ac0, 0x16ac9, }, { 0x16ad0, 0x16aed, },
-
221  { 0x16af0, 0x16af5, }, { 0x16b00, 0x16b45, }, { 0x16b50, 0x16b59, },
-
222  { 0x16b5b, 0x16b61, }, { 0x16b63, 0x16b77, }, { 0x16b7d, 0x16b8f, },
-
223  { 0x16e40, 0x16e9a, }, { 0x16f00, 0x16f4a, }, { 0x16f4f, 0x16f87, },
-
224  { 0x16f8f, 0x16f9f, }, { 0x16fe0, 0x16fe4, }, { 0x16ff0, 0x16ff1, },
-
225  { 0x17000, 0x187f7, }, { 0x18800, 0x18cd5, }, { 0x18d00, 0x18d08, },
-
226  { 0x1aff0, 0x1aff3, }, { 0x1aff5, 0x1affb, }, { 0x1affd, 0x1affe, },
-
227  { 0x1b000, 0x1b122, }, { 0x1b132, 0x1b132, }, { 0x1b150, 0x1b152, },
-
228  { 0x1b155, 0x1b155, }, { 0x1b164, 0x1b167, }, { 0x1b170, 0x1b2fb, },
-
229  { 0x1bc00, 0x1bc6a, }, { 0x1bc70, 0x1bc7c, }, { 0x1bc80, 0x1bc88, },
-
230  { 0x1bc90, 0x1bc99, }, { 0x1bc9c, 0x1bca3, }, { 0x1cf00, 0x1cf2d, },
-
231  { 0x1cf30, 0x1cf46, }, { 0x1cf50, 0x1cfc3, }, { 0x1d000, 0x1d0f5, },
-
232  { 0x1d100, 0x1d126, }, { 0x1d129, 0x1d1ea, }, { 0x1d200, 0x1d245, },
-
233  { 0x1d2c0, 0x1d2d3, }, { 0x1d2e0, 0x1d2f3, }, { 0x1d300, 0x1d356, },
-
234  { 0x1d360, 0x1d378, }, { 0x1d400, 0x1d454, }, { 0x1d456, 0x1d49c, },
-
235  { 0x1d49e, 0x1d49f, }, { 0x1d4a2, 0x1d4a2, }, { 0x1d4a5, 0x1d4a6, },
-
236  { 0x1d4a9, 0x1d4ac, }, { 0x1d4ae, 0x1d4b9, }, { 0x1d4bb, 0x1d4bb, },
-
237  { 0x1d4bd, 0x1d4c3, }, { 0x1d4c5, 0x1d505, }, { 0x1d507, 0x1d50a, },
-
238  { 0x1d50d, 0x1d514, }, { 0x1d516, 0x1d51c, }, { 0x1d51e, 0x1d539, },
-
239  { 0x1d53b, 0x1d53e, }, { 0x1d540, 0x1d544, }, { 0x1d546, 0x1d546, },
-
240  { 0x1d54a, 0x1d550, }, { 0x1d552, 0x1d6a5, }, { 0x1d6a8, 0x1d7cb, },
-
241  { 0x1d7ce, 0x1da8b, }, { 0x1da9b, 0x1da9f, }, { 0x1daa1, 0x1daaf, },
-
242  { 0x1df00, 0x1df1e, }, { 0x1df25, 0x1df2a, }, { 0x1e000, 0x1e006, },
-
243  { 0x1e008, 0x1e018, }, { 0x1e01b, 0x1e021, }, { 0x1e023, 0x1e024, },
-
244  { 0x1e026, 0x1e02a, }, { 0x1e030, 0x1e06d, }, { 0x1e08f, 0x1e08f, },
-
245  { 0x1e100, 0x1e12c, }, { 0x1e130, 0x1e13d, }, { 0x1e140, 0x1e149, },
-
246  { 0x1e14e, 0x1e14f, }, { 0x1e290, 0x1e2ae, }, { 0x1e2c0, 0x1e2f9, },
-
247  { 0x1e2ff, 0x1e2ff, }, { 0x1e4d0, 0x1e4f9, }, { 0x1e7e0, 0x1e7e6, },
-
248  { 0x1e7e8, 0x1e7eb, }, { 0x1e7ed, 0x1e7ee, }, { 0x1e7f0, 0x1e7fe, },
-
249  { 0x1e800, 0x1e8c4, }, { 0x1e8c7, 0x1e8d6, }, { 0x1e900, 0x1e94b, },
-
250  { 0x1e950, 0x1e959, }, { 0x1e95e, 0x1e95f, }, { 0x1ec71, 0x1ecb4, },
-
251  { 0x1ed01, 0x1ed3d, }, { 0x1ee00, 0x1ee03, }, { 0x1ee05, 0x1ee1f, },
-
252  { 0x1ee21, 0x1ee22, }, { 0x1ee24, 0x1ee24, }, { 0x1ee27, 0x1ee27, },
-
253  { 0x1ee29, 0x1ee32, }, { 0x1ee34, 0x1ee37, }, { 0x1ee39, 0x1ee39, },
-
254  { 0x1ee3b, 0x1ee3b, }, { 0x1ee42, 0x1ee42, }, { 0x1ee47, 0x1ee47, },
-
255  { 0x1ee49, 0x1ee49, }, { 0x1ee4b, 0x1ee4b, }, { 0x1ee4d, 0x1ee4f, },
-
256  { 0x1ee51, 0x1ee52, }, { 0x1ee54, 0x1ee54, }, { 0x1ee57, 0x1ee57, },
-
257  { 0x1ee59, 0x1ee59, }, { 0x1ee5b, 0x1ee5b, }, { 0x1ee5d, 0x1ee5d, },
-
258  { 0x1ee5f, 0x1ee5f, }, { 0x1ee61, 0x1ee62, }, { 0x1ee64, 0x1ee64, },
-
259  { 0x1ee67, 0x1ee6a, }, { 0x1ee6c, 0x1ee72, }, { 0x1ee74, 0x1ee77, },
-
260  { 0x1ee79, 0x1ee7c, }, { 0x1ee7e, 0x1ee7e, }, { 0x1ee80, 0x1ee89, },
-
261  { 0x1ee8b, 0x1ee9b, }, { 0x1eea1, 0x1eea3, }, { 0x1eea5, 0x1eea9, },
-
262  { 0x1eeab, 0x1eebb, }, { 0x1eef0, 0x1eef1, }, { 0x1f000, 0x1f02b, },
-
263  { 0x1f030, 0x1f093, }, { 0x1f0a0, 0x1f0ae, }, { 0x1f0b1, 0x1f0bf, },
-
264  { 0x1f0c1, 0x1f0cf, }, { 0x1f0d1, 0x1f0f5, }, { 0x1f100, 0x1f1ad, },
-
265  { 0x1f1e6, 0x1f202, }, { 0x1f210, 0x1f23b, }, { 0x1f240, 0x1f248, },
-
266  { 0x1f250, 0x1f251, }, { 0x1f260, 0x1f265, }, { 0x1f300, 0x1f6d7, },
-
267  { 0x1f6dc, 0x1f6ec, }, { 0x1f6f0, 0x1f6fc, }, { 0x1f700, 0x1f776, },
-
268  { 0x1f77b, 0x1f7d9, }, { 0x1f7e0, 0x1f7eb, }, { 0x1f7f0, 0x1f7f0, },
-
269  { 0x1f800, 0x1f80b, }, { 0x1f810, 0x1f847, }, { 0x1f850, 0x1f859, },
-
270  { 0x1f860, 0x1f887, }, { 0x1f890, 0x1f8ad, }, { 0x1f8b0, 0x1f8b1, },
-
271  { 0x1f900, 0x1fa53, }, { 0x1fa60, 0x1fa6d, }, { 0x1fa70, 0x1fa7c, },
-
272  { 0x1fa80, 0x1fa88, }, { 0x1fa90, 0x1fabd, }, { 0x1fabf, 0x1fac5, },
-
273  { 0x1face, 0x1fadb, }, { 0x1fae0, 0x1fae8, }, { 0x1faf0, 0x1faf8, },
-
274  { 0x1fb00, 0x1fb92, }, { 0x1fb94, 0x1fbca, }, { 0x1fbf0, 0x1fbf9, },
-
275  { 0x20000, 0x2a6df, }, { 0x2a700, 0x2b739, }, { 0x2b740, 0x2b81d, },
-
276  { 0x2b820, 0x2cea1, }, { 0x2ceb0, 0x2ebe0, }, { 0x2ebf0, 0x2ee5d, },
-
277  { 0x2f800, 0x2fa1d, }, { 0x30000, 0x3134a, }, { 0x31350, 0x323af, },
-
278  { 0xe0001, 0xe0001, }, { 0xe0020, 0xe007f, }, { 0xe0100, 0xe01ef, },
-
279  { 0xf0000, 0xffffd, }, { 0x100000, 0x10fffd, },
-
280  }};
-
281 
-
282  return utils::table_lookup(graph_table, c);
-
283  }
-
284 }
+Go to the documentation of this file.
1/*
+
2 * Copyright (c) 2018-2024, peelo.net
+
3 * All rights reserved.
+
4 *
+
5 * Redistribution and use in source and binary forms, with or without
+
6 * modification, are permitted provided that the following conditions are met:
+
7 *
+
8 * * Redistributions of source code must retain the above copyright notice,
+
9 * this list of conditions and the following disclaimer.
+
10 *
+
11 * * Redistributions in binary form must reproduce the above copyright notice,
+
12 * this list of conditions and the following disclaimer in the documentation
+
13 * and/or other materials provided with the distribution.
+
14 *
+
15 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+
16 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+
17 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+
18 * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
+
19 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+
20 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+
21 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+
22 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+
23 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+
24 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+
25 * POSSIBILITY OF SUCH DAMAGE.
+
26 */
+
27#pragma once
+
28
+ +
30
+ +
32{
+
37 inline bool
+
38 isgraph(char32_t c)
+
39 {
+
40 static const std::array<utils::range, 713> graph_table =
+
41 {{
+
42 { 0x0021, 0x007e, }, { 0x00a1, 0x0377, }, { 0x037a, 0x037f, },
+
43 { 0x0384, 0x038a, }, { 0x038c, 0x038c, }, { 0x038e, 0x03a1, },
+
44 { 0x03a3, 0x052f, }, { 0x0531, 0x0556, }, { 0x0559, 0x058a, },
+
45 { 0x058d, 0x058f, }, { 0x0591, 0x05c7, }, { 0x05d0, 0x05ea, },
+
46 { 0x05ef, 0x05f4, }, { 0x0600, 0x070d, }, { 0x070f, 0x074a, },
+
47 { 0x074d, 0x07b1, }, { 0x07c0, 0x07fa, }, { 0x07fd, 0x082d, },
+
48 { 0x0830, 0x083e, }, { 0x0840, 0x085b, }, { 0x085e, 0x085e, },
+
49 { 0x0860, 0x086a, }, { 0x0870, 0x088e, }, { 0x0890, 0x0891, },
+
50 { 0x0898, 0x0983, }, { 0x0985, 0x098c, }, { 0x098f, 0x0990, },
+
51 { 0x0993, 0x09a8, }, { 0x09aa, 0x09b0, }, { 0x09b2, 0x09b2, },
+
52 { 0x09b6, 0x09b9, }, { 0x09bc, 0x09c4, }, { 0x09c7, 0x09c8, },
+
53 { 0x09cb, 0x09ce, }, { 0x09d7, 0x09d7, }, { 0x09dc, 0x09dd, },
+
54 { 0x09df, 0x09e3, }, { 0x09e6, 0x09fe, }, { 0x0a01, 0x0a03, },
+
55 { 0x0a05, 0x0a0a, }, { 0x0a0f, 0x0a10, }, { 0x0a13, 0x0a28, },
+
56 { 0x0a2a, 0x0a30, }, { 0x0a32, 0x0a33, }, { 0x0a35, 0x0a36, },
+
57 { 0x0a38, 0x0a39, }, { 0x0a3c, 0x0a3c, }, { 0x0a3e, 0x0a42, },
+
58 { 0x0a47, 0x0a48, }, { 0x0a4b, 0x0a4d, }, { 0x0a51, 0x0a51, },
+
59 { 0x0a59, 0x0a5c, }, { 0x0a5e, 0x0a5e, }, { 0x0a66, 0x0a76, },
+
60 { 0x0a81, 0x0a83, }, { 0x0a85, 0x0a8d, }, { 0x0a8f, 0x0a91, },
+
61 { 0x0a93, 0x0aa8, }, { 0x0aaa, 0x0ab0, }, { 0x0ab2, 0x0ab3, },
+
62 { 0x0ab5, 0x0ab9, }, { 0x0abc, 0x0ac5, }, { 0x0ac7, 0x0ac9, },
+
63 { 0x0acb, 0x0acd, }, { 0x0ad0, 0x0ad0, }, { 0x0ae0, 0x0ae3, },
+
64 { 0x0ae6, 0x0af1, }, { 0x0af9, 0x0aff, }, { 0x0b01, 0x0b03, },
+
65 { 0x0b05, 0x0b0c, }, { 0x0b0f, 0x0b10, }, { 0x0b13, 0x0b28, },
+
66 { 0x0b2a, 0x0b30, }, { 0x0b32, 0x0b33, }, { 0x0b35, 0x0b39, },
+
67 { 0x0b3c, 0x0b44, }, { 0x0b47, 0x0b48, }, { 0x0b4b, 0x0b4d, },
+
68 { 0x0b55, 0x0b57, }, { 0x0b5c, 0x0b5d, }, { 0x0b5f, 0x0b63, },
+
69 { 0x0b66, 0x0b77, }, { 0x0b82, 0x0b83, }, { 0x0b85, 0x0b8a, },
+
70 { 0x0b8e, 0x0b90, }, { 0x0b92, 0x0b95, }, { 0x0b99, 0x0b9a, },
+
71 { 0x0b9c, 0x0b9c, }, { 0x0b9e, 0x0b9f, }, { 0x0ba3, 0x0ba4, },
+
72 { 0x0ba8, 0x0baa, }, { 0x0bae, 0x0bb9, }, { 0x0bbe, 0x0bc2, },
+
73 { 0x0bc6, 0x0bc8, }, { 0x0bca, 0x0bcd, }, { 0x0bd0, 0x0bd0, },
+
74 { 0x0bd7, 0x0bd7, }, { 0x0be6, 0x0bfa, }, { 0x0c00, 0x0c0c, },
+
75 { 0x0c0e, 0x0c10, }, { 0x0c12, 0x0c28, }, { 0x0c2a, 0x0c39, },
+
76 { 0x0c3c, 0x0c44, }, { 0x0c46, 0x0c48, }, { 0x0c4a, 0x0c4d, },
+
77 { 0x0c55, 0x0c56, }, { 0x0c58, 0x0c5a, }, { 0x0c5d, 0x0c5d, },
+
78 { 0x0c60, 0x0c63, }, { 0x0c66, 0x0c6f, }, { 0x0c77, 0x0c8c, },
+
79 { 0x0c8e, 0x0c90, }, { 0x0c92, 0x0ca8, }, { 0x0caa, 0x0cb3, },
+
80 { 0x0cb5, 0x0cb9, }, { 0x0cbc, 0x0cc4, }, { 0x0cc6, 0x0cc8, },
+
81 { 0x0cca, 0x0ccd, }, { 0x0cd5, 0x0cd6, }, { 0x0cdd, 0x0cde, },
+
82 { 0x0ce0, 0x0ce3, }, { 0x0ce6, 0x0cef, }, { 0x0cf1, 0x0cf3, },
+
83 { 0x0d00, 0x0d0c, }, { 0x0d0e, 0x0d10, }, { 0x0d12, 0x0d44, },
+
84 { 0x0d46, 0x0d48, }, { 0x0d4a, 0x0d4f, }, { 0x0d54, 0x0d63, },
+
85 { 0x0d66, 0x0d7f, }, { 0x0d81, 0x0d83, }, { 0x0d85, 0x0d96, },
+
86 { 0x0d9a, 0x0db1, }, { 0x0db3, 0x0dbb, }, { 0x0dbd, 0x0dbd, },
+
87 { 0x0dc0, 0x0dc6, }, { 0x0dca, 0x0dca, }, { 0x0dcf, 0x0dd4, },
+
88 { 0x0dd6, 0x0dd6, }, { 0x0dd8, 0x0ddf, }, { 0x0de6, 0x0def, },
+
89 { 0x0df2, 0x0df4, }, { 0x0e01, 0x0e3a, }, { 0x0e3f, 0x0e5b, },
+
90 { 0x0e81, 0x0e82, }, { 0x0e84, 0x0e84, }, { 0x0e86, 0x0e8a, },
+
91 { 0x0e8c, 0x0ea3, }, { 0x0ea5, 0x0ea5, }, { 0x0ea7, 0x0ebd, },
+
92 { 0x0ec0, 0x0ec4, }, { 0x0ec6, 0x0ec6, }, { 0x0ec8, 0x0ece, },
+
93 { 0x0ed0, 0x0ed9, }, { 0x0edc, 0x0edf, }, { 0x0f00, 0x0f47, },
+
94 { 0x0f49, 0x0f6c, }, { 0x0f71, 0x0f97, }, { 0x0f99, 0x0fbc, },
+
95 { 0x0fbe, 0x0fcc, }, { 0x0fce, 0x0fda, }, { 0x1000, 0x10c5, },
+
96 { 0x10c7, 0x10c7, }, { 0x10cd, 0x10cd, }, { 0x10d0, 0x1248, },
+
97 { 0x124a, 0x124d, }, { 0x1250, 0x1256, }, { 0x1258, 0x1258, },
+
98 { 0x125a, 0x125d, }, { 0x1260, 0x1288, }, { 0x128a, 0x128d, },
+
99 { 0x1290, 0x12b0, }, { 0x12b2, 0x12b5, }, { 0x12b8, 0x12be, },
+
100 { 0x12c0, 0x12c0, }, { 0x12c2, 0x12c5, }, { 0x12c8, 0x12d6, },
+
101 { 0x12d8, 0x1310, }, { 0x1312, 0x1315, }, { 0x1318, 0x135a, },
+
102 { 0x135d, 0x137c, }, { 0x1380, 0x1399, }, { 0x13a0, 0x13f5, },
+
103 { 0x13f8, 0x13fd, }, { 0x1400, 0x167f, }, { 0x1681, 0x169c, },
+
104 { 0x16a0, 0x16f8, }, { 0x1700, 0x1715, }, { 0x171f, 0x1736, },
+
105 { 0x1740, 0x1753, }, { 0x1760, 0x176c, }, { 0x176e, 0x1770, },
+
106 { 0x1772, 0x1773, }, { 0x1780, 0x17dd, }, { 0x17e0, 0x17e9, },
+
107 { 0x17f0, 0x17f9, }, { 0x1800, 0x1819, }, { 0x1820, 0x1878, },
+
108 { 0x1880, 0x18aa, }, { 0x18b0, 0x18f5, }, { 0x1900, 0x191e, },
+
109 { 0x1920, 0x192b, }, { 0x1930, 0x193b, }, { 0x1940, 0x1940, },
+
110 { 0x1944, 0x196d, }, { 0x1970, 0x1974, }, { 0x1980, 0x19ab, },
+
111 { 0x19b0, 0x19c9, }, { 0x19d0, 0x19da, }, { 0x19de, 0x1a1b, },
+
112 { 0x1a1e, 0x1a5e, }, { 0x1a60, 0x1a7c, }, { 0x1a7f, 0x1a89, },
+
113 { 0x1a90, 0x1a99, }, { 0x1aa0, 0x1aad, }, { 0x1ab0, 0x1ace, },
+
114 { 0x1b00, 0x1b4c, }, { 0x1b50, 0x1b7e, }, { 0x1b80, 0x1bf3, },
+
115 { 0x1bfc, 0x1c37, }, { 0x1c3b, 0x1c49, }, { 0x1c4d, 0x1c88, },
+
116 { 0x1c90, 0x1cba, }, { 0x1cbd, 0x1cc7, }, { 0x1cd0, 0x1cfa, },
+
117 { 0x1d00, 0x1f15, }, { 0x1f18, 0x1f1d, }, { 0x1f20, 0x1f45, },
+
118 { 0x1f48, 0x1f4d, }, { 0x1f50, 0x1f57, }, { 0x1f59, 0x1f59, },
+
119 { 0x1f5b, 0x1f5b, }, { 0x1f5d, 0x1f5d, }, { 0x1f5f, 0x1f7d, },
+
120 { 0x1f80, 0x1fb4, }, { 0x1fb6, 0x1fc4, }, { 0x1fc6, 0x1fd3, },
+
121 { 0x1fd6, 0x1fdb, }, { 0x1fdd, 0x1fef, }, { 0x1ff2, 0x1ff4, },
+
122 { 0x1ff6, 0x1ffe, }, { 0x200b, 0x2027, }, { 0x202a, 0x202e, },
+
123 { 0x2030, 0x205e, }, { 0x2060, 0x2064, }, { 0x2066, 0x2071, },
+
124 { 0x2074, 0x208e, }, { 0x2090, 0x209c, }, { 0x20a0, 0x20c0, },
+
125 { 0x20d0, 0x20f0, }, { 0x2100, 0x218b, }, { 0x2190, 0x2426, },
+
126 { 0x2440, 0x244a, }, { 0x2460, 0x2b73, }, { 0x2b76, 0x2b95, },
+
127 { 0x2b97, 0x2cf3, }, { 0x2cf9, 0x2d25, }, { 0x2d27, 0x2d27, },
+
128 { 0x2d2d, 0x2d2d, }, { 0x2d30, 0x2d67, }, { 0x2d6f, 0x2d70, },
+
129 { 0x2d7f, 0x2d96, }, { 0x2da0, 0x2da6, }, { 0x2da8, 0x2dae, },
+
130 { 0x2db0, 0x2db6, }, { 0x2db8, 0x2dbe, }, { 0x2dc0, 0x2dc6, },
+
131 { 0x2dc8, 0x2dce, }, { 0x2dd0, 0x2dd6, }, { 0x2dd8, 0x2dde, },
+
132 { 0x2de0, 0x2e5d, }, { 0x2e80, 0x2e99, }, { 0x2e9b, 0x2ef3, },
+
133 { 0x2f00, 0x2fd5, }, { 0x2ff0, 0x2fff, }, { 0x3001, 0x303f, },
+
134 { 0x3041, 0x3096, }, { 0x3099, 0x30ff, }, { 0x3105, 0x312f, },
+
135 { 0x3131, 0x318e, }, { 0x3190, 0x31e3, }, { 0x31ef, 0x321e, },
+
136 { 0x3220, 0xa48c, }, { 0xa490, 0xa4c6, }, { 0xa4d0, 0xa62b, },
+
137 { 0xa640, 0xa6f7, }, { 0xa700, 0xa7ca, }, { 0xa7d0, 0xa7d1, },
+
138 { 0xa7d3, 0xa7d3, }, { 0xa7d5, 0xa7d9, }, { 0xa7f2, 0xa82c, },
+
139 { 0xa830, 0xa839, }, { 0xa840, 0xa877, }, { 0xa880, 0xa8c5, },
+
140 { 0xa8ce, 0xa8d9, }, { 0xa8e0, 0xa953, }, { 0xa95f, 0xa97c, },
+
141 { 0xa980, 0xa9cd, }, { 0xa9cf, 0xa9d9, }, { 0xa9de, 0xa9fe, },
+
142 { 0xaa00, 0xaa36, }, { 0xaa40, 0xaa4d, }, { 0xaa50, 0xaa59, },
+
143 { 0xaa5c, 0xaac2, }, { 0xaadb, 0xaaf6, }, { 0xab01, 0xab06, },
+
144 { 0xab09, 0xab0e, }, { 0xab11, 0xab16, }, { 0xab20, 0xab26, },
+
145 { 0xab28, 0xab2e, }, { 0xab30, 0xab6b, }, { 0xab70, 0xabed, },
+
146 { 0xabf0, 0xabf9, }, { 0xac00, 0xd7a3, }, { 0xd7b0, 0xd7c6, },
+
147 { 0xd7cb, 0xd7fb, }, { 0xe000, 0xfa6d, }, { 0xfa70, 0xfad9, },
+
148 { 0xfb00, 0xfb06, }, { 0xfb13, 0xfb17, }, { 0xfb1d, 0xfb36, },
+
149 { 0xfb38, 0xfb3c, }, { 0xfb3e, 0xfb3e, }, { 0xfb40, 0xfb41, },
+
150 { 0xfb43, 0xfb44, }, { 0xfb46, 0xfbc2, }, { 0xfbd3, 0xfd8f, },
+
151 { 0xfd92, 0xfdc7, }, { 0xfdcf, 0xfdcf, }, { 0xfdf0, 0xfe19, },
+
152 { 0xfe20, 0xfe52, }, { 0xfe54, 0xfe66, }, { 0xfe68, 0xfe6b, },
+
153 { 0xfe70, 0xfe74, }, { 0xfe76, 0xfefc, }, { 0xfeff, 0xfeff, },
+
154 { 0xff01, 0xffbe, }, { 0xffc2, 0xffc7, }, { 0xffca, 0xffcf, },
+
155 { 0xffd2, 0xffd7, }, { 0xffda, 0xffdc, }, { 0xffe0, 0xffe6, },
+
156 { 0xffe8, 0xffee, }, { 0xfff9, 0xfffd, }, { 0x10000, 0x1000b, },
+
157 { 0x1000d, 0x10026, }, { 0x10028, 0x1003a, }, { 0x1003c, 0x1003d, },
+
158 { 0x1003f, 0x1004d, }, { 0x10050, 0x1005d, }, { 0x10080, 0x100fa, },
+
159 { 0x10100, 0x10102, }, { 0x10107, 0x10133, }, { 0x10137, 0x1018e, },
+
160 { 0x10190, 0x1019c, }, { 0x101a0, 0x101a0, }, { 0x101d0, 0x101fd, },
+
161 { 0x10280, 0x1029c, }, { 0x102a0, 0x102d0, }, { 0x102e0, 0x102fb, },
+
162 { 0x10300, 0x10323, }, { 0x1032d, 0x1034a, }, { 0x10350, 0x1037a, },
+
163 { 0x10380, 0x1039d, }, { 0x1039f, 0x103c3, }, { 0x103c8, 0x103d5, },
+
164 { 0x10400, 0x1049d, }, { 0x104a0, 0x104a9, }, { 0x104b0, 0x104d3, },
+
165 { 0x104d8, 0x104fb, }, { 0x10500, 0x10527, }, { 0x10530, 0x10563, },
+
166 { 0x1056f, 0x1057a, }, { 0x1057c, 0x1058a, }, { 0x1058c, 0x10592, },
+
167 { 0x10594, 0x10595, }, { 0x10597, 0x105a1, }, { 0x105a3, 0x105b1, },
+
168 { 0x105b3, 0x105b9, }, { 0x105bb, 0x105bc, }, { 0x10600, 0x10736, },
+
169 { 0x10740, 0x10755, }, { 0x10760, 0x10767, }, { 0x10780, 0x10785, },
+
170 { 0x10787, 0x107b0, }, { 0x107b2, 0x107ba, }, { 0x10800, 0x10805, },
+
171 { 0x10808, 0x10808, }, { 0x1080a, 0x10835, }, { 0x10837, 0x10838, },
+
172 { 0x1083c, 0x1083c, }, { 0x1083f, 0x10855, }, { 0x10857, 0x1089e, },
+
173 { 0x108a7, 0x108af, }, { 0x108e0, 0x108f2, }, { 0x108f4, 0x108f5, },
+
174 { 0x108fb, 0x1091b, }, { 0x1091f, 0x10939, }, { 0x1093f, 0x1093f, },
+
175 { 0x10980, 0x109b7, }, { 0x109bc, 0x109cf, }, { 0x109d2, 0x10a03, },
+
176 { 0x10a05, 0x10a06, }, { 0x10a0c, 0x10a13, }, { 0x10a15, 0x10a17, },
+
177 { 0x10a19, 0x10a35, }, { 0x10a38, 0x10a3a, }, { 0x10a3f, 0x10a48, },
+
178 { 0x10a50, 0x10a58, }, { 0x10a60, 0x10a9f, }, { 0x10ac0, 0x10ae6, },
+
179 { 0x10aeb, 0x10af6, }, { 0x10b00, 0x10b35, }, { 0x10b39, 0x10b55, },
+
180 { 0x10b58, 0x10b72, }, { 0x10b78, 0x10b91, }, { 0x10b99, 0x10b9c, },
+
181 { 0x10ba9, 0x10baf, }, { 0x10c00, 0x10c48, }, { 0x10c80, 0x10cb2, },
+
182 { 0x10cc0, 0x10cf2, }, { 0x10cfa, 0x10d27, }, { 0x10d30, 0x10d39, },
+
183 { 0x10e60, 0x10e7e, }, { 0x10e80, 0x10ea9, }, { 0x10eab, 0x10ead, },
+
184 { 0x10eb0, 0x10eb1, }, { 0x10efd, 0x10f27, }, { 0x10f30, 0x10f59, },
+
185 { 0x10f70, 0x10f89, }, { 0x10fb0, 0x10fcb, }, { 0x10fe0, 0x10ff6, },
+
186 { 0x11000, 0x1104d, }, { 0x11052, 0x11075, }, { 0x1107f, 0x110c2, },
+
187 { 0x110cd, 0x110cd, }, { 0x110d0, 0x110e8, }, { 0x110f0, 0x110f9, },
+
188 { 0x11100, 0x11134, }, { 0x11136, 0x11147, }, { 0x11150, 0x11176, },
+
189 { 0x11180, 0x111df, }, { 0x111e1, 0x111f4, }, { 0x11200, 0x11211, },
+
190 { 0x11213, 0x11241, }, { 0x11280, 0x11286, }, { 0x11288, 0x11288, },
+
191 { 0x1128a, 0x1128d, }, { 0x1128f, 0x1129d, }, { 0x1129f, 0x112a9, },
+
192 { 0x112b0, 0x112ea, }, { 0x112f0, 0x112f9, }, { 0x11300, 0x11303, },
+
193 { 0x11305, 0x1130c, }, { 0x1130f, 0x11310, }, { 0x11313, 0x11328, },
+
194 { 0x1132a, 0x11330, }, { 0x11332, 0x11333, }, { 0x11335, 0x11339, },
+
195 { 0x1133b, 0x11344, }, { 0x11347, 0x11348, }, { 0x1134b, 0x1134d, },
+
196 { 0x11350, 0x11350, }, { 0x11357, 0x11357, }, { 0x1135d, 0x11363, },
+
197 { 0x11366, 0x1136c, }, { 0x11370, 0x11374, }, { 0x11400, 0x1145b, },
+
198 { 0x1145d, 0x11461, }, { 0x11480, 0x114c7, }, { 0x114d0, 0x114d9, },
+
199 { 0x11580, 0x115b5, }, { 0x115b8, 0x115dd, }, { 0x11600, 0x11644, },
+
200 { 0x11650, 0x11659, }, { 0x11660, 0x1166c, }, { 0x11680, 0x116b9, },
+
201 { 0x116c0, 0x116c9, }, { 0x11700, 0x1171a, }, { 0x1171d, 0x1172b, },
+
202 { 0x11730, 0x11746, }, { 0x11800, 0x1183b, }, { 0x118a0, 0x118f2, },
+
203 { 0x118ff, 0x11906, }, { 0x11909, 0x11909, }, { 0x1190c, 0x11913, },
+
204 { 0x11915, 0x11916, }, { 0x11918, 0x11935, }, { 0x11937, 0x11938, },
+
205 { 0x1193b, 0x11946, }, { 0x11950, 0x11959, }, { 0x119a0, 0x119a7, },
+
206 { 0x119aa, 0x119d7, }, { 0x119da, 0x119e4, }, { 0x11a00, 0x11a47, },
+
207 { 0x11a50, 0x11aa2, }, { 0x11ab0, 0x11af8, }, { 0x11b00, 0x11b09, },
+
208 { 0x11c00, 0x11c08, }, { 0x11c0a, 0x11c36, }, { 0x11c38, 0x11c45, },
+
209 { 0x11c50, 0x11c6c, }, { 0x11c70, 0x11c8f, }, { 0x11c92, 0x11ca7, },
+
210 { 0x11ca9, 0x11cb6, }, { 0x11d00, 0x11d06, }, { 0x11d08, 0x11d09, },
+
211 { 0x11d0b, 0x11d36, }, { 0x11d3a, 0x11d3a, }, { 0x11d3c, 0x11d3d, },
+
212 { 0x11d3f, 0x11d47, }, { 0x11d50, 0x11d59, }, { 0x11d60, 0x11d65, },
+
213 { 0x11d67, 0x11d68, }, { 0x11d6a, 0x11d8e, }, { 0x11d90, 0x11d91, },
+
214 { 0x11d93, 0x11d98, }, { 0x11da0, 0x11da9, }, { 0x11ee0, 0x11ef8, },
+
215 { 0x11f00, 0x11f10, }, { 0x11f12, 0x11f3a, }, { 0x11f3e, 0x11f59, },
+
216 { 0x11fb0, 0x11fb0, }, { 0x11fc0, 0x11ff1, }, { 0x11fff, 0x12399, },
+
217 { 0x12400, 0x1246e, }, { 0x12470, 0x12474, }, { 0x12480, 0x12543, },
+
218 { 0x12f90, 0x12ff2, }, { 0x13000, 0x13455, }, { 0x14400, 0x14646, },
+
219 { 0x16800, 0x16a38, }, { 0x16a40, 0x16a5e, }, { 0x16a60, 0x16a69, },
+
220 { 0x16a6e, 0x16abe, }, { 0x16ac0, 0x16ac9, }, { 0x16ad0, 0x16aed, },
+
221 { 0x16af0, 0x16af5, }, { 0x16b00, 0x16b45, }, { 0x16b50, 0x16b59, },
+
222 { 0x16b5b, 0x16b61, }, { 0x16b63, 0x16b77, }, { 0x16b7d, 0x16b8f, },
+
223 { 0x16e40, 0x16e9a, }, { 0x16f00, 0x16f4a, }, { 0x16f4f, 0x16f87, },
+
224 { 0x16f8f, 0x16f9f, }, { 0x16fe0, 0x16fe4, }, { 0x16ff0, 0x16ff1, },
+
225 { 0x17000, 0x187f7, }, { 0x18800, 0x18cd5, }, { 0x18d00, 0x18d08, },
+
226 { 0x1aff0, 0x1aff3, }, { 0x1aff5, 0x1affb, }, { 0x1affd, 0x1affe, },
+
227 { 0x1b000, 0x1b122, }, { 0x1b132, 0x1b132, }, { 0x1b150, 0x1b152, },
+
228 { 0x1b155, 0x1b155, }, { 0x1b164, 0x1b167, }, { 0x1b170, 0x1b2fb, },
+
229 { 0x1bc00, 0x1bc6a, }, { 0x1bc70, 0x1bc7c, }, { 0x1bc80, 0x1bc88, },
+
230 { 0x1bc90, 0x1bc99, }, { 0x1bc9c, 0x1bca3, }, { 0x1cf00, 0x1cf2d, },
+
231 { 0x1cf30, 0x1cf46, }, { 0x1cf50, 0x1cfc3, }, { 0x1d000, 0x1d0f5, },
+
232 { 0x1d100, 0x1d126, }, { 0x1d129, 0x1d1ea, }, { 0x1d200, 0x1d245, },
+
233 { 0x1d2c0, 0x1d2d3, }, { 0x1d2e0, 0x1d2f3, }, { 0x1d300, 0x1d356, },
+
234 { 0x1d360, 0x1d378, }, { 0x1d400, 0x1d454, }, { 0x1d456, 0x1d49c, },
+
235 { 0x1d49e, 0x1d49f, }, { 0x1d4a2, 0x1d4a2, }, { 0x1d4a5, 0x1d4a6, },
+
236 { 0x1d4a9, 0x1d4ac, }, { 0x1d4ae, 0x1d4b9, }, { 0x1d4bb, 0x1d4bb, },
+
237 { 0x1d4bd, 0x1d4c3, }, { 0x1d4c5, 0x1d505, }, { 0x1d507, 0x1d50a, },
+
238 { 0x1d50d, 0x1d514, }, { 0x1d516, 0x1d51c, }, { 0x1d51e, 0x1d539, },
+
239 { 0x1d53b, 0x1d53e, }, { 0x1d540, 0x1d544, }, { 0x1d546, 0x1d546, },
+
240 { 0x1d54a, 0x1d550, }, { 0x1d552, 0x1d6a5, }, { 0x1d6a8, 0x1d7cb, },
+
241 { 0x1d7ce, 0x1da8b, }, { 0x1da9b, 0x1da9f, }, { 0x1daa1, 0x1daaf, },
+
242 { 0x1df00, 0x1df1e, }, { 0x1df25, 0x1df2a, }, { 0x1e000, 0x1e006, },
+
243 { 0x1e008, 0x1e018, }, { 0x1e01b, 0x1e021, }, { 0x1e023, 0x1e024, },
+
244 { 0x1e026, 0x1e02a, }, { 0x1e030, 0x1e06d, }, { 0x1e08f, 0x1e08f, },
+
245 { 0x1e100, 0x1e12c, }, { 0x1e130, 0x1e13d, }, { 0x1e140, 0x1e149, },
+
246 { 0x1e14e, 0x1e14f, }, { 0x1e290, 0x1e2ae, }, { 0x1e2c0, 0x1e2f9, },
+
247 { 0x1e2ff, 0x1e2ff, }, { 0x1e4d0, 0x1e4f9, }, { 0x1e7e0, 0x1e7e6, },
+
248 { 0x1e7e8, 0x1e7eb, }, { 0x1e7ed, 0x1e7ee, }, { 0x1e7f0, 0x1e7fe, },
+
249 { 0x1e800, 0x1e8c4, }, { 0x1e8c7, 0x1e8d6, }, { 0x1e900, 0x1e94b, },
+
250 { 0x1e950, 0x1e959, }, { 0x1e95e, 0x1e95f, }, { 0x1ec71, 0x1ecb4, },
+
251 { 0x1ed01, 0x1ed3d, }, { 0x1ee00, 0x1ee03, }, { 0x1ee05, 0x1ee1f, },
+
252 { 0x1ee21, 0x1ee22, }, { 0x1ee24, 0x1ee24, }, { 0x1ee27, 0x1ee27, },
+
253 { 0x1ee29, 0x1ee32, }, { 0x1ee34, 0x1ee37, }, { 0x1ee39, 0x1ee39, },
+
254 { 0x1ee3b, 0x1ee3b, }, { 0x1ee42, 0x1ee42, }, { 0x1ee47, 0x1ee47, },
+
255 { 0x1ee49, 0x1ee49, }, { 0x1ee4b, 0x1ee4b, }, { 0x1ee4d, 0x1ee4f, },
+
256 { 0x1ee51, 0x1ee52, }, { 0x1ee54, 0x1ee54, }, { 0x1ee57, 0x1ee57, },
+
257 { 0x1ee59, 0x1ee59, }, { 0x1ee5b, 0x1ee5b, }, { 0x1ee5d, 0x1ee5d, },
+
258 { 0x1ee5f, 0x1ee5f, }, { 0x1ee61, 0x1ee62, }, { 0x1ee64, 0x1ee64, },
+
259 { 0x1ee67, 0x1ee6a, }, { 0x1ee6c, 0x1ee72, }, { 0x1ee74, 0x1ee77, },
+
260 { 0x1ee79, 0x1ee7c, }, { 0x1ee7e, 0x1ee7e, }, { 0x1ee80, 0x1ee89, },
+
261 { 0x1ee8b, 0x1ee9b, }, { 0x1eea1, 0x1eea3, }, { 0x1eea5, 0x1eea9, },
+
262 { 0x1eeab, 0x1eebb, }, { 0x1eef0, 0x1eef1, }, { 0x1f000, 0x1f02b, },
+
263 { 0x1f030, 0x1f093, }, { 0x1f0a0, 0x1f0ae, }, { 0x1f0b1, 0x1f0bf, },
+
264 { 0x1f0c1, 0x1f0cf, }, { 0x1f0d1, 0x1f0f5, }, { 0x1f100, 0x1f1ad, },
+
265 { 0x1f1e6, 0x1f202, }, { 0x1f210, 0x1f23b, }, { 0x1f240, 0x1f248, },
+
266 { 0x1f250, 0x1f251, }, { 0x1f260, 0x1f265, }, { 0x1f300, 0x1f6d7, },
+
267 { 0x1f6dc, 0x1f6ec, }, { 0x1f6f0, 0x1f6fc, }, { 0x1f700, 0x1f776, },
+
268 { 0x1f77b, 0x1f7d9, }, { 0x1f7e0, 0x1f7eb, }, { 0x1f7f0, 0x1f7f0, },
+
269 { 0x1f800, 0x1f80b, }, { 0x1f810, 0x1f847, }, { 0x1f850, 0x1f859, },
+
270 { 0x1f860, 0x1f887, }, { 0x1f890, 0x1f8ad, }, { 0x1f8b0, 0x1f8b1, },
+
271 { 0x1f900, 0x1fa53, }, { 0x1fa60, 0x1fa6d, }, { 0x1fa70, 0x1fa7c, },
+
272 { 0x1fa80, 0x1fa88, }, { 0x1fa90, 0x1fabd, }, { 0x1fabf, 0x1fac5, },
+
273 { 0x1face, 0x1fadb, }, { 0x1fae0, 0x1fae8, }, { 0x1faf0, 0x1faf8, },
+
274 { 0x1fb00, 0x1fb92, }, { 0x1fb94, 0x1fbca, }, { 0x1fbf0, 0x1fbf9, },
+
275 { 0x20000, 0x2a6df, }, { 0x2a700, 0x2b739, }, { 0x2b740, 0x2b81d, },
+
276 { 0x2b820, 0x2cea1, }, { 0x2ceb0, 0x2ebe0, }, { 0x2ebf0, 0x2ee5d, },
+
277 { 0x2f800, 0x2fa1d, }, { 0x30000, 0x3134a, }, { 0x31350, 0x323af, },
+
278 { 0xe0001, 0xe0001, }, { 0xe0020, 0xe007f, }, { 0xe0100, 0xe01ef, },
+
279 { 0xf0000, 0xffffd, }, { 0x100000, 0x10fffd, },
+
280 }};
+
281
+
282 return utils::table_lookup(graph_table, c);
+
283 }
+
284}
Definition: _utils.hpp:34
bool isgraph(char32_t c)
Definition: isgraph.hpp:38
diff --git a/islower_8hpp.html b/islower_8hpp.html index 9e1acb2..d63bccf 100644 --- a/islower_8hpp.html +++ b/islower_8hpp.html @@ -2,8 +2,8 @@ - - + + peelo-unicode: include/peelo/unicode/ctype/islower.hpp File Reference @@ -16,8 +16,8 @@
- - + @@ -26,15 +26,16 @@
+
peelo-unicode
- + +/* @license-end */ +

Go to the source code of this file.

- - + - + - +

+

Namespaces

 peelo
namespace  peelo
 
 peelo::unicode
namespace  peelo::unicode
 
 peelo::unicode::ctype
namespace  peelo::unicode::ctype
 
- @@ -70,7 +70,7 @@ diff --git a/islower_8hpp_source.html b/islower_8hpp_source.html index 1fd1467..dd108f4 100644 --- a/islower_8hpp_source.html +++ b/islower_8hpp_source.html @@ -2,8 +2,8 @@ - - + +peelo-unicode: include/peelo/unicode/ctype/islower.hpp Source File @@ -16,8 +16,8 @@

+

Functions

bool peelo::unicode::ctype::islower (char32_t c)
 
- - + @@ -26,15 +26,16 @@
+
peelo-unicode
- + +/* @license-end */ +
-
-
islower.hpp
+
islower.hpp
-Go to the documentation of this file.
1 /*
-
2  * Copyright (c) 2018-2024, peelo.net
-
3  * All rights reserved.
-
4  *
-
5  * Redistribution and use in source and binary forms, with or without
-
6  * modification, are permitted provided that the following conditions are met:
-
7  *
-
8  * * Redistributions of source code must retain the above copyright notice,
-
9  * this list of conditions and the following disclaimer.
-
10  *
-
11  * * Redistributions in binary form must reproduce the above copyright notice,
-
12  * this list of conditions and the following disclaimer in the documentation
-
13  * and/or other materials provided with the distribution.
-
14  *
-
15  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-
16  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-
17  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-
18  * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
-
19  * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-
20  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-
21  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-
22  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-
23  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-
24  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-
25  * POSSIBILITY OF SUCH DAMAGE.
-
26  */
-
27 #pragma once
-
28 
- -
30 
-
31 namespace peelo::unicode::ctype
-
32 {
-
36  inline bool
-
37  islower(char32_t c)
-
38  {
-
39  static const std::array<utils::range, 671> lower_table =
-
40  {{
-
41  { 0x0061, 0x007a, }, { 0x00aa, 0x00aa, }, { 0x00b5, 0x00b5, },
-
42  { 0x00ba, 0x00ba, }, { 0x00df, 0x00f6, }, { 0x00f8, 0x00ff, },
-
43  { 0x0101, 0x0101, }, { 0x0103, 0x0103, }, { 0x0105, 0x0105, },
-
44  { 0x0107, 0x0107, }, { 0x0109, 0x0109, }, { 0x010b, 0x010b, },
-
45  { 0x010d, 0x010d, }, { 0x010f, 0x010f, }, { 0x0111, 0x0111, },
-
46  { 0x0113, 0x0113, }, { 0x0115, 0x0115, }, { 0x0117, 0x0117, },
-
47  { 0x0119, 0x0119, }, { 0x011b, 0x011b, }, { 0x011d, 0x011d, },
-
48  { 0x011f, 0x011f, }, { 0x0121, 0x0121, }, { 0x0123, 0x0123, },
-
49  { 0x0125, 0x0125, }, { 0x0127, 0x0127, }, { 0x0129, 0x0129, },
-
50  { 0x012b, 0x012b, }, { 0x012d, 0x012d, }, { 0x012f, 0x012f, },
-
51  { 0x0131, 0x0131, }, { 0x0133, 0x0133, }, { 0x0135, 0x0135, },
-
52  { 0x0137, 0x0138, }, { 0x013a, 0x013a, }, { 0x013c, 0x013c, },
-
53  { 0x013e, 0x013e, }, { 0x0140, 0x0140, }, { 0x0142, 0x0142, },
-
54  { 0x0144, 0x0144, }, { 0x0146, 0x0146, }, { 0x0148, 0x0149, },
-
55  { 0x014b, 0x014b, }, { 0x014d, 0x014d, }, { 0x014f, 0x014f, },
-
56  { 0x0151, 0x0151, }, { 0x0153, 0x0153, }, { 0x0155, 0x0155, },
-
57  { 0x0157, 0x0157, }, { 0x0159, 0x0159, }, { 0x015b, 0x015b, },
-
58  { 0x015d, 0x015d, }, { 0x015f, 0x015f, }, { 0x0161, 0x0161, },
-
59  { 0x0163, 0x0163, }, { 0x0165, 0x0165, }, { 0x0167, 0x0167, },
-
60  { 0x0169, 0x0169, }, { 0x016b, 0x016b, }, { 0x016d, 0x016d, },
-
61  { 0x016f, 0x016f, }, { 0x0171, 0x0171, }, { 0x0173, 0x0173, },
-
62  { 0x0175, 0x0175, }, { 0x0177, 0x0177, }, { 0x017a, 0x017a, },
-
63  { 0x017c, 0x017c, }, { 0x017e, 0x0180, }, { 0x0183, 0x0183, },
-
64  { 0x0185, 0x0185, }, { 0x0188, 0x0188, }, { 0x018c, 0x018d, },
-
65  { 0x0192, 0x0192, }, { 0x0195, 0x0195, }, { 0x0199, 0x019b, },
-
66  { 0x019e, 0x019e, }, { 0x01a1, 0x01a1, }, { 0x01a3, 0x01a3, },
-
67  { 0x01a5, 0x01a5, }, { 0x01a8, 0x01a8, }, { 0x01aa, 0x01ab, },
-
68  { 0x01ad, 0x01ad, }, { 0x01b0, 0x01b0, }, { 0x01b4, 0x01b4, },
-
69  { 0x01b6, 0x01b6, }, { 0x01b9, 0x01ba, }, { 0x01bd, 0x01bf, },
-
70  { 0x01c6, 0x01c6, }, { 0x01c9, 0x01c9, }, { 0x01cc, 0x01cc, },
-
71  { 0x01ce, 0x01ce, }, { 0x01d0, 0x01d0, }, { 0x01d2, 0x01d2, },
-
72  { 0x01d4, 0x01d4, }, { 0x01d6, 0x01d6, }, { 0x01d8, 0x01d8, },
-
73  { 0x01da, 0x01da, }, { 0x01dc, 0x01dd, }, { 0x01df, 0x01df, },
-
74  { 0x01e1, 0x01e1, }, { 0x01e3, 0x01e3, }, { 0x01e5, 0x01e5, },
-
75  { 0x01e7, 0x01e7, }, { 0x01e9, 0x01e9, }, { 0x01eb, 0x01eb, },
-
76  { 0x01ed, 0x01ed, }, { 0x01ef, 0x01f0, }, { 0x01f3, 0x01f3, },
-
77  { 0x01f5, 0x01f5, }, { 0x01f9, 0x01f9, }, { 0x01fb, 0x01fb, },
-
78  { 0x01fd, 0x01fd, }, { 0x01ff, 0x01ff, }, { 0x0201, 0x0201, },
-
79  { 0x0203, 0x0203, }, { 0x0205, 0x0205, }, { 0x0207, 0x0207, },
-
80  { 0x0209, 0x0209, }, { 0x020b, 0x020b, }, { 0x020d, 0x020d, },
-
81  { 0x020f, 0x020f, }, { 0x0211, 0x0211, }, { 0x0213, 0x0213, },
-
82  { 0x0215, 0x0215, }, { 0x0217, 0x0217, }, { 0x0219, 0x0219, },
-
83  { 0x021b, 0x021b, }, { 0x021d, 0x021d, }, { 0x021f, 0x021f, },
-
84  { 0x0221, 0x0221, }, { 0x0223, 0x0223, }, { 0x0225, 0x0225, },
-
85  { 0x0227, 0x0227, }, { 0x0229, 0x0229, }, { 0x022b, 0x022b, },
-
86  { 0x022d, 0x022d, }, { 0x022f, 0x022f, }, { 0x0231, 0x0231, },
-
87  { 0x0233, 0x0239, }, { 0x023c, 0x023c, }, { 0x023f, 0x0240, },
-
88  { 0x0242, 0x0242, }, { 0x0247, 0x0247, }, { 0x0249, 0x0249, },
-
89  { 0x024b, 0x024b, }, { 0x024d, 0x024d, }, { 0x024f, 0x0293, },
-
90  { 0x0295, 0x02b8, }, { 0x02c0, 0x02c1, }, { 0x02e0, 0x02e4, },
-
91  { 0x0345, 0x0345, }, { 0x0371, 0x0371, }, { 0x0373, 0x0373, },
-
92  { 0x0377, 0x0377, }, { 0x037a, 0x037d, }, { 0x0390, 0x0390, },
-
93  { 0x03ac, 0x03ce, }, { 0x03d0, 0x03d1, }, { 0x03d5, 0x03d7, },
-
94  { 0x03d9, 0x03d9, }, { 0x03db, 0x03db, }, { 0x03dd, 0x03dd, },
-
95  { 0x03df, 0x03df, }, { 0x03e1, 0x03e1, }, { 0x03e3, 0x03e3, },
-
96  { 0x03e5, 0x03e5, }, { 0x03e7, 0x03e7, }, { 0x03e9, 0x03e9, },
-
97  { 0x03eb, 0x03eb, }, { 0x03ed, 0x03ed, }, { 0x03ef, 0x03f3, },
-
98  { 0x03f5, 0x03f5, }, { 0x03f8, 0x03f8, }, { 0x03fb, 0x03fc, },
-
99  { 0x0430, 0x045f, }, { 0x0461, 0x0461, }, { 0x0463, 0x0463, },
-
100  { 0x0465, 0x0465, }, { 0x0467, 0x0467, }, { 0x0469, 0x0469, },
-
101  { 0x046b, 0x046b, }, { 0x046d, 0x046d, }, { 0x046f, 0x046f, },
-
102  { 0x0471, 0x0471, }, { 0x0473, 0x0473, }, { 0x0475, 0x0475, },
-
103  { 0x0477, 0x0477, }, { 0x0479, 0x0479, }, { 0x047b, 0x047b, },
-
104  { 0x047d, 0x047d, }, { 0x047f, 0x047f, }, { 0x0481, 0x0481, },
-
105  { 0x048b, 0x048b, }, { 0x048d, 0x048d, }, { 0x048f, 0x048f, },
-
106  { 0x0491, 0x0491, }, { 0x0493, 0x0493, }, { 0x0495, 0x0495, },
-
107  { 0x0497, 0x0497, }, { 0x0499, 0x0499, }, { 0x049b, 0x049b, },
-
108  { 0x049d, 0x049d, }, { 0x049f, 0x049f, }, { 0x04a1, 0x04a1, },
-
109  { 0x04a3, 0x04a3, }, { 0x04a5, 0x04a5, }, { 0x04a7, 0x04a7, },
-
110  { 0x04a9, 0x04a9, }, { 0x04ab, 0x04ab, }, { 0x04ad, 0x04ad, },
-
111  { 0x04af, 0x04af, }, { 0x04b1, 0x04b1, }, { 0x04b3, 0x04b3, },
-
112  { 0x04b5, 0x04b5, }, { 0x04b7, 0x04b7, }, { 0x04b9, 0x04b9, },
-
113  { 0x04bb, 0x04bb, }, { 0x04bd, 0x04bd, }, { 0x04bf, 0x04bf, },
-
114  { 0x04c2, 0x04c2, }, { 0x04c4, 0x04c4, }, { 0x04c6, 0x04c6, },
-
115  { 0x04c8, 0x04c8, }, { 0x04ca, 0x04ca, }, { 0x04cc, 0x04cc, },
-
116  { 0x04ce, 0x04cf, }, { 0x04d1, 0x04d1, }, { 0x04d3, 0x04d3, },
-
117  { 0x04d5, 0x04d5, }, { 0x04d7, 0x04d7, }, { 0x04d9, 0x04d9, },
-
118  { 0x04db, 0x04db, }, { 0x04dd, 0x04dd, }, { 0x04df, 0x04df, },
-
119  { 0x04e1, 0x04e1, }, { 0x04e3, 0x04e3, }, { 0x04e5, 0x04e5, },
-
120  { 0x04e7, 0x04e7, }, { 0x04e9, 0x04e9, }, { 0x04eb, 0x04eb, },
-
121  { 0x04ed, 0x04ed, }, { 0x04ef, 0x04ef, }, { 0x04f1, 0x04f1, },
-
122  { 0x04f3, 0x04f3, }, { 0x04f5, 0x04f5, }, { 0x04f7, 0x04f7, },
-
123  { 0x04f9, 0x04f9, }, { 0x04fb, 0x04fb, }, { 0x04fd, 0x04fd, },
-
124  { 0x04ff, 0x04ff, }, { 0x0501, 0x0501, }, { 0x0503, 0x0503, },
-
125  { 0x0505, 0x0505, }, { 0x0507, 0x0507, }, { 0x0509, 0x0509, },
-
126  { 0x050b, 0x050b, }, { 0x050d, 0x050d, }, { 0x050f, 0x050f, },
-
127  { 0x0511, 0x0511, }, { 0x0513, 0x0513, }, { 0x0515, 0x0515, },
-
128  { 0x0517, 0x0517, }, { 0x0519, 0x0519, }, { 0x051b, 0x051b, },
-
129  { 0x051d, 0x051d, }, { 0x051f, 0x051f, }, { 0x0521, 0x0521, },
-
130  { 0x0523, 0x0523, }, { 0x0525, 0x0525, }, { 0x0527, 0x0527, },
-
131  { 0x0529, 0x0529, }, { 0x052b, 0x052b, }, { 0x052d, 0x052d, },
-
132  { 0x052f, 0x052f, }, { 0x0560, 0x0588, }, { 0x10d0, 0x10fa, },
-
133  { 0x10fc, 0x10ff, }, { 0x13f8, 0x13fd, }, { 0x1c80, 0x1c88, },
-
134  { 0x1d00, 0x1dbf, }, { 0x1e01, 0x1e01, }, { 0x1e03, 0x1e03, },
-
135  { 0x1e05, 0x1e05, }, { 0x1e07, 0x1e07, }, { 0x1e09, 0x1e09, },
-
136  { 0x1e0b, 0x1e0b, }, { 0x1e0d, 0x1e0d, }, { 0x1e0f, 0x1e0f, },
-
137  { 0x1e11, 0x1e11, }, { 0x1e13, 0x1e13, }, { 0x1e15, 0x1e15, },
-
138  { 0x1e17, 0x1e17, }, { 0x1e19, 0x1e19, }, { 0x1e1b, 0x1e1b, },
-
139  { 0x1e1d, 0x1e1d, }, { 0x1e1f, 0x1e1f, }, { 0x1e21, 0x1e21, },
-
140  { 0x1e23, 0x1e23, }, { 0x1e25, 0x1e25, }, { 0x1e27, 0x1e27, },
-
141  { 0x1e29, 0x1e29, }, { 0x1e2b, 0x1e2b, }, { 0x1e2d, 0x1e2d, },
-
142  { 0x1e2f, 0x1e2f, }, { 0x1e31, 0x1e31, }, { 0x1e33, 0x1e33, },
-
143  { 0x1e35, 0x1e35, }, { 0x1e37, 0x1e37, }, { 0x1e39, 0x1e39, },
-
144  { 0x1e3b, 0x1e3b, }, { 0x1e3d, 0x1e3d, }, { 0x1e3f, 0x1e3f, },
-
145  { 0x1e41, 0x1e41, }, { 0x1e43, 0x1e43, }, { 0x1e45, 0x1e45, },
-
146  { 0x1e47, 0x1e47, }, { 0x1e49, 0x1e49, }, { 0x1e4b, 0x1e4b, },
-
147  { 0x1e4d, 0x1e4d, }, { 0x1e4f, 0x1e4f, }, { 0x1e51, 0x1e51, },
-
148  { 0x1e53, 0x1e53, }, { 0x1e55, 0x1e55, }, { 0x1e57, 0x1e57, },
-
149  { 0x1e59, 0x1e59, }, { 0x1e5b, 0x1e5b, }, { 0x1e5d, 0x1e5d, },
-
150  { 0x1e5f, 0x1e5f, }, { 0x1e61, 0x1e61, }, { 0x1e63, 0x1e63, },
-
151  { 0x1e65, 0x1e65, }, { 0x1e67, 0x1e67, }, { 0x1e69, 0x1e69, },
-
152  { 0x1e6b, 0x1e6b, }, { 0x1e6d, 0x1e6d, }, { 0x1e6f, 0x1e6f, },
-
153  { 0x1e71, 0x1e71, }, { 0x1e73, 0x1e73, }, { 0x1e75, 0x1e75, },
-
154  { 0x1e77, 0x1e77, }, { 0x1e79, 0x1e79, }, { 0x1e7b, 0x1e7b, },
-
155  { 0x1e7d, 0x1e7d, }, { 0x1e7f, 0x1e7f, }, { 0x1e81, 0x1e81, },
-
156  { 0x1e83, 0x1e83, }, { 0x1e85, 0x1e85, }, { 0x1e87, 0x1e87, },
-
157  { 0x1e89, 0x1e89, }, { 0x1e8b, 0x1e8b, }, { 0x1e8d, 0x1e8d, },
-
158  { 0x1e8f, 0x1e8f, }, { 0x1e91, 0x1e91, }, { 0x1e93, 0x1e93, },
-
159  { 0x1e95, 0x1e9d, }, { 0x1e9f, 0x1e9f, }, { 0x1ea1, 0x1ea1, },
-
160  { 0x1ea3, 0x1ea3, }, { 0x1ea5, 0x1ea5, }, { 0x1ea7, 0x1ea7, },
-
161  { 0x1ea9, 0x1ea9, }, { 0x1eab, 0x1eab, }, { 0x1ead, 0x1ead, },
-
162  { 0x1eaf, 0x1eaf, }, { 0x1eb1, 0x1eb1, }, { 0x1eb3, 0x1eb3, },
-
163  { 0x1eb5, 0x1eb5, }, { 0x1eb7, 0x1eb7, }, { 0x1eb9, 0x1eb9, },
-
164  { 0x1ebb, 0x1ebb, }, { 0x1ebd, 0x1ebd, }, { 0x1ebf, 0x1ebf, },
-
165  { 0x1ec1, 0x1ec1, }, { 0x1ec3, 0x1ec3, }, { 0x1ec5, 0x1ec5, },
-
166  { 0x1ec7, 0x1ec7, }, { 0x1ec9, 0x1ec9, }, { 0x1ecb, 0x1ecb, },
-
167  { 0x1ecd, 0x1ecd, }, { 0x1ecf, 0x1ecf, }, { 0x1ed1, 0x1ed1, },
-
168  { 0x1ed3, 0x1ed3, }, { 0x1ed5, 0x1ed5, }, { 0x1ed7, 0x1ed7, },
-
169  { 0x1ed9, 0x1ed9, }, { 0x1edb, 0x1edb, }, { 0x1edd, 0x1edd, },
-
170  { 0x1edf, 0x1edf, }, { 0x1ee1, 0x1ee1, }, { 0x1ee3, 0x1ee3, },
-
171  { 0x1ee5, 0x1ee5, }, { 0x1ee7, 0x1ee7, }, { 0x1ee9, 0x1ee9, },
-
172  { 0x1eeb, 0x1eeb, }, { 0x1eed, 0x1eed, }, { 0x1eef, 0x1eef, },
-
173  { 0x1ef1, 0x1ef1, }, { 0x1ef3, 0x1ef3, }, { 0x1ef5, 0x1ef5, },
-
174  { 0x1ef7, 0x1ef7, }, { 0x1ef9, 0x1ef9, }, { 0x1efb, 0x1efb, },
-
175  { 0x1efd, 0x1efd, }, { 0x1eff, 0x1f07, }, { 0x1f10, 0x1f15, },
-
176  { 0x1f20, 0x1f27, }, { 0x1f30, 0x1f37, }, { 0x1f40, 0x1f45, },
-
177  { 0x1f50, 0x1f57, }, { 0x1f60, 0x1f67, }, { 0x1f70, 0x1f7d, },
-
178  { 0x1f80, 0x1f87, }, { 0x1f90, 0x1f97, }, { 0x1fa0, 0x1fa7, },
-
179  { 0x1fb0, 0x1fb4, }, { 0x1fb6, 0x1fb7, }, { 0x1fbe, 0x1fbe, },
-
180  { 0x1fc2, 0x1fc4, }, { 0x1fc6, 0x1fc7, }, { 0x1fd0, 0x1fd3, },
-
181  { 0x1fd6, 0x1fd7, }, { 0x1fe0, 0x1fe7, }, { 0x1ff2, 0x1ff4, },
-
182  { 0x1ff6, 0x1ff7, }, { 0x2071, 0x2071, }, { 0x207f, 0x207f, },
-
183  { 0x2090, 0x209c, }, { 0x210a, 0x210a, }, { 0x210e, 0x210f, },
-
184  { 0x2113, 0x2113, }, { 0x212f, 0x212f, }, { 0x2134, 0x2134, },
-
185  { 0x2139, 0x2139, }, { 0x213c, 0x213d, }, { 0x2146, 0x2149, },
-
186  { 0x214e, 0x214e, }, { 0x2170, 0x217f, }, { 0x2184, 0x2184, },
-
187  { 0x24d0, 0x24e9, }, { 0x2c30, 0x2c5f, }, { 0x2c61, 0x2c61, },
-
188  { 0x2c65, 0x2c66, }, { 0x2c68, 0x2c68, }, { 0x2c6a, 0x2c6a, },
-
189  { 0x2c6c, 0x2c6c, }, { 0x2c71, 0x2c71, }, { 0x2c73, 0x2c74, },
-
190  { 0x2c76, 0x2c7d, }, { 0x2c81, 0x2c81, }, { 0x2c83, 0x2c83, },
-
191  { 0x2c85, 0x2c85, }, { 0x2c87, 0x2c87, }, { 0x2c89, 0x2c89, },
-
192  { 0x2c8b, 0x2c8b, }, { 0x2c8d, 0x2c8d, }, { 0x2c8f, 0x2c8f, },
-
193  { 0x2c91, 0x2c91, }, { 0x2c93, 0x2c93, }, { 0x2c95, 0x2c95, },
-
194  { 0x2c97, 0x2c97, }, { 0x2c99, 0x2c99, }, { 0x2c9b, 0x2c9b, },
-
195  { 0x2c9d, 0x2c9d, }, { 0x2c9f, 0x2c9f, }, { 0x2ca1, 0x2ca1, },
-
196  { 0x2ca3, 0x2ca3, }, { 0x2ca5, 0x2ca5, }, { 0x2ca7, 0x2ca7, },
-
197  { 0x2ca9, 0x2ca9, }, { 0x2cab, 0x2cab, }, { 0x2cad, 0x2cad, },
-
198  { 0x2caf, 0x2caf, }, { 0x2cb1, 0x2cb1, }, { 0x2cb3, 0x2cb3, },
-
199  { 0x2cb5, 0x2cb5, }, { 0x2cb7, 0x2cb7, }, { 0x2cb9, 0x2cb9, },
-
200  { 0x2cbb, 0x2cbb, }, { 0x2cbd, 0x2cbd, }, { 0x2cbf, 0x2cbf, },
-
201  { 0x2cc1, 0x2cc1, }, { 0x2cc3, 0x2cc3, }, { 0x2cc5, 0x2cc5, },
-
202  { 0x2cc7, 0x2cc7, }, { 0x2cc9, 0x2cc9, }, { 0x2ccb, 0x2ccb, },
-
203  { 0x2ccd, 0x2ccd, }, { 0x2ccf, 0x2ccf, }, { 0x2cd1, 0x2cd1, },
-
204  { 0x2cd3, 0x2cd3, }, { 0x2cd5, 0x2cd5, }, { 0x2cd7, 0x2cd7, },
-
205  { 0x2cd9, 0x2cd9, }, { 0x2cdb, 0x2cdb, }, { 0x2cdd, 0x2cdd, },
-
206  { 0x2cdf, 0x2cdf, }, { 0x2ce1, 0x2ce1, }, { 0x2ce3, 0x2ce4, },
-
207  { 0x2cec, 0x2cec, }, { 0x2cee, 0x2cee, }, { 0x2cf3, 0x2cf3, },
-
208  { 0x2d00, 0x2d25, }, { 0x2d27, 0x2d27, }, { 0x2d2d, 0x2d2d, },
-
209  { 0xa641, 0xa641, }, { 0xa643, 0xa643, }, { 0xa645, 0xa645, },
-
210  { 0xa647, 0xa647, }, { 0xa649, 0xa649, }, { 0xa64b, 0xa64b, },
-
211  { 0xa64d, 0xa64d, }, { 0xa64f, 0xa64f, }, { 0xa651, 0xa651, },
-
212  { 0xa653, 0xa653, }, { 0xa655, 0xa655, }, { 0xa657, 0xa657, },
-
213  { 0xa659, 0xa659, }, { 0xa65b, 0xa65b, }, { 0xa65d, 0xa65d, },
-
214  { 0xa65f, 0xa65f, }, { 0xa661, 0xa661, }, { 0xa663, 0xa663, },
-
215  { 0xa665, 0xa665, }, { 0xa667, 0xa667, }, { 0xa669, 0xa669, },
-
216  { 0xa66b, 0xa66b, }, { 0xa66d, 0xa66d, }, { 0xa681, 0xa681, },
-
217  { 0xa683, 0xa683, }, { 0xa685, 0xa685, }, { 0xa687, 0xa687, },
-
218  { 0xa689, 0xa689, }, { 0xa68b, 0xa68b, }, { 0xa68d, 0xa68d, },
-
219  { 0xa68f, 0xa68f, }, { 0xa691, 0xa691, }, { 0xa693, 0xa693, },
-
220  { 0xa695, 0xa695, }, { 0xa697, 0xa697, }, { 0xa699, 0xa699, },
-
221  { 0xa69b, 0xa69d, }, { 0xa723, 0xa723, }, { 0xa725, 0xa725, },
-
222  { 0xa727, 0xa727, }, { 0xa729, 0xa729, }, { 0xa72b, 0xa72b, },
-
223  { 0xa72d, 0xa72d, }, { 0xa72f, 0xa731, }, { 0xa733, 0xa733, },
-
224  { 0xa735, 0xa735, }, { 0xa737, 0xa737, }, { 0xa739, 0xa739, },
-
225  { 0xa73b, 0xa73b, }, { 0xa73d, 0xa73d, }, { 0xa73f, 0xa73f, },
-
226  { 0xa741, 0xa741, }, { 0xa743, 0xa743, }, { 0xa745, 0xa745, },
-
227  { 0xa747, 0xa747, }, { 0xa749, 0xa749, }, { 0xa74b, 0xa74b, },
-
228  { 0xa74d, 0xa74d, }, { 0xa74f, 0xa74f, }, { 0xa751, 0xa751, },
-
229  { 0xa753, 0xa753, }, { 0xa755, 0xa755, }, { 0xa757, 0xa757, },
-
230  { 0xa759, 0xa759, }, { 0xa75b, 0xa75b, }, { 0xa75d, 0xa75d, },
-
231  { 0xa75f, 0xa75f, }, { 0xa761, 0xa761, }, { 0xa763, 0xa763, },
-
232  { 0xa765, 0xa765, }, { 0xa767, 0xa767, }, { 0xa769, 0xa769, },
-
233  { 0xa76b, 0xa76b, }, { 0xa76d, 0xa76d, }, { 0xa76f, 0xa778, },
-
234  { 0xa77a, 0xa77a, }, { 0xa77c, 0xa77c, }, { 0xa77f, 0xa77f, },
-
235  { 0xa781, 0xa781, }, { 0xa783, 0xa783, }, { 0xa785, 0xa785, },
-
236  { 0xa787, 0xa787, }, { 0xa78c, 0xa78c, }, { 0xa78e, 0xa78e, },
-
237  { 0xa791, 0xa791, }, { 0xa793, 0xa795, }, { 0xa797, 0xa797, },
-
238  { 0xa799, 0xa799, }, { 0xa79b, 0xa79b, }, { 0xa79d, 0xa79d, },
-
239  { 0xa79f, 0xa79f, }, { 0xa7a1, 0xa7a1, }, { 0xa7a3, 0xa7a3, },
-
240  { 0xa7a5, 0xa7a5, }, { 0xa7a7, 0xa7a7, }, { 0xa7a9, 0xa7a9, },
-
241  { 0xa7af, 0xa7af, }, { 0xa7b5, 0xa7b5, }, { 0xa7b7, 0xa7b7, },
-
242  { 0xa7b9, 0xa7b9, }, { 0xa7bb, 0xa7bb, }, { 0xa7bd, 0xa7bd, },
-
243  { 0xa7bf, 0xa7bf, }, { 0xa7c1, 0xa7c1, }, { 0xa7c3, 0xa7c3, },
-
244  { 0xa7c8, 0xa7c8, }, { 0xa7ca, 0xa7ca, }, { 0xa7d1, 0xa7d1, },
-
245  { 0xa7d3, 0xa7d3, }, { 0xa7d5, 0xa7d5, }, { 0xa7d7, 0xa7d7, },
-
246  { 0xa7d9, 0xa7d9, }, { 0xa7f2, 0xa7f4, }, { 0xa7f6, 0xa7f6, },
-
247  { 0xa7f8, 0xa7fa, }, { 0xab30, 0xab5a, }, { 0xab5c, 0xab69, },
-
248  { 0xab70, 0xabbf, }, { 0xfb00, 0xfb06, }, { 0xfb13, 0xfb17, },
-
249  { 0xff41, 0xff5a, }, { 0x10428, 0x1044f, }, { 0x104d8, 0x104fb, },
-
250  { 0x10597, 0x105a1, }, { 0x105a3, 0x105b1, }, { 0x105b3, 0x105b9, },
-
251  { 0x105bb, 0x105bc, }, { 0x10780, 0x10780, }, { 0x10783, 0x10785, },
-
252  { 0x10787, 0x107b0, }, { 0x107b2, 0x107ba, }, { 0x10cc0, 0x10cf2, },
-
253  { 0x118c0, 0x118df, }, { 0x16e60, 0x16e7f, }, { 0x1d41a, 0x1d433, },
-
254  { 0x1d44e, 0x1d454, }, { 0x1d456, 0x1d467, }, { 0x1d482, 0x1d49b, },
-
255  { 0x1d4b6, 0x1d4b9, }, { 0x1d4bb, 0x1d4bb, }, { 0x1d4bd, 0x1d4c3, },
-
256  { 0x1d4c5, 0x1d4cf, }, { 0x1d4ea, 0x1d503, }, { 0x1d51e, 0x1d537, },
-
257  { 0x1d552, 0x1d56b, }, { 0x1d586, 0x1d59f, }, { 0x1d5ba, 0x1d5d3, },
-
258  { 0x1d5ee, 0x1d607, }, { 0x1d622, 0x1d63b, }, { 0x1d656, 0x1d66f, },
-
259  { 0x1d68a, 0x1d6a5, }, { 0x1d6c2, 0x1d6da, }, { 0x1d6dc, 0x1d6e1, },
-
260  { 0x1d6fc, 0x1d714, }, { 0x1d716, 0x1d71b, }, { 0x1d736, 0x1d74e, },
-
261  { 0x1d750, 0x1d755, }, { 0x1d770, 0x1d788, }, { 0x1d78a, 0x1d78f, },
-
262  { 0x1d7aa, 0x1d7c2, }, { 0x1d7c4, 0x1d7c9, }, { 0x1d7cb, 0x1d7cb, },
-
263  { 0x1df00, 0x1df09, }, { 0x1df0b, 0x1df1e, }, { 0x1df25, 0x1df2a, },
-
264  { 0x1e030, 0x1e06d, }, { 0x1e922, 0x1e943, },
-
265  }};
-
266 
-
267  return utils::table_lookup(lower_table, c);
-
268  }
-
269 }
+Go to the documentation of this file.
1/*
+
2 * Copyright (c) 2018-2024, peelo.net
+
3 * All rights reserved.
+
4 *
+
5 * Redistribution and use in source and binary forms, with or without
+
6 * modification, are permitted provided that the following conditions are met:
+
7 *
+
8 * * Redistributions of source code must retain the above copyright notice,
+
9 * this list of conditions and the following disclaimer.
+
10 *
+
11 * * Redistributions in binary form must reproduce the above copyright notice,
+
12 * this list of conditions and the following disclaimer in the documentation
+
13 * and/or other materials provided with the distribution.
+
14 *
+
15 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+
16 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+
17 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+
18 * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
+
19 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+
20 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+
21 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+
22 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+
23 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+
24 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+
25 * POSSIBILITY OF SUCH DAMAGE.
+
26 */
+
27#pragma once
+
28
+ +
30
+ +
32{
+
36 inline bool
+
37 islower(char32_t c)
+
38 {
+
39 static const std::array<utils::range, 671> lower_table =
+
40 {{
+
41 { 0x0061, 0x007a, }, { 0x00aa, 0x00aa, }, { 0x00b5, 0x00b5, },
+
42 { 0x00ba, 0x00ba, }, { 0x00df, 0x00f6, }, { 0x00f8, 0x00ff, },
+
43 { 0x0101, 0x0101, }, { 0x0103, 0x0103, }, { 0x0105, 0x0105, },
+
44 { 0x0107, 0x0107, }, { 0x0109, 0x0109, }, { 0x010b, 0x010b, },
+
45 { 0x010d, 0x010d, }, { 0x010f, 0x010f, }, { 0x0111, 0x0111, },
+
46 { 0x0113, 0x0113, }, { 0x0115, 0x0115, }, { 0x0117, 0x0117, },
+
47 { 0x0119, 0x0119, }, { 0x011b, 0x011b, }, { 0x011d, 0x011d, },
+
48 { 0x011f, 0x011f, }, { 0x0121, 0x0121, }, { 0x0123, 0x0123, },
+
49 { 0x0125, 0x0125, }, { 0x0127, 0x0127, }, { 0x0129, 0x0129, },
+
50 { 0x012b, 0x012b, }, { 0x012d, 0x012d, }, { 0x012f, 0x012f, },
+
51 { 0x0131, 0x0131, }, { 0x0133, 0x0133, }, { 0x0135, 0x0135, },
+
52 { 0x0137, 0x0138, }, { 0x013a, 0x013a, }, { 0x013c, 0x013c, },
+
53 { 0x013e, 0x013e, }, { 0x0140, 0x0140, }, { 0x0142, 0x0142, },
+
54 { 0x0144, 0x0144, }, { 0x0146, 0x0146, }, { 0x0148, 0x0149, },
+
55 { 0x014b, 0x014b, }, { 0x014d, 0x014d, }, { 0x014f, 0x014f, },
+
56 { 0x0151, 0x0151, }, { 0x0153, 0x0153, }, { 0x0155, 0x0155, },
+
57 { 0x0157, 0x0157, }, { 0x0159, 0x0159, }, { 0x015b, 0x015b, },
+
58 { 0x015d, 0x015d, }, { 0x015f, 0x015f, }, { 0x0161, 0x0161, },
+
59 { 0x0163, 0x0163, }, { 0x0165, 0x0165, }, { 0x0167, 0x0167, },
+
60 { 0x0169, 0x0169, }, { 0x016b, 0x016b, }, { 0x016d, 0x016d, },
+
61 { 0x016f, 0x016f, }, { 0x0171, 0x0171, }, { 0x0173, 0x0173, },
+
62 { 0x0175, 0x0175, }, { 0x0177, 0x0177, }, { 0x017a, 0x017a, },
+
63 { 0x017c, 0x017c, }, { 0x017e, 0x0180, }, { 0x0183, 0x0183, },
+
64 { 0x0185, 0x0185, }, { 0x0188, 0x0188, }, { 0x018c, 0x018d, },
+
65 { 0x0192, 0x0192, }, { 0x0195, 0x0195, }, { 0x0199, 0x019b, },
+
66 { 0x019e, 0x019e, }, { 0x01a1, 0x01a1, }, { 0x01a3, 0x01a3, },
+
67 { 0x01a5, 0x01a5, }, { 0x01a8, 0x01a8, }, { 0x01aa, 0x01ab, },
+
68 { 0x01ad, 0x01ad, }, { 0x01b0, 0x01b0, }, { 0x01b4, 0x01b4, },
+
69 { 0x01b6, 0x01b6, }, { 0x01b9, 0x01ba, }, { 0x01bd, 0x01bf, },
+
70 { 0x01c6, 0x01c6, }, { 0x01c9, 0x01c9, }, { 0x01cc, 0x01cc, },
+
71 { 0x01ce, 0x01ce, }, { 0x01d0, 0x01d0, }, { 0x01d2, 0x01d2, },
+
72 { 0x01d4, 0x01d4, }, { 0x01d6, 0x01d6, }, { 0x01d8, 0x01d8, },
+
73 { 0x01da, 0x01da, }, { 0x01dc, 0x01dd, }, { 0x01df, 0x01df, },
+
74 { 0x01e1, 0x01e1, }, { 0x01e3, 0x01e3, }, { 0x01e5, 0x01e5, },
+
75 { 0x01e7, 0x01e7, }, { 0x01e9, 0x01e9, }, { 0x01eb, 0x01eb, },
+
76 { 0x01ed, 0x01ed, }, { 0x01ef, 0x01f0, }, { 0x01f3, 0x01f3, },
+
77 { 0x01f5, 0x01f5, }, { 0x01f9, 0x01f9, }, { 0x01fb, 0x01fb, },
+
78 { 0x01fd, 0x01fd, }, { 0x01ff, 0x01ff, }, { 0x0201, 0x0201, },
+
79 { 0x0203, 0x0203, }, { 0x0205, 0x0205, }, { 0x0207, 0x0207, },
+
80 { 0x0209, 0x0209, }, { 0x020b, 0x020b, }, { 0x020d, 0x020d, },
+
81 { 0x020f, 0x020f, }, { 0x0211, 0x0211, }, { 0x0213, 0x0213, },
+
82 { 0x0215, 0x0215, }, { 0x0217, 0x0217, }, { 0x0219, 0x0219, },
+
83 { 0x021b, 0x021b, }, { 0x021d, 0x021d, }, { 0x021f, 0x021f, },
+
84 { 0x0221, 0x0221, }, { 0x0223, 0x0223, }, { 0x0225, 0x0225, },
+
85 { 0x0227, 0x0227, }, { 0x0229, 0x0229, }, { 0x022b, 0x022b, },
+
86 { 0x022d, 0x022d, }, { 0x022f, 0x022f, }, { 0x0231, 0x0231, },
+
87 { 0x0233, 0x0239, }, { 0x023c, 0x023c, }, { 0x023f, 0x0240, },
+
88 { 0x0242, 0x0242, }, { 0x0247, 0x0247, }, { 0x0249, 0x0249, },
+
89 { 0x024b, 0x024b, }, { 0x024d, 0x024d, }, { 0x024f, 0x0293, },
+
90 { 0x0295, 0x02b8, }, { 0x02c0, 0x02c1, }, { 0x02e0, 0x02e4, },
+
91 { 0x0345, 0x0345, }, { 0x0371, 0x0371, }, { 0x0373, 0x0373, },
+
92 { 0x0377, 0x0377, }, { 0x037a, 0x037d, }, { 0x0390, 0x0390, },
+
93 { 0x03ac, 0x03ce, }, { 0x03d0, 0x03d1, }, { 0x03d5, 0x03d7, },
+
94 { 0x03d9, 0x03d9, }, { 0x03db, 0x03db, }, { 0x03dd, 0x03dd, },
+
95 { 0x03df, 0x03df, }, { 0x03e1, 0x03e1, }, { 0x03e3, 0x03e3, },
+
96 { 0x03e5, 0x03e5, }, { 0x03e7, 0x03e7, }, { 0x03e9, 0x03e9, },
+
97 { 0x03eb, 0x03eb, }, { 0x03ed, 0x03ed, }, { 0x03ef, 0x03f3, },
+
98 { 0x03f5, 0x03f5, }, { 0x03f8, 0x03f8, }, { 0x03fb, 0x03fc, },
+
99 { 0x0430, 0x045f, }, { 0x0461, 0x0461, }, { 0x0463, 0x0463, },
+
100 { 0x0465, 0x0465, }, { 0x0467, 0x0467, }, { 0x0469, 0x0469, },
+
101 { 0x046b, 0x046b, }, { 0x046d, 0x046d, }, { 0x046f, 0x046f, },
+
102 { 0x0471, 0x0471, }, { 0x0473, 0x0473, }, { 0x0475, 0x0475, },
+
103 { 0x0477, 0x0477, }, { 0x0479, 0x0479, }, { 0x047b, 0x047b, },
+
104 { 0x047d, 0x047d, }, { 0x047f, 0x047f, }, { 0x0481, 0x0481, },
+
105 { 0x048b, 0x048b, }, { 0x048d, 0x048d, }, { 0x048f, 0x048f, },
+
106 { 0x0491, 0x0491, }, { 0x0493, 0x0493, }, { 0x0495, 0x0495, },
+
107 { 0x0497, 0x0497, }, { 0x0499, 0x0499, }, { 0x049b, 0x049b, },
+
108 { 0x049d, 0x049d, }, { 0x049f, 0x049f, }, { 0x04a1, 0x04a1, },
+
109 { 0x04a3, 0x04a3, }, { 0x04a5, 0x04a5, }, { 0x04a7, 0x04a7, },
+
110 { 0x04a9, 0x04a9, }, { 0x04ab, 0x04ab, }, { 0x04ad, 0x04ad, },
+
111 { 0x04af, 0x04af, }, { 0x04b1, 0x04b1, }, { 0x04b3, 0x04b3, },
+
112 { 0x04b5, 0x04b5, }, { 0x04b7, 0x04b7, }, { 0x04b9, 0x04b9, },
+
113 { 0x04bb, 0x04bb, }, { 0x04bd, 0x04bd, }, { 0x04bf, 0x04bf, },
+
114 { 0x04c2, 0x04c2, }, { 0x04c4, 0x04c4, }, { 0x04c6, 0x04c6, },
+
115 { 0x04c8, 0x04c8, }, { 0x04ca, 0x04ca, }, { 0x04cc, 0x04cc, },
+
116 { 0x04ce, 0x04cf, }, { 0x04d1, 0x04d1, }, { 0x04d3, 0x04d3, },
+
117 { 0x04d5, 0x04d5, }, { 0x04d7, 0x04d7, }, { 0x04d9, 0x04d9, },
+
118 { 0x04db, 0x04db, }, { 0x04dd, 0x04dd, }, { 0x04df, 0x04df, },
+
119 { 0x04e1, 0x04e1, }, { 0x04e3, 0x04e3, }, { 0x04e5, 0x04e5, },
+
120 { 0x04e7, 0x04e7, }, { 0x04e9, 0x04e9, }, { 0x04eb, 0x04eb, },
+
121 { 0x04ed, 0x04ed, }, { 0x04ef, 0x04ef, }, { 0x04f1, 0x04f1, },
+
122 { 0x04f3, 0x04f3, }, { 0x04f5, 0x04f5, }, { 0x04f7, 0x04f7, },
+
123 { 0x04f9, 0x04f9, }, { 0x04fb, 0x04fb, }, { 0x04fd, 0x04fd, },
+
124 { 0x04ff, 0x04ff, }, { 0x0501, 0x0501, }, { 0x0503, 0x0503, },
+
125 { 0x0505, 0x0505, }, { 0x0507, 0x0507, }, { 0x0509, 0x0509, },
+
126 { 0x050b, 0x050b, }, { 0x050d, 0x050d, }, { 0x050f, 0x050f, },
+
127 { 0x0511, 0x0511, }, { 0x0513, 0x0513, }, { 0x0515, 0x0515, },
+
128 { 0x0517, 0x0517, }, { 0x0519, 0x0519, }, { 0x051b, 0x051b, },
+
129 { 0x051d, 0x051d, }, { 0x051f, 0x051f, }, { 0x0521, 0x0521, },
+
130 { 0x0523, 0x0523, }, { 0x0525, 0x0525, }, { 0x0527, 0x0527, },
+
131 { 0x0529, 0x0529, }, { 0x052b, 0x052b, }, { 0x052d, 0x052d, },
+
132 { 0x052f, 0x052f, }, { 0x0560, 0x0588, }, { 0x10d0, 0x10fa, },
+
133 { 0x10fc, 0x10ff, }, { 0x13f8, 0x13fd, }, { 0x1c80, 0x1c88, },
+
134 { 0x1d00, 0x1dbf, }, { 0x1e01, 0x1e01, }, { 0x1e03, 0x1e03, },
+
135 { 0x1e05, 0x1e05, }, { 0x1e07, 0x1e07, }, { 0x1e09, 0x1e09, },
+
136 { 0x1e0b, 0x1e0b, }, { 0x1e0d, 0x1e0d, }, { 0x1e0f, 0x1e0f, },
+
137 { 0x1e11, 0x1e11, }, { 0x1e13, 0x1e13, }, { 0x1e15, 0x1e15, },
+
138 { 0x1e17, 0x1e17, }, { 0x1e19, 0x1e19, }, { 0x1e1b, 0x1e1b, },
+
139 { 0x1e1d, 0x1e1d, }, { 0x1e1f, 0x1e1f, }, { 0x1e21, 0x1e21, },
+
140 { 0x1e23, 0x1e23, }, { 0x1e25, 0x1e25, }, { 0x1e27, 0x1e27, },
+
141 { 0x1e29, 0x1e29, }, { 0x1e2b, 0x1e2b, }, { 0x1e2d, 0x1e2d, },
+
142 { 0x1e2f, 0x1e2f, }, { 0x1e31, 0x1e31, }, { 0x1e33, 0x1e33, },
+
143 { 0x1e35, 0x1e35, }, { 0x1e37, 0x1e37, }, { 0x1e39, 0x1e39, },
+
144 { 0x1e3b, 0x1e3b, }, { 0x1e3d, 0x1e3d, }, { 0x1e3f, 0x1e3f, },
+
145 { 0x1e41, 0x1e41, }, { 0x1e43, 0x1e43, }, { 0x1e45, 0x1e45, },
+
146 { 0x1e47, 0x1e47, }, { 0x1e49, 0x1e49, }, { 0x1e4b, 0x1e4b, },
+
147 { 0x1e4d, 0x1e4d, }, { 0x1e4f, 0x1e4f, }, { 0x1e51, 0x1e51, },
+
148 { 0x1e53, 0x1e53, }, { 0x1e55, 0x1e55, }, { 0x1e57, 0x1e57, },
+
149 { 0x1e59, 0x1e59, }, { 0x1e5b, 0x1e5b, }, { 0x1e5d, 0x1e5d, },
+
150 { 0x1e5f, 0x1e5f, }, { 0x1e61, 0x1e61, }, { 0x1e63, 0x1e63, },
+
151 { 0x1e65, 0x1e65, }, { 0x1e67, 0x1e67, }, { 0x1e69, 0x1e69, },
+
152 { 0x1e6b, 0x1e6b, }, { 0x1e6d, 0x1e6d, }, { 0x1e6f, 0x1e6f, },
+
153 { 0x1e71, 0x1e71, }, { 0x1e73, 0x1e73, }, { 0x1e75, 0x1e75, },
+
154 { 0x1e77, 0x1e77, }, { 0x1e79, 0x1e79, }, { 0x1e7b, 0x1e7b, },
+
155 { 0x1e7d, 0x1e7d, }, { 0x1e7f, 0x1e7f, }, { 0x1e81, 0x1e81, },
+
156 { 0x1e83, 0x1e83, }, { 0x1e85, 0x1e85, }, { 0x1e87, 0x1e87, },
+
157 { 0x1e89, 0x1e89, }, { 0x1e8b, 0x1e8b, }, { 0x1e8d, 0x1e8d, },
+
158 { 0x1e8f, 0x1e8f, }, { 0x1e91, 0x1e91, }, { 0x1e93, 0x1e93, },
+
159 { 0x1e95, 0x1e9d, }, { 0x1e9f, 0x1e9f, }, { 0x1ea1, 0x1ea1, },
+
160 { 0x1ea3, 0x1ea3, }, { 0x1ea5, 0x1ea5, }, { 0x1ea7, 0x1ea7, },
+
161 { 0x1ea9, 0x1ea9, }, { 0x1eab, 0x1eab, }, { 0x1ead, 0x1ead, },
+
162 { 0x1eaf, 0x1eaf, }, { 0x1eb1, 0x1eb1, }, { 0x1eb3, 0x1eb3, },
+
163 { 0x1eb5, 0x1eb5, }, { 0x1eb7, 0x1eb7, }, { 0x1eb9, 0x1eb9, },
+
164 { 0x1ebb, 0x1ebb, }, { 0x1ebd, 0x1ebd, }, { 0x1ebf, 0x1ebf, },
+
165 { 0x1ec1, 0x1ec1, }, { 0x1ec3, 0x1ec3, }, { 0x1ec5, 0x1ec5, },
+
166 { 0x1ec7, 0x1ec7, }, { 0x1ec9, 0x1ec9, }, { 0x1ecb, 0x1ecb, },
+
167 { 0x1ecd, 0x1ecd, }, { 0x1ecf, 0x1ecf, }, { 0x1ed1, 0x1ed1, },
+
168 { 0x1ed3, 0x1ed3, }, { 0x1ed5, 0x1ed5, }, { 0x1ed7, 0x1ed7, },
+
169 { 0x1ed9, 0x1ed9, }, { 0x1edb, 0x1edb, }, { 0x1edd, 0x1edd, },
+
170 { 0x1edf, 0x1edf, }, { 0x1ee1, 0x1ee1, }, { 0x1ee3, 0x1ee3, },
+
171 { 0x1ee5, 0x1ee5, }, { 0x1ee7, 0x1ee7, }, { 0x1ee9, 0x1ee9, },
+
172 { 0x1eeb, 0x1eeb, }, { 0x1eed, 0x1eed, }, { 0x1eef, 0x1eef, },
+
173 { 0x1ef1, 0x1ef1, }, { 0x1ef3, 0x1ef3, }, { 0x1ef5, 0x1ef5, },
+
174 { 0x1ef7, 0x1ef7, }, { 0x1ef9, 0x1ef9, }, { 0x1efb, 0x1efb, },
+
175 { 0x1efd, 0x1efd, }, { 0x1eff, 0x1f07, }, { 0x1f10, 0x1f15, },
+
176 { 0x1f20, 0x1f27, }, { 0x1f30, 0x1f37, }, { 0x1f40, 0x1f45, },
+
177 { 0x1f50, 0x1f57, }, { 0x1f60, 0x1f67, }, { 0x1f70, 0x1f7d, },
+
178 { 0x1f80, 0x1f87, }, { 0x1f90, 0x1f97, }, { 0x1fa0, 0x1fa7, },
+
179 { 0x1fb0, 0x1fb4, }, { 0x1fb6, 0x1fb7, }, { 0x1fbe, 0x1fbe, },
+
180 { 0x1fc2, 0x1fc4, }, { 0x1fc6, 0x1fc7, }, { 0x1fd0, 0x1fd3, },
+
181 { 0x1fd6, 0x1fd7, }, { 0x1fe0, 0x1fe7, }, { 0x1ff2, 0x1ff4, },
+
182 { 0x1ff6, 0x1ff7, }, { 0x2071, 0x2071, }, { 0x207f, 0x207f, },
+
183 { 0x2090, 0x209c, }, { 0x210a, 0x210a, }, { 0x210e, 0x210f, },
+
184 { 0x2113, 0x2113, }, { 0x212f, 0x212f, }, { 0x2134, 0x2134, },
+
185 { 0x2139, 0x2139, }, { 0x213c, 0x213d, }, { 0x2146, 0x2149, },
+
186 { 0x214e, 0x214e, }, { 0x2170, 0x217f, }, { 0x2184, 0x2184, },
+
187 { 0x24d0, 0x24e9, }, { 0x2c30, 0x2c5f, }, { 0x2c61, 0x2c61, },
+
188 { 0x2c65, 0x2c66, }, { 0x2c68, 0x2c68, }, { 0x2c6a, 0x2c6a, },
+
189 { 0x2c6c, 0x2c6c, }, { 0x2c71, 0x2c71, }, { 0x2c73, 0x2c74, },
+
190 { 0x2c76, 0x2c7d, }, { 0x2c81, 0x2c81, }, { 0x2c83, 0x2c83, },
+
191 { 0x2c85, 0x2c85, }, { 0x2c87, 0x2c87, }, { 0x2c89, 0x2c89, },
+
192 { 0x2c8b, 0x2c8b, }, { 0x2c8d, 0x2c8d, }, { 0x2c8f, 0x2c8f, },
+
193 { 0x2c91, 0x2c91, }, { 0x2c93, 0x2c93, }, { 0x2c95, 0x2c95, },
+
194 { 0x2c97, 0x2c97, }, { 0x2c99, 0x2c99, }, { 0x2c9b, 0x2c9b, },
+
195 { 0x2c9d, 0x2c9d, }, { 0x2c9f, 0x2c9f, }, { 0x2ca1, 0x2ca1, },
+
196 { 0x2ca3, 0x2ca3, }, { 0x2ca5, 0x2ca5, }, { 0x2ca7, 0x2ca7, },
+
197 { 0x2ca9, 0x2ca9, }, { 0x2cab, 0x2cab, }, { 0x2cad, 0x2cad, },
+
198 { 0x2caf, 0x2caf, }, { 0x2cb1, 0x2cb1, }, { 0x2cb3, 0x2cb3, },
+
199 { 0x2cb5, 0x2cb5, }, { 0x2cb7, 0x2cb7, }, { 0x2cb9, 0x2cb9, },
+
200 { 0x2cbb, 0x2cbb, }, { 0x2cbd, 0x2cbd, }, { 0x2cbf, 0x2cbf, },
+
201 { 0x2cc1, 0x2cc1, }, { 0x2cc3, 0x2cc3, }, { 0x2cc5, 0x2cc5, },
+
202 { 0x2cc7, 0x2cc7, }, { 0x2cc9, 0x2cc9, }, { 0x2ccb, 0x2ccb, },
+
203 { 0x2ccd, 0x2ccd, }, { 0x2ccf, 0x2ccf, }, { 0x2cd1, 0x2cd1, },
+
204 { 0x2cd3, 0x2cd3, }, { 0x2cd5, 0x2cd5, }, { 0x2cd7, 0x2cd7, },
+
205 { 0x2cd9, 0x2cd9, }, { 0x2cdb, 0x2cdb, }, { 0x2cdd, 0x2cdd, },
+
206 { 0x2cdf, 0x2cdf, }, { 0x2ce1, 0x2ce1, }, { 0x2ce3, 0x2ce4, },
+
207 { 0x2cec, 0x2cec, }, { 0x2cee, 0x2cee, }, { 0x2cf3, 0x2cf3, },
+
208 { 0x2d00, 0x2d25, }, { 0x2d27, 0x2d27, }, { 0x2d2d, 0x2d2d, },
+
209 { 0xa641, 0xa641, }, { 0xa643, 0xa643, }, { 0xa645, 0xa645, },
+
210 { 0xa647, 0xa647, }, { 0xa649, 0xa649, }, { 0xa64b, 0xa64b, },
+
211 { 0xa64d, 0xa64d, }, { 0xa64f, 0xa64f, }, { 0xa651, 0xa651, },
+
212 { 0xa653, 0xa653, }, { 0xa655, 0xa655, }, { 0xa657, 0xa657, },
+
213 { 0xa659, 0xa659, }, { 0xa65b, 0xa65b, }, { 0xa65d, 0xa65d, },
+
214 { 0xa65f, 0xa65f, }, { 0xa661, 0xa661, }, { 0xa663, 0xa663, },
+
215 { 0xa665, 0xa665, }, { 0xa667, 0xa667, }, { 0xa669, 0xa669, },
+
216 { 0xa66b, 0xa66b, }, { 0xa66d, 0xa66d, }, { 0xa681, 0xa681, },
+
217 { 0xa683, 0xa683, }, { 0xa685, 0xa685, }, { 0xa687, 0xa687, },
+
218 { 0xa689, 0xa689, }, { 0xa68b, 0xa68b, }, { 0xa68d, 0xa68d, },
+
219 { 0xa68f, 0xa68f, }, { 0xa691, 0xa691, }, { 0xa693, 0xa693, },
+
220 { 0xa695, 0xa695, }, { 0xa697, 0xa697, }, { 0xa699, 0xa699, },
+
221 { 0xa69b, 0xa69d, }, { 0xa723, 0xa723, }, { 0xa725, 0xa725, },
+
222 { 0xa727, 0xa727, }, { 0xa729, 0xa729, }, { 0xa72b, 0xa72b, },
+
223 { 0xa72d, 0xa72d, }, { 0xa72f, 0xa731, }, { 0xa733, 0xa733, },
+
224 { 0xa735, 0xa735, }, { 0xa737, 0xa737, }, { 0xa739, 0xa739, },
+
225 { 0xa73b, 0xa73b, }, { 0xa73d, 0xa73d, }, { 0xa73f, 0xa73f, },
+
226 { 0xa741, 0xa741, }, { 0xa743, 0xa743, }, { 0xa745, 0xa745, },
+
227 { 0xa747, 0xa747, }, { 0xa749, 0xa749, }, { 0xa74b, 0xa74b, },
+
228 { 0xa74d, 0xa74d, }, { 0xa74f, 0xa74f, }, { 0xa751, 0xa751, },
+
229 { 0xa753, 0xa753, }, { 0xa755, 0xa755, }, { 0xa757, 0xa757, },
+
230 { 0xa759, 0xa759, }, { 0xa75b, 0xa75b, }, { 0xa75d, 0xa75d, },
+
231 { 0xa75f, 0xa75f, }, { 0xa761, 0xa761, }, { 0xa763, 0xa763, },
+
232 { 0xa765, 0xa765, }, { 0xa767, 0xa767, }, { 0xa769, 0xa769, },
+
233 { 0xa76b, 0xa76b, }, { 0xa76d, 0xa76d, }, { 0xa76f, 0xa778, },
+
234 { 0xa77a, 0xa77a, }, { 0xa77c, 0xa77c, }, { 0xa77f, 0xa77f, },
+
235 { 0xa781, 0xa781, }, { 0xa783, 0xa783, }, { 0xa785, 0xa785, },
+
236 { 0xa787, 0xa787, }, { 0xa78c, 0xa78c, }, { 0xa78e, 0xa78e, },
+
237 { 0xa791, 0xa791, }, { 0xa793, 0xa795, }, { 0xa797, 0xa797, },
+
238 { 0xa799, 0xa799, }, { 0xa79b, 0xa79b, }, { 0xa79d, 0xa79d, },
+
239 { 0xa79f, 0xa79f, }, { 0xa7a1, 0xa7a1, }, { 0xa7a3, 0xa7a3, },
+
240 { 0xa7a5, 0xa7a5, }, { 0xa7a7, 0xa7a7, }, { 0xa7a9, 0xa7a9, },
+
241 { 0xa7af, 0xa7af, }, { 0xa7b5, 0xa7b5, }, { 0xa7b7, 0xa7b7, },
+
242 { 0xa7b9, 0xa7b9, }, { 0xa7bb, 0xa7bb, }, { 0xa7bd, 0xa7bd, },
+
243 { 0xa7bf, 0xa7bf, }, { 0xa7c1, 0xa7c1, }, { 0xa7c3, 0xa7c3, },
+
244 { 0xa7c8, 0xa7c8, }, { 0xa7ca, 0xa7ca, }, { 0xa7d1, 0xa7d1, },
+
245 { 0xa7d3, 0xa7d3, }, { 0xa7d5, 0xa7d5, }, { 0xa7d7, 0xa7d7, },
+
246 { 0xa7d9, 0xa7d9, }, { 0xa7f2, 0xa7f4, }, { 0xa7f6, 0xa7f6, },
+
247 { 0xa7f8, 0xa7fa, }, { 0xab30, 0xab5a, }, { 0xab5c, 0xab69, },
+
248 { 0xab70, 0xabbf, }, { 0xfb00, 0xfb06, }, { 0xfb13, 0xfb17, },
+
249 { 0xff41, 0xff5a, }, { 0x10428, 0x1044f, }, { 0x104d8, 0x104fb, },
+
250 { 0x10597, 0x105a1, }, { 0x105a3, 0x105b1, }, { 0x105b3, 0x105b9, },
+
251 { 0x105bb, 0x105bc, }, { 0x10780, 0x10780, }, { 0x10783, 0x10785, },
+
252 { 0x10787, 0x107b0, }, { 0x107b2, 0x107ba, }, { 0x10cc0, 0x10cf2, },
+
253 { 0x118c0, 0x118df, }, { 0x16e60, 0x16e7f, }, { 0x1d41a, 0x1d433, },
+
254 { 0x1d44e, 0x1d454, }, { 0x1d456, 0x1d467, }, { 0x1d482, 0x1d49b, },
+
255 { 0x1d4b6, 0x1d4b9, }, { 0x1d4bb, 0x1d4bb, }, { 0x1d4bd, 0x1d4c3, },
+
256 { 0x1d4c5, 0x1d4cf, }, { 0x1d4ea, 0x1d503, }, { 0x1d51e, 0x1d537, },
+
257 { 0x1d552, 0x1d56b, }, { 0x1d586, 0x1d59f, }, { 0x1d5ba, 0x1d5d3, },
+
258 { 0x1d5ee, 0x1d607, }, { 0x1d622, 0x1d63b, }, { 0x1d656, 0x1d66f, },
+
259 { 0x1d68a, 0x1d6a5, }, { 0x1d6c2, 0x1d6da, }, { 0x1d6dc, 0x1d6e1, },
+
260 { 0x1d6fc, 0x1d714, }, { 0x1d716, 0x1d71b, }, { 0x1d736, 0x1d74e, },
+
261 { 0x1d750, 0x1d755, }, { 0x1d770, 0x1d788, }, { 0x1d78a, 0x1d78f, },
+
262 { 0x1d7aa, 0x1d7c2, }, { 0x1d7c4, 0x1d7c9, }, { 0x1d7cb, 0x1d7cb, },
+
263 { 0x1df00, 0x1df09, }, { 0x1df0b, 0x1df1e, }, { 0x1df25, 0x1df2a, },
+
264 { 0x1e030, 0x1e06d, }, { 0x1e922, 0x1e943, },
+
265 }};
+
266
+
267 return utils::table_lookup(lower_table, c);
+
268 }
+
269}
Definition: _utils.hpp:34
bool islower(char32_t c)
Definition: islower.hpp:37
diff --git a/isprint_8hpp.html b/isprint_8hpp.html index dd58774..fcb35e0 100644 --- a/isprint_8hpp.html +++ b/isprint_8hpp.html @@ -2,8 +2,8 @@ - - + + peelo-unicode: include/peelo/unicode/ctype/isprint.hpp File Reference @@ -16,8 +16,8 @@
- - + @@ -26,15 +26,16 @@
+
peelo-unicode
- + +/* @license-end */ +

Go to the source code of this file.

- - + - + - +

+

Namespaces

 peelo
namespace  peelo
 
 peelo::unicode
namespace  peelo::unicode
 
 peelo::unicode::ctype
namespace  peelo::unicode::ctype
 
- @@ -70,7 +70,7 @@ diff --git a/isprint_8hpp_source.html b/isprint_8hpp_source.html index f755491..8db7324 100644 --- a/isprint_8hpp_source.html +++ b/isprint_8hpp_source.html @@ -2,8 +2,8 @@ - - + +peelo-unicode: include/peelo/unicode/ctype/isprint.hpp Source File @@ -16,8 +16,8 @@

+

Functions

bool peelo::unicode::ctype::isprint (char32_t c)
 
- - + @@ -26,15 +26,16 @@
+
peelo-unicode
- + +/* @license-end */ +
-
-
isprint.hpp
+
isprint.hpp
-Go to the documentation of this file.
1 /*
-
2  * Copyright (c) 2018-2024, peelo.net
-
3  * All rights reserved.
-
4  *
-
5  * Redistribution and use in source and binary forms, with or without
-
6  * modification, are permitted provided that the following conditions are met:
-
7  *
-
8  * * Redistributions of source code must retain the above copyright notice,
-
9  * this list of conditions and the following disclaimer.
-
10  *
-
11  * * Redistributions in binary form must reproduce the above copyright notice,
-
12  * this list of conditions and the following disclaimer in the documentation
-
13  * and/or other materials provided with the distribution.
-
14  *
-
15  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-
16  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-
17  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-
18  * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
-
19  * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-
20  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-
21  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-
22  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-
23  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-
24  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-
25  * POSSIBILITY OF SUCH DAMAGE.
-
26  */
-
27 #pragma once
-
28 
- -
30 
-
31 namespace peelo::unicode::ctype
-
32 {
-
36  inline bool
-
37  isprint(char32_t c)
-
38  {
-
39  static const std::array<utils::range, 709> print_table =
-
40  {{
-
41  { 0x0020, 0x007e, }, { 0x00a0, 0x0377, }, { 0x037a, 0x037f, },
-
42  { 0x0384, 0x038a, }, { 0x038c, 0x038c, }, { 0x038e, 0x03a1, },
-
43  { 0x03a3, 0x052f, }, { 0x0531, 0x0556, }, { 0x0559, 0x058a, },
-
44  { 0x058d, 0x058f, }, { 0x0591, 0x05c7, }, { 0x05d0, 0x05ea, },
-
45  { 0x05ef, 0x05f4, }, { 0x0600, 0x070d, }, { 0x070f, 0x074a, },
-
46  { 0x074d, 0x07b1, }, { 0x07c0, 0x07fa, }, { 0x07fd, 0x082d, },
-
47  { 0x0830, 0x083e, }, { 0x0840, 0x085b, }, { 0x085e, 0x085e, },
-
48  { 0x0860, 0x086a, }, { 0x0870, 0x088e, }, { 0x0890, 0x0891, },
-
49  { 0x0898, 0x0983, }, { 0x0985, 0x098c, }, { 0x098f, 0x0990, },
-
50  { 0x0993, 0x09a8, }, { 0x09aa, 0x09b0, }, { 0x09b2, 0x09b2, },
-
51  { 0x09b6, 0x09b9, }, { 0x09bc, 0x09c4, }, { 0x09c7, 0x09c8, },
-
52  { 0x09cb, 0x09ce, }, { 0x09d7, 0x09d7, }, { 0x09dc, 0x09dd, },
-
53  { 0x09df, 0x09e3, }, { 0x09e6, 0x09fe, }, { 0x0a01, 0x0a03, },
-
54  { 0x0a05, 0x0a0a, }, { 0x0a0f, 0x0a10, }, { 0x0a13, 0x0a28, },
-
55  { 0x0a2a, 0x0a30, }, { 0x0a32, 0x0a33, }, { 0x0a35, 0x0a36, },
-
56  { 0x0a38, 0x0a39, }, { 0x0a3c, 0x0a3c, }, { 0x0a3e, 0x0a42, },
-
57  { 0x0a47, 0x0a48, }, { 0x0a4b, 0x0a4d, }, { 0x0a51, 0x0a51, },
-
58  { 0x0a59, 0x0a5c, }, { 0x0a5e, 0x0a5e, }, { 0x0a66, 0x0a76, },
-
59  { 0x0a81, 0x0a83, }, { 0x0a85, 0x0a8d, }, { 0x0a8f, 0x0a91, },
-
60  { 0x0a93, 0x0aa8, }, { 0x0aaa, 0x0ab0, }, { 0x0ab2, 0x0ab3, },
-
61  { 0x0ab5, 0x0ab9, }, { 0x0abc, 0x0ac5, }, { 0x0ac7, 0x0ac9, },
-
62  { 0x0acb, 0x0acd, }, { 0x0ad0, 0x0ad0, }, { 0x0ae0, 0x0ae3, },
-
63  { 0x0ae6, 0x0af1, }, { 0x0af9, 0x0aff, }, { 0x0b01, 0x0b03, },
-
64  { 0x0b05, 0x0b0c, }, { 0x0b0f, 0x0b10, }, { 0x0b13, 0x0b28, },
-
65  { 0x0b2a, 0x0b30, }, { 0x0b32, 0x0b33, }, { 0x0b35, 0x0b39, },
-
66  { 0x0b3c, 0x0b44, }, { 0x0b47, 0x0b48, }, { 0x0b4b, 0x0b4d, },
-
67  { 0x0b55, 0x0b57, }, { 0x0b5c, 0x0b5d, }, { 0x0b5f, 0x0b63, },
-
68  { 0x0b66, 0x0b77, }, { 0x0b82, 0x0b83, }, { 0x0b85, 0x0b8a, },
-
69  { 0x0b8e, 0x0b90, }, { 0x0b92, 0x0b95, }, { 0x0b99, 0x0b9a, },
-
70  { 0x0b9c, 0x0b9c, }, { 0x0b9e, 0x0b9f, }, { 0x0ba3, 0x0ba4, },
-
71  { 0x0ba8, 0x0baa, }, { 0x0bae, 0x0bb9, }, { 0x0bbe, 0x0bc2, },
-
72  { 0x0bc6, 0x0bc8, }, { 0x0bca, 0x0bcd, }, { 0x0bd0, 0x0bd0, },
-
73  { 0x0bd7, 0x0bd7, }, { 0x0be6, 0x0bfa, }, { 0x0c00, 0x0c0c, },
-
74  { 0x0c0e, 0x0c10, }, { 0x0c12, 0x0c28, }, { 0x0c2a, 0x0c39, },
-
75  { 0x0c3c, 0x0c44, }, { 0x0c46, 0x0c48, }, { 0x0c4a, 0x0c4d, },
-
76  { 0x0c55, 0x0c56, }, { 0x0c58, 0x0c5a, }, { 0x0c5d, 0x0c5d, },
-
77  { 0x0c60, 0x0c63, }, { 0x0c66, 0x0c6f, }, { 0x0c77, 0x0c8c, },
-
78  { 0x0c8e, 0x0c90, }, { 0x0c92, 0x0ca8, }, { 0x0caa, 0x0cb3, },
-
79  { 0x0cb5, 0x0cb9, }, { 0x0cbc, 0x0cc4, }, { 0x0cc6, 0x0cc8, },
-
80  { 0x0cca, 0x0ccd, }, { 0x0cd5, 0x0cd6, }, { 0x0cdd, 0x0cde, },
-
81  { 0x0ce0, 0x0ce3, }, { 0x0ce6, 0x0cef, }, { 0x0cf1, 0x0cf3, },
-
82  { 0x0d00, 0x0d0c, }, { 0x0d0e, 0x0d10, }, { 0x0d12, 0x0d44, },
-
83  { 0x0d46, 0x0d48, }, { 0x0d4a, 0x0d4f, }, { 0x0d54, 0x0d63, },
-
84  { 0x0d66, 0x0d7f, }, { 0x0d81, 0x0d83, }, { 0x0d85, 0x0d96, },
-
85  { 0x0d9a, 0x0db1, }, { 0x0db3, 0x0dbb, }, { 0x0dbd, 0x0dbd, },
-
86  { 0x0dc0, 0x0dc6, }, { 0x0dca, 0x0dca, }, { 0x0dcf, 0x0dd4, },
-
87  { 0x0dd6, 0x0dd6, }, { 0x0dd8, 0x0ddf, }, { 0x0de6, 0x0def, },
-
88  { 0x0df2, 0x0df4, }, { 0x0e01, 0x0e3a, }, { 0x0e3f, 0x0e5b, },
-
89  { 0x0e81, 0x0e82, }, { 0x0e84, 0x0e84, }, { 0x0e86, 0x0e8a, },
-
90  { 0x0e8c, 0x0ea3, }, { 0x0ea5, 0x0ea5, }, { 0x0ea7, 0x0ebd, },
-
91  { 0x0ec0, 0x0ec4, }, { 0x0ec6, 0x0ec6, }, { 0x0ec8, 0x0ece, },
-
92  { 0x0ed0, 0x0ed9, }, { 0x0edc, 0x0edf, }, { 0x0f00, 0x0f47, },
-
93  { 0x0f49, 0x0f6c, }, { 0x0f71, 0x0f97, }, { 0x0f99, 0x0fbc, },
-
94  { 0x0fbe, 0x0fcc, }, { 0x0fce, 0x0fda, }, { 0x1000, 0x10c5, },
-
95  { 0x10c7, 0x10c7, }, { 0x10cd, 0x10cd, }, { 0x10d0, 0x1248, },
-
96  { 0x124a, 0x124d, }, { 0x1250, 0x1256, }, { 0x1258, 0x1258, },
-
97  { 0x125a, 0x125d, }, { 0x1260, 0x1288, }, { 0x128a, 0x128d, },
-
98  { 0x1290, 0x12b0, }, { 0x12b2, 0x12b5, }, { 0x12b8, 0x12be, },
-
99  { 0x12c0, 0x12c0, }, { 0x12c2, 0x12c5, }, { 0x12c8, 0x12d6, },
-
100  { 0x12d8, 0x1310, }, { 0x1312, 0x1315, }, { 0x1318, 0x135a, },
-
101  { 0x135d, 0x137c, }, { 0x1380, 0x1399, }, { 0x13a0, 0x13f5, },
-
102  { 0x13f8, 0x13fd, }, { 0x1400, 0x169c, }, { 0x16a0, 0x16f8, },
-
103  { 0x1700, 0x1715, }, { 0x171f, 0x1736, }, { 0x1740, 0x1753, },
-
104  { 0x1760, 0x176c, }, { 0x176e, 0x1770, }, { 0x1772, 0x1773, },
-
105  { 0x1780, 0x17dd, }, { 0x17e0, 0x17e9, }, { 0x17f0, 0x17f9, },
-
106  { 0x1800, 0x1819, }, { 0x1820, 0x1878, }, { 0x1880, 0x18aa, },
-
107  { 0x18b0, 0x18f5, }, { 0x1900, 0x191e, }, { 0x1920, 0x192b, },
-
108  { 0x1930, 0x193b, }, { 0x1940, 0x1940, }, { 0x1944, 0x196d, },
-
109  { 0x1970, 0x1974, }, { 0x1980, 0x19ab, }, { 0x19b0, 0x19c9, },
-
110  { 0x19d0, 0x19da, }, { 0x19de, 0x1a1b, }, { 0x1a1e, 0x1a5e, },
-
111  { 0x1a60, 0x1a7c, }, { 0x1a7f, 0x1a89, }, { 0x1a90, 0x1a99, },
-
112  { 0x1aa0, 0x1aad, }, { 0x1ab0, 0x1ace, }, { 0x1b00, 0x1b4c, },
-
113  { 0x1b50, 0x1b7e, }, { 0x1b80, 0x1bf3, }, { 0x1bfc, 0x1c37, },
-
114  { 0x1c3b, 0x1c49, }, { 0x1c4d, 0x1c88, }, { 0x1c90, 0x1cba, },
-
115  { 0x1cbd, 0x1cc7, }, { 0x1cd0, 0x1cfa, }, { 0x1d00, 0x1f15, },
-
116  { 0x1f18, 0x1f1d, }, { 0x1f20, 0x1f45, }, { 0x1f48, 0x1f4d, },
-
117  { 0x1f50, 0x1f57, }, { 0x1f59, 0x1f59, }, { 0x1f5b, 0x1f5b, },
-
118  { 0x1f5d, 0x1f5d, }, { 0x1f5f, 0x1f7d, }, { 0x1f80, 0x1fb4, },
-
119  { 0x1fb6, 0x1fc4, }, { 0x1fc6, 0x1fd3, }, { 0x1fd6, 0x1fdb, },
-
120  { 0x1fdd, 0x1fef, }, { 0x1ff2, 0x1ff4, }, { 0x1ff6, 0x1ffe, },
-
121  { 0x2000, 0x2027, }, { 0x202a, 0x2064, }, { 0x2066, 0x2071, },
-
122  { 0x2074, 0x208e, }, { 0x2090, 0x209c, }, { 0x20a0, 0x20c0, },
-
123  { 0x20d0, 0x20f0, }, { 0x2100, 0x218b, }, { 0x2190, 0x2426, },
-
124  { 0x2440, 0x244a, }, { 0x2460, 0x2b73, }, { 0x2b76, 0x2b95, },
-
125  { 0x2b97, 0x2cf3, }, { 0x2cf9, 0x2d25, }, { 0x2d27, 0x2d27, },
-
126  { 0x2d2d, 0x2d2d, }, { 0x2d30, 0x2d67, }, { 0x2d6f, 0x2d70, },
-
127  { 0x2d7f, 0x2d96, }, { 0x2da0, 0x2da6, }, { 0x2da8, 0x2dae, },
-
128  { 0x2db0, 0x2db6, }, { 0x2db8, 0x2dbe, }, { 0x2dc0, 0x2dc6, },
-
129  { 0x2dc8, 0x2dce, }, { 0x2dd0, 0x2dd6, }, { 0x2dd8, 0x2dde, },
-
130  { 0x2de0, 0x2e5d, }, { 0x2e80, 0x2e99, }, { 0x2e9b, 0x2ef3, },
-
131  { 0x2f00, 0x2fd5, }, { 0x2ff0, 0x303f, }, { 0x3041, 0x3096, },
-
132  { 0x3099, 0x30ff, }, { 0x3105, 0x312f, }, { 0x3131, 0x318e, },
-
133  { 0x3190, 0x31e3, }, { 0x31ef, 0x321e, }, { 0x3220, 0xa48c, },
-
134  { 0xa490, 0xa4c6, }, { 0xa4d0, 0xa62b, }, { 0xa640, 0xa6f7, },
-
135  { 0xa700, 0xa7ca, }, { 0xa7d0, 0xa7d1, }, { 0xa7d3, 0xa7d3, },
-
136  { 0xa7d5, 0xa7d9, }, { 0xa7f2, 0xa82c, }, { 0xa830, 0xa839, },
-
137  { 0xa840, 0xa877, }, { 0xa880, 0xa8c5, }, { 0xa8ce, 0xa8d9, },
-
138  { 0xa8e0, 0xa953, }, { 0xa95f, 0xa97c, }, { 0xa980, 0xa9cd, },
-
139  { 0xa9cf, 0xa9d9, }, { 0xa9de, 0xa9fe, }, { 0xaa00, 0xaa36, },
-
140  { 0xaa40, 0xaa4d, }, { 0xaa50, 0xaa59, }, { 0xaa5c, 0xaac2, },
-
141  { 0xaadb, 0xaaf6, }, { 0xab01, 0xab06, }, { 0xab09, 0xab0e, },
-
142  { 0xab11, 0xab16, }, { 0xab20, 0xab26, }, { 0xab28, 0xab2e, },
-
143  { 0xab30, 0xab6b, }, { 0xab70, 0xabed, }, { 0xabf0, 0xabf9, },
-
144  { 0xac00, 0xd7a3, }, { 0xd7b0, 0xd7c6, }, { 0xd7cb, 0xd7fb, },
-
145  { 0xe000, 0xfa6d, }, { 0xfa70, 0xfad9, }, { 0xfb00, 0xfb06, },
-
146  { 0xfb13, 0xfb17, }, { 0xfb1d, 0xfb36, }, { 0xfb38, 0xfb3c, },
-
147  { 0xfb3e, 0xfb3e, }, { 0xfb40, 0xfb41, }, { 0xfb43, 0xfb44, },
-
148  { 0xfb46, 0xfbc2, }, { 0xfbd3, 0xfd8f, }, { 0xfd92, 0xfdc7, },
-
149  { 0xfdcf, 0xfdcf, }, { 0xfdf0, 0xfe19, }, { 0xfe20, 0xfe52, },
-
150  { 0xfe54, 0xfe66, }, { 0xfe68, 0xfe6b, }, { 0xfe70, 0xfe74, },
-
151  { 0xfe76, 0xfefc, }, { 0xfeff, 0xfeff, }, { 0xff01, 0xffbe, },
-
152  { 0xffc2, 0xffc7, }, { 0xffca, 0xffcf, }, { 0xffd2, 0xffd7, },
-
153  { 0xffda, 0xffdc, }, { 0xffe0, 0xffe6, }, { 0xffe8, 0xffee, },
-
154  { 0xfff9, 0xfffd, }, { 0x10000, 0x1000b, }, { 0x1000d, 0x10026, },
-
155  { 0x10028, 0x1003a, }, { 0x1003c, 0x1003d, }, { 0x1003f, 0x1004d, },
-
156  { 0x10050, 0x1005d, }, { 0x10080, 0x100fa, }, { 0x10100, 0x10102, },
-
157  { 0x10107, 0x10133, }, { 0x10137, 0x1018e, }, { 0x10190, 0x1019c, },
-
158  { 0x101a0, 0x101a0, }, { 0x101d0, 0x101fd, }, { 0x10280, 0x1029c, },
-
159  { 0x102a0, 0x102d0, }, { 0x102e0, 0x102fb, }, { 0x10300, 0x10323, },
-
160  { 0x1032d, 0x1034a, }, { 0x10350, 0x1037a, }, { 0x10380, 0x1039d, },
-
161  { 0x1039f, 0x103c3, }, { 0x103c8, 0x103d5, }, { 0x10400, 0x1049d, },
-
162  { 0x104a0, 0x104a9, }, { 0x104b0, 0x104d3, }, { 0x104d8, 0x104fb, },
-
163  { 0x10500, 0x10527, }, { 0x10530, 0x10563, }, { 0x1056f, 0x1057a, },
-
164  { 0x1057c, 0x1058a, }, { 0x1058c, 0x10592, }, { 0x10594, 0x10595, },
-
165  { 0x10597, 0x105a1, }, { 0x105a3, 0x105b1, }, { 0x105b3, 0x105b9, },
-
166  { 0x105bb, 0x105bc, }, { 0x10600, 0x10736, }, { 0x10740, 0x10755, },
-
167  { 0x10760, 0x10767, }, { 0x10780, 0x10785, }, { 0x10787, 0x107b0, },
-
168  { 0x107b2, 0x107ba, }, { 0x10800, 0x10805, }, { 0x10808, 0x10808, },
-
169  { 0x1080a, 0x10835, }, { 0x10837, 0x10838, }, { 0x1083c, 0x1083c, },
-
170  { 0x1083f, 0x10855, }, { 0x10857, 0x1089e, }, { 0x108a7, 0x108af, },
-
171  { 0x108e0, 0x108f2, }, { 0x108f4, 0x108f5, }, { 0x108fb, 0x1091b, },
-
172  { 0x1091f, 0x10939, }, { 0x1093f, 0x1093f, }, { 0x10980, 0x109b7, },
-
173  { 0x109bc, 0x109cf, }, { 0x109d2, 0x10a03, }, { 0x10a05, 0x10a06, },
-
174  { 0x10a0c, 0x10a13, }, { 0x10a15, 0x10a17, }, { 0x10a19, 0x10a35, },
-
175  { 0x10a38, 0x10a3a, }, { 0x10a3f, 0x10a48, }, { 0x10a50, 0x10a58, },
-
176  { 0x10a60, 0x10a9f, }, { 0x10ac0, 0x10ae6, }, { 0x10aeb, 0x10af6, },
-
177  { 0x10b00, 0x10b35, }, { 0x10b39, 0x10b55, }, { 0x10b58, 0x10b72, },
-
178  { 0x10b78, 0x10b91, }, { 0x10b99, 0x10b9c, }, { 0x10ba9, 0x10baf, },
-
179  { 0x10c00, 0x10c48, }, { 0x10c80, 0x10cb2, }, { 0x10cc0, 0x10cf2, },
-
180  { 0x10cfa, 0x10d27, }, { 0x10d30, 0x10d39, }, { 0x10e60, 0x10e7e, },
-
181  { 0x10e80, 0x10ea9, }, { 0x10eab, 0x10ead, }, { 0x10eb0, 0x10eb1, },
-
182  { 0x10efd, 0x10f27, }, { 0x10f30, 0x10f59, }, { 0x10f70, 0x10f89, },
-
183  { 0x10fb0, 0x10fcb, }, { 0x10fe0, 0x10ff6, }, { 0x11000, 0x1104d, },
-
184  { 0x11052, 0x11075, }, { 0x1107f, 0x110c2, }, { 0x110cd, 0x110cd, },
-
185  { 0x110d0, 0x110e8, }, { 0x110f0, 0x110f9, }, { 0x11100, 0x11134, },
-
186  { 0x11136, 0x11147, }, { 0x11150, 0x11176, }, { 0x11180, 0x111df, },
-
187  { 0x111e1, 0x111f4, }, { 0x11200, 0x11211, }, { 0x11213, 0x11241, },
-
188  { 0x11280, 0x11286, }, { 0x11288, 0x11288, }, { 0x1128a, 0x1128d, },
-
189  { 0x1128f, 0x1129d, }, { 0x1129f, 0x112a9, }, { 0x112b0, 0x112ea, },
-
190  { 0x112f0, 0x112f9, }, { 0x11300, 0x11303, }, { 0x11305, 0x1130c, },
-
191  { 0x1130f, 0x11310, }, { 0x11313, 0x11328, }, { 0x1132a, 0x11330, },
-
192  { 0x11332, 0x11333, }, { 0x11335, 0x11339, }, { 0x1133b, 0x11344, },
-
193  { 0x11347, 0x11348, }, { 0x1134b, 0x1134d, }, { 0x11350, 0x11350, },
-
194  { 0x11357, 0x11357, }, { 0x1135d, 0x11363, }, { 0x11366, 0x1136c, },
-
195  { 0x11370, 0x11374, }, { 0x11400, 0x1145b, }, { 0x1145d, 0x11461, },
-
196  { 0x11480, 0x114c7, }, { 0x114d0, 0x114d9, }, { 0x11580, 0x115b5, },
-
197  { 0x115b8, 0x115dd, }, { 0x11600, 0x11644, }, { 0x11650, 0x11659, },
-
198  { 0x11660, 0x1166c, }, { 0x11680, 0x116b9, }, { 0x116c0, 0x116c9, },
-
199  { 0x11700, 0x1171a, }, { 0x1171d, 0x1172b, }, { 0x11730, 0x11746, },
-
200  { 0x11800, 0x1183b, }, { 0x118a0, 0x118f2, }, { 0x118ff, 0x11906, },
-
201  { 0x11909, 0x11909, }, { 0x1190c, 0x11913, }, { 0x11915, 0x11916, },
-
202  { 0x11918, 0x11935, }, { 0x11937, 0x11938, }, { 0x1193b, 0x11946, },
-
203  { 0x11950, 0x11959, }, { 0x119a0, 0x119a7, }, { 0x119aa, 0x119d7, },
-
204  { 0x119da, 0x119e4, }, { 0x11a00, 0x11a47, }, { 0x11a50, 0x11aa2, },
-
205  { 0x11ab0, 0x11af8, }, { 0x11b00, 0x11b09, }, { 0x11c00, 0x11c08, },
-
206  { 0x11c0a, 0x11c36, }, { 0x11c38, 0x11c45, }, { 0x11c50, 0x11c6c, },
-
207  { 0x11c70, 0x11c8f, }, { 0x11c92, 0x11ca7, }, { 0x11ca9, 0x11cb6, },
-
208  { 0x11d00, 0x11d06, }, { 0x11d08, 0x11d09, }, { 0x11d0b, 0x11d36, },
-
209  { 0x11d3a, 0x11d3a, }, { 0x11d3c, 0x11d3d, }, { 0x11d3f, 0x11d47, },
-
210  { 0x11d50, 0x11d59, }, { 0x11d60, 0x11d65, }, { 0x11d67, 0x11d68, },
-
211  { 0x11d6a, 0x11d8e, }, { 0x11d90, 0x11d91, }, { 0x11d93, 0x11d98, },
-
212  { 0x11da0, 0x11da9, }, { 0x11ee0, 0x11ef8, }, { 0x11f00, 0x11f10, },
-
213  { 0x11f12, 0x11f3a, }, { 0x11f3e, 0x11f59, }, { 0x11fb0, 0x11fb0, },
-
214  { 0x11fc0, 0x11ff1, }, { 0x11fff, 0x12399, }, { 0x12400, 0x1246e, },
-
215  { 0x12470, 0x12474, }, { 0x12480, 0x12543, }, { 0x12f90, 0x12ff2, },
-
216  { 0x13000, 0x13455, }, { 0x14400, 0x14646, }, { 0x16800, 0x16a38, },
-
217  { 0x16a40, 0x16a5e, }, { 0x16a60, 0x16a69, }, { 0x16a6e, 0x16abe, },
-
218  { 0x16ac0, 0x16ac9, }, { 0x16ad0, 0x16aed, }, { 0x16af0, 0x16af5, },
-
219  { 0x16b00, 0x16b45, }, { 0x16b50, 0x16b59, }, { 0x16b5b, 0x16b61, },
-
220  { 0x16b63, 0x16b77, }, { 0x16b7d, 0x16b8f, }, { 0x16e40, 0x16e9a, },
-
221  { 0x16f00, 0x16f4a, }, { 0x16f4f, 0x16f87, }, { 0x16f8f, 0x16f9f, },
-
222  { 0x16fe0, 0x16fe4, }, { 0x16ff0, 0x16ff1, }, { 0x17000, 0x187f7, },
-
223  { 0x18800, 0x18cd5, }, { 0x18d00, 0x18d08, }, { 0x1aff0, 0x1aff3, },
-
224  { 0x1aff5, 0x1affb, }, { 0x1affd, 0x1affe, }, { 0x1b000, 0x1b122, },
-
225  { 0x1b132, 0x1b132, }, { 0x1b150, 0x1b152, }, { 0x1b155, 0x1b155, },
-
226  { 0x1b164, 0x1b167, }, { 0x1b170, 0x1b2fb, }, { 0x1bc00, 0x1bc6a, },
-
227  { 0x1bc70, 0x1bc7c, }, { 0x1bc80, 0x1bc88, }, { 0x1bc90, 0x1bc99, },
-
228  { 0x1bc9c, 0x1bca3, }, { 0x1cf00, 0x1cf2d, }, { 0x1cf30, 0x1cf46, },
-
229  { 0x1cf50, 0x1cfc3, }, { 0x1d000, 0x1d0f5, }, { 0x1d100, 0x1d126, },
-
230  { 0x1d129, 0x1d1ea, }, { 0x1d200, 0x1d245, }, { 0x1d2c0, 0x1d2d3, },
-
231  { 0x1d2e0, 0x1d2f3, }, { 0x1d300, 0x1d356, }, { 0x1d360, 0x1d378, },
-
232  { 0x1d400, 0x1d454, }, { 0x1d456, 0x1d49c, }, { 0x1d49e, 0x1d49f, },
-
233  { 0x1d4a2, 0x1d4a2, }, { 0x1d4a5, 0x1d4a6, }, { 0x1d4a9, 0x1d4ac, },
-
234  { 0x1d4ae, 0x1d4b9, }, { 0x1d4bb, 0x1d4bb, }, { 0x1d4bd, 0x1d4c3, },
-
235  { 0x1d4c5, 0x1d505, }, { 0x1d507, 0x1d50a, }, { 0x1d50d, 0x1d514, },
-
236  { 0x1d516, 0x1d51c, }, { 0x1d51e, 0x1d539, }, { 0x1d53b, 0x1d53e, },
-
237  { 0x1d540, 0x1d544, }, { 0x1d546, 0x1d546, }, { 0x1d54a, 0x1d550, },
-
238  { 0x1d552, 0x1d6a5, }, { 0x1d6a8, 0x1d7cb, }, { 0x1d7ce, 0x1da8b, },
-
239  { 0x1da9b, 0x1da9f, }, { 0x1daa1, 0x1daaf, }, { 0x1df00, 0x1df1e, },
-
240  { 0x1df25, 0x1df2a, }, { 0x1e000, 0x1e006, }, { 0x1e008, 0x1e018, },
-
241  { 0x1e01b, 0x1e021, }, { 0x1e023, 0x1e024, }, { 0x1e026, 0x1e02a, },
-
242  { 0x1e030, 0x1e06d, }, { 0x1e08f, 0x1e08f, }, { 0x1e100, 0x1e12c, },
-
243  { 0x1e130, 0x1e13d, }, { 0x1e140, 0x1e149, }, { 0x1e14e, 0x1e14f, },
-
244  { 0x1e290, 0x1e2ae, }, { 0x1e2c0, 0x1e2f9, }, { 0x1e2ff, 0x1e2ff, },
-
245  { 0x1e4d0, 0x1e4f9, }, { 0x1e7e0, 0x1e7e6, }, { 0x1e7e8, 0x1e7eb, },
-
246  { 0x1e7ed, 0x1e7ee, }, { 0x1e7f0, 0x1e7fe, }, { 0x1e800, 0x1e8c4, },
-
247  { 0x1e8c7, 0x1e8d6, }, { 0x1e900, 0x1e94b, }, { 0x1e950, 0x1e959, },
-
248  { 0x1e95e, 0x1e95f, }, { 0x1ec71, 0x1ecb4, }, { 0x1ed01, 0x1ed3d, },
-
249  { 0x1ee00, 0x1ee03, }, { 0x1ee05, 0x1ee1f, }, { 0x1ee21, 0x1ee22, },
-
250  { 0x1ee24, 0x1ee24, }, { 0x1ee27, 0x1ee27, }, { 0x1ee29, 0x1ee32, },
-
251  { 0x1ee34, 0x1ee37, }, { 0x1ee39, 0x1ee39, }, { 0x1ee3b, 0x1ee3b, },
-
252  { 0x1ee42, 0x1ee42, }, { 0x1ee47, 0x1ee47, }, { 0x1ee49, 0x1ee49, },
-
253  { 0x1ee4b, 0x1ee4b, }, { 0x1ee4d, 0x1ee4f, }, { 0x1ee51, 0x1ee52, },
-
254  { 0x1ee54, 0x1ee54, }, { 0x1ee57, 0x1ee57, }, { 0x1ee59, 0x1ee59, },
-
255  { 0x1ee5b, 0x1ee5b, }, { 0x1ee5d, 0x1ee5d, }, { 0x1ee5f, 0x1ee5f, },
-
256  { 0x1ee61, 0x1ee62, }, { 0x1ee64, 0x1ee64, }, { 0x1ee67, 0x1ee6a, },
-
257  { 0x1ee6c, 0x1ee72, }, { 0x1ee74, 0x1ee77, }, { 0x1ee79, 0x1ee7c, },
-
258  { 0x1ee7e, 0x1ee7e, }, { 0x1ee80, 0x1ee89, }, { 0x1ee8b, 0x1ee9b, },
-
259  { 0x1eea1, 0x1eea3, }, { 0x1eea5, 0x1eea9, }, { 0x1eeab, 0x1eebb, },
-
260  { 0x1eef0, 0x1eef1, }, { 0x1f000, 0x1f02b, }, { 0x1f030, 0x1f093, },
-
261  { 0x1f0a0, 0x1f0ae, }, { 0x1f0b1, 0x1f0bf, }, { 0x1f0c1, 0x1f0cf, },
-
262  { 0x1f0d1, 0x1f0f5, }, { 0x1f100, 0x1f1ad, }, { 0x1f1e6, 0x1f202, },
-
263  { 0x1f210, 0x1f23b, }, { 0x1f240, 0x1f248, }, { 0x1f250, 0x1f251, },
-
264  { 0x1f260, 0x1f265, }, { 0x1f300, 0x1f6d7, }, { 0x1f6dc, 0x1f6ec, },
-
265  { 0x1f6f0, 0x1f6fc, }, { 0x1f700, 0x1f776, }, { 0x1f77b, 0x1f7d9, },
-
266  { 0x1f7e0, 0x1f7eb, }, { 0x1f7f0, 0x1f7f0, }, { 0x1f800, 0x1f80b, },
-
267  { 0x1f810, 0x1f847, }, { 0x1f850, 0x1f859, }, { 0x1f860, 0x1f887, },
-
268  { 0x1f890, 0x1f8ad, }, { 0x1f8b0, 0x1f8b1, }, { 0x1f900, 0x1fa53, },
-
269  { 0x1fa60, 0x1fa6d, }, { 0x1fa70, 0x1fa7c, }, { 0x1fa80, 0x1fa88, },
-
270  { 0x1fa90, 0x1fabd, }, { 0x1fabf, 0x1fac5, }, { 0x1face, 0x1fadb, },
-
271  { 0x1fae0, 0x1fae8, }, { 0x1faf0, 0x1faf8, }, { 0x1fb00, 0x1fb92, },
-
272  { 0x1fb94, 0x1fbca, }, { 0x1fbf0, 0x1fbf9, }, { 0x20000, 0x2a6df, },
-
273  { 0x2a700, 0x2b739, }, { 0x2b740, 0x2b81d, }, { 0x2b820, 0x2cea1, },
-
274  { 0x2ceb0, 0x2ebe0, }, { 0x2ebf0, 0x2ee5d, }, { 0x2f800, 0x2fa1d, },
-
275  { 0x30000, 0x3134a, }, { 0x31350, 0x323af, }, { 0xe0001, 0xe0001, },
-
276  { 0xe0020, 0xe007f, }, { 0xe0100, 0xe01ef, }, { 0xf0000, 0xffffd, },
-
277  { 0x100000, 0x10fffd, },
-
278  }};
-
279 
-
280  return utils::table_lookup(print_table, c);
-
281  }
-
282 }
+Go to the documentation of this file.
1/*
+
2 * Copyright (c) 2018-2024, peelo.net
+
3 * All rights reserved.
+
4 *
+
5 * Redistribution and use in source and binary forms, with or without
+
6 * modification, are permitted provided that the following conditions are met:
+
7 *
+
8 * * Redistributions of source code must retain the above copyright notice,
+
9 * this list of conditions and the following disclaimer.
+
10 *
+
11 * * Redistributions in binary form must reproduce the above copyright notice,
+
12 * this list of conditions and the following disclaimer in the documentation
+
13 * and/or other materials provided with the distribution.
+
14 *
+
15 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+
16 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+
17 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+
18 * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
+
19 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+
20 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+
21 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+
22 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+
23 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+
24 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+
25 * POSSIBILITY OF SUCH DAMAGE.
+
26 */
+
27#pragma once
+
28
+ +
30
+ +
32{
+
36 inline bool
+
37 isprint(char32_t c)
+
38 {
+
39 static const std::array<utils::range, 709> print_table =
+
40 {{
+
41 { 0x0020, 0x007e, }, { 0x00a0, 0x0377, }, { 0x037a, 0x037f, },
+
42 { 0x0384, 0x038a, }, { 0x038c, 0x038c, }, { 0x038e, 0x03a1, },
+
43 { 0x03a3, 0x052f, }, { 0x0531, 0x0556, }, { 0x0559, 0x058a, },
+
44 { 0x058d, 0x058f, }, { 0x0591, 0x05c7, }, { 0x05d0, 0x05ea, },
+
45 { 0x05ef, 0x05f4, }, { 0x0600, 0x070d, }, { 0x070f, 0x074a, },
+
46 { 0x074d, 0x07b1, }, { 0x07c0, 0x07fa, }, { 0x07fd, 0x082d, },
+
47 { 0x0830, 0x083e, }, { 0x0840, 0x085b, }, { 0x085e, 0x085e, },
+
48 { 0x0860, 0x086a, }, { 0x0870, 0x088e, }, { 0x0890, 0x0891, },
+
49 { 0x0898, 0x0983, }, { 0x0985, 0x098c, }, { 0x098f, 0x0990, },
+
50 { 0x0993, 0x09a8, }, { 0x09aa, 0x09b0, }, { 0x09b2, 0x09b2, },
+
51 { 0x09b6, 0x09b9, }, { 0x09bc, 0x09c4, }, { 0x09c7, 0x09c8, },
+
52 { 0x09cb, 0x09ce, }, { 0x09d7, 0x09d7, }, { 0x09dc, 0x09dd, },
+
53 { 0x09df, 0x09e3, }, { 0x09e6, 0x09fe, }, { 0x0a01, 0x0a03, },
+
54 { 0x0a05, 0x0a0a, }, { 0x0a0f, 0x0a10, }, { 0x0a13, 0x0a28, },
+
55 { 0x0a2a, 0x0a30, }, { 0x0a32, 0x0a33, }, { 0x0a35, 0x0a36, },
+
56 { 0x0a38, 0x0a39, }, { 0x0a3c, 0x0a3c, }, { 0x0a3e, 0x0a42, },
+
57 { 0x0a47, 0x0a48, }, { 0x0a4b, 0x0a4d, }, { 0x0a51, 0x0a51, },
+
58 { 0x0a59, 0x0a5c, }, { 0x0a5e, 0x0a5e, }, { 0x0a66, 0x0a76, },
+
59 { 0x0a81, 0x0a83, }, { 0x0a85, 0x0a8d, }, { 0x0a8f, 0x0a91, },
+
60 { 0x0a93, 0x0aa8, }, { 0x0aaa, 0x0ab0, }, { 0x0ab2, 0x0ab3, },
+
61 { 0x0ab5, 0x0ab9, }, { 0x0abc, 0x0ac5, }, { 0x0ac7, 0x0ac9, },
+
62 { 0x0acb, 0x0acd, }, { 0x0ad0, 0x0ad0, }, { 0x0ae0, 0x0ae3, },
+
63 { 0x0ae6, 0x0af1, }, { 0x0af9, 0x0aff, }, { 0x0b01, 0x0b03, },
+
64 { 0x0b05, 0x0b0c, }, { 0x0b0f, 0x0b10, }, { 0x0b13, 0x0b28, },
+
65 { 0x0b2a, 0x0b30, }, { 0x0b32, 0x0b33, }, { 0x0b35, 0x0b39, },
+
66 { 0x0b3c, 0x0b44, }, { 0x0b47, 0x0b48, }, { 0x0b4b, 0x0b4d, },
+
67 { 0x0b55, 0x0b57, }, { 0x0b5c, 0x0b5d, }, { 0x0b5f, 0x0b63, },
+
68 { 0x0b66, 0x0b77, }, { 0x0b82, 0x0b83, }, { 0x0b85, 0x0b8a, },
+
69 { 0x0b8e, 0x0b90, }, { 0x0b92, 0x0b95, }, { 0x0b99, 0x0b9a, },
+
70 { 0x0b9c, 0x0b9c, }, { 0x0b9e, 0x0b9f, }, { 0x0ba3, 0x0ba4, },
+
71 { 0x0ba8, 0x0baa, }, { 0x0bae, 0x0bb9, }, { 0x0bbe, 0x0bc2, },
+
72 { 0x0bc6, 0x0bc8, }, { 0x0bca, 0x0bcd, }, { 0x0bd0, 0x0bd0, },
+
73 { 0x0bd7, 0x0bd7, }, { 0x0be6, 0x0bfa, }, { 0x0c00, 0x0c0c, },
+
74 { 0x0c0e, 0x0c10, }, { 0x0c12, 0x0c28, }, { 0x0c2a, 0x0c39, },
+
75 { 0x0c3c, 0x0c44, }, { 0x0c46, 0x0c48, }, { 0x0c4a, 0x0c4d, },
+
76 { 0x0c55, 0x0c56, }, { 0x0c58, 0x0c5a, }, { 0x0c5d, 0x0c5d, },
+
77 { 0x0c60, 0x0c63, }, { 0x0c66, 0x0c6f, }, { 0x0c77, 0x0c8c, },
+
78 { 0x0c8e, 0x0c90, }, { 0x0c92, 0x0ca8, }, { 0x0caa, 0x0cb3, },
+
79 { 0x0cb5, 0x0cb9, }, { 0x0cbc, 0x0cc4, }, { 0x0cc6, 0x0cc8, },
+
80 { 0x0cca, 0x0ccd, }, { 0x0cd5, 0x0cd6, }, { 0x0cdd, 0x0cde, },
+
81 { 0x0ce0, 0x0ce3, }, { 0x0ce6, 0x0cef, }, { 0x0cf1, 0x0cf3, },
+
82 { 0x0d00, 0x0d0c, }, { 0x0d0e, 0x0d10, }, { 0x0d12, 0x0d44, },
+
83 { 0x0d46, 0x0d48, }, { 0x0d4a, 0x0d4f, }, { 0x0d54, 0x0d63, },
+
84 { 0x0d66, 0x0d7f, }, { 0x0d81, 0x0d83, }, { 0x0d85, 0x0d96, },
+
85 { 0x0d9a, 0x0db1, }, { 0x0db3, 0x0dbb, }, { 0x0dbd, 0x0dbd, },
+
86 { 0x0dc0, 0x0dc6, }, { 0x0dca, 0x0dca, }, { 0x0dcf, 0x0dd4, },
+
87 { 0x0dd6, 0x0dd6, }, { 0x0dd8, 0x0ddf, }, { 0x0de6, 0x0def, },
+
88 { 0x0df2, 0x0df4, }, { 0x0e01, 0x0e3a, }, { 0x0e3f, 0x0e5b, },
+
89 { 0x0e81, 0x0e82, }, { 0x0e84, 0x0e84, }, { 0x0e86, 0x0e8a, },
+
90 { 0x0e8c, 0x0ea3, }, { 0x0ea5, 0x0ea5, }, { 0x0ea7, 0x0ebd, },
+
91 { 0x0ec0, 0x0ec4, }, { 0x0ec6, 0x0ec6, }, { 0x0ec8, 0x0ece, },
+
92 { 0x0ed0, 0x0ed9, }, { 0x0edc, 0x0edf, }, { 0x0f00, 0x0f47, },
+
93 { 0x0f49, 0x0f6c, }, { 0x0f71, 0x0f97, }, { 0x0f99, 0x0fbc, },
+
94 { 0x0fbe, 0x0fcc, }, { 0x0fce, 0x0fda, }, { 0x1000, 0x10c5, },
+
95 { 0x10c7, 0x10c7, }, { 0x10cd, 0x10cd, }, { 0x10d0, 0x1248, },
+
96 { 0x124a, 0x124d, }, { 0x1250, 0x1256, }, { 0x1258, 0x1258, },
+
97 { 0x125a, 0x125d, }, { 0x1260, 0x1288, }, { 0x128a, 0x128d, },
+
98 { 0x1290, 0x12b0, }, { 0x12b2, 0x12b5, }, { 0x12b8, 0x12be, },
+
99 { 0x12c0, 0x12c0, }, { 0x12c2, 0x12c5, }, { 0x12c8, 0x12d6, },
+
100 { 0x12d8, 0x1310, }, { 0x1312, 0x1315, }, { 0x1318, 0x135a, },
+
101 { 0x135d, 0x137c, }, { 0x1380, 0x1399, }, { 0x13a0, 0x13f5, },
+
102 { 0x13f8, 0x13fd, }, { 0x1400, 0x169c, }, { 0x16a0, 0x16f8, },
+
103 { 0x1700, 0x1715, }, { 0x171f, 0x1736, }, { 0x1740, 0x1753, },
+
104 { 0x1760, 0x176c, }, { 0x176e, 0x1770, }, { 0x1772, 0x1773, },
+
105 { 0x1780, 0x17dd, }, { 0x17e0, 0x17e9, }, { 0x17f0, 0x17f9, },
+
106 { 0x1800, 0x1819, }, { 0x1820, 0x1878, }, { 0x1880, 0x18aa, },
+
107 { 0x18b0, 0x18f5, }, { 0x1900, 0x191e, }, { 0x1920, 0x192b, },
+
108 { 0x1930, 0x193b, }, { 0x1940, 0x1940, }, { 0x1944, 0x196d, },
+
109 { 0x1970, 0x1974, }, { 0x1980, 0x19ab, }, { 0x19b0, 0x19c9, },
+
110 { 0x19d0, 0x19da, }, { 0x19de, 0x1a1b, }, { 0x1a1e, 0x1a5e, },
+
111 { 0x1a60, 0x1a7c, }, { 0x1a7f, 0x1a89, }, { 0x1a90, 0x1a99, },
+
112 { 0x1aa0, 0x1aad, }, { 0x1ab0, 0x1ace, }, { 0x1b00, 0x1b4c, },
+
113 { 0x1b50, 0x1b7e, }, { 0x1b80, 0x1bf3, }, { 0x1bfc, 0x1c37, },
+
114 { 0x1c3b, 0x1c49, }, { 0x1c4d, 0x1c88, }, { 0x1c90, 0x1cba, },
+
115 { 0x1cbd, 0x1cc7, }, { 0x1cd0, 0x1cfa, }, { 0x1d00, 0x1f15, },
+
116 { 0x1f18, 0x1f1d, }, { 0x1f20, 0x1f45, }, { 0x1f48, 0x1f4d, },
+
117 { 0x1f50, 0x1f57, }, { 0x1f59, 0x1f59, }, { 0x1f5b, 0x1f5b, },
+
118 { 0x1f5d, 0x1f5d, }, { 0x1f5f, 0x1f7d, }, { 0x1f80, 0x1fb4, },
+
119 { 0x1fb6, 0x1fc4, }, { 0x1fc6, 0x1fd3, }, { 0x1fd6, 0x1fdb, },
+
120 { 0x1fdd, 0x1fef, }, { 0x1ff2, 0x1ff4, }, { 0x1ff6, 0x1ffe, },
+
121 { 0x2000, 0x2027, }, { 0x202a, 0x2064, }, { 0x2066, 0x2071, },
+
122 { 0x2074, 0x208e, }, { 0x2090, 0x209c, }, { 0x20a0, 0x20c0, },
+
123 { 0x20d0, 0x20f0, }, { 0x2100, 0x218b, }, { 0x2190, 0x2426, },
+
124 { 0x2440, 0x244a, }, { 0x2460, 0x2b73, }, { 0x2b76, 0x2b95, },
+
125 { 0x2b97, 0x2cf3, }, { 0x2cf9, 0x2d25, }, { 0x2d27, 0x2d27, },
+
126 { 0x2d2d, 0x2d2d, }, { 0x2d30, 0x2d67, }, { 0x2d6f, 0x2d70, },
+
127 { 0x2d7f, 0x2d96, }, { 0x2da0, 0x2da6, }, { 0x2da8, 0x2dae, },
+
128 { 0x2db0, 0x2db6, }, { 0x2db8, 0x2dbe, }, { 0x2dc0, 0x2dc6, },
+
129 { 0x2dc8, 0x2dce, }, { 0x2dd0, 0x2dd6, }, { 0x2dd8, 0x2dde, },
+
130 { 0x2de0, 0x2e5d, }, { 0x2e80, 0x2e99, }, { 0x2e9b, 0x2ef3, },
+
131 { 0x2f00, 0x2fd5, }, { 0x2ff0, 0x303f, }, { 0x3041, 0x3096, },
+
132 { 0x3099, 0x30ff, }, { 0x3105, 0x312f, }, { 0x3131, 0x318e, },
+
133 { 0x3190, 0x31e3, }, { 0x31ef, 0x321e, }, { 0x3220, 0xa48c, },
+
134 { 0xa490, 0xa4c6, }, { 0xa4d0, 0xa62b, }, { 0xa640, 0xa6f7, },
+
135 { 0xa700, 0xa7ca, }, { 0xa7d0, 0xa7d1, }, { 0xa7d3, 0xa7d3, },
+
136 { 0xa7d5, 0xa7d9, }, { 0xa7f2, 0xa82c, }, { 0xa830, 0xa839, },
+
137 { 0xa840, 0xa877, }, { 0xa880, 0xa8c5, }, { 0xa8ce, 0xa8d9, },
+
138 { 0xa8e0, 0xa953, }, { 0xa95f, 0xa97c, }, { 0xa980, 0xa9cd, },
+
139 { 0xa9cf, 0xa9d9, }, { 0xa9de, 0xa9fe, }, { 0xaa00, 0xaa36, },
+
140 { 0xaa40, 0xaa4d, }, { 0xaa50, 0xaa59, }, { 0xaa5c, 0xaac2, },
+
141 { 0xaadb, 0xaaf6, }, { 0xab01, 0xab06, }, { 0xab09, 0xab0e, },
+
142 { 0xab11, 0xab16, }, { 0xab20, 0xab26, }, { 0xab28, 0xab2e, },
+
143 { 0xab30, 0xab6b, }, { 0xab70, 0xabed, }, { 0xabf0, 0xabf9, },
+
144 { 0xac00, 0xd7a3, }, { 0xd7b0, 0xd7c6, }, { 0xd7cb, 0xd7fb, },
+
145 { 0xe000, 0xfa6d, }, { 0xfa70, 0xfad9, }, { 0xfb00, 0xfb06, },
+
146 { 0xfb13, 0xfb17, }, { 0xfb1d, 0xfb36, }, { 0xfb38, 0xfb3c, },
+
147 { 0xfb3e, 0xfb3e, }, { 0xfb40, 0xfb41, }, { 0xfb43, 0xfb44, },
+
148 { 0xfb46, 0xfbc2, }, { 0xfbd3, 0xfd8f, }, { 0xfd92, 0xfdc7, },
+
149 { 0xfdcf, 0xfdcf, }, { 0xfdf0, 0xfe19, }, { 0xfe20, 0xfe52, },
+
150 { 0xfe54, 0xfe66, }, { 0xfe68, 0xfe6b, }, { 0xfe70, 0xfe74, },
+
151 { 0xfe76, 0xfefc, }, { 0xfeff, 0xfeff, }, { 0xff01, 0xffbe, },
+
152 { 0xffc2, 0xffc7, }, { 0xffca, 0xffcf, }, { 0xffd2, 0xffd7, },
+
153 { 0xffda, 0xffdc, }, { 0xffe0, 0xffe6, }, { 0xffe8, 0xffee, },
+
154 { 0xfff9, 0xfffd, }, { 0x10000, 0x1000b, }, { 0x1000d, 0x10026, },
+
155 { 0x10028, 0x1003a, }, { 0x1003c, 0x1003d, }, { 0x1003f, 0x1004d, },
+
156 { 0x10050, 0x1005d, }, { 0x10080, 0x100fa, }, { 0x10100, 0x10102, },
+
157 { 0x10107, 0x10133, }, { 0x10137, 0x1018e, }, { 0x10190, 0x1019c, },
+
158 { 0x101a0, 0x101a0, }, { 0x101d0, 0x101fd, }, { 0x10280, 0x1029c, },
+
159 { 0x102a0, 0x102d0, }, { 0x102e0, 0x102fb, }, { 0x10300, 0x10323, },
+
160 { 0x1032d, 0x1034a, }, { 0x10350, 0x1037a, }, { 0x10380, 0x1039d, },
+
161 { 0x1039f, 0x103c3, }, { 0x103c8, 0x103d5, }, { 0x10400, 0x1049d, },
+
162 { 0x104a0, 0x104a9, }, { 0x104b0, 0x104d3, }, { 0x104d8, 0x104fb, },
+
163 { 0x10500, 0x10527, }, { 0x10530, 0x10563, }, { 0x1056f, 0x1057a, },
+
164 { 0x1057c, 0x1058a, }, { 0x1058c, 0x10592, }, { 0x10594, 0x10595, },
+
165 { 0x10597, 0x105a1, }, { 0x105a3, 0x105b1, }, { 0x105b3, 0x105b9, },
+
166 { 0x105bb, 0x105bc, }, { 0x10600, 0x10736, }, { 0x10740, 0x10755, },
+
167 { 0x10760, 0x10767, }, { 0x10780, 0x10785, }, { 0x10787, 0x107b0, },
+
168 { 0x107b2, 0x107ba, }, { 0x10800, 0x10805, }, { 0x10808, 0x10808, },
+
169 { 0x1080a, 0x10835, }, { 0x10837, 0x10838, }, { 0x1083c, 0x1083c, },
+
170 { 0x1083f, 0x10855, }, { 0x10857, 0x1089e, }, { 0x108a7, 0x108af, },
+
171 { 0x108e0, 0x108f2, }, { 0x108f4, 0x108f5, }, { 0x108fb, 0x1091b, },
+
172 { 0x1091f, 0x10939, }, { 0x1093f, 0x1093f, }, { 0x10980, 0x109b7, },
+
173 { 0x109bc, 0x109cf, }, { 0x109d2, 0x10a03, }, { 0x10a05, 0x10a06, },
+
174 { 0x10a0c, 0x10a13, }, { 0x10a15, 0x10a17, }, { 0x10a19, 0x10a35, },
+
175 { 0x10a38, 0x10a3a, }, { 0x10a3f, 0x10a48, }, { 0x10a50, 0x10a58, },
+
176 { 0x10a60, 0x10a9f, }, { 0x10ac0, 0x10ae6, }, { 0x10aeb, 0x10af6, },
+
177 { 0x10b00, 0x10b35, }, { 0x10b39, 0x10b55, }, { 0x10b58, 0x10b72, },
+
178 { 0x10b78, 0x10b91, }, { 0x10b99, 0x10b9c, }, { 0x10ba9, 0x10baf, },
+
179 { 0x10c00, 0x10c48, }, { 0x10c80, 0x10cb2, }, { 0x10cc0, 0x10cf2, },
+
180 { 0x10cfa, 0x10d27, }, { 0x10d30, 0x10d39, }, { 0x10e60, 0x10e7e, },
+
181 { 0x10e80, 0x10ea9, }, { 0x10eab, 0x10ead, }, { 0x10eb0, 0x10eb1, },
+
182 { 0x10efd, 0x10f27, }, { 0x10f30, 0x10f59, }, { 0x10f70, 0x10f89, },
+
183 { 0x10fb0, 0x10fcb, }, { 0x10fe0, 0x10ff6, }, { 0x11000, 0x1104d, },
+
184 { 0x11052, 0x11075, }, { 0x1107f, 0x110c2, }, { 0x110cd, 0x110cd, },
+
185 { 0x110d0, 0x110e8, }, { 0x110f0, 0x110f9, }, { 0x11100, 0x11134, },
+
186 { 0x11136, 0x11147, }, { 0x11150, 0x11176, }, { 0x11180, 0x111df, },
+
187 { 0x111e1, 0x111f4, }, { 0x11200, 0x11211, }, { 0x11213, 0x11241, },
+
188 { 0x11280, 0x11286, }, { 0x11288, 0x11288, }, { 0x1128a, 0x1128d, },
+
189 { 0x1128f, 0x1129d, }, { 0x1129f, 0x112a9, }, { 0x112b0, 0x112ea, },
+
190 { 0x112f0, 0x112f9, }, { 0x11300, 0x11303, }, { 0x11305, 0x1130c, },
+
191 { 0x1130f, 0x11310, }, { 0x11313, 0x11328, }, { 0x1132a, 0x11330, },
+
192 { 0x11332, 0x11333, }, { 0x11335, 0x11339, }, { 0x1133b, 0x11344, },
+
193 { 0x11347, 0x11348, }, { 0x1134b, 0x1134d, }, { 0x11350, 0x11350, },
+
194 { 0x11357, 0x11357, }, { 0x1135d, 0x11363, }, { 0x11366, 0x1136c, },
+
195 { 0x11370, 0x11374, }, { 0x11400, 0x1145b, }, { 0x1145d, 0x11461, },
+
196 { 0x11480, 0x114c7, }, { 0x114d0, 0x114d9, }, { 0x11580, 0x115b5, },
+
197 { 0x115b8, 0x115dd, }, { 0x11600, 0x11644, }, { 0x11650, 0x11659, },
+
198 { 0x11660, 0x1166c, }, { 0x11680, 0x116b9, }, { 0x116c0, 0x116c9, },
+
199 { 0x11700, 0x1171a, }, { 0x1171d, 0x1172b, }, { 0x11730, 0x11746, },
+
200 { 0x11800, 0x1183b, }, { 0x118a0, 0x118f2, }, { 0x118ff, 0x11906, },
+
201 { 0x11909, 0x11909, }, { 0x1190c, 0x11913, }, { 0x11915, 0x11916, },
+
202 { 0x11918, 0x11935, }, { 0x11937, 0x11938, }, { 0x1193b, 0x11946, },
+
203 { 0x11950, 0x11959, }, { 0x119a0, 0x119a7, }, { 0x119aa, 0x119d7, },
+
204 { 0x119da, 0x119e4, }, { 0x11a00, 0x11a47, }, { 0x11a50, 0x11aa2, },
+
205 { 0x11ab0, 0x11af8, }, { 0x11b00, 0x11b09, }, { 0x11c00, 0x11c08, },
+
206 { 0x11c0a, 0x11c36, }, { 0x11c38, 0x11c45, }, { 0x11c50, 0x11c6c, },
+
207 { 0x11c70, 0x11c8f, }, { 0x11c92, 0x11ca7, }, { 0x11ca9, 0x11cb6, },
+
208 { 0x11d00, 0x11d06, }, { 0x11d08, 0x11d09, }, { 0x11d0b, 0x11d36, },
+
209 { 0x11d3a, 0x11d3a, }, { 0x11d3c, 0x11d3d, }, { 0x11d3f, 0x11d47, },
+
210 { 0x11d50, 0x11d59, }, { 0x11d60, 0x11d65, }, { 0x11d67, 0x11d68, },
+
211 { 0x11d6a, 0x11d8e, }, { 0x11d90, 0x11d91, }, { 0x11d93, 0x11d98, },
+
212 { 0x11da0, 0x11da9, }, { 0x11ee0, 0x11ef8, }, { 0x11f00, 0x11f10, },
+
213 { 0x11f12, 0x11f3a, }, { 0x11f3e, 0x11f59, }, { 0x11fb0, 0x11fb0, },
+
214 { 0x11fc0, 0x11ff1, }, { 0x11fff, 0x12399, }, { 0x12400, 0x1246e, },
+
215 { 0x12470, 0x12474, }, { 0x12480, 0x12543, }, { 0x12f90, 0x12ff2, },
+
216 { 0x13000, 0x13455, }, { 0x14400, 0x14646, }, { 0x16800, 0x16a38, },
+
217 { 0x16a40, 0x16a5e, }, { 0x16a60, 0x16a69, }, { 0x16a6e, 0x16abe, },
+
218 { 0x16ac0, 0x16ac9, }, { 0x16ad0, 0x16aed, }, { 0x16af0, 0x16af5, },
+
219 { 0x16b00, 0x16b45, }, { 0x16b50, 0x16b59, }, { 0x16b5b, 0x16b61, },
+
220 { 0x16b63, 0x16b77, }, { 0x16b7d, 0x16b8f, }, { 0x16e40, 0x16e9a, },
+
221 { 0x16f00, 0x16f4a, }, { 0x16f4f, 0x16f87, }, { 0x16f8f, 0x16f9f, },
+
222 { 0x16fe0, 0x16fe4, }, { 0x16ff0, 0x16ff1, }, { 0x17000, 0x187f7, },
+
223 { 0x18800, 0x18cd5, }, { 0x18d00, 0x18d08, }, { 0x1aff0, 0x1aff3, },
+
224 { 0x1aff5, 0x1affb, }, { 0x1affd, 0x1affe, }, { 0x1b000, 0x1b122, },
+
225 { 0x1b132, 0x1b132, }, { 0x1b150, 0x1b152, }, { 0x1b155, 0x1b155, },
+
226 { 0x1b164, 0x1b167, }, { 0x1b170, 0x1b2fb, }, { 0x1bc00, 0x1bc6a, },
+
227 { 0x1bc70, 0x1bc7c, }, { 0x1bc80, 0x1bc88, }, { 0x1bc90, 0x1bc99, },
+
228 { 0x1bc9c, 0x1bca3, }, { 0x1cf00, 0x1cf2d, }, { 0x1cf30, 0x1cf46, },
+
229 { 0x1cf50, 0x1cfc3, }, { 0x1d000, 0x1d0f5, }, { 0x1d100, 0x1d126, },
+
230 { 0x1d129, 0x1d1ea, }, { 0x1d200, 0x1d245, }, { 0x1d2c0, 0x1d2d3, },
+
231 { 0x1d2e0, 0x1d2f3, }, { 0x1d300, 0x1d356, }, { 0x1d360, 0x1d378, },
+
232 { 0x1d400, 0x1d454, }, { 0x1d456, 0x1d49c, }, { 0x1d49e, 0x1d49f, },
+
233 { 0x1d4a2, 0x1d4a2, }, { 0x1d4a5, 0x1d4a6, }, { 0x1d4a9, 0x1d4ac, },
+
234 { 0x1d4ae, 0x1d4b9, }, { 0x1d4bb, 0x1d4bb, }, { 0x1d4bd, 0x1d4c3, },
+
235 { 0x1d4c5, 0x1d505, }, { 0x1d507, 0x1d50a, }, { 0x1d50d, 0x1d514, },
+
236 { 0x1d516, 0x1d51c, }, { 0x1d51e, 0x1d539, }, { 0x1d53b, 0x1d53e, },
+
237 { 0x1d540, 0x1d544, }, { 0x1d546, 0x1d546, }, { 0x1d54a, 0x1d550, },
+
238 { 0x1d552, 0x1d6a5, }, { 0x1d6a8, 0x1d7cb, }, { 0x1d7ce, 0x1da8b, },
+
239 { 0x1da9b, 0x1da9f, }, { 0x1daa1, 0x1daaf, }, { 0x1df00, 0x1df1e, },
+
240 { 0x1df25, 0x1df2a, }, { 0x1e000, 0x1e006, }, { 0x1e008, 0x1e018, },
+
241 { 0x1e01b, 0x1e021, }, { 0x1e023, 0x1e024, }, { 0x1e026, 0x1e02a, },
+
242 { 0x1e030, 0x1e06d, }, { 0x1e08f, 0x1e08f, }, { 0x1e100, 0x1e12c, },
+
243 { 0x1e130, 0x1e13d, }, { 0x1e140, 0x1e149, }, { 0x1e14e, 0x1e14f, },
+
244 { 0x1e290, 0x1e2ae, }, { 0x1e2c0, 0x1e2f9, }, { 0x1e2ff, 0x1e2ff, },
+
245 { 0x1e4d0, 0x1e4f9, }, { 0x1e7e0, 0x1e7e6, }, { 0x1e7e8, 0x1e7eb, },
+
246 { 0x1e7ed, 0x1e7ee, }, { 0x1e7f0, 0x1e7fe, }, { 0x1e800, 0x1e8c4, },
+
247 { 0x1e8c7, 0x1e8d6, }, { 0x1e900, 0x1e94b, }, { 0x1e950, 0x1e959, },
+
248 { 0x1e95e, 0x1e95f, }, { 0x1ec71, 0x1ecb4, }, { 0x1ed01, 0x1ed3d, },
+
249 { 0x1ee00, 0x1ee03, }, { 0x1ee05, 0x1ee1f, }, { 0x1ee21, 0x1ee22, },
+
250 { 0x1ee24, 0x1ee24, }, { 0x1ee27, 0x1ee27, }, { 0x1ee29, 0x1ee32, },
+
251 { 0x1ee34, 0x1ee37, }, { 0x1ee39, 0x1ee39, }, { 0x1ee3b, 0x1ee3b, },
+
252 { 0x1ee42, 0x1ee42, }, { 0x1ee47, 0x1ee47, }, { 0x1ee49, 0x1ee49, },
+
253 { 0x1ee4b, 0x1ee4b, }, { 0x1ee4d, 0x1ee4f, }, { 0x1ee51, 0x1ee52, },
+
254 { 0x1ee54, 0x1ee54, }, { 0x1ee57, 0x1ee57, }, { 0x1ee59, 0x1ee59, },
+
255 { 0x1ee5b, 0x1ee5b, }, { 0x1ee5d, 0x1ee5d, }, { 0x1ee5f, 0x1ee5f, },
+
256 { 0x1ee61, 0x1ee62, }, { 0x1ee64, 0x1ee64, }, { 0x1ee67, 0x1ee6a, },
+
257 { 0x1ee6c, 0x1ee72, }, { 0x1ee74, 0x1ee77, }, { 0x1ee79, 0x1ee7c, },
+
258 { 0x1ee7e, 0x1ee7e, }, { 0x1ee80, 0x1ee89, }, { 0x1ee8b, 0x1ee9b, },
+
259 { 0x1eea1, 0x1eea3, }, { 0x1eea5, 0x1eea9, }, { 0x1eeab, 0x1eebb, },
+
260 { 0x1eef0, 0x1eef1, }, { 0x1f000, 0x1f02b, }, { 0x1f030, 0x1f093, },
+
261 { 0x1f0a0, 0x1f0ae, }, { 0x1f0b1, 0x1f0bf, }, { 0x1f0c1, 0x1f0cf, },
+
262 { 0x1f0d1, 0x1f0f5, }, { 0x1f100, 0x1f1ad, }, { 0x1f1e6, 0x1f202, },
+
263 { 0x1f210, 0x1f23b, }, { 0x1f240, 0x1f248, }, { 0x1f250, 0x1f251, },
+
264 { 0x1f260, 0x1f265, }, { 0x1f300, 0x1f6d7, }, { 0x1f6dc, 0x1f6ec, },
+
265 { 0x1f6f0, 0x1f6fc, }, { 0x1f700, 0x1f776, }, { 0x1f77b, 0x1f7d9, },
+
266 { 0x1f7e0, 0x1f7eb, }, { 0x1f7f0, 0x1f7f0, }, { 0x1f800, 0x1f80b, },
+
267 { 0x1f810, 0x1f847, }, { 0x1f850, 0x1f859, }, { 0x1f860, 0x1f887, },
+
268 { 0x1f890, 0x1f8ad, }, { 0x1f8b0, 0x1f8b1, }, { 0x1f900, 0x1fa53, },
+
269 { 0x1fa60, 0x1fa6d, }, { 0x1fa70, 0x1fa7c, }, { 0x1fa80, 0x1fa88, },
+
270 { 0x1fa90, 0x1fabd, }, { 0x1fabf, 0x1fac5, }, { 0x1face, 0x1fadb, },
+
271 { 0x1fae0, 0x1fae8, }, { 0x1faf0, 0x1faf8, }, { 0x1fb00, 0x1fb92, },
+
272 { 0x1fb94, 0x1fbca, }, { 0x1fbf0, 0x1fbf9, }, { 0x20000, 0x2a6df, },
+
273 { 0x2a700, 0x2b739, }, { 0x2b740, 0x2b81d, }, { 0x2b820, 0x2cea1, },
+
274 { 0x2ceb0, 0x2ebe0, }, { 0x2ebf0, 0x2ee5d, }, { 0x2f800, 0x2fa1d, },
+
275 { 0x30000, 0x3134a, }, { 0x31350, 0x323af, }, { 0xe0001, 0xe0001, },
+
276 { 0xe0020, 0xe007f, }, { 0xe0100, 0xe01ef, }, { 0xf0000, 0xffffd, },
+
277 { 0x100000, 0x10fffd, },
+
278 }};
+
279
+
280 return utils::table_lookup(print_table, c);
+
281 }
+
282}
Definition: _utils.hpp:34
bool isprint(char32_t c)
Definition: isprint.hpp:37
diff --git a/ispunct_8hpp.html b/ispunct_8hpp.html index ca654e9..4c1f84f 100644 --- a/ispunct_8hpp.html +++ b/ispunct_8hpp.html @@ -2,8 +2,8 @@ - - + + peelo-unicode: include/peelo/unicode/ctype/ispunct.hpp File Reference @@ -16,8 +16,8 @@
- - + @@ -26,15 +26,16 @@
+
peelo-unicode
- + +/* @license-end */ +

Go to the source code of this file.

- - + - + - +

+

Namespaces

 peelo
namespace  peelo
 
 peelo::unicode
namespace  peelo::unicode
 
 peelo::unicode::ctype
namespace  peelo::unicode::ctype
 
- @@ -70,7 +70,7 @@ diff --git a/ispunct_8hpp_source.html b/ispunct_8hpp_source.html index 925ffd6..190240c 100644 --- a/ispunct_8hpp_source.html +++ b/ispunct_8hpp_source.html @@ -2,8 +2,8 @@ - - + +peelo-unicode: include/peelo/unicode/ctype/ispunct.hpp Source File @@ -16,8 +16,8 @@

+

Functions

bool peelo::unicode::ctype::ispunct (char32_t c)
 
- - + @@ -26,15 +26,16 @@
+
peelo-unicode
- + +/* @license-end */ +
-
-
ispunct.hpp
+
ispunct.hpp
-Go to the documentation of this file.
1 /*
-
2  * Copyright (c) 2018-2024, peelo.net
-
3  * All rights reserved.
-
4  *
-
5  * Redistribution and use in source and binary forms, with or without
-
6  * modification, are permitted provided that the following conditions are met:
-
7  *
-
8  * * Redistributions of source code must retain the above copyright notice,
-
9  * this list of conditions and the following disclaimer.
-
10  *
-
11  * * Redistributions in binary form must reproduce the above copyright notice,
-
12  * this list of conditions and the following disclaimer in the documentation
-
13  * and/or other materials provided with the distribution.
-
14  *
-
15  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-
16  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-
17  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-
18  * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
-
19  * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-
20  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-
21  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-
22  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-
23  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-
24  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-
25  * POSSIBILITY OF SUCH DAMAGE.
-
26  */
-
27 #pragma once
-
28 
- -
30 
-
31 namespace peelo::unicode::ctype
-
32 {
-
37  inline bool
-
38  ispunct(char32_t c)
-
39  {
-
40  static const std::array<utils::range, 339> punct_table =
-
41  {{
-
42  { 0x0021, 0x002f, }, { 0x003a, 0x0040, }, { 0x005b, 0x0060, },
-
43  { 0x007b, 0x007e, }, { 0x00a1, 0x00a9, }, { 0x00ab, 0x00ac, },
-
44  { 0x00ae, 0x00b1, }, { 0x00b4, 0x00b4, }, { 0x00b6, 0x00b8, },
-
45  { 0x00bb, 0x00bb, }, { 0x00bf, 0x00bf, }, { 0x00d7, 0x00d7, },
-
46  { 0x00f7, 0x00f7, }, { 0x02c2, 0x02c5, }, { 0x02d2, 0x02df, },
-
47  { 0x02e5, 0x02eb, }, { 0x02ed, 0x02ed, }, { 0x02ef, 0x02ff, },
-
48  { 0x0375, 0x0375, }, { 0x037e, 0x037e, }, { 0x0384, 0x0385, },
-
49  { 0x0387, 0x0387, }, { 0x03f6, 0x03f6, }, { 0x0482, 0x0482, },
-
50  { 0x055a, 0x055f, }, { 0x0589, 0x058a, }, { 0x058d, 0x058f, },
-
51  { 0x05be, 0x05be, }, { 0x05c0, 0x05c0, }, { 0x05c3, 0x05c3, },
-
52  { 0x05c6, 0x05c6, }, { 0x05f3, 0x05f4, }, { 0x0606, 0x060f, },
-
53  { 0x061b, 0x061b, }, { 0x061d, 0x061f, }, { 0x066a, 0x066d, },
-
54  { 0x06d4, 0x06d4, }, { 0x06de, 0x06de, }, { 0x06e9, 0x06e9, },
-
55  { 0x06fd, 0x06fe, }, { 0x0700, 0x070d, }, { 0x07f6, 0x07f9, },
-
56  { 0x07fe, 0x07ff, }, { 0x0830, 0x083e, }, { 0x085e, 0x085e, },
-
57  { 0x0888, 0x0888, }, { 0x0964, 0x0965, }, { 0x0970, 0x0970, },
-
58  { 0x09f2, 0x09f3, }, { 0x09fa, 0x09fb, }, { 0x09fd, 0x09fd, },
-
59  { 0x0a76, 0x0a76, }, { 0x0af0, 0x0af1, }, { 0x0b70, 0x0b70, },
-
60  { 0x0bf3, 0x0bfa, }, { 0x0c77, 0x0c77, }, { 0x0c7f, 0x0c7f, },
-
61  { 0x0c84, 0x0c84, }, { 0x0d4f, 0x0d4f, }, { 0x0d79, 0x0d79, },
-
62  { 0x0df4, 0x0df4, }, { 0x0e3f, 0x0e3f, }, { 0x0e4f, 0x0e4f, },
-
63  { 0x0e5a, 0x0e5b, }, { 0x0f01, 0x0f17, }, { 0x0f1a, 0x0f1f, },
-
64  { 0x0f34, 0x0f34, }, { 0x0f36, 0x0f36, }, { 0x0f38, 0x0f38, },
-
65  { 0x0f3a, 0x0f3d, }, { 0x0f85, 0x0f85, }, { 0x0fbe, 0x0fc5, },
-
66  { 0x0fc7, 0x0fcc, }, { 0x0fce, 0x0fda, }, { 0x104a, 0x104f, },
-
67  { 0x109e, 0x109f, }, { 0x10fb, 0x10fb, }, { 0x1360, 0x1368, },
-
68  { 0x1390, 0x1399, }, { 0x1400, 0x1400, }, { 0x166d, 0x166e, },
-
69  { 0x169b, 0x169c, }, { 0x16eb, 0x16ed, }, { 0x1735, 0x1736, },
-
70  { 0x17d4, 0x17d6, }, { 0x17d8, 0x17db, }, { 0x1800, 0x180a, },
-
71  { 0x1940, 0x1940, }, { 0x1944, 0x1945, }, { 0x19de, 0x19ff, },
-
72  { 0x1a1e, 0x1a1f, }, { 0x1aa0, 0x1aa6, }, { 0x1aa8, 0x1aad, },
-
73  { 0x1b5a, 0x1b6a, }, { 0x1b74, 0x1b7e, }, { 0x1bfc, 0x1bff, },
-
74  { 0x1c3b, 0x1c3f, }, { 0x1c7e, 0x1c7f, }, { 0x1cc0, 0x1cc7, },
-
75  { 0x1cd3, 0x1cd3, }, { 0x1fbd, 0x1fbd, }, { 0x1fbf, 0x1fc1, },
-
76  { 0x1fcd, 0x1fcf, }, { 0x1fdd, 0x1fdf, }, { 0x1fed, 0x1fef, },
-
77  { 0x1ffd, 0x1ffe, }, { 0x2010, 0x2027, }, { 0x2030, 0x205e, },
-
78  { 0x207a, 0x207e, }, { 0x208a, 0x208e, }, { 0x20a0, 0x20c0, },
-
79  { 0x2100, 0x2101, }, { 0x2103, 0x2106, }, { 0x2108, 0x2109, },
-
80  { 0x2114, 0x2114, }, { 0x2116, 0x2118, }, { 0x211e, 0x2123, },
-
81  { 0x2125, 0x2125, }, { 0x2127, 0x2127, }, { 0x2129, 0x2129, },
-
82  { 0x212e, 0x212e, }, { 0x213a, 0x213b, }, { 0x2140, 0x2144, },
-
83  { 0x214a, 0x214d, }, { 0x214f, 0x214f, }, { 0x218a, 0x218b, },
-
84  { 0x2190, 0x2426, }, { 0x2440, 0x244a, }, { 0x249c, 0x24e9, },
-
85  { 0x2500, 0x2775, }, { 0x2794, 0x2b73, }, { 0x2b76, 0x2b95, },
-
86  { 0x2b97, 0x2bff, }, { 0x2ce5, 0x2cea, }, { 0x2cf9, 0x2cfc, },
-
87  { 0x2cfe, 0x2cff, }, { 0x2d70, 0x2d70, }, { 0x2e00, 0x2e2e, },
-
88  { 0x2e30, 0x2e5d, }, { 0x2e80, 0x2e99, }, { 0x2e9b, 0x2ef3, },
-
89  { 0x2f00, 0x2fd5, }, { 0x2ff0, 0x2fff, }, { 0x3001, 0x3004, },
-
90  { 0x3008, 0x3020, }, { 0x3030, 0x3030, }, { 0x3036, 0x3037, },
-
91  { 0x303d, 0x303f, }, { 0x309b, 0x309c, }, { 0x30a0, 0x30a0, },
-
92  { 0x30fb, 0x30fb, }, { 0x3190, 0x3191, }, { 0x3196, 0x319f, },
-
93  { 0x31c0, 0x31e3, }, { 0x31ef, 0x31ef, }, { 0x3200, 0x321e, },
-
94  { 0x322a, 0x3247, }, { 0x3250, 0x3250, }, { 0x3260, 0x327f, },
-
95  { 0x328a, 0x32b0, }, { 0x32c0, 0x33ff, }, { 0x4dc0, 0x4dff, },
-
96  { 0xa490, 0xa4c6, }, { 0xa4fe, 0xa4ff, }, { 0xa60d, 0xa60f, },
-
97  { 0xa673, 0xa673, }, { 0xa67e, 0xa67e, }, { 0xa6f2, 0xa6f7, },
-
98  { 0xa700, 0xa716, }, { 0xa720, 0xa721, }, { 0xa789, 0xa78a, },
-
99  { 0xa828, 0xa82b, }, { 0xa836, 0xa839, }, { 0xa874, 0xa877, },
-
100  { 0xa8ce, 0xa8cf, }, { 0xa8f8, 0xa8fa, }, { 0xa8fc, 0xa8fc, },
-
101  { 0xa92e, 0xa92f, }, { 0xa95f, 0xa95f, }, { 0xa9c1, 0xa9cd, },
-
102  { 0xa9de, 0xa9df, }, { 0xaa5c, 0xaa5f, }, { 0xaa77, 0xaa79, },
-
103  { 0xaade, 0xaadf, }, { 0xaaf0, 0xaaf1, }, { 0xab5b, 0xab5b, },
-
104  { 0xab6a, 0xab6b, }, { 0xabeb, 0xabeb, }, { 0xfb29, 0xfb29, },
-
105  { 0xfbb2, 0xfbc2, }, { 0xfd3e, 0xfd4f, }, { 0xfdcf, 0xfdcf, },
-
106  { 0xfdfc, 0xfdff, }, { 0xfe10, 0xfe19, }, { 0xfe30, 0xfe52, },
-
107  { 0xfe54, 0xfe66, }, { 0xfe68, 0xfe6b, }, { 0xff01, 0xff0f, },
-
108  { 0xff1a, 0xff20, }, { 0xff3b, 0xff40, }, { 0xff5b, 0xff65, },
-
109  { 0xffe0, 0xffe6, }, { 0xffe8, 0xffee, }, { 0xfffc, 0xfffd, },
-
110  { 0x10100, 0x10102, }, { 0x10137, 0x1013f, }, { 0x10179, 0x10189, },
-
111  { 0x1018c, 0x1018e, }, { 0x10190, 0x1019c, }, { 0x101a0, 0x101a0, },
-
112  { 0x101d0, 0x101fc, }, { 0x1039f, 0x1039f, }, { 0x103d0, 0x103d0, },
-
113  { 0x1056f, 0x1056f, }, { 0x10857, 0x10857, }, { 0x10877, 0x10878, },
-
114  { 0x1091f, 0x1091f, }, { 0x1093f, 0x1093f, }, { 0x10a50, 0x10a58, },
-
115  { 0x10a7f, 0x10a7f, }, { 0x10ac8, 0x10ac8, }, { 0x10af0, 0x10af6, },
-
116  { 0x10b39, 0x10b3f, }, { 0x10b99, 0x10b9c, }, { 0x10ead, 0x10ead, },
-
117  { 0x10f55, 0x10f59, }, { 0x10f86, 0x10f89, }, { 0x11047, 0x1104d, },
-
118  { 0x110bb, 0x110bc, }, { 0x110be, 0x110c1, }, { 0x11140, 0x11143, },
-
119  { 0x11174, 0x11175, }, { 0x111c5, 0x111c8, }, { 0x111cd, 0x111cd, },
-
120  { 0x111db, 0x111db, }, { 0x111dd, 0x111df, }, { 0x11238, 0x1123d, },
-
121  { 0x112a9, 0x112a9, }, { 0x1144b, 0x1144f, }, { 0x1145a, 0x1145b, },
-
122  { 0x1145d, 0x1145d, }, { 0x114c6, 0x114c6, }, { 0x115c1, 0x115d7, },
-
123  { 0x11641, 0x11643, }, { 0x11660, 0x1166c, }, { 0x116b9, 0x116b9, },
-
124  { 0x1173c, 0x1173f, }, { 0x1183b, 0x1183b, }, { 0x11944, 0x11946, },
-
125  { 0x119e2, 0x119e2, }, { 0x11a3f, 0x11a46, }, { 0x11a9a, 0x11a9c, },
-
126  { 0x11a9e, 0x11aa2, }, { 0x11b00, 0x11b09, }, { 0x11c41, 0x11c45, },
-
127  { 0x11c70, 0x11c71, }, { 0x11ef7, 0x11ef8, }, { 0x11f43, 0x11f4f, },
-
128  { 0x11fd5, 0x11ff1, }, { 0x11fff, 0x11fff, }, { 0x12470, 0x12474, },
-
129  { 0x12ff1, 0x12ff2, }, { 0x16a6e, 0x16a6f, }, { 0x16af5, 0x16af5, },
-
130  { 0x16b37, 0x16b3f, }, { 0x16b44, 0x16b45, }, { 0x16e97, 0x16e9a, },
-
131  { 0x16fe2, 0x16fe2, }, { 0x1bc9c, 0x1bc9c, }, { 0x1bc9f, 0x1bc9f, },
-
132  { 0x1cf50, 0x1cfc3, }, { 0x1d000, 0x1d0f5, }, { 0x1d100, 0x1d126, },
-
133  { 0x1d129, 0x1d164, }, { 0x1d16a, 0x1d16c, }, { 0x1d183, 0x1d184, },
-
134  { 0x1d18c, 0x1d1a9, }, { 0x1d1ae, 0x1d1ea, }, { 0x1d200, 0x1d241, },
-
135  { 0x1d245, 0x1d245, }, { 0x1d300, 0x1d356, }, { 0x1d6c1, 0x1d6c1, },
-
136  { 0x1d6db, 0x1d6db, }, { 0x1d6fb, 0x1d6fb, }, { 0x1d715, 0x1d715, },
-
137  { 0x1d735, 0x1d735, }, { 0x1d74f, 0x1d74f, }, { 0x1d76f, 0x1d76f, },
-
138  { 0x1d789, 0x1d789, }, { 0x1d7a9, 0x1d7a9, }, { 0x1d7c3, 0x1d7c3, },
-
139  { 0x1d800, 0x1d9ff, }, { 0x1da37, 0x1da3a, }, { 0x1da6d, 0x1da74, },
-
140  { 0x1da76, 0x1da83, }, { 0x1da85, 0x1da8b, }, { 0x1e14f, 0x1e14f, },
-
141  { 0x1e2ff, 0x1e2ff, }, { 0x1e95e, 0x1e95f, }, { 0x1ecac, 0x1ecac, },
-
142  { 0x1ecb0, 0x1ecb0, }, { 0x1ed2e, 0x1ed2e, }, { 0x1eef0, 0x1eef1, },
-
143  { 0x1f000, 0x1f02b, }, { 0x1f030, 0x1f093, }, { 0x1f0a0, 0x1f0ae, },
-
144  { 0x1f0b1, 0x1f0bf, }, { 0x1f0c1, 0x1f0cf, }, { 0x1f0d1, 0x1f0f5, },
-
145  { 0x1f10d, 0x1f1ad, }, { 0x1f1e6, 0x1f202, }, { 0x1f210, 0x1f23b, },
-
146  { 0x1f240, 0x1f248, }, { 0x1f250, 0x1f251, }, { 0x1f260, 0x1f265, },
-
147  { 0x1f300, 0x1f6d7, }, { 0x1f6dc, 0x1f6ec, }, { 0x1f6f0, 0x1f6fc, },
-
148  { 0x1f700, 0x1f776, }, { 0x1f77b, 0x1f7d9, }, { 0x1f7e0, 0x1f7eb, },
-
149  { 0x1f7f0, 0x1f7f0, }, { 0x1f800, 0x1f80b, }, { 0x1f810, 0x1f847, },
-
150  { 0x1f850, 0x1f859, }, { 0x1f860, 0x1f887, }, { 0x1f890, 0x1f8ad, },
-
151  { 0x1f8b0, 0x1f8b1, }, { 0x1f900, 0x1fa53, }, { 0x1fa60, 0x1fa6d, },
-
152  { 0x1fa70, 0x1fa7c, }, { 0x1fa80, 0x1fa88, }, { 0x1fa90, 0x1fabd, },
-
153  { 0x1fabf, 0x1fac5, }, { 0x1face, 0x1fadb, }, { 0x1fae0, 0x1fae8, },
-
154  { 0x1faf0, 0x1faf8, }, { 0x1fb00, 0x1fb92, }, { 0x1fb94, 0x1fbca, },
-
155  }};
-
156 
-
157  return utils::table_lookup(punct_table, c);
-
158  }
-
159 }
+Go to the documentation of this file.
1/*
+
2 * Copyright (c) 2018-2024, peelo.net
+
3 * All rights reserved.
+
4 *
+
5 * Redistribution and use in source and binary forms, with or without
+
6 * modification, are permitted provided that the following conditions are met:
+
7 *
+
8 * * Redistributions of source code must retain the above copyright notice,
+
9 * this list of conditions and the following disclaimer.
+
10 *
+
11 * * Redistributions in binary form must reproduce the above copyright notice,
+
12 * this list of conditions and the following disclaimer in the documentation
+
13 * and/or other materials provided with the distribution.
+
14 *
+
15 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+
16 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+
17 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+
18 * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
+
19 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+
20 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+
21 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+
22 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+
23 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+
24 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+
25 * POSSIBILITY OF SUCH DAMAGE.
+
26 */
+
27#pragma once
+
28
+ +
30
+ +
32{
+
37 inline bool
+
38 ispunct(char32_t c)
+
39 {
+
40 static const std::array<utils::range, 339> punct_table =
+
41 {{
+
42 { 0x0021, 0x002f, }, { 0x003a, 0x0040, }, { 0x005b, 0x0060, },
+
43 { 0x007b, 0x007e, }, { 0x00a1, 0x00a9, }, { 0x00ab, 0x00ac, },
+
44 { 0x00ae, 0x00b1, }, { 0x00b4, 0x00b4, }, { 0x00b6, 0x00b8, },
+
45 { 0x00bb, 0x00bb, }, { 0x00bf, 0x00bf, }, { 0x00d7, 0x00d7, },
+
46 { 0x00f7, 0x00f7, }, { 0x02c2, 0x02c5, }, { 0x02d2, 0x02df, },
+
47 { 0x02e5, 0x02eb, }, { 0x02ed, 0x02ed, }, { 0x02ef, 0x02ff, },
+
48 { 0x0375, 0x0375, }, { 0x037e, 0x037e, }, { 0x0384, 0x0385, },
+
49 { 0x0387, 0x0387, }, { 0x03f6, 0x03f6, }, { 0x0482, 0x0482, },
+
50 { 0x055a, 0x055f, }, { 0x0589, 0x058a, }, { 0x058d, 0x058f, },
+
51 { 0x05be, 0x05be, }, { 0x05c0, 0x05c0, }, { 0x05c3, 0x05c3, },
+
52 { 0x05c6, 0x05c6, }, { 0x05f3, 0x05f4, }, { 0x0606, 0x060f, },
+
53 { 0x061b, 0x061b, }, { 0x061d, 0x061f, }, { 0x066a, 0x066d, },
+
54 { 0x06d4, 0x06d4, }, { 0x06de, 0x06de, }, { 0x06e9, 0x06e9, },
+
55 { 0x06fd, 0x06fe, }, { 0x0700, 0x070d, }, { 0x07f6, 0x07f9, },
+
56 { 0x07fe, 0x07ff, }, { 0x0830, 0x083e, }, { 0x085e, 0x085e, },
+
57 { 0x0888, 0x0888, }, { 0x0964, 0x0965, }, { 0x0970, 0x0970, },
+
58 { 0x09f2, 0x09f3, }, { 0x09fa, 0x09fb, }, { 0x09fd, 0x09fd, },
+
59 { 0x0a76, 0x0a76, }, { 0x0af0, 0x0af1, }, { 0x0b70, 0x0b70, },
+
60 { 0x0bf3, 0x0bfa, }, { 0x0c77, 0x0c77, }, { 0x0c7f, 0x0c7f, },
+
61 { 0x0c84, 0x0c84, }, { 0x0d4f, 0x0d4f, }, { 0x0d79, 0x0d79, },
+
62 { 0x0df4, 0x0df4, }, { 0x0e3f, 0x0e3f, }, { 0x0e4f, 0x0e4f, },
+
63 { 0x0e5a, 0x0e5b, }, { 0x0f01, 0x0f17, }, { 0x0f1a, 0x0f1f, },
+
64 { 0x0f34, 0x0f34, }, { 0x0f36, 0x0f36, }, { 0x0f38, 0x0f38, },
+
65 { 0x0f3a, 0x0f3d, }, { 0x0f85, 0x0f85, }, { 0x0fbe, 0x0fc5, },
+
66 { 0x0fc7, 0x0fcc, }, { 0x0fce, 0x0fda, }, { 0x104a, 0x104f, },
+
67 { 0x109e, 0x109f, }, { 0x10fb, 0x10fb, }, { 0x1360, 0x1368, },
+
68 { 0x1390, 0x1399, }, { 0x1400, 0x1400, }, { 0x166d, 0x166e, },
+
69 { 0x169b, 0x169c, }, { 0x16eb, 0x16ed, }, { 0x1735, 0x1736, },
+
70 { 0x17d4, 0x17d6, }, { 0x17d8, 0x17db, }, { 0x1800, 0x180a, },
+
71 { 0x1940, 0x1940, }, { 0x1944, 0x1945, }, { 0x19de, 0x19ff, },
+
72 { 0x1a1e, 0x1a1f, }, { 0x1aa0, 0x1aa6, }, { 0x1aa8, 0x1aad, },
+
73 { 0x1b5a, 0x1b6a, }, { 0x1b74, 0x1b7e, }, { 0x1bfc, 0x1bff, },
+
74 { 0x1c3b, 0x1c3f, }, { 0x1c7e, 0x1c7f, }, { 0x1cc0, 0x1cc7, },
+
75 { 0x1cd3, 0x1cd3, }, { 0x1fbd, 0x1fbd, }, { 0x1fbf, 0x1fc1, },
+
76 { 0x1fcd, 0x1fcf, }, { 0x1fdd, 0x1fdf, }, { 0x1fed, 0x1fef, },
+
77 { 0x1ffd, 0x1ffe, }, { 0x2010, 0x2027, }, { 0x2030, 0x205e, },
+
78 { 0x207a, 0x207e, }, { 0x208a, 0x208e, }, { 0x20a0, 0x20c0, },
+
79 { 0x2100, 0x2101, }, { 0x2103, 0x2106, }, { 0x2108, 0x2109, },
+
80 { 0x2114, 0x2114, }, { 0x2116, 0x2118, }, { 0x211e, 0x2123, },
+
81 { 0x2125, 0x2125, }, { 0x2127, 0x2127, }, { 0x2129, 0x2129, },
+
82 { 0x212e, 0x212e, }, { 0x213a, 0x213b, }, { 0x2140, 0x2144, },
+
83 { 0x214a, 0x214d, }, { 0x214f, 0x214f, }, { 0x218a, 0x218b, },
+
84 { 0x2190, 0x2426, }, { 0x2440, 0x244a, }, { 0x249c, 0x24e9, },
+
85 { 0x2500, 0x2775, }, { 0x2794, 0x2b73, }, { 0x2b76, 0x2b95, },
+
86 { 0x2b97, 0x2bff, }, { 0x2ce5, 0x2cea, }, { 0x2cf9, 0x2cfc, },
+
87 { 0x2cfe, 0x2cff, }, { 0x2d70, 0x2d70, }, { 0x2e00, 0x2e2e, },
+
88 { 0x2e30, 0x2e5d, }, { 0x2e80, 0x2e99, }, { 0x2e9b, 0x2ef3, },
+
89 { 0x2f00, 0x2fd5, }, { 0x2ff0, 0x2fff, }, { 0x3001, 0x3004, },
+
90 { 0x3008, 0x3020, }, { 0x3030, 0x3030, }, { 0x3036, 0x3037, },
+
91 { 0x303d, 0x303f, }, { 0x309b, 0x309c, }, { 0x30a0, 0x30a0, },
+
92 { 0x30fb, 0x30fb, }, { 0x3190, 0x3191, }, { 0x3196, 0x319f, },
+
93 { 0x31c0, 0x31e3, }, { 0x31ef, 0x31ef, }, { 0x3200, 0x321e, },
+
94 { 0x322a, 0x3247, }, { 0x3250, 0x3250, }, { 0x3260, 0x327f, },
+
95 { 0x328a, 0x32b0, }, { 0x32c0, 0x33ff, }, { 0x4dc0, 0x4dff, },
+
96 { 0xa490, 0xa4c6, }, { 0xa4fe, 0xa4ff, }, { 0xa60d, 0xa60f, },
+
97 { 0xa673, 0xa673, }, { 0xa67e, 0xa67e, }, { 0xa6f2, 0xa6f7, },
+
98 { 0xa700, 0xa716, }, { 0xa720, 0xa721, }, { 0xa789, 0xa78a, },
+
99 { 0xa828, 0xa82b, }, { 0xa836, 0xa839, }, { 0xa874, 0xa877, },
+
100 { 0xa8ce, 0xa8cf, }, { 0xa8f8, 0xa8fa, }, { 0xa8fc, 0xa8fc, },
+
101 { 0xa92e, 0xa92f, }, { 0xa95f, 0xa95f, }, { 0xa9c1, 0xa9cd, },
+
102 { 0xa9de, 0xa9df, }, { 0xaa5c, 0xaa5f, }, { 0xaa77, 0xaa79, },
+
103 { 0xaade, 0xaadf, }, { 0xaaf0, 0xaaf1, }, { 0xab5b, 0xab5b, },
+
104 { 0xab6a, 0xab6b, }, { 0xabeb, 0xabeb, }, { 0xfb29, 0xfb29, },
+
105 { 0xfbb2, 0xfbc2, }, { 0xfd3e, 0xfd4f, }, { 0xfdcf, 0xfdcf, },
+
106 { 0xfdfc, 0xfdff, }, { 0xfe10, 0xfe19, }, { 0xfe30, 0xfe52, },
+
107 { 0xfe54, 0xfe66, }, { 0xfe68, 0xfe6b, }, { 0xff01, 0xff0f, },
+
108 { 0xff1a, 0xff20, }, { 0xff3b, 0xff40, }, { 0xff5b, 0xff65, },
+
109 { 0xffe0, 0xffe6, }, { 0xffe8, 0xffee, }, { 0xfffc, 0xfffd, },
+
110 { 0x10100, 0x10102, }, { 0x10137, 0x1013f, }, { 0x10179, 0x10189, },
+
111 { 0x1018c, 0x1018e, }, { 0x10190, 0x1019c, }, { 0x101a0, 0x101a0, },
+
112 { 0x101d0, 0x101fc, }, { 0x1039f, 0x1039f, }, { 0x103d0, 0x103d0, },
+
113 { 0x1056f, 0x1056f, }, { 0x10857, 0x10857, }, { 0x10877, 0x10878, },
+
114 { 0x1091f, 0x1091f, }, { 0x1093f, 0x1093f, }, { 0x10a50, 0x10a58, },
+
115 { 0x10a7f, 0x10a7f, }, { 0x10ac8, 0x10ac8, }, { 0x10af0, 0x10af6, },
+
116 { 0x10b39, 0x10b3f, }, { 0x10b99, 0x10b9c, }, { 0x10ead, 0x10ead, },
+
117 { 0x10f55, 0x10f59, }, { 0x10f86, 0x10f89, }, { 0x11047, 0x1104d, },
+
118 { 0x110bb, 0x110bc, }, { 0x110be, 0x110c1, }, { 0x11140, 0x11143, },
+
119 { 0x11174, 0x11175, }, { 0x111c5, 0x111c8, }, { 0x111cd, 0x111cd, },
+
120 { 0x111db, 0x111db, }, { 0x111dd, 0x111df, }, { 0x11238, 0x1123d, },
+
121 { 0x112a9, 0x112a9, }, { 0x1144b, 0x1144f, }, { 0x1145a, 0x1145b, },
+
122 { 0x1145d, 0x1145d, }, { 0x114c6, 0x114c6, }, { 0x115c1, 0x115d7, },
+
123 { 0x11641, 0x11643, }, { 0x11660, 0x1166c, }, { 0x116b9, 0x116b9, },
+
124 { 0x1173c, 0x1173f, }, { 0x1183b, 0x1183b, }, { 0x11944, 0x11946, },
+
125 { 0x119e2, 0x119e2, }, { 0x11a3f, 0x11a46, }, { 0x11a9a, 0x11a9c, },
+
126 { 0x11a9e, 0x11aa2, }, { 0x11b00, 0x11b09, }, { 0x11c41, 0x11c45, },
+
127 { 0x11c70, 0x11c71, }, { 0x11ef7, 0x11ef8, }, { 0x11f43, 0x11f4f, },
+
128 { 0x11fd5, 0x11ff1, }, { 0x11fff, 0x11fff, }, { 0x12470, 0x12474, },
+
129 { 0x12ff1, 0x12ff2, }, { 0x16a6e, 0x16a6f, }, { 0x16af5, 0x16af5, },
+
130 { 0x16b37, 0x16b3f, }, { 0x16b44, 0x16b45, }, { 0x16e97, 0x16e9a, },
+
131 { 0x16fe2, 0x16fe2, }, { 0x1bc9c, 0x1bc9c, }, { 0x1bc9f, 0x1bc9f, },
+
132 { 0x1cf50, 0x1cfc3, }, { 0x1d000, 0x1d0f5, }, { 0x1d100, 0x1d126, },
+
133 { 0x1d129, 0x1d164, }, { 0x1d16a, 0x1d16c, }, { 0x1d183, 0x1d184, },
+
134 { 0x1d18c, 0x1d1a9, }, { 0x1d1ae, 0x1d1ea, }, { 0x1d200, 0x1d241, },
+
135 { 0x1d245, 0x1d245, }, { 0x1d300, 0x1d356, }, { 0x1d6c1, 0x1d6c1, },
+
136 { 0x1d6db, 0x1d6db, }, { 0x1d6fb, 0x1d6fb, }, { 0x1d715, 0x1d715, },
+
137 { 0x1d735, 0x1d735, }, { 0x1d74f, 0x1d74f, }, { 0x1d76f, 0x1d76f, },
+
138 { 0x1d789, 0x1d789, }, { 0x1d7a9, 0x1d7a9, }, { 0x1d7c3, 0x1d7c3, },
+
139 { 0x1d800, 0x1d9ff, }, { 0x1da37, 0x1da3a, }, { 0x1da6d, 0x1da74, },
+
140 { 0x1da76, 0x1da83, }, { 0x1da85, 0x1da8b, }, { 0x1e14f, 0x1e14f, },
+
141 { 0x1e2ff, 0x1e2ff, }, { 0x1e95e, 0x1e95f, }, { 0x1ecac, 0x1ecac, },
+
142 { 0x1ecb0, 0x1ecb0, }, { 0x1ed2e, 0x1ed2e, }, { 0x1eef0, 0x1eef1, },
+
143 { 0x1f000, 0x1f02b, }, { 0x1f030, 0x1f093, }, { 0x1f0a0, 0x1f0ae, },
+
144 { 0x1f0b1, 0x1f0bf, }, { 0x1f0c1, 0x1f0cf, }, { 0x1f0d1, 0x1f0f5, },
+
145 { 0x1f10d, 0x1f1ad, }, { 0x1f1e6, 0x1f202, }, { 0x1f210, 0x1f23b, },
+
146 { 0x1f240, 0x1f248, }, { 0x1f250, 0x1f251, }, { 0x1f260, 0x1f265, },
+
147 { 0x1f300, 0x1f6d7, }, { 0x1f6dc, 0x1f6ec, }, { 0x1f6f0, 0x1f6fc, },
+
148 { 0x1f700, 0x1f776, }, { 0x1f77b, 0x1f7d9, }, { 0x1f7e0, 0x1f7eb, },
+
149 { 0x1f7f0, 0x1f7f0, }, { 0x1f800, 0x1f80b, }, { 0x1f810, 0x1f847, },
+
150 { 0x1f850, 0x1f859, }, { 0x1f860, 0x1f887, }, { 0x1f890, 0x1f8ad, },
+
151 { 0x1f8b0, 0x1f8b1, }, { 0x1f900, 0x1fa53, }, { 0x1fa60, 0x1fa6d, },
+
152 { 0x1fa70, 0x1fa7c, }, { 0x1fa80, 0x1fa88, }, { 0x1fa90, 0x1fabd, },
+
153 { 0x1fabf, 0x1fac5, }, { 0x1face, 0x1fadb, }, { 0x1fae0, 0x1fae8, },
+
154 { 0x1faf0, 0x1faf8, }, { 0x1fb00, 0x1fb92, }, { 0x1fb94, 0x1fbca, },
+
155 }};
+
156
+
157 return utils::table_lookup(punct_table, c);
+
158 }
+
159}
Definition: _utils.hpp:34
bool ispunct(char32_t c)
Definition: ispunct.hpp:38
diff --git a/isspace_8hpp.html b/isspace_8hpp.html index a312780..2319ad2 100644 --- a/isspace_8hpp.html +++ b/isspace_8hpp.html @@ -2,8 +2,8 @@ - - + + peelo-unicode: include/peelo/unicode/ctype/isspace.hpp File Reference @@ -16,8 +16,8 @@
- - + @@ -26,15 +26,16 @@
+
peelo-unicode
- + +/* @license-end */ +

Go to the source code of this file.

- - + - + - +

+

Namespaces

 peelo
namespace  peelo
 
 peelo::unicode
namespace  peelo::unicode
 
 peelo::unicode::ctype
namespace  peelo::unicode::ctype
 
- @@ -70,7 +70,7 @@ diff --git a/isspace_8hpp_source.html b/isspace_8hpp_source.html index 5a5c2d4..fa09b2b 100644 --- a/isspace_8hpp_source.html +++ b/isspace_8hpp_source.html @@ -2,8 +2,8 @@ - - + +peelo-unicode: include/peelo/unicode/ctype/isspace.hpp Source File @@ -16,8 +16,8 @@

+

Functions

bool peelo::unicode::ctype::isspace (char32_t c)
 
- - + @@ -26,15 +26,16 @@
+
peelo-unicode
- + +/* @license-end */ +
-
-
isspace.hpp
+
isspace.hpp
-Go to the documentation of this file.
1 /*
-
2  * Copyright (c) 2018-2024, peelo.net
-
3  * All rights reserved.
-
4  *
-
5  * Redistribution and use in source and binary forms, with or without
-
6  * modification, are permitted provided that the following conditions are met:
-
7  *
-
8  * * Redistributions of source code must retain the above copyright notice,
-
9  * this list of conditions and the following disclaimer.
-
10  *
-
11  * * Redistributions in binary form must reproduce the above copyright notice,
-
12  * this list of conditions and the following disclaimer in the documentation
-
13  * and/or other materials provided with the distribution.
-
14  *
-
15  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-
16  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-
17  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-
18  * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
-
19  * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-
20  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-
21  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-
22  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-
23  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-
24  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-
25  * POSSIBILITY OF SUCH DAMAGE.
-
26  */
-
27 #pragma once
-
28 
- -
30 
-
31 namespace peelo::unicode::ctype
-
32 {
-
36  inline bool
-
37  isspace(char32_t c)
-
38  {
-
39  static const std::array<utils::range, 11> space_table =
-
40  {{
-
41  { 0x0009, 0x000D }, { 0x0020, 0x0020 }, { 0x0085, 0x0085 },
-
42  { 0x00A0, 0x00A0 }, { 0x1680, 0x1680 }, { 0x2000, 0x200A },
-
43  { 0x2028, 0x2028 }, { 0x2029, 0x2029 }, { 0x202F, 0x202F },
-
44  { 0x205F, 0x205F }, { 0x3000, 0x3000 },
-
45  }};
-
46 
-
47  return utils::table_lookup(space_table, c);
-
48  }
-
49 }
+Go to the documentation of this file.
1/*
+
2 * Copyright (c) 2018-2024, peelo.net
+
3 * All rights reserved.
+
4 *
+
5 * Redistribution and use in source and binary forms, with or without
+
6 * modification, are permitted provided that the following conditions are met:
+
7 *
+
8 * * Redistributions of source code must retain the above copyright notice,
+
9 * this list of conditions and the following disclaimer.
+
10 *
+
11 * * Redistributions in binary form must reproduce the above copyright notice,
+
12 * this list of conditions and the following disclaimer in the documentation
+
13 * and/or other materials provided with the distribution.
+
14 *
+
15 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+
16 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+
17 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+
18 * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
+
19 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+
20 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+
21 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+
22 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+
23 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+
24 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+
25 * POSSIBILITY OF SUCH DAMAGE.
+
26 */
+
27#pragma once
+
28
+ +
30
+ +
32{
+
36 inline bool
+
37 isspace(char32_t c)
+
38 {
+
39 static const std::array<utils::range, 11> space_table =
+
40 {{
+
41 { 0x0009, 0x000D }, { 0x0020, 0x0020 }, { 0x0085, 0x0085 },
+
42 { 0x00A0, 0x00A0 }, { 0x1680, 0x1680 }, { 0x2000, 0x200A },
+
43 { 0x2028, 0x2028 }, { 0x2029, 0x2029 }, { 0x202F, 0x202F },
+
44 { 0x205F, 0x205F }, { 0x3000, 0x3000 },
+
45 }};
+
46
+
47 return utils::table_lookup(space_table, c);
+
48 }
+
49}
Definition: _utils.hpp:34
bool isspace(char32_t c)
Definition: isspace.hpp:37
diff --git a/isupper_8hpp.html b/isupper_8hpp.html index 5a306e3..1e47135 100644 --- a/isupper_8hpp.html +++ b/isupper_8hpp.html @@ -2,8 +2,8 @@ - - + + peelo-unicode: include/peelo/unicode/ctype/isupper.hpp File Reference @@ -16,8 +16,8 @@
- - + @@ -26,15 +26,16 @@
+
peelo-unicode
- + +/* @license-end */ +

Go to the source code of this file.

- - + - + - +

+

Namespaces

 peelo
namespace  peelo
 
 peelo::unicode
namespace  peelo::unicode
 
 peelo::unicode::ctype
namespace  peelo::unicode::ctype
 
- @@ -70,7 +70,7 @@ diff --git a/isupper_8hpp_source.html b/isupper_8hpp_source.html index b463082..e912a47 100644 --- a/isupper_8hpp_source.html +++ b/isupper_8hpp_source.html @@ -2,8 +2,8 @@ - - + +peelo-unicode: include/peelo/unicode/ctype/isupper.hpp Source File @@ -16,8 +16,8 @@

+

Functions

bool peelo::unicode::ctype::isupper (char32_t c)
 
- - + @@ -26,15 +26,16 @@
+
peelo-unicode
- + +/* @license-end */ +
-
-
isupper.hpp
+
isupper.hpp
-Go to the documentation of this file.
1 /*
-
2  * Copyright (c) 2018-2024, peelo.net
-
3  * All rights reserved.
-
4  *
-
5  * Redistribution and use in source and binary forms, with or without
-
6  * modification, are permitted provided that the following conditions are met:
-
7  *
-
8  * * Redistributions of source code must retain the above copyright notice,
-
9  * this list of conditions and the following disclaimer.
-
10  *
-
11  * * Redistributions in binary form must reproduce the above copyright notice,
-
12  * this list of conditions and the following disclaimer in the documentation
-
13  * and/or other materials provided with the distribution.
-
14  *
-
15  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-
16  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-
17  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-
18  * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
-
19  * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-
20  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-
21  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-
22  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-
23  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-
24  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-
25  * POSSIBILITY OF SUCH DAMAGE.
-
26  */
-
27 #pragma once
-
28 
- -
30 
-
31 namespace peelo::unicode::ctype
-
32 {
-
37  inline bool
-
38  isupper(char32_t c)
-
39  {
-
40  static const std::array<utils::range, 651> upper_table =
-
41  {{
-
42  { 0x0041, 0x005a, }, { 0x00c0, 0x00d6, }, { 0x00d8, 0x00de, },
-
43  { 0x0100, 0x0100, }, { 0x0102, 0x0102, }, { 0x0104, 0x0104, },
-
44  { 0x0106, 0x0106, }, { 0x0108, 0x0108, }, { 0x010a, 0x010a, },
-
45  { 0x010c, 0x010c, }, { 0x010e, 0x010e, }, { 0x0110, 0x0110, },
-
46  { 0x0112, 0x0112, }, { 0x0114, 0x0114, }, { 0x0116, 0x0116, },
-
47  { 0x0118, 0x0118, }, { 0x011a, 0x011a, }, { 0x011c, 0x011c, },
-
48  { 0x011e, 0x011e, }, { 0x0120, 0x0120, }, { 0x0122, 0x0122, },
-
49  { 0x0124, 0x0124, }, { 0x0126, 0x0126, }, { 0x0128, 0x0128, },
-
50  { 0x012a, 0x012a, }, { 0x012c, 0x012c, }, { 0x012e, 0x012e, },
-
51  { 0x0130, 0x0130, }, { 0x0132, 0x0132, }, { 0x0134, 0x0134, },
-
52  { 0x0136, 0x0136, }, { 0x0139, 0x0139, }, { 0x013b, 0x013b, },
-
53  { 0x013d, 0x013d, }, { 0x013f, 0x013f, }, { 0x0141, 0x0141, },
-
54  { 0x0143, 0x0143, }, { 0x0145, 0x0145, }, { 0x0147, 0x0147, },
-
55  { 0x014a, 0x014a, }, { 0x014c, 0x014c, }, { 0x014e, 0x014e, },
-
56  { 0x0150, 0x0150, }, { 0x0152, 0x0152, }, { 0x0154, 0x0154, },
-
57  { 0x0156, 0x0156, }, { 0x0158, 0x0158, }, { 0x015a, 0x015a, },
-
58  { 0x015c, 0x015c, }, { 0x015e, 0x015e, }, { 0x0160, 0x0160, },
-
59  { 0x0162, 0x0162, }, { 0x0164, 0x0164, }, { 0x0166, 0x0166, },
-
60  { 0x0168, 0x0168, }, { 0x016a, 0x016a, }, { 0x016c, 0x016c, },
-
61  { 0x016e, 0x016e, }, { 0x0170, 0x0170, }, { 0x0172, 0x0172, },
-
62  { 0x0174, 0x0174, }, { 0x0176, 0x0176, }, { 0x0178, 0x0179, },
-
63  { 0x017b, 0x017b, }, { 0x017d, 0x017d, }, { 0x0181, 0x0182, },
-
64  { 0x0184, 0x0184, }, { 0x0186, 0x0187, }, { 0x0189, 0x018b, },
-
65  { 0x018e, 0x0191, }, { 0x0193, 0x0194, }, { 0x0196, 0x0198, },
-
66  { 0x019c, 0x019d, }, { 0x019f, 0x01a0, }, { 0x01a2, 0x01a2, },
-
67  { 0x01a4, 0x01a4, }, { 0x01a6, 0x01a7, }, { 0x01a9, 0x01a9, },
-
68  { 0x01ac, 0x01ac, }, { 0x01ae, 0x01af, }, { 0x01b1, 0x01b3, },
-
69  { 0x01b5, 0x01b5, }, { 0x01b7, 0x01b8, }, { 0x01bc, 0x01bc, },
-
70  { 0x01c4, 0x01c4, }, { 0x01c7, 0x01c7, }, { 0x01ca, 0x01ca, },
-
71  { 0x01cd, 0x01cd, }, { 0x01cf, 0x01cf, }, { 0x01d1, 0x01d1, },
-
72  { 0x01d3, 0x01d3, }, { 0x01d5, 0x01d5, }, { 0x01d7, 0x01d7, },
-
73  { 0x01d9, 0x01d9, }, { 0x01db, 0x01db, }, { 0x01de, 0x01de, },
-
74  { 0x01e0, 0x01e0, }, { 0x01e2, 0x01e2, }, { 0x01e4, 0x01e4, },
-
75  { 0x01e6, 0x01e6, }, { 0x01e8, 0x01e8, }, { 0x01ea, 0x01ea, },
-
76  { 0x01ec, 0x01ec, }, { 0x01ee, 0x01ee, }, { 0x01f1, 0x01f1, },
-
77  { 0x01f4, 0x01f4, }, { 0x01f6, 0x01f8, }, { 0x01fa, 0x01fa, },
-
78  { 0x01fc, 0x01fc, }, { 0x01fe, 0x01fe, }, { 0x0200, 0x0200, },
-
79  { 0x0202, 0x0202, }, { 0x0204, 0x0204, }, { 0x0206, 0x0206, },
-
80  { 0x0208, 0x0208, }, { 0x020a, 0x020a, }, { 0x020c, 0x020c, },
-
81  { 0x020e, 0x020e, }, { 0x0210, 0x0210, }, { 0x0212, 0x0212, },
-
82  { 0x0214, 0x0214, }, { 0x0216, 0x0216, }, { 0x0218, 0x0218, },
-
83  { 0x021a, 0x021a, }, { 0x021c, 0x021c, }, { 0x021e, 0x021e, },
-
84  { 0x0220, 0x0220, }, { 0x0222, 0x0222, }, { 0x0224, 0x0224, },
-
85  { 0x0226, 0x0226, }, { 0x0228, 0x0228, }, { 0x022a, 0x022a, },
-
86  { 0x022c, 0x022c, }, { 0x022e, 0x022e, }, { 0x0230, 0x0230, },
-
87  { 0x0232, 0x0232, }, { 0x023a, 0x023b, }, { 0x023d, 0x023e, },
-
88  { 0x0241, 0x0241, }, { 0x0243, 0x0246, }, { 0x0248, 0x0248, },
-
89  { 0x024a, 0x024a, }, { 0x024c, 0x024c, }, { 0x024e, 0x024e, },
-
90  { 0x0370, 0x0370, }, { 0x0372, 0x0372, }, { 0x0376, 0x0376, },
-
91  { 0x037f, 0x037f, }, { 0x0386, 0x0386, }, { 0x0388, 0x038a, },
-
92  { 0x038c, 0x038c, }, { 0x038e, 0x038f, }, { 0x0391, 0x03a1, },
-
93  { 0x03a3, 0x03ab, }, { 0x03cf, 0x03cf, }, { 0x03d2, 0x03d4, },
-
94  { 0x03d8, 0x03d8, }, { 0x03da, 0x03da, }, { 0x03dc, 0x03dc, },
-
95  { 0x03de, 0x03de, }, { 0x03e0, 0x03e0, }, { 0x03e2, 0x03e2, },
-
96  { 0x03e4, 0x03e4, }, { 0x03e6, 0x03e6, }, { 0x03e8, 0x03e8, },
-
97  { 0x03ea, 0x03ea, }, { 0x03ec, 0x03ec, }, { 0x03ee, 0x03ee, },
-
98  { 0x03f4, 0x03f4, }, { 0x03f7, 0x03f7, }, { 0x03f9, 0x03fa, },
-
99  { 0x03fd, 0x042f, }, { 0x0460, 0x0460, }, { 0x0462, 0x0462, },
-
100  { 0x0464, 0x0464, }, { 0x0466, 0x0466, }, { 0x0468, 0x0468, },
-
101  { 0x046a, 0x046a, }, { 0x046c, 0x046c, }, { 0x046e, 0x046e, },
-
102  { 0x0470, 0x0470, }, { 0x0472, 0x0472, }, { 0x0474, 0x0474, },
-
103  { 0x0476, 0x0476, }, { 0x0478, 0x0478, }, { 0x047a, 0x047a, },
-
104  { 0x047c, 0x047c, }, { 0x047e, 0x047e, }, { 0x0480, 0x0480, },
-
105  { 0x048a, 0x048a, }, { 0x048c, 0x048c, }, { 0x048e, 0x048e, },
-
106  { 0x0490, 0x0490, }, { 0x0492, 0x0492, }, { 0x0494, 0x0494, },
-
107  { 0x0496, 0x0496, }, { 0x0498, 0x0498, }, { 0x049a, 0x049a, },
-
108  { 0x049c, 0x049c, }, { 0x049e, 0x049e, }, { 0x04a0, 0x04a0, },
-
109  { 0x04a2, 0x04a2, }, { 0x04a4, 0x04a4, }, { 0x04a6, 0x04a6, },
-
110  { 0x04a8, 0x04a8, }, { 0x04aa, 0x04aa, }, { 0x04ac, 0x04ac, },
-
111  { 0x04ae, 0x04ae, }, { 0x04b0, 0x04b0, }, { 0x04b2, 0x04b2, },
-
112  { 0x04b4, 0x04b4, }, { 0x04b6, 0x04b6, }, { 0x04b8, 0x04b8, },
-
113  { 0x04ba, 0x04ba, }, { 0x04bc, 0x04bc, }, { 0x04be, 0x04be, },
-
114  { 0x04c0, 0x04c1, }, { 0x04c3, 0x04c3, }, { 0x04c5, 0x04c5, },
-
115  { 0x04c7, 0x04c7, }, { 0x04c9, 0x04c9, }, { 0x04cb, 0x04cb, },
-
116  { 0x04cd, 0x04cd, }, { 0x04d0, 0x04d0, }, { 0x04d2, 0x04d2, },
-
117  { 0x04d4, 0x04d4, }, { 0x04d6, 0x04d6, }, { 0x04d8, 0x04d8, },
-
118  { 0x04da, 0x04da, }, { 0x04dc, 0x04dc, }, { 0x04de, 0x04de, },
-
119  { 0x04e0, 0x04e0, }, { 0x04e2, 0x04e2, }, { 0x04e4, 0x04e4, },
-
120  { 0x04e6, 0x04e6, }, { 0x04e8, 0x04e8, }, { 0x04ea, 0x04ea, },
-
121  { 0x04ec, 0x04ec, }, { 0x04ee, 0x04ee, }, { 0x04f0, 0x04f0, },
-
122  { 0x04f2, 0x04f2, }, { 0x04f4, 0x04f4, }, { 0x04f6, 0x04f6, },
-
123  { 0x04f8, 0x04f8, }, { 0x04fa, 0x04fa, }, { 0x04fc, 0x04fc, },
-
124  { 0x04fe, 0x04fe, }, { 0x0500, 0x0500, }, { 0x0502, 0x0502, },
-
125  { 0x0504, 0x0504, }, { 0x0506, 0x0506, }, { 0x0508, 0x0508, },
-
126  { 0x050a, 0x050a, }, { 0x050c, 0x050c, }, { 0x050e, 0x050e, },
-
127  { 0x0510, 0x0510, }, { 0x0512, 0x0512, }, { 0x0514, 0x0514, },
-
128  { 0x0516, 0x0516, }, { 0x0518, 0x0518, }, { 0x051a, 0x051a, },
-
129  { 0x051c, 0x051c, }, { 0x051e, 0x051e, }, { 0x0520, 0x0520, },
-
130  { 0x0522, 0x0522, }, { 0x0524, 0x0524, }, { 0x0526, 0x0526, },
-
131  { 0x0528, 0x0528, }, { 0x052a, 0x052a, }, { 0x052c, 0x052c, },
-
132  { 0x052e, 0x052e, }, { 0x0531, 0x0556, }, { 0x10a0, 0x10c5, },
-
133  { 0x10c7, 0x10c7, }, { 0x10cd, 0x10cd, }, { 0x13a0, 0x13f5, },
-
134  { 0x1c90, 0x1cba, }, { 0x1cbd, 0x1cbf, }, { 0x1e00, 0x1e00, },
-
135  { 0x1e02, 0x1e02, }, { 0x1e04, 0x1e04, }, { 0x1e06, 0x1e06, },
-
136  { 0x1e08, 0x1e08, }, { 0x1e0a, 0x1e0a, }, { 0x1e0c, 0x1e0c, },
-
137  { 0x1e0e, 0x1e0e, }, { 0x1e10, 0x1e10, }, { 0x1e12, 0x1e12, },
-
138  { 0x1e14, 0x1e14, }, { 0x1e16, 0x1e16, }, { 0x1e18, 0x1e18, },
-
139  { 0x1e1a, 0x1e1a, }, { 0x1e1c, 0x1e1c, }, { 0x1e1e, 0x1e1e, },
-
140  { 0x1e20, 0x1e20, }, { 0x1e22, 0x1e22, }, { 0x1e24, 0x1e24, },
-
141  { 0x1e26, 0x1e26, }, { 0x1e28, 0x1e28, }, { 0x1e2a, 0x1e2a, },
-
142  { 0x1e2c, 0x1e2c, }, { 0x1e2e, 0x1e2e, }, { 0x1e30, 0x1e30, },
-
143  { 0x1e32, 0x1e32, }, { 0x1e34, 0x1e34, }, { 0x1e36, 0x1e36, },
-
144  { 0x1e38, 0x1e38, }, { 0x1e3a, 0x1e3a, }, { 0x1e3c, 0x1e3c, },
-
145  { 0x1e3e, 0x1e3e, }, { 0x1e40, 0x1e40, }, { 0x1e42, 0x1e42, },
-
146  { 0x1e44, 0x1e44, }, { 0x1e46, 0x1e46, }, { 0x1e48, 0x1e48, },
-
147  { 0x1e4a, 0x1e4a, }, { 0x1e4c, 0x1e4c, }, { 0x1e4e, 0x1e4e, },
-
148  { 0x1e50, 0x1e50, }, { 0x1e52, 0x1e52, }, { 0x1e54, 0x1e54, },
-
149  { 0x1e56, 0x1e56, }, { 0x1e58, 0x1e58, }, { 0x1e5a, 0x1e5a, },
-
150  { 0x1e5c, 0x1e5c, }, { 0x1e5e, 0x1e5e, }, { 0x1e60, 0x1e60, },
-
151  { 0x1e62, 0x1e62, }, { 0x1e64, 0x1e64, }, { 0x1e66, 0x1e66, },
-
152  { 0x1e68, 0x1e68, }, { 0x1e6a, 0x1e6a, }, { 0x1e6c, 0x1e6c, },
-
153  { 0x1e6e, 0x1e6e, }, { 0x1e70, 0x1e70, }, { 0x1e72, 0x1e72, },
-
154  { 0x1e74, 0x1e74, }, { 0x1e76, 0x1e76, }, { 0x1e78, 0x1e78, },
-
155  { 0x1e7a, 0x1e7a, }, { 0x1e7c, 0x1e7c, }, { 0x1e7e, 0x1e7e, },
-
156  { 0x1e80, 0x1e80, }, { 0x1e82, 0x1e82, }, { 0x1e84, 0x1e84, },
-
157  { 0x1e86, 0x1e86, }, { 0x1e88, 0x1e88, }, { 0x1e8a, 0x1e8a, },
-
158  { 0x1e8c, 0x1e8c, }, { 0x1e8e, 0x1e8e, }, { 0x1e90, 0x1e90, },
-
159  { 0x1e92, 0x1e92, }, { 0x1e94, 0x1e94, }, { 0x1e9e, 0x1e9e, },
-
160  { 0x1ea0, 0x1ea0, }, { 0x1ea2, 0x1ea2, }, { 0x1ea4, 0x1ea4, },
-
161  { 0x1ea6, 0x1ea6, }, { 0x1ea8, 0x1ea8, }, { 0x1eaa, 0x1eaa, },
-
162  { 0x1eac, 0x1eac, }, { 0x1eae, 0x1eae, }, { 0x1eb0, 0x1eb0, },
-
163  { 0x1eb2, 0x1eb2, }, { 0x1eb4, 0x1eb4, }, { 0x1eb6, 0x1eb6, },
-
164  { 0x1eb8, 0x1eb8, }, { 0x1eba, 0x1eba, }, { 0x1ebc, 0x1ebc, },
-
165  { 0x1ebe, 0x1ebe, }, { 0x1ec0, 0x1ec0, }, { 0x1ec2, 0x1ec2, },
-
166  { 0x1ec4, 0x1ec4, }, { 0x1ec6, 0x1ec6, }, { 0x1ec8, 0x1ec8, },
-
167  { 0x1eca, 0x1eca, }, { 0x1ecc, 0x1ecc, }, { 0x1ece, 0x1ece, },
-
168  { 0x1ed0, 0x1ed0, }, { 0x1ed2, 0x1ed2, }, { 0x1ed4, 0x1ed4, },
-
169  { 0x1ed6, 0x1ed6, }, { 0x1ed8, 0x1ed8, }, { 0x1eda, 0x1eda, },
-
170  { 0x1edc, 0x1edc, }, { 0x1ede, 0x1ede, }, { 0x1ee0, 0x1ee0, },
-
171  { 0x1ee2, 0x1ee2, }, { 0x1ee4, 0x1ee4, }, { 0x1ee6, 0x1ee6, },
-
172  { 0x1ee8, 0x1ee8, }, { 0x1eea, 0x1eea, }, { 0x1eec, 0x1eec, },
-
173  { 0x1eee, 0x1eee, }, { 0x1ef0, 0x1ef0, }, { 0x1ef2, 0x1ef2, },
-
174  { 0x1ef4, 0x1ef4, }, { 0x1ef6, 0x1ef6, }, { 0x1ef8, 0x1ef8, },
-
175  { 0x1efa, 0x1efa, }, { 0x1efc, 0x1efc, }, { 0x1efe, 0x1efe, },
-
176  { 0x1f08, 0x1f0f, }, { 0x1f18, 0x1f1d, }, { 0x1f28, 0x1f2f, },
-
177  { 0x1f38, 0x1f3f, }, { 0x1f48, 0x1f4d, }, { 0x1f59, 0x1f59, },
-
178  { 0x1f5b, 0x1f5b, }, { 0x1f5d, 0x1f5d, }, { 0x1f5f, 0x1f5f, },
-
179  { 0x1f68, 0x1f6f, }, { 0x1fb8, 0x1fbb, }, { 0x1fc8, 0x1fcb, },
-
180  { 0x1fd8, 0x1fdb, }, { 0x1fe8, 0x1fec, }, { 0x1ff8, 0x1ffb, },
-
181  { 0x2102, 0x2102, }, { 0x2107, 0x2107, }, { 0x210b, 0x210d, },
-
182  { 0x2110, 0x2112, }, { 0x2115, 0x2115, }, { 0x2119, 0x211d, },
-
183  { 0x2124, 0x2124, }, { 0x2126, 0x2126, }, { 0x2128, 0x2128, },
-
184  { 0x212a, 0x212d, }, { 0x2130, 0x2133, }, { 0x213e, 0x213f, },
-
185  { 0x2145, 0x2145, }, { 0x2160, 0x216f, }, { 0x2183, 0x2183, },
-
186  { 0x24b6, 0x24cf, }, { 0x2c00, 0x2c2f, }, { 0x2c60, 0x2c60, },
-
187  { 0x2c62, 0x2c64, }, { 0x2c67, 0x2c67, }, { 0x2c69, 0x2c69, },
-
188  { 0x2c6b, 0x2c6b, }, { 0x2c6d, 0x2c70, }, { 0x2c72, 0x2c72, },
-
189  { 0x2c75, 0x2c75, }, { 0x2c7e, 0x2c80, }, { 0x2c82, 0x2c82, },
-
190  { 0x2c84, 0x2c84, }, { 0x2c86, 0x2c86, }, { 0x2c88, 0x2c88, },
-
191  { 0x2c8a, 0x2c8a, }, { 0x2c8c, 0x2c8c, }, { 0x2c8e, 0x2c8e, },
-
192  { 0x2c90, 0x2c90, }, { 0x2c92, 0x2c92, }, { 0x2c94, 0x2c94, },
-
193  { 0x2c96, 0x2c96, }, { 0x2c98, 0x2c98, }, { 0x2c9a, 0x2c9a, },
-
194  { 0x2c9c, 0x2c9c, }, { 0x2c9e, 0x2c9e, }, { 0x2ca0, 0x2ca0, },
-
195  { 0x2ca2, 0x2ca2, }, { 0x2ca4, 0x2ca4, }, { 0x2ca6, 0x2ca6, },
-
196  { 0x2ca8, 0x2ca8, }, { 0x2caa, 0x2caa, }, { 0x2cac, 0x2cac, },
-
197  { 0x2cae, 0x2cae, }, { 0x2cb0, 0x2cb0, }, { 0x2cb2, 0x2cb2, },
-
198  { 0x2cb4, 0x2cb4, }, { 0x2cb6, 0x2cb6, }, { 0x2cb8, 0x2cb8, },
-
199  { 0x2cba, 0x2cba, }, { 0x2cbc, 0x2cbc, }, { 0x2cbe, 0x2cbe, },
-
200  { 0x2cc0, 0x2cc0, }, { 0x2cc2, 0x2cc2, }, { 0x2cc4, 0x2cc4, },
-
201  { 0x2cc6, 0x2cc6, }, { 0x2cc8, 0x2cc8, }, { 0x2cca, 0x2cca, },
-
202  { 0x2ccc, 0x2ccc, }, { 0x2cce, 0x2cce, }, { 0x2cd0, 0x2cd0, },
-
203  { 0x2cd2, 0x2cd2, }, { 0x2cd4, 0x2cd4, }, { 0x2cd6, 0x2cd6, },
-
204  { 0x2cd8, 0x2cd8, }, { 0x2cda, 0x2cda, }, { 0x2cdc, 0x2cdc, },
-
205  { 0x2cde, 0x2cde, }, { 0x2ce0, 0x2ce0, }, { 0x2ce2, 0x2ce2, },
-
206  { 0x2ceb, 0x2ceb, }, { 0x2ced, 0x2ced, }, { 0x2cf2, 0x2cf2, },
-
207  { 0xa640, 0xa640, }, { 0xa642, 0xa642, }, { 0xa644, 0xa644, },
-
208  { 0xa646, 0xa646, }, { 0xa648, 0xa648, }, { 0xa64a, 0xa64a, },
-
209  { 0xa64c, 0xa64c, }, { 0xa64e, 0xa64e, }, { 0xa650, 0xa650, },
-
210  { 0xa652, 0xa652, }, { 0xa654, 0xa654, }, { 0xa656, 0xa656, },
-
211  { 0xa658, 0xa658, }, { 0xa65a, 0xa65a, }, { 0xa65c, 0xa65c, },
-
212  { 0xa65e, 0xa65e, }, { 0xa660, 0xa660, }, { 0xa662, 0xa662, },
-
213  { 0xa664, 0xa664, }, { 0xa666, 0xa666, }, { 0xa668, 0xa668, },
-
214  { 0xa66a, 0xa66a, }, { 0xa66c, 0xa66c, }, { 0xa680, 0xa680, },
-
215  { 0xa682, 0xa682, }, { 0xa684, 0xa684, }, { 0xa686, 0xa686, },
-
216  { 0xa688, 0xa688, }, { 0xa68a, 0xa68a, }, { 0xa68c, 0xa68c, },
-
217  { 0xa68e, 0xa68e, }, { 0xa690, 0xa690, }, { 0xa692, 0xa692, },
-
218  { 0xa694, 0xa694, }, { 0xa696, 0xa696, }, { 0xa698, 0xa698, },
-
219  { 0xa69a, 0xa69a, }, { 0xa722, 0xa722, }, { 0xa724, 0xa724, },
-
220  { 0xa726, 0xa726, }, { 0xa728, 0xa728, }, { 0xa72a, 0xa72a, },
-
221  { 0xa72c, 0xa72c, }, { 0xa72e, 0xa72e, }, { 0xa732, 0xa732, },
-
222  { 0xa734, 0xa734, }, { 0xa736, 0xa736, }, { 0xa738, 0xa738, },
-
223  { 0xa73a, 0xa73a, }, { 0xa73c, 0xa73c, }, { 0xa73e, 0xa73e, },
-
224  { 0xa740, 0xa740, }, { 0xa742, 0xa742, }, { 0xa744, 0xa744, },
-
225  { 0xa746, 0xa746, }, { 0xa748, 0xa748, }, { 0xa74a, 0xa74a, },
-
226  { 0xa74c, 0xa74c, }, { 0xa74e, 0xa74e, }, { 0xa750, 0xa750, },
-
227  { 0xa752, 0xa752, }, { 0xa754, 0xa754, }, { 0xa756, 0xa756, },
-
228  { 0xa758, 0xa758, }, { 0xa75a, 0xa75a, }, { 0xa75c, 0xa75c, },
-
229  { 0xa75e, 0xa75e, }, { 0xa760, 0xa760, }, { 0xa762, 0xa762, },
-
230  { 0xa764, 0xa764, }, { 0xa766, 0xa766, }, { 0xa768, 0xa768, },
-
231  { 0xa76a, 0xa76a, }, { 0xa76c, 0xa76c, }, { 0xa76e, 0xa76e, },
-
232  { 0xa779, 0xa779, }, { 0xa77b, 0xa77b, }, { 0xa77d, 0xa77e, },
-
233  { 0xa780, 0xa780, }, { 0xa782, 0xa782, }, { 0xa784, 0xa784, },
-
234  { 0xa786, 0xa786, }, { 0xa78b, 0xa78b, }, { 0xa78d, 0xa78d, },
-
235  { 0xa790, 0xa790, }, { 0xa792, 0xa792, }, { 0xa796, 0xa796, },
-
236  { 0xa798, 0xa798, }, { 0xa79a, 0xa79a, }, { 0xa79c, 0xa79c, },
-
237  { 0xa79e, 0xa79e, }, { 0xa7a0, 0xa7a0, }, { 0xa7a2, 0xa7a2, },
-
238  { 0xa7a4, 0xa7a4, }, { 0xa7a6, 0xa7a6, }, { 0xa7a8, 0xa7a8, },
-
239  { 0xa7aa, 0xa7ae, }, { 0xa7b0, 0xa7b4, }, { 0xa7b6, 0xa7b6, },
-
240  { 0xa7b8, 0xa7b8, }, { 0xa7ba, 0xa7ba, }, { 0xa7bc, 0xa7bc, },
-
241  { 0xa7be, 0xa7be, }, { 0xa7c0, 0xa7c0, }, { 0xa7c2, 0xa7c2, },
-
242  { 0xa7c4, 0xa7c7, }, { 0xa7c9, 0xa7c9, }, { 0xa7d0, 0xa7d0, },
-
243  { 0xa7d6, 0xa7d6, }, { 0xa7d8, 0xa7d8, }, { 0xa7f5, 0xa7f5, },
-
244  { 0xff21, 0xff3a, }, { 0x10400, 0x10427, }, { 0x104b0, 0x104d3, },
-
245  { 0x10570, 0x1057a, }, { 0x1057c, 0x1058a, }, { 0x1058c, 0x10592, },
-
246  { 0x10594, 0x10595, }, { 0x10c80, 0x10cb2, }, { 0x118a0, 0x118bf, },
-
247  { 0x16e40, 0x16e5f, }, { 0x1d400, 0x1d419, }, { 0x1d434, 0x1d44d, },
-
248  { 0x1d468, 0x1d481, }, { 0x1d49c, 0x1d49c, }, { 0x1d49e, 0x1d49f, },
-
249  { 0x1d4a2, 0x1d4a2, }, { 0x1d4a5, 0x1d4a6, }, { 0x1d4a9, 0x1d4ac, },
-
250  { 0x1d4ae, 0x1d4b5, }, { 0x1d4d0, 0x1d4e9, }, { 0x1d504, 0x1d505, },
-
251  { 0x1d507, 0x1d50a, }, { 0x1d50d, 0x1d514, }, { 0x1d516, 0x1d51c, },
-
252  { 0x1d538, 0x1d539, }, { 0x1d53b, 0x1d53e, }, { 0x1d540, 0x1d544, },
-
253  { 0x1d546, 0x1d546, }, { 0x1d54a, 0x1d550, }, { 0x1d56c, 0x1d585, },
-
254  { 0x1d5a0, 0x1d5b9, }, { 0x1d5d4, 0x1d5ed, }, { 0x1d608, 0x1d621, },
-
255  { 0x1d63c, 0x1d655, }, { 0x1d670, 0x1d689, }, { 0x1d6a8, 0x1d6c0, },
-
256  { 0x1d6e2, 0x1d6fa, }, { 0x1d71c, 0x1d734, }, { 0x1d756, 0x1d76e, },
-
257  { 0x1d790, 0x1d7a8, }, { 0x1d7ca, 0x1d7ca, }, { 0x1e900, 0x1e921, },
-
258  { 0x1f130, 0x1f149, }, { 0x1f150, 0x1f169, }, { 0x1f170, 0x1f189, },
-
259  }};
-
260 
-
261  return utils::table_lookup(upper_table, c);
-
262  }
-
263 }
+Go to the documentation of this file.
1/*
+
2 * Copyright (c) 2018-2024, peelo.net
+
3 * All rights reserved.
+
4 *
+
5 * Redistribution and use in source and binary forms, with or without
+
6 * modification, are permitted provided that the following conditions are met:
+
7 *
+
8 * * Redistributions of source code must retain the above copyright notice,
+
9 * this list of conditions and the following disclaimer.
+
10 *
+
11 * * Redistributions in binary form must reproduce the above copyright notice,
+
12 * this list of conditions and the following disclaimer in the documentation
+
13 * and/or other materials provided with the distribution.
+
14 *
+
15 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+
16 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+
17 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+
18 * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
+
19 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+
20 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+
21 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+
22 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+
23 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+
24 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+
25 * POSSIBILITY OF SUCH DAMAGE.
+
26 */
+
27#pragma once
+
28
+ +
30
+ +
32{
+
37 inline bool
+
38 isupper(char32_t c)
+
39 {
+
40 static const std::array<utils::range, 651> upper_table =
+
41 {{
+
42 { 0x0041, 0x005a, }, { 0x00c0, 0x00d6, }, { 0x00d8, 0x00de, },
+
43 { 0x0100, 0x0100, }, { 0x0102, 0x0102, }, { 0x0104, 0x0104, },
+
44 { 0x0106, 0x0106, }, { 0x0108, 0x0108, }, { 0x010a, 0x010a, },
+
45 { 0x010c, 0x010c, }, { 0x010e, 0x010e, }, { 0x0110, 0x0110, },
+
46 { 0x0112, 0x0112, }, { 0x0114, 0x0114, }, { 0x0116, 0x0116, },
+
47 { 0x0118, 0x0118, }, { 0x011a, 0x011a, }, { 0x011c, 0x011c, },
+
48 { 0x011e, 0x011e, }, { 0x0120, 0x0120, }, { 0x0122, 0x0122, },
+
49 { 0x0124, 0x0124, }, { 0x0126, 0x0126, }, { 0x0128, 0x0128, },
+
50 { 0x012a, 0x012a, }, { 0x012c, 0x012c, }, { 0x012e, 0x012e, },
+
51 { 0x0130, 0x0130, }, { 0x0132, 0x0132, }, { 0x0134, 0x0134, },
+
52 { 0x0136, 0x0136, }, { 0x0139, 0x0139, }, { 0x013b, 0x013b, },
+
53 { 0x013d, 0x013d, }, { 0x013f, 0x013f, }, { 0x0141, 0x0141, },
+
54 { 0x0143, 0x0143, }, { 0x0145, 0x0145, }, { 0x0147, 0x0147, },
+
55 { 0x014a, 0x014a, }, { 0x014c, 0x014c, }, { 0x014e, 0x014e, },
+
56 { 0x0150, 0x0150, }, { 0x0152, 0x0152, }, { 0x0154, 0x0154, },
+
57 { 0x0156, 0x0156, }, { 0x0158, 0x0158, }, { 0x015a, 0x015a, },
+
58 { 0x015c, 0x015c, }, { 0x015e, 0x015e, }, { 0x0160, 0x0160, },
+
59 { 0x0162, 0x0162, }, { 0x0164, 0x0164, }, { 0x0166, 0x0166, },
+
60 { 0x0168, 0x0168, }, { 0x016a, 0x016a, }, { 0x016c, 0x016c, },
+
61 { 0x016e, 0x016e, }, { 0x0170, 0x0170, }, { 0x0172, 0x0172, },
+
62 { 0x0174, 0x0174, }, { 0x0176, 0x0176, }, { 0x0178, 0x0179, },
+
63 { 0x017b, 0x017b, }, { 0x017d, 0x017d, }, { 0x0181, 0x0182, },
+
64 { 0x0184, 0x0184, }, { 0x0186, 0x0187, }, { 0x0189, 0x018b, },
+
65 { 0x018e, 0x0191, }, { 0x0193, 0x0194, }, { 0x0196, 0x0198, },
+
66 { 0x019c, 0x019d, }, { 0x019f, 0x01a0, }, { 0x01a2, 0x01a2, },
+
67 { 0x01a4, 0x01a4, }, { 0x01a6, 0x01a7, }, { 0x01a9, 0x01a9, },
+
68 { 0x01ac, 0x01ac, }, { 0x01ae, 0x01af, }, { 0x01b1, 0x01b3, },
+
69 { 0x01b5, 0x01b5, }, { 0x01b7, 0x01b8, }, { 0x01bc, 0x01bc, },
+
70 { 0x01c4, 0x01c4, }, { 0x01c7, 0x01c7, }, { 0x01ca, 0x01ca, },
+
71 { 0x01cd, 0x01cd, }, { 0x01cf, 0x01cf, }, { 0x01d1, 0x01d1, },
+
72 { 0x01d3, 0x01d3, }, { 0x01d5, 0x01d5, }, { 0x01d7, 0x01d7, },
+
73 { 0x01d9, 0x01d9, }, { 0x01db, 0x01db, }, { 0x01de, 0x01de, },
+
74 { 0x01e0, 0x01e0, }, { 0x01e2, 0x01e2, }, { 0x01e4, 0x01e4, },
+
75 { 0x01e6, 0x01e6, }, { 0x01e8, 0x01e8, }, { 0x01ea, 0x01ea, },
+
76 { 0x01ec, 0x01ec, }, { 0x01ee, 0x01ee, }, { 0x01f1, 0x01f1, },
+
77 { 0x01f4, 0x01f4, }, { 0x01f6, 0x01f8, }, { 0x01fa, 0x01fa, },
+
78 { 0x01fc, 0x01fc, }, { 0x01fe, 0x01fe, }, { 0x0200, 0x0200, },
+
79 { 0x0202, 0x0202, }, { 0x0204, 0x0204, }, { 0x0206, 0x0206, },
+
80 { 0x0208, 0x0208, }, { 0x020a, 0x020a, }, { 0x020c, 0x020c, },
+
81 { 0x020e, 0x020e, }, { 0x0210, 0x0210, }, { 0x0212, 0x0212, },
+
82 { 0x0214, 0x0214, }, { 0x0216, 0x0216, }, { 0x0218, 0x0218, },
+
83 { 0x021a, 0x021a, }, { 0x021c, 0x021c, }, { 0x021e, 0x021e, },
+
84 { 0x0220, 0x0220, }, { 0x0222, 0x0222, }, { 0x0224, 0x0224, },
+
85 { 0x0226, 0x0226, }, { 0x0228, 0x0228, }, { 0x022a, 0x022a, },
+
86 { 0x022c, 0x022c, }, { 0x022e, 0x022e, }, { 0x0230, 0x0230, },
+
87 { 0x0232, 0x0232, }, { 0x023a, 0x023b, }, { 0x023d, 0x023e, },
+
88 { 0x0241, 0x0241, }, { 0x0243, 0x0246, }, { 0x0248, 0x0248, },
+
89 { 0x024a, 0x024a, }, { 0x024c, 0x024c, }, { 0x024e, 0x024e, },
+
90 { 0x0370, 0x0370, }, { 0x0372, 0x0372, }, { 0x0376, 0x0376, },
+
91 { 0x037f, 0x037f, }, { 0x0386, 0x0386, }, { 0x0388, 0x038a, },
+
92 { 0x038c, 0x038c, }, { 0x038e, 0x038f, }, { 0x0391, 0x03a1, },
+
93 { 0x03a3, 0x03ab, }, { 0x03cf, 0x03cf, }, { 0x03d2, 0x03d4, },
+
94 { 0x03d8, 0x03d8, }, { 0x03da, 0x03da, }, { 0x03dc, 0x03dc, },
+
95 { 0x03de, 0x03de, }, { 0x03e0, 0x03e0, }, { 0x03e2, 0x03e2, },
+
96 { 0x03e4, 0x03e4, }, { 0x03e6, 0x03e6, }, { 0x03e8, 0x03e8, },
+
97 { 0x03ea, 0x03ea, }, { 0x03ec, 0x03ec, }, { 0x03ee, 0x03ee, },
+
98 { 0x03f4, 0x03f4, }, { 0x03f7, 0x03f7, }, { 0x03f9, 0x03fa, },
+
99 { 0x03fd, 0x042f, }, { 0x0460, 0x0460, }, { 0x0462, 0x0462, },
+
100 { 0x0464, 0x0464, }, { 0x0466, 0x0466, }, { 0x0468, 0x0468, },
+
101 { 0x046a, 0x046a, }, { 0x046c, 0x046c, }, { 0x046e, 0x046e, },
+
102 { 0x0470, 0x0470, }, { 0x0472, 0x0472, }, { 0x0474, 0x0474, },
+
103 { 0x0476, 0x0476, }, { 0x0478, 0x0478, }, { 0x047a, 0x047a, },
+
104 { 0x047c, 0x047c, }, { 0x047e, 0x047e, }, { 0x0480, 0x0480, },
+
105 { 0x048a, 0x048a, }, { 0x048c, 0x048c, }, { 0x048e, 0x048e, },
+
106 { 0x0490, 0x0490, }, { 0x0492, 0x0492, }, { 0x0494, 0x0494, },
+
107 { 0x0496, 0x0496, }, { 0x0498, 0x0498, }, { 0x049a, 0x049a, },
+
108 { 0x049c, 0x049c, }, { 0x049e, 0x049e, }, { 0x04a0, 0x04a0, },
+
109 { 0x04a2, 0x04a2, }, { 0x04a4, 0x04a4, }, { 0x04a6, 0x04a6, },
+
110 { 0x04a8, 0x04a8, }, { 0x04aa, 0x04aa, }, { 0x04ac, 0x04ac, },
+
111 { 0x04ae, 0x04ae, }, { 0x04b0, 0x04b0, }, { 0x04b2, 0x04b2, },
+
112 { 0x04b4, 0x04b4, }, { 0x04b6, 0x04b6, }, { 0x04b8, 0x04b8, },
+
113 { 0x04ba, 0x04ba, }, { 0x04bc, 0x04bc, }, { 0x04be, 0x04be, },
+
114 { 0x04c0, 0x04c1, }, { 0x04c3, 0x04c3, }, { 0x04c5, 0x04c5, },
+
115 { 0x04c7, 0x04c7, }, { 0x04c9, 0x04c9, }, { 0x04cb, 0x04cb, },
+
116 { 0x04cd, 0x04cd, }, { 0x04d0, 0x04d0, }, { 0x04d2, 0x04d2, },
+
117 { 0x04d4, 0x04d4, }, { 0x04d6, 0x04d6, }, { 0x04d8, 0x04d8, },
+
118 { 0x04da, 0x04da, }, { 0x04dc, 0x04dc, }, { 0x04de, 0x04de, },
+
119 { 0x04e0, 0x04e0, }, { 0x04e2, 0x04e2, }, { 0x04e4, 0x04e4, },
+
120 { 0x04e6, 0x04e6, }, { 0x04e8, 0x04e8, }, { 0x04ea, 0x04ea, },
+
121 { 0x04ec, 0x04ec, }, { 0x04ee, 0x04ee, }, { 0x04f0, 0x04f0, },
+
122 { 0x04f2, 0x04f2, }, { 0x04f4, 0x04f4, }, { 0x04f6, 0x04f6, },
+
123 { 0x04f8, 0x04f8, }, { 0x04fa, 0x04fa, }, { 0x04fc, 0x04fc, },
+
124 { 0x04fe, 0x04fe, }, { 0x0500, 0x0500, }, { 0x0502, 0x0502, },
+
125 { 0x0504, 0x0504, }, { 0x0506, 0x0506, }, { 0x0508, 0x0508, },
+
126 { 0x050a, 0x050a, }, { 0x050c, 0x050c, }, { 0x050e, 0x050e, },
+
127 { 0x0510, 0x0510, }, { 0x0512, 0x0512, }, { 0x0514, 0x0514, },
+
128 { 0x0516, 0x0516, }, { 0x0518, 0x0518, }, { 0x051a, 0x051a, },
+
129 { 0x051c, 0x051c, }, { 0x051e, 0x051e, }, { 0x0520, 0x0520, },
+
130 { 0x0522, 0x0522, }, { 0x0524, 0x0524, }, { 0x0526, 0x0526, },
+
131 { 0x0528, 0x0528, }, { 0x052a, 0x052a, }, { 0x052c, 0x052c, },
+
132 { 0x052e, 0x052e, }, { 0x0531, 0x0556, }, { 0x10a0, 0x10c5, },
+
133 { 0x10c7, 0x10c7, }, { 0x10cd, 0x10cd, }, { 0x13a0, 0x13f5, },
+
134 { 0x1c90, 0x1cba, }, { 0x1cbd, 0x1cbf, }, { 0x1e00, 0x1e00, },
+
135 { 0x1e02, 0x1e02, }, { 0x1e04, 0x1e04, }, { 0x1e06, 0x1e06, },
+
136 { 0x1e08, 0x1e08, }, { 0x1e0a, 0x1e0a, }, { 0x1e0c, 0x1e0c, },
+
137 { 0x1e0e, 0x1e0e, }, { 0x1e10, 0x1e10, }, { 0x1e12, 0x1e12, },
+
138 { 0x1e14, 0x1e14, }, { 0x1e16, 0x1e16, }, { 0x1e18, 0x1e18, },
+
139 { 0x1e1a, 0x1e1a, }, { 0x1e1c, 0x1e1c, }, { 0x1e1e, 0x1e1e, },
+
140 { 0x1e20, 0x1e20, }, { 0x1e22, 0x1e22, }, { 0x1e24, 0x1e24, },
+
141 { 0x1e26, 0x1e26, }, { 0x1e28, 0x1e28, }, { 0x1e2a, 0x1e2a, },
+
142 { 0x1e2c, 0x1e2c, }, { 0x1e2e, 0x1e2e, }, { 0x1e30, 0x1e30, },
+
143 { 0x1e32, 0x1e32, }, { 0x1e34, 0x1e34, }, { 0x1e36, 0x1e36, },
+
144 { 0x1e38, 0x1e38, }, { 0x1e3a, 0x1e3a, }, { 0x1e3c, 0x1e3c, },
+
145 { 0x1e3e, 0x1e3e, }, { 0x1e40, 0x1e40, }, { 0x1e42, 0x1e42, },
+
146 { 0x1e44, 0x1e44, }, { 0x1e46, 0x1e46, }, { 0x1e48, 0x1e48, },
+
147 { 0x1e4a, 0x1e4a, }, { 0x1e4c, 0x1e4c, }, { 0x1e4e, 0x1e4e, },
+
148 { 0x1e50, 0x1e50, }, { 0x1e52, 0x1e52, }, { 0x1e54, 0x1e54, },
+
149 { 0x1e56, 0x1e56, }, { 0x1e58, 0x1e58, }, { 0x1e5a, 0x1e5a, },
+
150 { 0x1e5c, 0x1e5c, }, { 0x1e5e, 0x1e5e, }, { 0x1e60, 0x1e60, },
+
151 { 0x1e62, 0x1e62, }, { 0x1e64, 0x1e64, }, { 0x1e66, 0x1e66, },
+
152 { 0x1e68, 0x1e68, }, { 0x1e6a, 0x1e6a, }, { 0x1e6c, 0x1e6c, },
+
153 { 0x1e6e, 0x1e6e, }, { 0x1e70, 0x1e70, }, { 0x1e72, 0x1e72, },
+
154 { 0x1e74, 0x1e74, }, { 0x1e76, 0x1e76, }, { 0x1e78, 0x1e78, },
+
155 { 0x1e7a, 0x1e7a, }, { 0x1e7c, 0x1e7c, }, { 0x1e7e, 0x1e7e, },
+
156 { 0x1e80, 0x1e80, }, { 0x1e82, 0x1e82, }, { 0x1e84, 0x1e84, },
+
157 { 0x1e86, 0x1e86, }, { 0x1e88, 0x1e88, }, { 0x1e8a, 0x1e8a, },
+
158 { 0x1e8c, 0x1e8c, }, { 0x1e8e, 0x1e8e, }, { 0x1e90, 0x1e90, },
+
159 { 0x1e92, 0x1e92, }, { 0x1e94, 0x1e94, }, { 0x1e9e, 0x1e9e, },
+
160 { 0x1ea0, 0x1ea0, }, { 0x1ea2, 0x1ea2, }, { 0x1ea4, 0x1ea4, },
+
161 { 0x1ea6, 0x1ea6, }, { 0x1ea8, 0x1ea8, }, { 0x1eaa, 0x1eaa, },
+
162 { 0x1eac, 0x1eac, }, { 0x1eae, 0x1eae, }, { 0x1eb0, 0x1eb0, },
+
163 { 0x1eb2, 0x1eb2, }, { 0x1eb4, 0x1eb4, }, { 0x1eb6, 0x1eb6, },
+
164 { 0x1eb8, 0x1eb8, }, { 0x1eba, 0x1eba, }, { 0x1ebc, 0x1ebc, },
+
165 { 0x1ebe, 0x1ebe, }, { 0x1ec0, 0x1ec0, }, { 0x1ec2, 0x1ec2, },
+
166 { 0x1ec4, 0x1ec4, }, { 0x1ec6, 0x1ec6, }, { 0x1ec8, 0x1ec8, },
+
167 { 0x1eca, 0x1eca, }, { 0x1ecc, 0x1ecc, }, { 0x1ece, 0x1ece, },
+
168 { 0x1ed0, 0x1ed0, }, { 0x1ed2, 0x1ed2, }, { 0x1ed4, 0x1ed4, },
+
169 { 0x1ed6, 0x1ed6, }, { 0x1ed8, 0x1ed8, }, { 0x1eda, 0x1eda, },
+
170 { 0x1edc, 0x1edc, }, { 0x1ede, 0x1ede, }, { 0x1ee0, 0x1ee0, },
+
171 { 0x1ee2, 0x1ee2, }, { 0x1ee4, 0x1ee4, }, { 0x1ee6, 0x1ee6, },
+
172 { 0x1ee8, 0x1ee8, }, { 0x1eea, 0x1eea, }, { 0x1eec, 0x1eec, },
+
173 { 0x1eee, 0x1eee, }, { 0x1ef0, 0x1ef0, }, { 0x1ef2, 0x1ef2, },
+
174 { 0x1ef4, 0x1ef4, }, { 0x1ef6, 0x1ef6, }, { 0x1ef8, 0x1ef8, },
+
175 { 0x1efa, 0x1efa, }, { 0x1efc, 0x1efc, }, { 0x1efe, 0x1efe, },
+
176 { 0x1f08, 0x1f0f, }, { 0x1f18, 0x1f1d, }, { 0x1f28, 0x1f2f, },
+
177 { 0x1f38, 0x1f3f, }, { 0x1f48, 0x1f4d, }, { 0x1f59, 0x1f59, },
+
178 { 0x1f5b, 0x1f5b, }, { 0x1f5d, 0x1f5d, }, { 0x1f5f, 0x1f5f, },
+
179 { 0x1f68, 0x1f6f, }, { 0x1fb8, 0x1fbb, }, { 0x1fc8, 0x1fcb, },
+
180 { 0x1fd8, 0x1fdb, }, { 0x1fe8, 0x1fec, }, { 0x1ff8, 0x1ffb, },
+
181 { 0x2102, 0x2102, }, { 0x2107, 0x2107, }, { 0x210b, 0x210d, },
+
182 { 0x2110, 0x2112, }, { 0x2115, 0x2115, }, { 0x2119, 0x211d, },
+
183 { 0x2124, 0x2124, }, { 0x2126, 0x2126, }, { 0x2128, 0x2128, },
+
184 { 0x212a, 0x212d, }, { 0x2130, 0x2133, }, { 0x213e, 0x213f, },
+
185 { 0x2145, 0x2145, }, { 0x2160, 0x216f, }, { 0x2183, 0x2183, },
+
186 { 0x24b6, 0x24cf, }, { 0x2c00, 0x2c2f, }, { 0x2c60, 0x2c60, },
+
187 { 0x2c62, 0x2c64, }, { 0x2c67, 0x2c67, }, { 0x2c69, 0x2c69, },
+
188 { 0x2c6b, 0x2c6b, }, { 0x2c6d, 0x2c70, }, { 0x2c72, 0x2c72, },
+
189 { 0x2c75, 0x2c75, }, { 0x2c7e, 0x2c80, }, { 0x2c82, 0x2c82, },
+
190 { 0x2c84, 0x2c84, }, { 0x2c86, 0x2c86, }, { 0x2c88, 0x2c88, },
+
191 { 0x2c8a, 0x2c8a, }, { 0x2c8c, 0x2c8c, }, { 0x2c8e, 0x2c8e, },
+
192 { 0x2c90, 0x2c90, }, { 0x2c92, 0x2c92, }, { 0x2c94, 0x2c94, },
+
193 { 0x2c96, 0x2c96, }, { 0x2c98, 0x2c98, }, { 0x2c9a, 0x2c9a, },
+
194 { 0x2c9c, 0x2c9c, }, { 0x2c9e, 0x2c9e, }, { 0x2ca0, 0x2ca0, },
+
195 { 0x2ca2, 0x2ca2, }, { 0x2ca4, 0x2ca4, }, { 0x2ca6, 0x2ca6, },
+
196 { 0x2ca8, 0x2ca8, }, { 0x2caa, 0x2caa, }, { 0x2cac, 0x2cac, },
+
197 { 0x2cae, 0x2cae, }, { 0x2cb0, 0x2cb0, }, { 0x2cb2, 0x2cb2, },
+
198 { 0x2cb4, 0x2cb4, }, { 0x2cb6, 0x2cb6, }, { 0x2cb8, 0x2cb8, },
+
199 { 0x2cba, 0x2cba, }, { 0x2cbc, 0x2cbc, }, { 0x2cbe, 0x2cbe, },
+
200 { 0x2cc0, 0x2cc0, }, { 0x2cc2, 0x2cc2, }, { 0x2cc4, 0x2cc4, },
+
201 { 0x2cc6, 0x2cc6, }, { 0x2cc8, 0x2cc8, }, { 0x2cca, 0x2cca, },
+
202 { 0x2ccc, 0x2ccc, }, { 0x2cce, 0x2cce, }, { 0x2cd0, 0x2cd0, },
+
203 { 0x2cd2, 0x2cd2, }, { 0x2cd4, 0x2cd4, }, { 0x2cd6, 0x2cd6, },
+
204 { 0x2cd8, 0x2cd8, }, { 0x2cda, 0x2cda, }, { 0x2cdc, 0x2cdc, },
+
205 { 0x2cde, 0x2cde, }, { 0x2ce0, 0x2ce0, }, { 0x2ce2, 0x2ce2, },
+
206 { 0x2ceb, 0x2ceb, }, { 0x2ced, 0x2ced, }, { 0x2cf2, 0x2cf2, },
+
207 { 0xa640, 0xa640, }, { 0xa642, 0xa642, }, { 0xa644, 0xa644, },
+
208 { 0xa646, 0xa646, }, { 0xa648, 0xa648, }, { 0xa64a, 0xa64a, },
+
209 { 0xa64c, 0xa64c, }, { 0xa64e, 0xa64e, }, { 0xa650, 0xa650, },
+
210 { 0xa652, 0xa652, }, { 0xa654, 0xa654, }, { 0xa656, 0xa656, },
+
211 { 0xa658, 0xa658, }, { 0xa65a, 0xa65a, }, { 0xa65c, 0xa65c, },
+
212 { 0xa65e, 0xa65e, }, { 0xa660, 0xa660, }, { 0xa662, 0xa662, },
+
213 { 0xa664, 0xa664, }, { 0xa666, 0xa666, }, { 0xa668, 0xa668, },
+
214 { 0xa66a, 0xa66a, }, { 0xa66c, 0xa66c, }, { 0xa680, 0xa680, },
+
215 { 0xa682, 0xa682, }, { 0xa684, 0xa684, }, { 0xa686, 0xa686, },
+
216 { 0xa688, 0xa688, }, { 0xa68a, 0xa68a, }, { 0xa68c, 0xa68c, },
+
217 { 0xa68e, 0xa68e, }, { 0xa690, 0xa690, }, { 0xa692, 0xa692, },
+
218 { 0xa694, 0xa694, }, { 0xa696, 0xa696, }, { 0xa698, 0xa698, },
+
219 { 0xa69a, 0xa69a, }, { 0xa722, 0xa722, }, { 0xa724, 0xa724, },
+
220 { 0xa726, 0xa726, }, { 0xa728, 0xa728, }, { 0xa72a, 0xa72a, },
+
221 { 0xa72c, 0xa72c, }, { 0xa72e, 0xa72e, }, { 0xa732, 0xa732, },
+
222 { 0xa734, 0xa734, }, { 0xa736, 0xa736, }, { 0xa738, 0xa738, },
+
223 { 0xa73a, 0xa73a, }, { 0xa73c, 0xa73c, }, { 0xa73e, 0xa73e, },
+
224 { 0xa740, 0xa740, }, { 0xa742, 0xa742, }, { 0xa744, 0xa744, },
+
225 { 0xa746, 0xa746, }, { 0xa748, 0xa748, }, { 0xa74a, 0xa74a, },
+
226 { 0xa74c, 0xa74c, }, { 0xa74e, 0xa74e, }, { 0xa750, 0xa750, },
+
227 { 0xa752, 0xa752, }, { 0xa754, 0xa754, }, { 0xa756, 0xa756, },
+
228 { 0xa758, 0xa758, }, { 0xa75a, 0xa75a, }, { 0xa75c, 0xa75c, },
+
229 { 0xa75e, 0xa75e, }, { 0xa760, 0xa760, }, { 0xa762, 0xa762, },
+
230 { 0xa764, 0xa764, }, { 0xa766, 0xa766, }, { 0xa768, 0xa768, },
+
231 { 0xa76a, 0xa76a, }, { 0xa76c, 0xa76c, }, { 0xa76e, 0xa76e, },
+
232 { 0xa779, 0xa779, }, { 0xa77b, 0xa77b, }, { 0xa77d, 0xa77e, },
+
233 { 0xa780, 0xa780, }, { 0xa782, 0xa782, }, { 0xa784, 0xa784, },
+
234 { 0xa786, 0xa786, }, { 0xa78b, 0xa78b, }, { 0xa78d, 0xa78d, },
+
235 { 0xa790, 0xa790, }, { 0xa792, 0xa792, }, { 0xa796, 0xa796, },
+
236 { 0xa798, 0xa798, }, { 0xa79a, 0xa79a, }, { 0xa79c, 0xa79c, },
+
237 { 0xa79e, 0xa79e, }, { 0xa7a0, 0xa7a0, }, { 0xa7a2, 0xa7a2, },
+
238 { 0xa7a4, 0xa7a4, }, { 0xa7a6, 0xa7a6, }, { 0xa7a8, 0xa7a8, },
+
239 { 0xa7aa, 0xa7ae, }, { 0xa7b0, 0xa7b4, }, { 0xa7b6, 0xa7b6, },
+
240 { 0xa7b8, 0xa7b8, }, { 0xa7ba, 0xa7ba, }, { 0xa7bc, 0xa7bc, },
+
241 { 0xa7be, 0xa7be, }, { 0xa7c0, 0xa7c0, }, { 0xa7c2, 0xa7c2, },
+
242 { 0xa7c4, 0xa7c7, }, { 0xa7c9, 0xa7c9, }, { 0xa7d0, 0xa7d0, },
+
243 { 0xa7d6, 0xa7d6, }, { 0xa7d8, 0xa7d8, }, { 0xa7f5, 0xa7f5, },
+
244 { 0xff21, 0xff3a, }, { 0x10400, 0x10427, }, { 0x104b0, 0x104d3, },
+
245 { 0x10570, 0x1057a, }, { 0x1057c, 0x1058a, }, { 0x1058c, 0x10592, },
+
246 { 0x10594, 0x10595, }, { 0x10c80, 0x10cb2, }, { 0x118a0, 0x118bf, },
+
247 { 0x16e40, 0x16e5f, }, { 0x1d400, 0x1d419, }, { 0x1d434, 0x1d44d, },
+
248 { 0x1d468, 0x1d481, }, { 0x1d49c, 0x1d49c, }, { 0x1d49e, 0x1d49f, },
+
249 { 0x1d4a2, 0x1d4a2, }, { 0x1d4a5, 0x1d4a6, }, { 0x1d4a9, 0x1d4ac, },
+
250 { 0x1d4ae, 0x1d4b5, }, { 0x1d4d0, 0x1d4e9, }, { 0x1d504, 0x1d505, },
+
251 { 0x1d507, 0x1d50a, }, { 0x1d50d, 0x1d514, }, { 0x1d516, 0x1d51c, },
+
252 { 0x1d538, 0x1d539, }, { 0x1d53b, 0x1d53e, }, { 0x1d540, 0x1d544, },
+
253 { 0x1d546, 0x1d546, }, { 0x1d54a, 0x1d550, }, { 0x1d56c, 0x1d585, },
+
254 { 0x1d5a0, 0x1d5b9, }, { 0x1d5d4, 0x1d5ed, }, { 0x1d608, 0x1d621, },
+
255 { 0x1d63c, 0x1d655, }, { 0x1d670, 0x1d689, }, { 0x1d6a8, 0x1d6c0, },
+
256 { 0x1d6e2, 0x1d6fa, }, { 0x1d71c, 0x1d734, }, { 0x1d756, 0x1d76e, },
+
257 { 0x1d790, 0x1d7a8, }, { 0x1d7ca, 0x1d7ca, }, { 0x1e900, 0x1e921, },
+
258 { 0x1f130, 0x1f149, }, { 0x1f150, 0x1f169, }, { 0x1f170, 0x1f189, },
+
259 }};
+
260
+
261 return utils::table_lookup(upper_table, c);
+
262 }
+
263}
Definition: _utils.hpp:34
bool isupper(char32_t c)
Definition: isupper.hpp:38
diff --git a/isvalid_8hpp.html b/isvalid_8hpp.html index b4f6c5d..e069371 100644 --- a/isvalid_8hpp.html +++ b/isvalid_8hpp.html @@ -2,8 +2,8 @@ - - + + peelo-unicode: include/peelo/unicode/ctype/isvalid.hpp File Reference @@ -16,8 +16,8 @@
- - + @@ -26,15 +26,16 @@
+
peelo-unicode
- + +/* @license-end */ +

Go to the source code of this file.

- - + - + - +

+

Namespaces

 peelo
namespace  peelo
 
 peelo::unicode
namespace  peelo::unicode
 
 peelo::unicode::ctype
namespace  peelo::unicode::ctype
 
- @@ -69,7 +69,7 @@ diff --git a/isvalid_8hpp_source.html b/isvalid_8hpp_source.html index ea8123f..71e492d 100644 --- a/isvalid_8hpp_source.html +++ b/isvalid_8hpp_source.html @@ -2,8 +2,8 @@ - - + +peelo-unicode: include/peelo/unicode/ctype/isvalid.hpp Source File @@ -16,8 +16,8 @@

+

Functions

bool peelo::unicode::ctype::isvalid (char32_t c)
 
- - + @@ -26,15 +26,16 @@
+
peelo-unicode
- + +/* @license-end */ +
-
-
isvalid.hpp
+
isvalid.hpp
-Go to the documentation of this file.
1 /*
-
2  * Copyright (c) 2018-2024, peelo.net
-
3  * All rights reserved.
-
4  *
-
5  * Redistribution and use in source and binary forms, with or without
-
6  * modification, are permitted provided that the following conditions are met:
-
7  *
-
8  * * Redistributions of source code must retain the above copyright notice,
-
9  * this list of conditions and the following disclaimer.
-
10  *
-
11  * * Redistributions in binary form must reproduce the above copyright notice,
-
12  * this list of conditions and the following disclaimer in the documentation
-
13  * and/or other materials provided with the distribution.
-
14  *
-
15  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-
16  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-
17  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-
18  * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
-
19  * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-
20  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-
21  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-
22  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-
23  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-
24  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-
25  * POSSIBILITY OF SUCH DAMAGE.
-
26  */
-
27 #pragma once
-
28 
-
29 namespace peelo::unicode::ctype
-
30 {
-
34  inline bool
-
35  isvalid(char32_t c)
-
36  {
-
37  return !(c > 0x10ffff
-
38  || (c & 0xfffe) == 0xfffe
-
39  || (c >= 0xd800 && c <= 0xdfff)
-
40  || (c >= 0xfdd0 && c <= 0xfdef));
-
41  }
-
42 }
+Go to the documentation of this file.
1/*
+
2 * Copyright (c) 2018-2024, peelo.net
+
3 * All rights reserved.
+
4 *
+
5 * Redistribution and use in source and binary forms, with or without
+
6 * modification, are permitted provided that the following conditions are met:
+
7 *
+
8 * * Redistributions of source code must retain the above copyright notice,
+
9 * this list of conditions and the following disclaimer.
+
10 *
+
11 * * Redistributions in binary form must reproduce the above copyright notice,
+
12 * this list of conditions and the following disclaimer in the documentation
+
13 * and/or other materials provided with the distribution.
+
14 *
+
15 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+
16 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+
17 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+
18 * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
+
19 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+
20 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+
21 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+
22 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+
23 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+
24 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+
25 * POSSIBILITY OF SUCH DAMAGE.
+
26 */
+
27#pragma once
+
28
+ +
30{
+
34 inline bool
+
35 isvalid(char32_t c)
+
36 {
+
37 return !(c > 0x10ffff
+
38 || (c & 0xfffe) == 0xfffe
+
39 || (c >= 0xd800 && c <= 0xdfff)
+
40 || (c >= 0xfdd0 && c <= 0xfdef));
+
41 }
+
42}
Definition: _utils.hpp:34
bool isvalid(char32_t c)
Definition: isvalid.hpp:35
diff --git a/isxdigit_8hpp.html b/isxdigit_8hpp.html index a95815b..2a17a1d 100644 --- a/isxdigit_8hpp.html +++ b/isxdigit_8hpp.html @@ -2,8 +2,8 @@ - - + + peelo-unicode: include/peelo/unicode/ctype/isxdigit.hpp File Reference @@ -16,8 +16,8 @@
- - + @@ -26,15 +26,16 @@
+
peelo-unicode
- + +/* @license-end */ +

Go to the source code of this file.

- - + - + - +

+

Namespaces

 peelo
namespace  peelo
 
 peelo::unicode
namespace  peelo::unicode
 
 peelo::unicode::ctype
namespace  peelo::unicode::ctype
 
- @@ -69,7 +69,7 @@ diff --git a/isxdigit_8hpp_source.html b/isxdigit_8hpp_source.html index df7e849..48d2c9b 100644 --- a/isxdigit_8hpp_source.html +++ b/isxdigit_8hpp_source.html @@ -2,8 +2,8 @@ - - + +peelo-unicode: include/peelo/unicode/ctype/isxdigit.hpp Source File @@ -16,8 +16,8 @@

+

Functions

bool peelo::unicode::ctype::isxdigit (char32_t c)
 
- - + @@ -26,15 +26,16 @@
+
peelo-unicode
- + +/* @license-end */ +
-
-
isxdigit.hpp
+
isxdigit.hpp
-Go to the documentation of this file.
1 /*
-
2  * Copyright (c) 2018-2024, peelo.net
-
3  * All rights reserved.
-
4  *
-
5  * Redistribution and use in source and binary forms, with or without
-
6  * modification, are permitted provided that the following conditions are met:
-
7  *
-
8  * * Redistributions of source code must retain the above copyright notice,
-
9  * this list of conditions and the following disclaimer.
-
10  *
-
11  * * Redistributions in binary form must reproduce the above copyright notice,
-
12  * this list of conditions and the following disclaimer in the documentation
-
13  * and/or other materials provided with the distribution.
-
14  *
-
15  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-
16  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-
17  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-
18  * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
-
19  * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-
20  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-
21  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-
22  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-
23  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-
24  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-
25  * POSSIBILITY OF SUCH DAMAGE.
-
26  */
-
27 #pragma once
-
28 
-
29 namespace peelo::unicode::ctype
-
30 {
-
35  inline bool
-
36  isxdigit(char32_t c)
-
37  {
-
38  return (c >= 'A' && c <= 'F')
-
39  || (c >= 'a' && c <= 'f')
-
40  || (c >= '0' && c <= '9');
-
41  }
-
42 }
+Go to the documentation of this file.
1/*
+
2 * Copyright (c) 2018-2024, peelo.net
+
3 * All rights reserved.
+
4 *
+
5 * Redistribution and use in source and binary forms, with or without
+
6 * modification, are permitted provided that the following conditions are met:
+
7 *
+
8 * * Redistributions of source code must retain the above copyright notice,
+
9 * this list of conditions and the following disclaimer.
+
10 *
+
11 * * Redistributions in binary form must reproduce the above copyright notice,
+
12 * this list of conditions and the following disclaimer in the documentation
+
13 * and/or other materials provided with the distribution.
+
14 *
+
15 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+
16 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+
17 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+
18 * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
+
19 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+
20 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+
21 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+
22 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+
23 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+
24 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+
25 * POSSIBILITY OF SUCH DAMAGE.
+
26 */
+
27#pragma once
+
28
+ +
30{
+
35 inline bool
+
36 isxdigit(char32_t c)
+
37 {
+
38 return (c >= 'A' && c <= 'F')
+
39 || (c >= 'a' && c <= 'f')
+
40 || (c >= '0' && c <= '9');
+
41 }
+
42}
Definition: _utils.hpp:34
bool isxdigit(char32_t c)
Definition: isxdigit.hpp:36
diff --git a/jquery.js b/jquery.js index 103c32d..c9ed3d9 100644 --- a/jquery.js +++ b/jquery.js @@ -1,5 +1,5 @@ -/*! jQuery v3.4.1 | (c) JS Foundation and other contributors | jquery.org/license */ -!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(C,e){"use strict";var t=[],E=C.document,r=Object.getPrototypeOf,s=t.slice,g=t.concat,u=t.push,i=t.indexOf,n={},o=n.toString,v=n.hasOwnProperty,a=v.toString,l=a.call(Object),y={},m=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType},x=function(e){return null!=e&&e===e.window},c={type:!0,src:!0,nonce:!0,noModule:!0};function b(e,t,n){var r,i,o=(n=n||E).createElement("script");if(o.text=e,t)for(r in c)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function w(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[o.call(e)]||"object":typeof e}var f="3.4.1",k=function(e,t){return new k.fn.init(e,t)},p=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g;function d(e){var t=!!e&&"length"in e&&e.length,n=w(e);return!m(e)&&!x(e)&&("array"===n||0===t||"number"==typeof t&&0+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp($),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+$),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\([\\da-f]{1,6}"+M+"?|("+M+")|.)","ig"),ne=function(e,t,n){var r="0x"+t-65536;return r!=r||n?t:r<0?String.fromCharCode(r+65536):String.fromCharCode(r>>10|55296,1023&r|56320)},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(m.childNodes),m.childNodes),t[m.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&((e?e.ownerDocument||e:m)!==C&&T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&y(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!A[t+" "]&&(!v||!v.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&U.test(t)){(s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=k),o=(l=h(t)).length;while(o--)l[o]="#"+s+" "+xe(l[o]);c=l.join(","),f=ee.test(t)&&ye(e.parentNode)||e}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){A(t,!0)}finally{s===k&&e.removeAttribute("id")}}}return g(t.replace(B,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[k]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ve(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ye(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e.namespaceURI,n=(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:m;return r!==C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),m!==C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=k,!C.getElementsByName||!C.getElementsByName(k).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],v=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){a.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+k+"-]").length||v.push("~="),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+k+"+*").length||v.push(".#.+[+~]")}),ce(function(e){e.innerHTML="";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&v.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),v.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",$)}),v=v.length&&new RegExp(v.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),y=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},D=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)===(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e===C||e.ownerDocument===m&&y(m,e)?-1:t===C||t.ownerDocument===m&&y(m,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e===C?-1:t===C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]===m?-1:s[r]===m?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if((e.ownerDocument||e)!==C&&T(e),d.matchesSelector&&E&&!A[t+" "]&&(!s||!s.test(t))&&(!v||!v.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){A(t,!0)}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=p[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&p(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function j(e,n,r){return m(n)?k.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?k.grep(e,function(e){return e===n!==r}):"string"!=typeof n?k.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(k.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||q,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:L.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof k?t[0]:t,k.merge(this,k.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),D.test(r[1])&&k.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(k):k.makeArray(e,this)}).prototype=k.fn,q=k(E);var H=/^(?:parents|prev(?:Until|All))/,O={children:!0,contents:!0,next:!0,prev:!0};function P(e,t){while((e=e[t])&&1!==e.nodeType);return e}k.fn.extend({has:function(e){var t=k(e,this),n=t.length;return this.filter(function(){for(var e=0;e\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i,ge={option:[1,""],thead:[1,"","
"],col:[2,"","
"],tr:[2,"","
"],td:[3,"","
"],_default:[0,"",""]};function ve(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?k.merge([e],n):n}function ye(e,t){for(var n=0,r=e.length;nx",y.noCloneChecked=!!me.cloneNode(!0).lastChild.defaultValue;var Te=/^key/,Ce=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,Ee=/^([^.]*)(?:\.(.+)|)/;function ke(){return!0}function Se(){return!1}function Ne(e,t){return e===function(){try{return E.activeElement}catch(e){}}()==("focus"===t)}function Ae(e,t,n,r,i,o){var a,s;if("object"==typeof t){for(s in"string"!=typeof n&&(r=r||n,n=void 0),t)Ae(e,s,n,r,t[s],o);return e}if(null==r&&null==i?(i=n,r=n=void 0):null==i&&("string"==typeof n?(i=r,r=void 0):(i=r,r=n,n=void 0)),!1===i)i=Se;else if(!i)return e;return 1===o&&(a=i,(i=function(e){return k().off(e),a.apply(this,arguments)}).guid=a.guid||(a.guid=k.guid++)),e.each(function(){k.event.add(this,t,i,r,n)})}function De(e,i,o){o?(Q.set(e,i,!1),k.event.add(e,i,{namespace:!1,handler:function(e){var t,n,r=Q.get(this,i);if(1&e.isTrigger&&this[i]){if(r.length)(k.event.special[i]||{}).delegateType&&e.stopPropagation();else if(r=s.call(arguments),Q.set(this,i,r),t=o(this,i),this[i](),r!==(n=Q.get(this,i))||t?Q.set(this,i,!1):n={},r!==n)return e.stopImmediatePropagation(),e.preventDefault(),n.value}else r.length&&(Q.set(this,i,{value:k.event.trigger(k.extend(r[0],k.Event.prototype),r.slice(1),this)}),e.stopImmediatePropagation())}})):void 0===Q.get(e,i)&&k.event.add(e,i,ke)}k.event={global:{},add:function(t,e,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=Q.get(t);if(v){n.handler&&(n=(o=n).handler,i=o.selector),i&&k.find.matchesSelector(ie,i),n.guid||(n.guid=k.guid++),(u=v.events)||(u=v.events={}),(a=v.handle)||(a=v.handle=function(e){return"undefined"!=typeof k&&k.event.triggered!==e.type?k.event.dispatch.apply(t,arguments):void 0}),l=(e=(e||"").match(R)||[""]).length;while(l--)d=g=(s=Ee.exec(e[l])||[])[1],h=(s[2]||"").split(".").sort(),d&&(f=k.event.special[d]||{},d=(i?f.delegateType:f.bindType)||d,f=k.event.special[d]||{},c=k.extend({type:d,origType:g,data:r,handler:n,guid:n.guid,selector:i,needsContext:i&&k.expr.match.needsContext.test(i),namespace:h.join(".")},o),(p=u[d])||((p=u[d]=[]).delegateCount=0,f.setup&&!1!==f.setup.call(t,r,h,a)||t.addEventListener&&t.addEventListener(d,a)),f.add&&(f.add.call(t,c),c.handler.guid||(c.handler.guid=n.guid)),i?p.splice(p.delegateCount++,0,c):p.push(c),k.event.global[d]=!0)}},remove:function(e,t,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=Q.hasData(e)&&Q.get(e);if(v&&(u=v.events)){l=(t=(t||"").match(R)||[""]).length;while(l--)if(d=g=(s=Ee.exec(t[l])||[])[1],h=(s[2]||"").split(".").sort(),d){f=k.event.special[d]||{},p=u[d=(r?f.delegateType:f.bindType)||d]||[],s=s[2]&&new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"),a=o=p.length;while(o--)c=p[o],!i&&g!==c.origType||n&&n.guid!==c.guid||s&&!s.test(c.namespace)||r&&r!==c.selector&&("**"!==r||!c.selector)||(p.splice(o,1),c.selector&&p.delegateCount--,f.remove&&f.remove.call(e,c));a&&!p.length&&(f.teardown&&!1!==f.teardown.call(e,h,v.handle)||k.removeEvent(e,d,v.handle),delete u[d])}else for(d in u)k.event.remove(e,d+t[l],n,r,!0);k.isEmptyObject(u)&&Q.remove(e,"handle events")}},dispatch:function(e){var t,n,r,i,o,a,s=k.event.fix(e),u=new Array(arguments.length),l=(Q.get(this,"events")||{})[s.type]||[],c=k.event.special[s.type]||{};for(u[0]=s,t=1;t\x20\t\r\n\f]*)[^>]*)\/>/gi,qe=/\s*$/g;function Oe(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&k(e).children("tbody")[0]||e}function Pe(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function Re(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Me(e,t){var n,r,i,o,a,s,u,l;if(1===t.nodeType){if(Q.hasData(e)&&(o=Q.access(e),a=Q.set(t,o),l=o.events))for(i in delete a.handle,a.events={},l)for(n=0,r=l[i].length;n")},clone:function(e,t,n){var r,i,o,a,s,u,l,c=e.cloneNode(!0),f=oe(e);if(!(y.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||k.isXMLDoc(e)))for(a=ve(c),r=0,i=(o=ve(e)).length;r").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var Vt,Gt=[],Yt=/(=)\?(?=&|$)|\?\?/;k.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Gt.pop()||k.expando+"_"+kt++;return this[e]=!0,e}}),k.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Yt.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Yt.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Yt,"$1"+r):!1!==e.jsonp&&(e.url+=(St.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||k.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?k(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,Gt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),y.createHTMLDocument=((Vt=E.implementation.createHTMLDocument("").body).innerHTML="
",2===Vt.childNodes.length),k.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(y.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=D.exec(e))?[t.createElement(i[1])]:(i=we([e],t,o),o&&o.length&&k(o).remove(),k.merge([],i.childNodes)));var r,i,o},k.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1").append(k.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},k.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){k.fn[t]=function(e){return this.on(t,e)}}),k.expr.pseudos.animated=function(t){return k.grep(k.timers,function(e){return t===e.elem}).length},k.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=k.css(e,"position"),c=k(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=k.css(e,"top"),u=k.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,k.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},k.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){k.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===k.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===k.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=k(e).offset()).top+=k.css(e,"borderTopWidth",!0),i.left+=k.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-k.css(r,"marginTop",!0),left:t.left-i.left-k.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===k.css(e,"position"))e=e.offsetParent;return e||ie})}}),k.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;k.fn[t]=function(e){return _(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),k.each(["top","left"],function(e,n){k.cssHooks[n]=ze(y.pixelPosition,function(e,t){if(t)return t=_e(e,n),$e.test(t)?k(e).position()[n]+"px":t})}),k.each({Height:"height",Width:"width"},function(a,s){k.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){k.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return _(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?k.css(e,t,i):k.style(e,t,n,i)},s,n?e:void 0,n)}})}),k.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){k.fn[n]=function(e,t){return 0+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp(F),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+F),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\[\\da-fA-F]{1,6}"+M+"?|\\\\([^\\r\\n\\f])","g"),ne=function(e,t){var n="0x"+e.slice(1)-65536;return t||(n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,1023&n|56320))},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(p.childNodes),p.childNodes),t[p.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&(T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&y(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!N[t+" "]&&(!v||!v.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&(U.test(t)||z.test(t))){(f=ee.test(t)&&ye(e.parentNode)||e)===e&&d.scope||((s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=S)),o=(l=h(t)).length;while(o--)l[o]=(s?"#"+s:":scope")+" "+xe(l[o]);c=l.join(",")}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){N(t,!0)}finally{s===S&&e.removeAttribute("id")}}}return g(t.replace($,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[S]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ve(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ye(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e&&e.namespaceURI,n=e&&(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:p;return r!=C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),p!=C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.scope=ce(function(e){return a.appendChild(e).appendChild(C.createElement("div")),"undefined"!=typeof e.querySelectorAll&&!e.querySelectorAll(":scope fieldset div").length}),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=S,!C.getElementsByName||!C.getElementsByName(S).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],v=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){var t;a.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+S+"-]").length||v.push("~="),(t=C.createElement("input")).setAttribute("name",""),e.appendChild(t),e.querySelectorAll("[name='']").length||v.push("\\["+M+"*name"+M+"*="+M+"*(?:''|\"\")"),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+S+"+*").length||v.push(".#.+[+~]"),e.querySelectorAll("\\\f"),v.push("[\\r\\n\\f]")}),ce(function(e){e.innerHTML="";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&v.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),v.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",F)}),v=v.length&&new RegExp(v.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),y=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},j=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)==(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e==C||e.ownerDocument==p&&y(p,e)?-1:t==C||t.ownerDocument==p&&y(p,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e==C?-1:t==C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]==p?-1:s[r]==p?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if(T(e),d.matchesSelector&&E&&!N[t+" "]&&(!s||!s.test(t))&&(!v||!v.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){N(t,!0)}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=m[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&m(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function j(e,n,r){return m(n)?S.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?S.grep(e,function(e){return e===n!==r}):"string"!=typeof n?S.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(S.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||D,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:q.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof S?t[0]:t,S.merge(this,S.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),N.test(r[1])&&S.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(S):S.makeArray(e,this)}).prototype=S.fn,D=S(E);var L=/^(?:parents|prev(?:Until|All))/,H={children:!0,contents:!0,next:!0,prev:!0};function O(e,t){while((e=e[t])&&1!==e.nodeType);return e}S.fn.extend({has:function(e){var t=S(e,this),n=t.length;return this.filter(function(){for(var e=0;e\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i;ce=E.createDocumentFragment().appendChild(E.createElement("div")),(fe=E.createElement("input")).setAttribute("type","radio"),fe.setAttribute("checked","checked"),fe.setAttribute("name","t"),ce.appendChild(fe),y.checkClone=ce.cloneNode(!0).cloneNode(!0).lastChild.checked,ce.innerHTML="",y.noCloneChecked=!!ce.cloneNode(!0).lastChild.defaultValue,ce.innerHTML="",y.option=!!ce.lastChild;var ge={thead:[1,"","
"],col:[2,"","
"],tr:[2,"","
"],td:[3,"","
"],_default:[0,"",""]};function ve(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?S.merge([e],n):n}function ye(e,t){for(var n=0,r=e.length;n",""]);var me=/<|&#?\w+;/;function xe(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d\s*$/g;function je(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&S(e).children("tbody")[0]||e}function De(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function qe(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Le(e,t){var n,r,i,o,a,s;if(1===t.nodeType){if(Y.hasData(e)&&(s=Y.get(e).events))for(i in Y.remove(t,"handle events"),s)for(n=0,r=s[i].length;n").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var _t,zt=[],Ut=/(=)\?(?=&|$)|\?\?/;S.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=zt.pop()||S.expando+"_"+wt.guid++;return this[e]=!0,e}}),S.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Ut.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Ut.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Ut,"$1"+r):!1!==e.jsonp&&(e.url+=(Tt.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||S.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?S(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,zt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),y.createHTMLDocument=((_t=E.implementation.createHTMLDocument("").body).innerHTML="
",2===_t.childNodes.length),S.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(y.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=N.exec(e))?[t.createElement(i[1])]:(i=xe([e],t,o),o&&o.length&&S(o).remove(),S.merge([],i.childNodes)));var r,i,o},S.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1").append(S.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},S.expr.pseudos.animated=function(t){return S.grep(S.timers,function(e){return t===e.elem}).length},S.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=S.css(e,"position"),c=S(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=S.css(e,"top"),u=S.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,S.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},S.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){S.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===S.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===S.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=S(e).offset()).top+=S.css(e,"borderTopWidth",!0),i.left+=S.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-S.css(r,"marginTop",!0),left:t.left-i.left-S.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===S.css(e,"position"))e=e.offsetParent;return e||re})}}),S.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;S.fn[t]=function(e){return $(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),S.each(["top","left"],function(e,n){S.cssHooks[n]=Fe(y.pixelPosition,function(e,t){if(t)return t=We(e,n),Pe.test(t)?S(e).position()[n]+"px":t})}),S.each({Height:"height",Width:"width"},function(a,s){S.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){S.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return $(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?S.css(e,t,i):S.style(e,t,n,i)},s,n?e:void 0,n)}})}),S.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){S.fn[t]=function(e){return this.on(t,e)}}),S.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)},hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),S.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){S.fn[n]=function(e,t){return 0'+ + var url; + var link; + link = data.children[i].url; + if (link.substring(0,1)=='^') { + url = link.substring(1); + } else { + url = relPath+link; + } + result+='
  • '+ data.children[i].text+''+ makeTree(data.children[i],relPath)+'
  • '; } @@ -36,15 +44,91 @@ function initMenu(relPath,searchEnabled,serverSide,searchPage,search) { } return result; } - - $('#main-nav').append(makeTree(menudata,relPath)); - $('#main-nav').children(':first').addClass('sm sm-dox').attr('id','main-menu'); + var searchBox; if (searchEnabled) { if (serverSide) { - $('#main-menu').append('
  • '); + searchBox='
    '+ + '
    '+ + '
    '+ + ''+ + '
    '+ + '
    '+ + '
    '+ + '
    '; } else { - $('#main-menu').append('
  • '); + searchBox='
    '+ + ''+ + ''+ + ''+ + ''+ + ''+ + '' + '' + '
    '; + } + } + + $('#main-nav').before('
    '+ + ''+ + ''+ + '
    '); + $('#main-nav').append(makeTree(menudata,relPath)); + $('#main-nav').children(':first').addClass('sm sm-dox').attr('id','main-menu'); + if (searchBox) { + $('#main-menu').append('
  • '); + } + var $mainMenuState = $('#main-menu-state'); + var prevWidth = 0; + if ($mainMenuState.length) { + function initResizableIfExists() { + if (typeof initResizable==='function') initResizable(); + } + // animate mobile menu + $mainMenuState.change(function(e) { + var $menu = $('#main-menu'); + var options = { duration: 250, step: initResizableIfExists }; + if (this.checked) { + options['complete'] = function() { $menu.css('display', 'block') }; + $menu.hide().slideDown(options); + } else { + options['complete'] = function() { $menu.css('display', 'none') }; + $menu.show().slideUp(options); + } + }); + // set default menu visibility + function resetState() { + var $menu = $('#main-menu'); + var $mainMenuState = $('#main-menu-state'); + var newWidth = $(window).outerWidth(); + if (newWidth!=prevWidth) { + if ($(window).outerWidth()<768) { + $mainMenuState.prop('checked',false); $menu.hide(); + $('#searchBoxPos1').html(searchBox); + $('#searchBoxPos2').hide(); + } else { + $menu.show(); + $('#searchBoxPos1').empty(); + $('#searchBoxPos2').html(searchBox); + $('#searchBoxPos2').show(); + } + prevWidth = newWidth; + } } + $(window).ready(function() { resetState(); initResizableIfExists(); }); + $(window).resize(resetState); } $('#main-menu').smartmenus(); } diff --git a/menudata.js b/menudata.js index fee3183..e888fff 100644 --- a/menudata.js +++ b/menudata.js @@ -28,6 +28,7 @@ var menudata={children:[ {text:"Namespace List",url:"namespaces.html"}, {text:"Namespace Members",url:"namespacemembers.html",children:[ {text:"All",url:"namespacemembers.html",children:[ +{text:"b",url:"namespacemembers.html#index_b"}, {text:"c",url:"namespacemembers.html#index_c"}, {text:"d",url:"namespacemembers.html#index_d"}, {text:"e",url:"namespacemembers.html#index_e"}, @@ -40,6 +41,7 @@ var menudata={children:[ {text:"e",url:"namespacemembers_func.html#index_e"}, {text:"i",url:"namespacemembers_func.html#index_i"}, {text:"s",url:"namespacemembers_func.html#index_s"}, -{text:"t",url:"namespacemembers_func.html#index_t"}]}]}]}, +{text:"t",url:"namespacemembers_func.html#index_t"}]}, +{text:"Enumerations",url:"namespacemembers_enum.html"}]}]}, {text:"Files",url:"files.html",children:[ {text:"File List",url:"files.html"}]}]} diff --git a/namespacemembers.html b/namespacemembers.html index ac69949..dd8174e 100644 --- a/namespacemembers.html +++ b/namespacemembers.html @@ -2,8 +2,8 @@ - - + + peelo-unicode: Namespace Members @@ -16,8 +16,8 @@
    - - + @@ -26,139 +26,76 @@
    +
    peelo-unicode
    - + +/* @license-end */ +
    Here is a list of all namespace members with links to the namespace documentation for each member:
    -

    - c -

    diff --git a/namespacemembers_type.html b/namespacemembers_enum.html similarity index 73% rename from namespacemembers_type.html rename to namespacemembers_enum.html index 73dbfa2..aa6bd7f 100644 --- a/namespacemembers_type.html +++ b/namespacemembers_enum.html @@ -2,8 +2,8 @@ - - + + peelo-unicode: Namespace Members @@ -16,8 +16,8 @@
    - - + @@ -26,27 +26,26 @@
    +
    peelo-unicode
    - + +/* @license-end */ +
     
    diff --git a/namespacemembers_func.html b/namespacemembers_func.html index 790a1a2..54530c8 100644 --- a/namespacemembers_func.html +++ b/namespacemembers_func.html @@ -2,8 +2,8 @@ - - + + peelo-unicode: Namespace Members @@ -16,8 +16,8 @@
    - - + @@ -26,139 +26,71 @@
    +
    peelo-unicode
    - + +/* @license-end */ +
      -

    - c -

    diff --git a/namespacepeelo.html b/namespacepeelo.html index 4b8992d..e1dd473 100644 --- a/namespacepeelo.html +++ b/namespacepeelo.html @@ -2,8 +2,8 @@ - - + + peelo-unicode: peelo Namespace Reference @@ -16,8 +16,8 @@
    - - + @@ -26,34 +26,34 @@
    +
    peelo-unicode
    - + +/* @license-end */ +
    Namespaces
    -
    -
    peelo Namespace Reference
    +
    peelo Namespace Reference
    - - +

    +

    Namespaces

     unicode
    namespace  unicode
     
    diff --git a/namespacepeelo_1_1unicode.html b/namespacepeelo_1_1unicode.html index d51324d..7416201 100644 --- a/namespacepeelo_1_1unicode.html +++ b/namespacepeelo_1_1unicode.html @@ -2,8 +2,8 @@ - - + + peelo-unicode: peelo::unicode Namespace Reference @@ -16,8 +16,8 @@
    - - + @@ -26,15 +26,16 @@
    +
    peelo-unicode
    - + +/* @license-end */ +
    -Namespaces
    -
    -
    peelo::unicode Namespace Reference
    +Namespaces | +Enumerations | +Functions
    +
    peelo::unicode Namespace Reference
    - - + - + +

    +

    Namespaces

     ctype
    namespace  ctype
     
     encoding
    namespace  encoding
     
    + + + +

    +Enumerations

    enum class  bom {
    +  utf8 +, utf16_be +, utf16_le +, utf32_be +,
    +  utf32_le +, utf7 +, utf1 +, utf_ebcdic +,
    +  scsu +, bocu_1 +, gb18030 +
    + }
     
    + + + + +

    +Functions

    std::optional< bomdetect_bom (const char *input, std::size_t length)
     
    std::optional< bomdetect_bom (const std::string &input)
     
    +

    Enumeration Type Documentation

    + +

    ◆ bom

    + +
    +
    + + + + + +
    + + + + +
    enum class peelo::unicode::bom
    +
    +strong
    +
    +

    Enumeration of different recognized BOM types.

    + + + + + + + + + + + + +
    Enumerator
    utf8 
    utf16_be 
    utf16_le 
    utf32_be 
    utf32_le 
    utf7 
    utf1 
    utf_ebcdic 
    scsu 
    bocu_1 
    gb18030 
    + +
    +
    +

    Function Documentation

    + +

    ◆ detect_bom() [1/2]

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    std::optional< bom > peelo::unicode::detect_bom (const char * input,
    std::size_t length 
    )
    +
    +inline
    +
    +

    Tests whether given byte string contains byte order mark or not.

    +
    Parameters
    + + + +
    inputByte string to test.
    lengthLength of the given byte string.
    +
    +
    +
    Returns
    Byte order mark detected in the given byte string, or null option if the given byte string does not contain byte order mark.
    + +
    +
    + +

    ◆ detect_bom() [2/2]

    + +
    +
    + + + + + +
    + + + + + + + + +
    std::optional< bom > peelo::unicode::detect_bom (const std::string & input)
    +
    +inline
    +
    +

    Tests whether given string contains byte order mark or not.

    +
    Parameters
    + + +
    inputString to test.
    +
    +
    +
    Returns
    Byte order mark detected in the given byte string, or null option if the given byte string does not contain byte order mark.
    + +
    +
    diff --git a/namespacepeelo_1_1unicode_1_1ctype.html b/namespacepeelo_1_1unicode_1_1ctype.html index dfc4078..c46451c 100644 --- a/namespacepeelo_1_1unicode_1_1ctype.html +++ b/namespacepeelo_1_1unicode_1_1ctype.html @@ -2,8 +2,8 @@ - - + + peelo-unicode: peelo::unicode::ctype Namespace Reference @@ -16,8 +16,8 @@
    - - + @@ -26,15 +26,16 @@
    +
    peelo-unicode
    - + +/* @license-end */ + - +

    ◆ isblank()

    @@ -160,11 +160,11 @@

    -

    Determines whether the given Unicode code point is a blank character.

    +

    Determines whether the given Unicode code point is a blank character.

    - +

    ◆ iscntrl()

    @@ -187,11 +187,11 @@

    -

    Determines whether the given Unicode code point is a control character.

    +

    Determines whether the given Unicode code point is a control character.

    - +

    ◆ isdigit()

    @@ -214,11 +214,11 @@

    -

    Determines whether the given Unicode code point is a digit.

    +

    Determines whether the given Unicode code point is a digit.

    - +

    ◆ isgraph()

    @@ -241,11 +241,11 @@

    -

    Determines whether the given Unicode code point is a graphical character.

    +

    Determines whether the given Unicode code point is a graphical character.

    - +

    ◆ islower()

    @@ -268,11 +268,11 @@

    -

    Determines whether the given Unicode code point is lowercase.

    +

    Determines whether the given Unicode code point is lowercase.

    - +

    ◆ isprint()

    @@ -295,11 +295,11 @@

    -

    Determines whether the given Unicode code point is a printing character.

    +

    Determines whether the given Unicode code point is a printing character.

    - +

    ◆ ispunct()

    @@ -322,11 +322,11 @@

    -

    Determines whether the given Unicode code point is a punctuation character.

    +

    Determines whether the given Unicode code point is a punctuation character.

    - +

    ◆ isspace()

    @@ -349,11 +349,11 @@

    -

    Determines whether the given Unicode code point is a space character.

    +

    Determines whether the given Unicode code point is a space character.

    - +

    ◆ isupper()

    @@ -376,11 +376,11 @@

    -

    Determines whether the given Unicode code point is an uppercase character.

    +

    Determines whether the given Unicode code point is an uppercase character.

    - +

    ◆ isvalid()

    @@ -403,11 +403,11 @@

    -

    Determines whether given Unicode code point is valid or not.

    +

    Determines whether given Unicode code point is valid or not.

    - +

    ◆ isxdigit()

    @@ -430,11 +430,11 @@

    -

    Determines whether the given Unicode code point is a hexadecimal character.

    +

    Determines whether the given Unicode code point is a hexadecimal character.

    - +

    ◆ tolower()

    @@ -457,11 +457,11 @@

    -

    Converts given Unicode code point into lowercase.

    +

    Converts given Unicode code point into lowercase.

    - +

    ◆ toupper()

    @@ -484,14 +484,14 @@

    -

    Converts given Unicode code point into uppercase.

    +

    Converts given Unicode code point into uppercase.

    diff --git a/namespacepeelo_1_1unicode_1_1ctype_1_1utils.html b/namespacepeelo_1_1unicode_1_1ctype_1_1utils.html deleted file mode 100644 index 477f1a9..0000000 --- a/namespacepeelo_1_1unicode_1_1ctype_1_1utils.html +++ /dev/null @@ -1,103 +0,0 @@ - - - - - - - -peelo-unicode: peelo::unicode::ctype::utils Namespace Reference - - - - - - -
    -
    - - - - - - -
    -
    peelo-unicode -
    -
    -
    - - - - - - - -
    -
    -
    -Functions
    -
    -
    peelo::unicode::ctype::utils Namespace Reference
    -
    -
    - - - - - -

    -Functions

    template<std::size_t Size>
    bool table_lookup (const std::array< range, Size > &table, char32_t c)
     
    -

    Function Documentation

    - -

    ◆ table_lookup()

    - -
    -
    -
    -template<std::size_t Size>
    - - - - - -
    - - - - - - - - - - - - - - - - - - -
    bool peelo::unicode::ctype::utils::table_lookup (const std::array< range, Size > & table,
    char32_t c 
    )
    -
    -inline
    -
    - -
    -
    -
    - - - - diff --git a/namespacepeelo_1_1unicode_1_1encoding.html b/namespacepeelo_1_1unicode_1_1encoding.html index 4e0588d..055821b 100644 --- a/namespacepeelo_1_1unicode_1_1encoding.html +++ b/namespacepeelo_1_1unicode_1_1encoding.html @@ -2,8 +2,8 @@ - - + + peelo-unicode: peelo::unicode::encoding Namespace Reference @@ -16,8 +16,8 @@
    - - + @@ -26,15 +26,16 @@
    +
    peelo-unicode
    - + +/* @license-end */ + - +

    ◆ encode() [1/2]

    @@ -298,11 +298,11 @@

    -

    Encodes given Unicode character sequence into a byte string using UTF-16BE character encoding. Encoding errors are ignored.

    +

    Encodes given Unicode character sequence into a byte string using UTF-16BE character encoding. Encoding errors are ignored.

    - +

    ◆ encode() [2/2]

    @@ -325,11 +325,11 @@

    -

    Encodes given Unicode string into a byte string using UTF-16BE character encoding. Encoding errors are ignored.

    +

    Encodes given Unicode string into a byte string using UTF-16BE character encoding. Encoding errors are ignored.

    - +

    ◆ encode_codepoint()

    @@ -365,7 +365,7 @@

    +

    ◆ encode_validate() [1/2]

    - +

    ◆ encode_validate() [2/2]

    @@ -441,14 +441,14 @@

    -

    Encodes given Unicode string into a byte string using UTF-16BE character encoding. Result will be stored into given byte string. If encoding error is encountered, this function will return false, otherwise it returns true.

    +

    Encodes given Unicode string into a byte string using UTF-16BE character encoding. Result will be stored into given byte string. If encoding error is encountered, this function will return false, otherwise it returns true.

    diff --git a/namespacepeelo_1_1unicode_1_1encoding_1_1utf16le.html b/namespacepeelo_1_1unicode_1_1encoding_1_1utf16le.html index acb3392..fa36a11 100644 --- a/namespacepeelo_1_1unicode_1_1encoding_1_1utf16le.html +++ b/namespacepeelo_1_1unicode_1_1encoding_1_1utf16le.html @@ -2,8 +2,8 @@ - - + + peelo-unicode: peelo::unicode::encoding::utf16le Namespace Reference @@ -16,8 +16,8 @@
    - - + @@ -26,15 +26,16 @@
    +
    peelo-unicode
    - + +/* @license-end */ + - +

    ◆ decode_advance()

    @@ -185,7 +185,7 @@

    +

    ◆ decode_validate() [1/2]

    - +

    ◆ decode_validate() [2/2]

    @@ -261,11 +261,11 @@

    -

    Decodes given byte string into Unicode string using UTF-16LE character encoding. Result will be stored into given Unicode string. If decoding error is encountered, this function will return false, otherwise it returns true.

    +

    Decodes given byte string into Unicode string using UTF-16LE character encoding. Result will be stored into given Unicode string. If decoding error is encountered, this function will return false, otherwise it returns true.

    - +

    ◆ encode() [1/2]

    @@ -298,11 +298,11 @@

    -

    Encodes given Unicode character sequence into a byte string using UTF-16LE character encoding. Encoding errors are ignored.

    +

    Encodes given Unicode character sequence into a byte string using UTF-16LE character encoding. Encoding errors are ignored.

    - +

    ◆ encode() [2/2]

    @@ -325,11 +325,11 @@

    -

    Encodes given Unicode string into a byte string using UTF-16LE character encoding. Encoding errors are ignored.

    +

    Encodes given Unicode string into a byte string using UTF-16LE character encoding. Encoding errors are ignored.

    - +

    ◆ encode_codepoint()

    @@ -365,7 +365,7 @@

    +

    ◆ encode_validate() [1/2]

    - +

    ◆ encode_validate() [2/2]

    @@ -441,14 +441,14 @@

    -

    Encodes given Unicode string into a byte string using UTF-16LE character encoding. Result will be stored into given byte string. If encoding error is encountered, this function will return false, otherwise it returns true.

    +

    Encodes given Unicode string into a byte string using UTF-16LE character encoding. Result will be stored into given byte string. If encoding error is encountered, this function will return false, otherwise it returns true.

    diff --git a/namespacepeelo_1_1unicode_1_1encoding_1_1utf32be.html b/namespacepeelo_1_1unicode_1_1encoding_1_1utf32be.html index 1804564..63fa160 100644 --- a/namespacepeelo_1_1unicode_1_1encoding_1_1utf32be.html +++ b/namespacepeelo_1_1unicode_1_1encoding_1_1utf32be.html @@ -2,8 +2,8 @@ - - + + peelo-unicode: peelo::unicode::encoding::utf32be Namespace Reference @@ -16,8 +16,8 @@
    - - + @@ -26,15 +26,16 @@
    +
    peelo-unicode
    - + +/* @license-end */ + - +

    ◆ decode_advance()

    @@ -185,7 +185,7 @@

    +

    ◆ decode_validate() [1/2]

    - +

    ◆ decode_validate() [2/2]

    @@ -261,11 +261,11 @@

    -

    Decodes given byte string into Unicode string using UTF-32BE character encoding. Result will be stored into given Unicode string. If decoding error is encountered, this function will return false, otherwise it returns true.

    +

    Decodes given byte string into Unicode string using UTF-32BE character encoding. Result will be stored into given Unicode string. If decoding error is encountered, this function will return false, otherwise it returns true.

    - +

    ◆ encode() [1/2]

    @@ -298,11 +298,11 @@

    -

    Encodes given Unicode character sequence into a byte string using UTF-32BE character encoding. Encoding errors are ignored.

    +

    Encodes given Unicode character sequence into a byte string using UTF-32BE character encoding. Encoding errors are ignored.

    - +

    ◆ encode() [2/2]

    @@ -325,11 +325,11 @@

    -

    Encodes given Unicode string into a byte string using UTF-32BE character encoding. Encoding errors are ignored.

    +

    Encodes given Unicode string into a byte string using UTF-32BE character encoding. Encoding errors are ignored.

    - +

    ◆ encode_codepoint()

    @@ -365,7 +365,7 @@

    +

    ◆ encode_validate() [1/2]

    - +

    ◆ encode_validate() [2/2]

    @@ -441,14 +441,14 @@

    -

    Encodes given Unicode string into a byte string using UTF-32BE character encoding. Result will be stored into given byte string. If encoding error is encountered, this function will return false, otherwise it returns true.

    +

    Encodes given Unicode string into a byte string using UTF-32BE character encoding. Result will be stored into given byte string. If encoding error is encountered, this function will return false, otherwise it returns true.

    diff --git a/namespacepeelo_1_1unicode_1_1encoding_1_1utf32le.html b/namespacepeelo_1_1unicode_1_1encoding_1_1utf32le.html index 3ca5456..cceeccf 100644 --- a/namespacepeelo_1_1unicode_1_1encoding_1_1utf32le.html +++ b/namespacepeelo_1_1unicode_1_1encoding_1_1utf32le.html @@ -2,8 +2,8 @@ - - + + peelo-unicode: peelo::unicode::encoding::utf32le Namespace Reference @@ -16,8 +16,8 @@
    - - + @@ -26,15 +26,16 @@
    +
    peelo-unicode
    - + +/* @license-end */ + - +

    ◆ decode_advance()

    @@ -185,7 +185,7 @@

    +

    ◆ decode_validate() [1/2]

    - +

    ◆ decode_validate() [2/2]

    @@ -261,11 +261,11 @@

    -

    Decodes given byte string into Unicode string using UTF-32BE character encoding. Result will be stored into given Unicode string. If decoding error is encountered, this function will return false, otherwise it returns true.

    +

    Decodes given byte string into Unicode string using UTF-32BE character encoding. Result will be stored into given Unicode string. If decoding error is encountered, this function will return false, otherwise it returns true.

    - +

    ◆ encode() [1/2]

    @@ -298,11 +298,11 @@

    -

    Encodes given Unicode character sequence into a byte string using UTF-32BE character encoding. Encoding errors are ignored.

    +

    Encodes given Unicode character sequence into a byte string using UTF-32BE character encoding. Encoding errors are ignored.

    - +

    ◆ encode() [2/2]

    @@ -325,11 +325,11 @@

    -

    Encodes given Unicode string into a byte string using UTF-32BE character encoding. Encoding errors are ignored.

    +

    Encodes given Unicode string into a byte string using UTF-32BE character encoding. Encoding errors are ignored.

    - +

    ◆ encode_codepoint()

    @@ -365,7 +365,7 @@

    +

    ◆ encode_validate() [1/2]

    - +

    ◆ encode_validate() [2/2]

    @@ -441,14 +441,14 @@

    -

    Encodes given Unicode string into a byte string using UTF-32BE character encoding. Result will be stored into given byte string. If encoding error is encountered, this function will return false, otherwise it returns true.

    +

    Encodes given Unicode string into a byte string using UTF-32BE character encoding. Result will be stored into given byte string. If encoding error is encountered, this function will return false, otherwise it returns true.

    diff --git a/namespacepeelo_1_1unicode_1_1encoding_1_1utf8.html b/namespacepeelo_1_1unicode_1_1encoding_1_1utf8.html index cf9078f..152fc44 100644 --- a/namespacepeelo_1_1unicode_1_1encoding_1_1utf8.html +++ b/namespacepeelo_1_1unicode_1_1encoding_1_1utf8.html @@ -2,8 +2,8 @@ - - + + peelo-unicode: peelo::unicode::encoding::utf8 Namespace Reference @@ -16,8 +16,8 @@
    - - + @@ -26,15 +26,16 @@
    +
    peelo-unicode
    - + +/* @license-end */ + - +

    ◆ decode() [2/2]

    @@ -164,11 +164,11 @@

    -

    Decodes given byte string into Unicode string using UTF-8 character encoding. Decoding errors are ignored.

    +

    Decodes given byte string into Unicode string using UTF-8 character encoding. Decoding errors are ignored.

    - +

    ◆ decode_advance()

    @@ -216,7 +216,7 @@

    +

    ◆ decode_validate() [1/2]

    - +

    ◆ decode_validate() [2/2]

    @@ -292,11 +292,11 @@

    -

    Decodes given byte string into Unicode string using UTF-8 character encoding. Result will be stroed into given Unicode string. If decoding error is encountered, this function will return false, otherwise it returns true.

    +

    Decodes given byte string into Unicode string using UTF-8 character encoding. Result will be stroed into given Unicode string. If decoding error is encountered, this function will return false, otherwise it returns true.

    - +

    ◆ encode() [1/2]

    @@ -329,11 +329,11 @@

    -

    Encodes given Unicode character sequence into a byte string using UTF-8 character encoding. Encoding errors are ignored.

    +

    Encodes given Unicode character sequence into a byte string using UTF-8 character encoding. Encoding errors are ignored.

    - +

    ◆ encode() [2/2]

    @@ -356,11 +356,11 @@

    -

    Encodes given Unicode string into a byte string using UTF-8 character encoding. Encoding errors are ignored.

    +

    Encodes given Unicode string into a byte string using UTF-8 character encoding. Encoding errors are ignored.

    - +

    ◆ encode_codepoint()

    @@ -396,7 +396,7 @@

    +

    ◆ encode_validate() [1/2]

    - +

    ◆ encode_validate() [2/2]

    @@ -472,11 +472,11 @@

    -

    Encodes given Unicode string into a byte string using UTF-8 character encoding. Result will be stored into given byte string. If encoding error is encountered, this function will return false, otherwise it returns true.

    +

    Encodes given Unicode string into a byte string using UTF-8 character encoding. Result will be stored into given byte string. If encoding error is encountered, this function will return false, otherwise it returns true.

    - +

    ◆ sequence_length()

    @@ -499,14 +499,14 @@

    -

    Attempts to determine length (in bytes) of UTF-8 sequence which begins with the given byte. If the length cannot be determined (i.e. beginning of sequence is invalid according to the UTF-8 specification), 0 will be returned instead.

    +

    Attempts to determine length (in bytes) of UTF-8 sequence which begins with the given byte. If the length cannot be determined (i.e. beginning of sequence is invalid according to the UTF-8 specification), 0 will be returned instead.

    diff --git a/namespacepeelo_1_1unicode_1_1encoding_1_1utils.html b/namespacepeelo_1_1unicode_1_1encoding_1_1utils.html deleted file mode 100644 index e20e0bb..0000000 --- a/namespacepeelo_1_1unicode_1_1encoding_1_1utils.html +++ /dev/null @@ -1,287 +0,0 @@ - - - - - - - -peelo-unicode: peelo::unicode::encoding::utils Namespace Reference - - - - - - -
    -
    - - - - - - -
    -
    peelo-unicode -
    -
    -
    - - - - - - - -
    -
    -
    -Typedefs | -Functions
    -
    -
    peelo::unicode::encoding::utils Namespace Reference
    -
    -
    - - - - - - -

    -Typedefs

    using encode_callback = void(*)(char32_t, std::string &)
     
    using decode_callback = bool(*)(const char *, std::size_t &, const std::size_t, char32_t &)
     
    - - - - - - - - - -

    -Functions

    std::string encode (const char32_t *input, std::size_t length, encode_callback callback)
     
    bool encode_validate (const char32_t *input, std::size_t length, std::string &output, encode_callback callback)
     
    std::u32string decode (const char *input, std::size_t length, decode_callback callback)
     
    bool decode_validate (const char *input, std::size_t length, std::u32string &output, decode_callback callback)
     
    -

    Typedef Documentation

    - -

    ◆ decode_callback

    - -
    -
    - - - - -
    using peelo::unicode::encoding::utils::decode_callback = typedef bool(*)( const char*, std::size_t&, const std::size_t, char32_t& )
    -
    - -
    -
    - -

    ◆ encode_callback

    - -
    -
    - - - - -
    using peelo::unicode::encoding::utils::encode_callback = typedef void(*)(char32_t, std::string&)
    -
    - -
    -
    -

    Function Documentation

    - -

    ◆ decode()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    std::u32string peelo::unicode::encoding::utils::decode (const char * input,
    std::size_t length,
    decode_callback callback 
    )
    -
    -inline
    -
    - -
    -
    - -

    ◆ decode_validate()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    bool peelo::unicode::encoding::utils::decode_validate (const char * input,
    std::size_t length,
    std::u32string & output,
    decode_callback callback 
    )
    -
    -inline
    -
    - -
    -
    - -

    ◆ encode()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    std::string peelo::unicode::encoding::utils::encode (const char32_t * input,
    std::size_t length,
    encode_callback callback 
    )
    -
    -inline
    -
    - -
    -
    - -

    ◆ encode_validate()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    bool peelo::unicode::encoding::utils::encode_validate (const char32_t * input,
    std::size_t length,
    std::string & output,
    encode_callback callback 
    )
    -
    -inline
    -
    - -
    -
    -
    - - - - diff --git a/namespaces.html b/namespaces.html index 90af6d4..54b8c8a 100644 --- a/namespaces.html +++ b/namespaces.html @@ -2,8 +2,8 @@ - - + + peelo-unicode: Namespace List @@ -16,8 +16,8 @@
    - - + @@ -26,20 +26,20 @@
    +
    peelo-unicode
    - + +/* @license-end */ +
    -
    -
    Namespace List
    +
    Namespace List
    Here is a list of all namespaces with brief descriptions:
    @@ -58,7 +58,7 @@
    diff --git a/tabs.css b/tabs.css index 7d45d36..fb0977a 100644 --- a/tabs.css +++ b/tabs.css @@ -1 +1 @@ -.sm{position:relative;z-index:9999}.sm,.sm ul,.sm li{display:block;list-style:none;margin:0;padding:0;line-height:normal;direction:ltr;text-align:left;-webkit-tap-highlight-color:rgba(0,0,0,0)}.sm-rtl,.sm-rtl ul,.sm-rtl li{direction:rtl;text-align:right}.sm>li>h1,.sm>li>h2,.sm>li>h3,.sm>li>h4,.sm>li>h5,.sm>li>h6{margin:0;padding:0}.sm ul{display:none}.sm li,.sm a{position:relative}.sm a{display:block}.sm a.disabled{cursor:not-allowed}.sm:after{content:"\00a0";display:block;height:0;font:0px/0 serif;clear:both;visibility:hidden;overflow:hidden}.sm,.sm *,.sm *:before,.sm *:after{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}.sm-dox{background-image:url("tab_b.png")}.sm-dox a,.sm-dox a:focus,.sm-dox a:hover,.sm-dox a:active{padding:0px 12px;padding-right:43px;font-family:"Lucida Grande","Geneva","Helvetica",Arial,sans-serif;font-size:13px;font-weight:bold;line-height:36px;text-decoration:none;text-shadow:0px 1px 1px rgba(255,255,255,0.9);color:#283A5D;outline:none}.sm-dox a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:#fff;text-shadow:0px 1px 1px #000}.sm-dox a.current{color:#D23600}.sm-dox a.disabled{color:#bbb}.sm-dox a span.sub-arrow{position:absolute;top:50%;margin-top:-14px;left:auto;right:3px;width:28px;height:28px;overflow:hidden;font:bold 12px/28px monospace !important;text-align:center;text-shadow:none;background:rgba(255,255,255,0.5);border-radius:5px}.sm-dox a.highlighted span.sub-arrow:before{display:block;content:'-'}.sm-dox>li:first-child>a,.sm-dox>li:first-child>:not(ul) a{border-radius:5px 5px 0 0}.sm-dox>li:last-child>a,.sm-dox>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul{border-radius:0 0 5px 5px}.sm-dox>li:last-child>a.highlighted,.sm-dox>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted{border-radius:0}.sm-dox ul{background:rgba(162,162,162,0.1)}.sm-dox ul a,.sm-dox ul a:focus,.sm-dox ul a:hover,.sm-dox ul a:active{font-size:12px;border-left:8px solid transparent;line-height:36px;text-shadow:none;background-color:white;background-image:none}.sm-dox ul a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:#fff;text-shadow:0px 1px 1px #000}.sm-dox ul ul a,.sm-dox ul ul a:hover,.sm-dox ul ul a:focus,.sm-dox ul ul a:active{border-left:16px solid transparent}.sm-dox ul ul ul a,.sm-dox ul ul ul a:hover,.sm-dox ul ul ul a:focus,.sm-dox ul ul ul a:active{border-left:24px solid transparent}.sm-dox ul ul ul ul a,.sm-dox ul ul ul ul a:hover,.sm-dox ul ul ul ul a:focus,.sm-dox ul ul ul ul a:active{border-left:32px solid transparent}.sm-dox ul ul ul ul ul a,.sm-dox ul ul ul ul ul a:hover,.sm-dox ul ul ul ul ul a:focus,.sm-dox ul ul ul ul ul a:active{border-left:40px solid transparent}@media (min-width: 768px){.sm-dox ul{position:absolute;width:12em}.sm-dox li{float:left}.sm-dox.sm-rtl li{float:right}.sm-dox ul li,.sm-dox.sm-rtl ul li,.sm-dox.sm-vertical li{float:none}.sm-dox a{white-space:nowrap}.sm-dox ul a,.sm-dox.sm-vertical a{white-space:normal}.sm-dox .sm-nowrap>li>a,.sm-dox .sm-nowrap>li>:not(ul) a{white-space:nowrap}.sm-dox{padding:0 10px;background-image:url("tab_b.png");line-height:36px}.sm-dox a span.sub-arrow{top:50%;margin-top:-2px;right:12px;width:0;height:0;border-width:4px;border-style:solid dashed dashed dashed;border-color:#283A5D transparent transparent transparent;background:transparent;border-radius:0}.sm-dox a,.sm-dox a:focus,.sm-dox a:active,.sm-dox a:hover,.sm-dox a.highlighted{padding:0px 12px;background-image:url("tab_s.png");background-repeat:no-repeat;background-position:right;border-radius:0 !important}.sm-dox a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:#fff;text-shadow:0px 1px 1px #000}.sm-dox a:hover span.sub-arrow{border-color:#fff transparent transparent transparent}.sm-dox a.has-submenu{padding-right:24px}.sm-dox li{border-top:0}.sm-dox>li>ul:before,.sm-dox>li>ul:after{content:'';position:absolute;top:-18px;left:30px;width:0;height:0;overflow:hidden;border-width:9px;border-style:dashed dashed solid dashed;border-color:transparent transparent #bbb transparent}.sm-dox>li>ul:after{top:-16px;left:31px;border-width:8px;border-color:transparent transparent #fff transparent}.sm-dox ul{border:1px solid #bbb;padding:5px 0;background:#fff;border-radius:5px !important;box-shadow:0 5px 9px rgba(0,0,0,0.2)}.sm-dox ul a span.sub-arrow{right:8px;top:50%;margin-top:-5px;border-width:5px;border-color:transparent transparent transparent #555;border-style:dashed dashed dashed solid}.sm-dox ul a,.sm-dox ul a:hover,.sm-dox ul a:focus,.sm-dox ul a:active,.sm-dox ul a.highlighted{color:#555;background-image:none;border:0 !important;color:#555;background-image:none}.sm-dox ul a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:#fff;text-shadow:0px 1px 1px #000}.sm-dox ul a:hover span.sub-arrow{border-color:transparent transparent transparent #fff}.sm-dox span.scroll-up,.sm-dox span.scroll-down{position:absolute;display:none;visibility:hidden;overflow:hidden;background:#fff;height:36px}.sm-dox span.scroll-up:hover,.sm-dox span.scroll-down:hover{background:#eee}.sm-dox span.scroll-up:hover span.scroll-up-arrow,.sm-dox span.scroll-up:hover span.scroll-down-arrow{border-color:transparent transparent #D23600 transparent}.sm-dox span.scroll-down:hover span.scroll-down-arrow{border-color:#D23600 transparent transparent transparent}.sm-dox span.scroll-up-arrow,.sm-dox span.scroll-down-arrow{position:absolute;top:0;left:50%;margin-left:-6px;width:0;height:0;overflow:hidden;border-width:6px;border-style:dashed dashed solid dashed;border-color:transparent transparent #555 transparent}.sm-dox span.scroll-down-arrow{top:8px;border-style:solid dashed dashed dashed;border-color:#555 transparent transparent transparent}.sm-dox.sm-rtl a.has-submenu{padding-right:12px;padding-left:24px}.sm-dox.sm-rtl a span.sub-arrow{right:auto;left:12px}.sm-dox.sm-rtl.sm-vertical a.has-submenu{padding:10px 20px}.sm-dox.sm-rtl.sm-vertical a span.sub-arrow{right:auto;left:8px;border-style:dashed solid dashed dashed;border-color:transparent #555 transparent transparent}.sm-dox.sm-rtl>li>ul:before{left:auto;right:30px}.sm-dox.sm-rtl>li>ul:after{left:auto;right:31px}.sm-dox.sm-rtl ul a.has-submenu{padding:10px 20px !important}.sm-dox.sm-rtl ul a span.sub-arrow{right:auto;left:8px;border-style:dashed solid dashed dashed;border-color:transparent #555 transparent transparent}.sm-dox.sm-vertical{padding:10px 0;border-radius:5px}.sm-dox.sm-vertical a{padding:10px 20px}.sm-dox.sm-vertical a:hover,.sm-dox.sm-vertical a:focus,.sm-dox.sm-vertical a:active,.sm-dox.sm-vertical a.highlighted{background:#fff}.sm-dox.sm-vertical a.disabled{background-image:url("tab_b.png")}.sm-dox.sm-vertical a span.sub-arrow{right:8px;top:50%;margin-top:-5px;border-width:5px;border-style:dashed dashed dashed solid;border-color:transparent transparent transparent #555}.sm-dox.sm-vertical>li>ul:before,.sm-dox.sm-vertical>li>ul:after{display:none}.sm-dox.sm-vertical ul a{padding:10px 20px}.sm-dox.sm-vertical ul a:hover,.sm-dox.sm-vertical ul a:focus,.sm-dox.sm-vertical ul a:active,.sm-dox.sm-vertical ul a.highlighted{background:#eee}.sm-dox.sm-vertical ul a.disabled{background:#fff}} +.sm{position:relative;z-index:9999}.sm,.sm ul,.sm li{display:block;list-style:none;margin:0;padding:0;line-height:normal;direction:ltr;text-align:left;-webkit-tap-highlight-color:rgba(0,0,0,0)}.sm-rtl,.sm-rtl ul,.sm-rtl li{direction:rtl;text-align:right}.sm>li>h1,.sm>li>h2,.sm>li>h3,.sm>li>h4,.sm>li>h5,.sm>li>h6{margin:0;padding:0}.sm ul{display:none}.sm li,.sm a{position:relative}.sm a{display:block}.sm a.disabled{cursor:not-allowed}.sm:after{content:"\00a0";display:block;height:0;font:0px/0 serif;clear:both;visibility:hidden;overflow:hidden}.sm,.sm *,.sm *:before,.sm *:after{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}.main-menu-btn{position:relative;display:inline-block;width:36px;height:36px;text-indent:36px;margin-left:8px;white-space:nowrap;overflow:hidden;cursor:pointer;-webkit-tap-highlight-color:rgba(0,0,0,0)}.main-menu-btn-icon,.main-menu-btn-icon:before,.main-menu-btn-icon:after{position:absolute;top:50%;left:2px;height:2px;width:24px;background:#666;-webkit-transition:all 0.25s;transition:all 0.25s}.main-menu-btn-icon:before{content:'';top:-7px;left:0}.main-menu-btn-icon:after{content:'';top:7px;left:0}#main-menu-state:checked~.main-menu-btn .main-menu-btn-icon{height:0}#main-menu-state:checked~.main-menu-btn .main-menu-btn-icon:before{top:0;-webkit-transform:rotate(-45deg);transform:rotate(-45deg)}#main-menu-state:checked~.main-menu-btn .main-menu-btn-icon:after{top:0;-webkit-transform:rotate(45deg);transform:rotate(45deg)}#main-menu-state{position:absolute;width:1px;height:1px;margin:-1px;border:0;padding:0;overflow:hidden;clip:rect(1px, 1px, 1px, 1px)}#main-menu-state:not(:checked)~#main-menu{display:none}#main-menu-state:checked~#main-menu{display:block}@media (min-width: 768px){.main-menu-btn{position:absolute;top:-99999px}#main-menu-state:not(:checked)~#main-menu{display:block}}.sm-dox{background-image:url("tab_b.png")}.sm-dox a,.sm-dox a:focus,.sm-dox a:hover,.sm-dox a:active{padding:0px 12px;padding-right:43px;font-family:"Lucida Grande","Geneva","Helvetica",Arial,sans-serif;font-size:13px;font-weight:bold;line-height:36px;text-decoration:none;text-shadow:0px 1px 1px rgba(255,255,255,0.9);color:#283A5D;outline:none}.sm-dox a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:#fff;text-shadow:0px 1px 1px #000}.sm-dox a.current{color:#D23600}.sm-dox a.disabled{color:#bbb}.sm-dox a span.sub-arrow{position:absolute;top:50%;margin-top:-14px;left:auto;right:3px;width:28px;height:28px;overflow:hidden;font:bold 12px/28px monospace !important;text-align:center;text-shadow:none;background:rgba(255,255,255,0.5);border-radius:5px}.sm-dox a span.sub-arrow:before{display:block;content:'+'}.sm-dox a.highlighted span.sub-arrow:before{display:block;content:'-'}.sm-dox>li:first-child>a,.sm-dox>li:first-child>:not(ul) a{border-radius:5px 5px 0 0}.sm-dox>li:last-child>a,.sm-dox>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul{border-radius:0 0 5px 5px}.sm-dox>li:last-child>a.highlighted,.sm-dox>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted{border-radius:0}.sm-dox ul{background:rgba(162,162,162,0.1)}.sm-dox ul a,.sm-dox ul a:focus,.sm-dox ul a:hover,.sm-dox ul a:active{font-size:12px;border-left:8px solid transparent;line-height:36px;text-shadow:none;background-color:white;background-image:none}.sm-dox ul a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:#fff;text-shadow:0px 1px 1px #000}.sm-dox ul ul a,.sm-dox ul ul a:hover,.sm-dox ul ul a:focus,.sm-dox ul ul a:active{border-left:16px solid transparent}.sm-dox ul ul ul a,.sm-dox ul ul ul a:hover,.sm-dox ul ul ul a:focus,.sm-dox ul ul ul a:active{border-left:24px solid transparent}.sm-dox ul ul ul ul a,.sm-dox ul ul ul ul a:hover,.sm-dox ul ul ul ul a:focus,.sm-dox ul ul ul ul a:active{border-left:32px solid transparent}.sm-dox ul ul ul ul ul a,.sm-dox ul ul ul ul ul a:hover,.sm-dox ul ul ul ul ul a:focus,.sm-dox ul ul ul ul ul a:active{border-left:40px solid transparent}@media (min-width: 768px){.sm-dox ul{position:absolute;width:12em}.sm-dox li{float:left}.sm-dox.sm-rtl li{float:right}.sm-dox ul li,.sm-dox.sm-rtl ul li,.sm-dox.sm-vertical li{float:none}.sm-dox a{white-space:nowrap}.sm-dox ul a,.sm-dox.sm-vertical a{white-space:normal}.sm-dox .sm-nowrap>li>a,.sm-dox .sm-nowrap>li>:not(ul) a{white-space:nowrap}.sm-dox{padding:0 10px;background-image:url("tab_b.png");line-height:36px}.sm-dox a span.sub-arrow{top:50%;margin-top:-2px;right:12px;width:0;height:0;border-width:4px;border-style:solid dashed dashed dashed;border-color:#283A5D transparent transparent transparent;background:transparent;border-radius:0}.sm-dox a,.sm-dox a:focus,.sm-dox a:active,.sm-dox a:hover,.sm-dox a.highlighted{padding:0px 12px;background-image:url("tab_s.png");background-repeat:no-repeat;background-position:right;border-radius:0 !important}.sm-dox a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:#fff;text-shadow:0px 1px 1px #000}.sm-dox a:hover span.sub-arrow{border-color:#fff transparent transparent transparent}.sm-dox a.has-submenu{padding-right:24px}.sm-dox li{border-top:0}.sm-dox>li>ul:before,.sm-dox>li>ul:after{content:'';position:absolute;top:-18px;left:30px;width:0;height:0;overflow:hidden;border-width:9px;border-style:dashed dashed solid dashed;border-color:transparent transparent #bbb transparent}.sm-dox>li>ul:after{top:-16px;left:31px;border-width:8px;border-color:transparent transparent #fff transparent}.sm-dox ul{border:1px solid #bbb;padding:5px 0;background:#fff;border-radius:5px !important;box-shadow:0 5px 9px rgba(0,0,0,0.2)}.sm-dox ul a span.sub-arrow{right:8px;top:50%;margin-top:-5px;border-width:5px;border-color:transparent transparent transparent #555;border-style:dashed dashed dashed solid}.sm-dox ul a,.sm-dox ul a:hover,.sm-dox ul a:focus,.sm-dox ul a:active,.sm-dox ul a.highlighted{color:#555;background-image:none;border:0 !important;color:#555;background-image:none}.sm-dox ul a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:#fff;text-shadow:0px 1px 1px #000}.sm-dox ul a:hover span.sub-arrow{border-color:transparent transparent transparent #fff}.sm-dox span.scroll-up,.sm-dox span.scroll-down{position:absolute;display:none;visibility:hidden;overflow:hidden;background:#fff;height:36px}.sm-dox span.scroll-up:hover,.sm-dox span.scroll-down:hover{background:#eee}.sm-dox span.scroll-up:hover span.scroll-up-arrow,.sm-dox span.scroll-up:hover span.scroll-down-arrow{border-color:transparent transparent #D23600 transparent}.sm-dox span.scroll-down:hover span.scroll-down-arrow{border-color:#D23600 transparent transparent transparent}.sm-dox span.scroll-up-arrow,.sm-dox span.scroll-down-arrow{position:absolute;top:0;left:50%;margin-left:-6px;width:0;height:0;overflow:hidden;border-width:6px;border-style:dashed dashed solid dashed;border-color:transparent transparent #555 transparent}.sm-dox span.scroll-down-arrow{top:8px;border-style:solid dashed dashed dashed;border-color:#555 transparent transparent transparent}.sm-dox.sm-rtl a.has-submenu{padding-right:12px;padding-left:24px}.sm-dox.sm-rtl a span.sub-arrow{right:auto;left:12px}.sm-dox.sm-rtl.sm-vertical a.has-submenu{padding:10px 20px}.sm-dox.sm-rtl.sm-vertical a span.sub-arrow{right:auto;left:8px;border-style:dashed solid dashed dashed;border-color:transparent #555 transparent transparent}.sm-dox.sm-rtl>li>ul:before{left:auto;right:30px}.sm-dox.sm-rtl>li>ul:after{left:auto;right:31px}.sm-dox.sm-rtl ul a.has-submenu{padding:10px 20px !important}.sm-dox.sm-rtl ul a span.sub-arrow{right:auto;left:8px;border-style:dashed solid dashed dashed;border-color:transparent #555 transparent transparent}.sm-dox.sm-vertical{padding:10px 0;border-radius:5px}.sm-dox.sm-vertical a{padding:10px 20px}.sm-dox.sm-vertical a:hover,.sm-dox.sm-vertical a:focus,.sm-dox.sm-vertical a:active,.sm-dox.sm-vertical a.highlighted{background:#fff}.sm-dox.sm-vertical a.disabled{background-image:url("tab_b.png")}.sm-dox.sm-vertical a span.sub-arrow{right:8px;top:50%;margin-top:-5px;border-width:5px;border-style:dashed dashed dashed solid;border-color:transparent transparent transparent #555}.sm-dox.sm-vertical>li>ul:before,.sm-dox.sm-vertical>li>ul:after{display:none}.sm-dox.sm-vertical ul a{padding:10px 20px}.sm-dox.sm-vertical ul a:hover,.sm-dox.sm-vertical ul a:focus,.sm-dox.sm-vertical ul a:active,.sm-dox.sm-vertical ul a.highlighted{background:#eee}.sm-dox.sm-vertical ul a.disabled{background:#fff}} diff --git a/tolower_8hpp.html b/tolower_8hpp.html index 8243b1c..e538911 100644 --- a/tolower_8hpp.html +++ b/tolower_8hpp.html @@ -2,8 +2,8 @@ - - + + peelo-unicode: include/peelo/unicode/ctype/tolower.hpp File Reference @@ -16,8 +16,8 @@
    - - + @@ -26,15 +26,16 @@
    +
    peelo-unicode
    - + +/* @license-end */ +

    Go to the source code of this file.

    - - + - + - +

    +

    Namespaces

     peelo
    namespace  peelo
     
     peelo::unicode
    namespace  peelo::unicode
     
     peelo::unicode::ctype
    namespace  peelo::unicode::ctype
     
    - @@ -70,7 +70,7 @@ diff --git a/tolower_8hpp_source.html b/tolower_8hpp_source.html index 840bff3..1c17f86 100644 --- a/tolower_8hpp_source.html +++ b/tolower_8hpp_source.html @@ -2,8 +2,8 @@ - - + +peelo-unicode: include/peelo/unicode/ctype/tolower.hpp Source File @@ -16,8 +16,8 @@

    +

    Functions

    char32_t peelo::unicode::ctype::tolower (char32_t c)
     
    - - + @@ -26,15 +26,16 @@
    +
    peelo-unicode
    - + +/* @license-end */ +
    -
    -
    tolower.hpp
    +
    tolower.hpp
    -Go to the documentation of this file.
    1 /*
    -
    2  * Copyright (c) 2018-2024, peelo.net
    -
    3  * All rights reserved.
    -
    4  *
    -
    5  * Redistribution and use in source and binary forms, with or without
    -
    6  * modification, are permitted provided that the following conditions are met:
    -
    7  *
    -
    8  * * Redistributions of source code must retain the above copyright notice,
    -
    9  * this list of conditions and the following disclaimer.
    -
    10  *
    -
    11  * * Redistributions in binary form must reproduce the above copyright notice,
    -
    12  * this list of conditions and the following disclaimer in the documentation
    -
    13  * and/or other materials provided with the distribution.
    -
    14  *
    -
    15  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
    -
    16  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
    -
    17  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
    -
    18  * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
    -
    19  * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
    -
    20  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
    -
    21  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
    -
    22  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
    -
    23  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
    -
    24  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
    -
    25  * POSSIBILITY OF SUCH DAMAGE.
    -
    26  */
    -
    27 #pragma once
    -
    28 
    - -
    30 
    -
    31 namespace peelo::unicode::ctype
    -
    32 {
    -
    36  inline char32_t
    -
    37  tolower(char32_t c)
    -
    38  {
    -
    39  static const std::unordered_map<char32_t, char32_t> tolower_map =
    -
    40  {{
    -
    41  { 125216, 125250 }, { 125214, 125248 }, { 125212, 125246 },
    -
    42  { 125210, 125244 }, { 125206, 125240 }, { 71871, 71903 },
    -
    43  { 71870, 71902 }, { 71869, 71901 }, { 71868, 71900 },
    -
    44  { 71867, 71899 }, { 71866, 71898 }, { 71865, 71897 },
    -
    45  { 71864, 71896 }, { 71863, 71895 }, { 71861, 71893 },
    -
    46  { 71859, 71891 }, { 71857, 71889 }, { 71855, 71887 },
    -
    47  { 71853, 71885 }, { 71851, 71883 }, { 71849, 71881 },
    -
    48  { 71847, 71879 }, { 71845, 71877 }, { 71843, 71875 },
    -
    49  { 71841, 71873 }, { 68782, 68846 }, { 68780, 68844 },
    -
    50  { 68774, 68838 }, { 68772, 68836 }, { 68770, 68834 },
    -
    51  { 68764, 68828 }, { 68762, 68826 }, { 68758, 68822 },
    -
    52  { 68750, 68814 }, { 66964, 67003 }, { 66962, 67001 },
    -
    53  { 66961, 67000 }, { 66960, 66999 }, { 66959, 66998 },
    -
    54  { 66958, 66997 }, { 66957, 66996 }, { 66953, 66992 },
    -
    55  { 66951, 66990 }, { 66949, 66988 }, { 66948, 66987 },
    -
    56  { 66947, 66986 }, { 66946, 66985 }, { 66945, 66984 },
    -
    57  { 66944, 66983 }, { 66943, 66982 }, { 66942, 66981 },
    -
    58  { 66941, 66980 }, { 66940, 66979 }, { 66770, 66810 },
    -
    59  { 66768, 66808 }, { 66766, 66806 }, { 66764, 66804 },
    -
    60  { 66762, 66802 }, { 66761, 66801 }, { 66760, 66800 },
    -
    61  { 66759, 66799 }, { 66758, 66798 }, { 66757, 66797 },
    -
    62  { 66756, 66796 }, { 66755, 66795 }, { 66754, 66794 },
    -
    63  { 66752, 66792 }, { 66750, 66790 }, { 66748, 66788 },
    -
    64  { 66746, 66786 }, { 66744, 66784 }, { 66742, 66782 },
    -
    65  { 66740, 66780 }, { 66738, 66778 }, { 66736, 66776 },
    -
    66  { 66599, 66639 }, { 66598, 66638 }, { 66597, 66637 },
    -
    67  { 66596, 66636 }, { 66595, 66635 }, { 66594, 66634 },
    -
    68  { 66593, 66633 }, { 66592, 66632 }, { 66591, 66631 },
    -
    69  { 66590, 66630 }, { 66589, 66629 }, { 66588, 66628 },
    -
    70  { 66587, 66627 }, { 66585, 66625 }, { 66583, 66623 },
    -
    71  { 66581, 66621 }, { 66579, 66619 }, { 66574, 66614 },
    -
    72  { 66572, 66612 }, { 66571, 66611 }, { 66568, 66608 },
    -
    73  { 66565, 66605 }, { 66564, 66604 }, { 66563, 66603 },
    -
    74  { 66562, 66602 }, { 66561, 66601 }, { 66560, 66600 },
    -
    75  { 65338, 65370 }, { 65337, 65369 }, { 65336, 65368 },
    -
    76  { 65335, 65367 }, { 65334, 65366 }, { 65333, 65365 },
    -
    77  { 65332, 65364 }, { 65331, 65363 }, { 125194, 125228 },
    -
    78  { 7344, 4336 }, { 125192, 125226 }, { 7342, 4334 },
    -
    79  { 125190, 125224 }, { 7340, 4332 }, { 68755, 68819 },
    -
    80  { 42828, 42829 }, { 125188, 125222 }, { 7338, 4330 },
    -
    81  { 125186, 125220 }, { 7336, 4328 }, { 125184, 125218 },
    -
    82  { 7334, 4326 }, { 68749, 68813 }, { 42822, 42823 },
    -
    83  { 7332, 4324 }, { 7330, 4322 }, { 7328, 4320 },
    -
    84  { 7326, 4318 }, { 7324, 4316 }, { 68745, 68809 },
    -
    85  { 42818, 42819 }, { 5106, 5114 }, { 7322, 4314 },
    -
    86  { 7320, 4312 }, { 7318, 4310 }, { 4266, 11530 },
    -
    87  { 4259, 11523 }, { 66928, 66967 }, { 932, 964 },
    -
    88  { 4257, 11521 }, { 7316, 4308 }, { 68737, 68801 },
    -
    89  { 42810, 42811 }, { 5098, 43962 }, { 1365, 1413 },
    -
    90  { 7314, 4306 }, { 42808, 42809 }, { 5096, 43960 },
    -
    91  { 1363, 1411 }, { 7312, 4304 }, { 42806, 42807 },
    -
    92  { 5094, 43958 }, { 1361, 1409 }, { 1359, 1407 },
    -
    93  { 66938, 66977 }, { 8013, 8005 }, { 1357, 1405 },
    -
    94  { 66936, 66975 }, { 8011, 8003 }, { 1355, 1403 },
    -
    95  { 1353, 1401 }, { 1351, 1399 }, { 1349, 1397 },
    -
    96  { 1347, 1395 }, { 1345, 1393 }, { 1343, 1391 },
    -
    97  { 1341, 1389 }, { 1339, 1387 }, { 1337, 1385 },
    -
    98  { 1336, 1384 }, { 1335, 1383 }, { 1334, 1382 },
    -
    99  { 1333, 1381 }, { 1332, 1380 }, { 1331, 1379 },
    -
    100  { 1330, 1378 }, { 221, 253 }, { 11311, 11359 },
    -
    101  { 1329, 1377 }, { 7983, 7975 }, { 11310, 11358 },
    -
    102  { 1326, 1327 }, { 217, 249 }, { 7980, 7972 },
    -
    103  { 11307, 11355 }, { 1324, 1325 }, { 7978, 7970 },
    -
    104  { 11305, 11353 }, { 256, 257 }, { 7327, 4319 },
    -
    105  { 1322, 1323 }, { 213, 245 }, { 11303, 11351 },
    -
    106  { 7325, 4317 }, { 1320, 1321 }, { 211, 243 },
    -
    107  { 11301, 11349 }, { 7323, 4315 }, { 1318, 1319 },
    -
    108  { 209, 241 }, { 11299, 11347 }, { 1316, 1317 },
    -
    109  { 207, 239 }, { 11297, 11345 }, { 1314, 1315 },
    -
    110  { 205, 237 }, { 93790, 93822 }, { 11295, 11343 },
    -
    111  { 1312, 1313 }, { 203, 235 }, { 93788, 93820 },
    -
    112  { 11293, 11341 }, { 1310, 1311 }, { 201, 233 },
    -
    113  { 7964, 7956 }, { 93786, 93818 }, { 11291, 11339 },
    -
    114  { 1308, 1309 }, { 199, 231 }, { 7962, 7954 },
    -
    115  { 93784, 93816 }, { 11289, 11337 }, { 1306, 1307 },
    -
    116  { 197, 229 }, { 7960, 7952 }, { 93782, 93814 },
    -
    117  { 11287, 11335 }, { 1272, 1273 }, { 7926, 7927 },
    -
    118  { 1270, 1271 }, { 7924, 7925 }, { 1268, 1269 },
    -
    119  { 7922, 7923 }, { 1266, 1267 }, { 7920, 7921 },
    -
    120  { 1264, 1265 }, { 7918, 7919 }, { 1262, 1263 },
    -
    121  { 7916, 7917 }, { 1260, 1261 }, { 7914, 7915 },
    -
    122  { 1258, 1259 }, { 7912, 7913 }, { 1256, 1257 },
    -
    123  { 7910, 7911 }, { 1254, 1255 }, { 7908, 7909 },
    -
    124  { 1252, 1253 }, { 7906, 7907 }, { 1250, 1251 },
    -
    125  { 7904, 7905 }, { 1248, 1249 }, { 7902, 7903 },
    -
    126  { 1246, 1247 }, { 7900, 7901 }, { 1244, 1245 },
    -
    127  { 7898, 7899 }, { 1242, 1243 }, { 7896, 7897 },
    -
    128  { 1240, 1241 }, { 7894, 7895 }, { 1238, 1239 },
    -
    129  { 7892, 7893 }, { 1236, 1237 }, { 7890, 7891 },
    -
    130  { 1234, 1235 }, { 7888, 7889 }, { 1232, 1233 },
    -
    131  { 7886, 7887 }, { 1229, 1230 }, { 1227, 1228 },
    -
    132  { 1225, 1226 }, { 1223, 1224 }, { 1221, 1222 },
    -
    133  { 1219, 1220 }, { 1217, 1218 }, { 1216, 1231 },
    -
    134  { 7870, 7871 }, { 1214, 1215 }, { 7868, 7869 },
    -
    135  { 1212, 1213 }, { 7866, 7867 }, { 1210, 1211 },
    -
    136  { 7864, 7865 }, { 1208, 1209 }, { 7862, 7863 },
    -
    137  { 1206, 1207 }, { 7860, 7861 }, { 7696, 7697 },
    -
    138  { 1042, 1074 }, { 1204, 1205 }, { 7858, 7859 },
    -
    139  { 7694, 7695 }, { 1040, 1072 }, { 1202, 1203 },
    -
    140  { 7856, 7857 }, { 7692, 7693 }, { 1038, 1118 },
    -
    141  { 1200, 1201 }, { 7854, 7855 }, { 7690, 7691 },
    -
    142  { 1036, 1116 }, { 1198, 1199 }, { 7852, 7853 },
    -
    143  { 7688, 7689 }, { 1034, 1114 }, { 1196, 1197 },
    -
    144  { 7850, 7851 }, { 7686, 7687 }, { 1032, 1112 },
    -
    145  { 1194, 1195 }, { 7848, 7849 }, { 7684, 7685 },
    -
    146  { 1030, 1110 }, { 1192, 1193 }, { 66771, 66811 },
    -
    147  { 7846, 7847 }, { 7682, 7683 }, { 1028, 1108 },
    -
    148  { 1190, 1191 }, { 66769, 66809 }, { 7844, 7845 },
    -
    149  { 7680, 7681 }, { 1026, 1106 }, { 1188, 1189 },
    -
    150  { 66767, 66807 }, { 7842, 7843 }, { 1186, 1187 },
    -
    151  { 66765, 66805 }, { 7840, 7841 }, { 1184, 1185 },
    -
    152  { 66763, 66803 }, { 7838, 223 }, { 1182, 1183 },
    -
    153  { 73, 305 }, { 1180, 1181 }, { 1178, 1179 },
    -
    154  { 1176, 1177 }, { 1174, 1175 }, { 66753, 66793 },
    -
    155  { 7828, 7829 }, { 1172, 1173 }, { 66751, 66791 },
    -
    156  { 7826, 7827 }, { 1170, 1171 }, { 66749, 66789 },
    -
    157  { 7824, 7825 }, { 1168, 1169 }, { 66747, 66787 },
    -
    158  { 7822, 7823 }, { 1166, 1167 }, { 66745, 66785 },
    -
    159  { 7820, 7821 }, { 1164, 1165 }, { 66743, 66783 },
    -
    160  { 7818, 7819 }, { 1162, 1163 }, { 66741, 66781 },
    -
    161  { 7816, 7817 }, { 71862, 71894 }, { 1152, 1153 },
    -
    162  { 7806, 7807 }, { 71860, 71892 }, { 1150, 1151 },
    -
    163  { 7804, 7805 }, { 71858, 71890 }, { 1148, 1149 },
    -
    164  { 7802, 7803 }, { 71856, 71888 }, { 1146, 1147 },
    -
    165  { 7800, 7801 }, { 71854, 71886 }, { 1144, 1145 },
    -
    166  { 7798, 7799 }, { 71852, 71884 }, { 1142, 1143 },
    -
    167  { 7796, 7797 }, { 71850, 71882 }, { 1140, 1141 },
    -
    168  { 7794, 7795 }, { 71848, 71880 }, { 1138, 1139 },
    -
    169  { 7792, 7793 }, { 71846, 71878 }, { 1136, 1137 },
    -
    170  { 7790, 7791 }, { 71844, 71876 }, { 1134, 1135 },
    -
    171  { 7788, 7789 }, { 71842, 71874 }, { 1132, 1133 },
    -
    172  { 7786, 7787 }, { 71840, 71872 }, { 1130, 1131 },
    -
    173  { 7784, 7785 }, { 1128, 1129 }, { 7782, 7783 },
    -
    174  { 1126, 1127 }, { 7780, 7781 }, { 1124, 1125 },
    -
    175  { 7778, 7779 }, { 1070, 1102 }, { 7724, 7725 },
    -
    176  { 7722, 7723 }, { 7720, 7721 }, { 1064, 1096 },
    -
    177  { 7718, 7719 }, { 1062, 1094 }, { 7716, 7717 },
    -
    178  { 1060, 1092 }, { 7714, 7715 }, { 1058, 1090 },
    -
    179  { 7712, 7713 }, { 1056, 1088 }, { 7710, 7711 },
    -
    180  { 1054, 1086 }, { 7708, 7709 }, { 7706, 7707 },
    -
    181  { 7704, 7705 }, { 1048, 1080 }, { 7702, 7703 },
    -
    182  { 1046, 1078 }, { 7700, 7701 }, { 4288, 11552 },
    -
    183  { 4286, 11550 }, { 4285, 11549 }, { 1039, 1119 },
    -
    184  { 4283, 11547 }, { 1037, 1117 }, { 4282, 11546 },
    -
    185  { 4280, 11544 }, { 4278, 11542 }, { 4276, 11540 },
    -
    186  { 4274, 11538 }, { 42572, 42573 }, { 42570, 42571 },
    -
    187  { 8185, 8057 }, { 42564, 42565 }, { 42562, 42563 },
    -
    188  { 42560, 42561 }, { 11506, 11507 }, { 8171, 8059 },
    -
    189  { 68759, 68823 }, { 42832, 42833 }, { 406, 617 },
    -
    190  { 8169, 8161 }, { 68757, 68821 }, { 42830, 42831 },
    -
    191  { 404, 611 }, { 68753, 68817 }, { 42826, 42827 },
    -
    192  { 400, 603 }, { 11490, 11491 }, { 914, 946 },
    -
    193  { 904, 941 }, { 902, 940 }, { 7993, 7985 },
    -
    194  { 922, 954 }, { 920, 952 }, { 918, 950 },
    -
    195  { 886, 887 }, { 11458, 11459 }, { 882, 883 },
    -
    196  { 11456, 11457 }, { 11452, 11453 }, { 1052, 1084 },
    -
    197  { 8123, 8049 }, { 11450, 11451 }, { 1050, 1082 },
    -
    198  { 8121, 8113 }, { 11448, 11449 }, { 11446, 11447 },
    -
    199  { 895, 1011 }, { 11444, 11445 }, { 11442, 11443 },
    -
    200  { 11440, 11441 }, { 11432, 11433 }, { 125200, 125234 },
    -
    201  { 7350, 4342 }, { 68765, 68829 }, { 412, 623 },
    -
    202  { 42838, 42839 }, { 66570, 66610 }, { 574, 11366 },
    -
    203  { 125198, 125232 }, { 7348, 4340 }, { 68763, 68827 },
    -
    204  { 42836, 42837 }, { 125196, 125230 }, { 7346, 4338 },
    -
    205  { 68761, 68825 }, { 408, 409 }, { 42834, 42835 },
    -
    206  { 66566, 66606 }, { 570, 11365 }, { 1302, 1303 },
    -
    207  { 193, 225 }, { 93778, 93810 }, { 11283, 11331 },
    -
    208  { 11436, 11437 }, { 219, 251 }, { 11309, 11357 },
    -
    209  { 990, 991 }, { 1360, 1408 }, { 125199, 125233 },
    -
    210  { 7349, 4341 }, { 278, 279 }, { 8041, 8033 },
    -
    211  { 11434, 11435 }, { 988, 989 }, { 68756, 68820 },
    -
    212  { 403, 608 }, { 1068, 1100 }, { 8139, 8053 },
    -
    213  { 11466, 11467 }, { 917, 949 }, { 1358, 1406 },
    -
    214  { 66937, 66976 }, { 8012, 8004 }, { 125197, 125231 },
    -
    215  { 7347, 4339 }, { 276, 277 }, { 1298, 1299 },
    -
    216  { 93774, 93806 }, { 11279, 11327 }, { 908, 972 },
    -
    217  { 7979, 7971 }, { 11306, 11354 }, { 4260, 11524 },
    -
    218  { 66929, 66968 }, { 933, 965 }, { 473, 474 },
    -
    219  { 1296, 1297 }, { 7950, 7942 }, { 93772, 93804 },
    -
    220  { 11277, 11325 }, { 11304, 11352 }, { 11430, 11431 },
    -
    221  { 984, 985 }, { 68752, 68816 }, { 399, 601 },
    -
    222  { 11462, 11463 }, { 913, 945 }, { 1354, 1402 },
    -
    223  { 1294, 1295 }, { 7948, 7940 }, { 93770, 93802 },
    -
    224  { 11275, 11323 }, { 11302, 11350 }, { 4256, 11520 },
    -
    225  { 929, 961 }, { 469, 470 }, { 11428, 11429 },
    -
    226  { 1352, 1400 }, { 1292, 1293 }, { 7946, 7938 },
    -
    227  { 93768, 93800 }, { 11273, 11321 }, { 11300, 11348 },
    -
    228  { 11426, 11427 }, { 66932, 66971 }, { 936, 968 },
    -
    229  { 4263, 11527 }, { 68748, 68812 }, { 5109, 5117 },
    -
    230  { 395, 396 }, { 1350, 1398 }, { 66956, 66995 },
    -
    231  { 8031, 8023 }, { 1290, 1291 }, { 7944, 7936 },
    -
    232  { 93766, 93798 }, { 11271, 11319 }, { 11298, 11346 },
    -
    233  { 11424, 11425 }, { 66930, 66969 }, { 934, 966 },
    -
    234  { 4261, 11525 }, { 68746, 68810 }, { 5107, 5115 },
    -
    235  { 393, 598 }, { 1348, 1396 }, { 66954, 66993 },
    -
    236  { 8029, 8021 }, { 1288, 1289 }, { 93764, 93796 },
    -
    237  { 11269, 11317 }, { 93791, 93823 }, { 11296, 11344 },
    -
    238  { 11422, 11423 }, { 68744, 68808 }, { 5105, 5113 },
    -
    239  { 391, 392 }, { 8154, 8054 }, { 11454, 11455 },
    -
    240  { 7976, 7968 }, { 905, 942 }, { 1346, 1394 },
    -
    241  { 66952, 66991 }, { 8027, 8019 }, { 1286, 1287 },
    -
    242  { 93762, 93794 }, { 11267, 11315 }, { 93789, 93821 },
    -
    243  { 11294, 11342 }, { 42576, 42577 }, { 1300, 1301 },
    -
    244  { 93776, 93808 }, { 11281, 11329 }, { 11308, 11356 },
    -
    245  { 4262, 11526 }, { 66931, 66970 }, { 935, 967 },
    -
    246  { 475, 476 }, { 11420, 11421 }, { 1344, 1392 },
    -
    247  { 66950, 66989 }, { 8025, 8017 }, { 125202, 125236 },
    -
    248  { 7352, 4344 }, { 68767, 68831 }, { 42840, 42841 },
    -
    249  { 1274, 1275 }, { 7928, 7929 }, { 192, 224 },
    -
    250  { 93777, 93809 }, { 11282, 11330 }, { 437, 438 },
    -
    251  { 125193, 125227 }, { 272, 273 }, { 7343, 4335 },
    -
    252  { 11400, 11401 }, { 125204, 125238 }, { 7354, 4346 },
    -
    253  { 68769, 68833 }, { 416, 417 }, { 42842, 42843 },
    -
    254  { 1276, 1277 }, { 7930, 7931 }, { 194, 226 },
    -
    255  { 93779, 93811 }, { 11284, 11332 }, { 195, 227 },
    -
    256  { 1304, 1305 }, { 93780, 93812 }, { 11285, 11333 },
    -
    257  { 42594, 42595 }, { 66576, 66616 }, { 580, 649 },
    -
    258  { 1278, 1279 }, { 7932, 7933 }, { 196, 228 },
    -
    259  { 93781, 93813 }, { 11286, 11334 }, { 1338, 1386 },
    -
    260  { 125208, 125242 }, { 7358, 4350 }, { 68773, 68837 },
    -
    261  { 420, 421 }, { 42846, 42847 }, { 66578, 66618 },
    -
    262  { 582, 583 }, { 1280, 1281 }, { 7934, 7935 },
    -
    263  { 7961, 7953 }, { 93783, 93815 }, { 11288, 11336 },
    -
    264  { 7997, 7989 }, { 926, 958 }, { 1340, 1388 },
    -
    265  { 66580, 66620 }, { 584, 585 }, { 1282, 1283 },
    -
    266  { 7963, 7955 }, { 93785, 93817 }, { 11290, 11338 },
    -
    267  { 42600, 42601 }, { 1342, 1390 }, { 1284, 1285 },
    -
    268  { 93760, 93792 }, { 11265, 11313 }, { 7965, 7957 },
    -
    269  { 93787, 93819 }, { 11292, 11340 }, { 11438, 11439 },
    -
    270  { 4265, 11529 }, { 66934, 66973 }, { 8009, 8001 },
    -
    271  { 938, 970 }, { 992, 993 }, { 65314, 65346 },
    -
    272  { 68760, 68824 }, { 407, 616 }, { 8170, 8058 },
    -
    273  { 7992, 7984 }, { 921, 953 }, { 7313, 4305 },
    -
    274  { 381, 382 }, { 5095, 43959 }, { 1362, 1410 },
    -
    275  { 125201, 125235 }, { 7351, 4343 }, { 280, 281 },
    -
    276  { 8043, 8035 }, { 68754, 68818 }, { 401, 402 },
    -
    277  { 1066, 1098 }, { 8137, 8051 }, { 11464, 11465 },
    -
    278  { 915, 947 }, { 1356, 1404 }, { 66935, 66974 },
    -
    279  { 939, 971 }, { 8010, 8002 }, { 125195, 125229 },
    -
    280  { 7345, 4337 }, { 274, 275 }, { 7315, 4307 },
    -
    281  { 68736, 68800 }, { 5097, 43961 }, { 1364, 1412 },
    -
    282  { 125203, 125237 }, { 7353, 4345 }, { 282, 283 },
    -
    283  { 8045, 8037 }, { 7317, 4309 }, { 68738, 68802 },
    -
    284  { 385, 595 }, { 5099, 43963 }, { 1366, 1414 },
    -
    285  { 125205, 125239 }, { 284, 285 }, { 8047, 8039 },
    -
    286  { 11374, 625 }, { 68766, 68830 }, { 413, 626 },
    -
    287  { 68739, 68803 }, { 42812, 42813 }, { 5100, 43964 },
    -
    288  { 386, 387 }, { 11476, 11477 }, { 7998, 7990 },
    -
    289  { 927, 959 }, { 7319, 4311 }, { 68740, 68804 },
    -
    290  { 5101, 43965 }, { 125207, 125241 }, { 7357, 4349 },
    -
    291  { 286, 287 }, { 11376, 594 }, { 68768, 68832 },
    -
    292  { 415, 629 }, { 68741, 68805 }, { 42814, 42815 },
    -
    293  { 5102, 43966 }, { 388, 389 }, { 11478, 11479 },
    -
    294  { 7321, 4313 }, { 68742, 68806 }, { 5103, 43967 },
    -
    295  { 125209, 125243 }, { 7359, 4351 }, { 288, 289 },
    -
    296  { 11378, 11379 }, { 125211, 125245 }, { 290, 291 },
    -
    297  { 125213, 125247 }, { 292, 293 }, { 125215, 125249 },
    -
    298  { 294, 295 }, { 68776, 68840 }, { 423, 424 },
    -
    299  { 8186, 8060 }, { 66933, 66972 }, { 8008, 8000 },
    -
    300  { 937, 969 }, { 4264, 11528 }, { 258, 259 },
    -
    301  { 7329, 4321 }, { 125217, 125251 }, { 296, 297 },
    -
    302  { 68778, 68842 }, { 425, 643 }, { 68751, 68815 },
    -
    303  { 42824, 42825 }, { 398, 477 }, { 11488, 11489 },
    -
    304  { 260, 261 }, { 7331, 4323 }, { 298, 299 },
    -
    305  { 262, 263 }, { 7333, 4325 }, { 300, 301 },
    -
    306  { 11390, 575 }, { 125185, 125219 }, { 264, 265 },
    -
    307  { 7335, 4327 }, { 302, 303 }, { 11392, 11393 },
    -
    308  { 68784, 68848 }, { 431, 432 }, { 125187, 125221 },
    -
    309  { 266, 267 }, { 7337, 4329 }, { 304, 105 },
    -
    310  { 11394, 11395 }, { 68786, 68850 }, { 433, 650 },
    -
    311  { 125189, 125223 }, { 268, 269 }, { 7339, 4331 },
    -
    312  { 306, 307 }, { 11396, 11397 }, { 435, 436 },
    -
    313  { 125191, 125225 }, { 270, 271 }, { 7341, 4333 },
    -
    314  { 308, 309 }, { 11398, 11399 }, { 439, 658 },
    -
    315  { 440, 441 }, { 42582, 42583 }, { 444, 445 },
    -
    316  { 42586, 42587 }, { 994, 995 }, { 65316, 65348 },
    -
    317  { 455, 457 }, { 996, 997 }, { 65318, 65350 },
    -
    318  { 998, 999 }, { 65320, 65352 }, { 4273, 11537 },
    -
    319  { 1027, 1107 }, { 202, 234 }, { 42628, 42629 },
    -
    320  { 1000, 1001 }, { 65322, 65354 }, { 4275, 11539 },
    -
    321  { 1029, 1109 }, { 204, 236 }, { 42630, 42631 },
    -
    322  { 461, 462 }, { 1002, 1003 }, { 65324, 65356 },
    -
    323  { 4277, 11541 }, { 1031, 1111 }, { 206, 238 },
    -
    324  { 42632, 42633 }, { 463, 464 }, { 1004, 1005 },
    -
    325  { 65326, 65358 }, { 4279, 11543 }, { 1033, 1113 },
    -
    326  { 208, 240 }, { 42634, 42635 }, { 1006, 1007 },
    -
    327  { 65328, 65360 }, { 4281, 11545 }, { 1035, 1115 },
    -
    328  { 210, 242 }, { 42636, 42637 }, { 4284, 11548 },
    -
    329  { 4287, 11551 }, { 1041, 1073 }, { 216, 248 },
    -
    330  { 42642, 42643 }, { 11360, 11361 }, { 4289, 11553 },
    -
    331  { 1043, 1075 }, { 218, 250 }, { 42644, 42645 },
    -
    332  { 4290, 11554 }, { 1044, 1076 }, { 7698, 7699 },
    -
    333  { 1017, 1010 }, { 11362, 619 }, { 4291, 11555 },
    -
    334  { 1045, 1077 }, { 220, 252 }, { 42646, 42647 },
    -
    335  { 1018, 1019 }, { 11364, 637 }, { 4293, 11557 },
    -
    336  { 1047, 1079 }, { 222, 254 }, { 42648, 42649 },
    -
    337  { 4295, 11559 }, { 42650, 42651 }, { 4268, 11532 },
    -
    338  { 1022, 892 }, { 4270, 11534 }, { 1024, 1104 },
    -
    339  { 1053, 1085 }, { 4272, 11536 }, { 4301, 11565 },
    -
    340  { 1055, 1087 }, { 1057, 1089 }, { 1059, 1091 },
    -
    341  { 1061, 1093 }, { 1063, 1095 }, { 526, 527 },
    -
    342  { 9398, 9424 }, { 1069, 1101 }, { 528, 529 },
    -
    343  { 9400, 9426 }, { 1071, 1103 }, { 530, 531 },
    -
    344  { 9402, 9428 }, { 532, 533 }, { 9404, 9430 },
    -
    345  { 9406, 9432 }, { 536, 537 }, { 9408, 9434 },
    -
    346  { 538, 539 }, { 9410, 9436 }, { 9412, 9438 },
    -
    347  { 9414, 9440 }, { 544, 414 }, { 9416, 9442 },
    -
    348  { 546, 547 }, { 9418, 9444 }, { 548, 549 },
    -
    349  { 9420, 9446 }, { 550, 551 }, { 9422, 9448 },
    -
    350  { 552, 553 }, { 554, 555 }, { 556, 557 },
    -
    351  { 558, 559 }, { 560, 561 }, { 562, 563 },
    -
    352  { 66569, 66609 }, { 573, 410 }, { 66573, 66613 },
    -
    353  { 577, 578 }, { 1120, 1121 }, { 7774, 7775 },
    -
    354  { 66575, 66615 }, { 579, 384 }, { 1122, 1123 },
    -
    355  { 7776, 7777 }, { 66577, 66617 }, { 581, 652 },
    -
    356  { 66582, 66622 }, { 586, 587 }, { 66584, 66624 },
    -
    357  { 588, 589 }, { 310, 311 }, { 5024, 43888 },
    -
    358  { 66586, 66626 }, { 590, 591 }, { 5026, 43890 },
    -
    359  { 7977, 7969 }, { 906, 943 }, { 7981, 7973 },
    -
    360  { 910, 973 }, { 11460, 11461 }, { 7982, 7974 },
    -
    361  { 911, 974 }, { 916, 948 }, { 919, 951 },
    -
    362  { 7994, 7986 }, { 923, 955 }, { 7995, 7987 },
    -
    363  { 924, 956 }, { 7996, 7988 }, { 925, 957 },
    -
    364  { 7999, 7991 }, { 928, 960 }, { 68743, 68807 },
    -
    365  { 42816, 42817 }, { 5104, 5112 }, { 390, 596 },
    -
    366  { 8153, 8145 }, { 11480, 11481 }, { 931, 963 },
    -
    367  { 4258, 11522 }, { 68747, 68811 }, { 42820, 42821 },
    -
    368  { 5108, 5116 }, { 394, 599 }, { 11484, 11485 },
    -
    369  { 986, 987 }, { 471, 472 }, { 1012, 952 },
    -
    370  { 1015, 1016 }, { 4267, 11531 }, { 1021, 891 },
    -
    371  { 4269, 11533 }, { 198, 230 }, { 42624, 42625 },
    -
    372  { 1023, 893 }, { 4271, 11535 }, { 200, 232 },
    -
    373  { 42626, 42627 }, { 1025, 1105 }, { 7726, 7727 },
    -
    374  { 7728, 7729 }, { 7730, 7731 }, { 7732, 7733 },
    -
    375  { 7734, 7735 }, { 7736, 7737 }, { 7738, 7739 },
    -
    376  { 7740, 7741 }, { 7742, 7743 }, { 7744, 7745 },
    -
    377  { 7746, 7747 }, { 7748, 7749 }, { 7750, 7751 },
    -
    378  { 7752, 7753 }, { 7754, 7755 }, { 7756, 7757 },
    -
    379  { 7758, 7759 }, { 7760, 7761 }, { 7762, 7763 },
    -
    380  { 7764, 7765 }, { 7766, 7767 }, { 7768, 7769 },
    -
    381  { 7770, 7771 }, { 7772, 7773 }, { 7808, 7809 },
    -
    382  { 7810, 7811 }, { 66737, 66777 }, { 7812, 7813 },
    -
    383  { 66739, 66779 }, { 7814, 7815 }, { 7872, 7873 },
    -
    384  { 7874, 7875 }, { 7876, 7877 }, { 7878, 7879 },
    -
    385  { 7880, 7881 }, { 7882, 7883 }, { 7884, 7885 },
    -
    386  { 7945, 7937 }, { 93767, 93799 }, { 11272, 11320 },
    -
    387  { 7947, 7939 }, { 93769, 93801 }, { 11274, 11322 },
    -
    388  { 7949, 7941 }, { 93771, 93803 }, { 11276, 11324 },
    -
    389  { 880, 881 }, { 7951, 7943 }, { 93773, 93805 },
    -
    390  { 11278, 11326 }, { 66965, 67004 }, { 8040, 8032 },
    -
    391  { 11367, 11368 }, { 8042, 8034 }, { 11369, 11370 },
    -
    392  { 8044, 8036 }, { 11371, 11372 }, { 975, 983 },
    -
    393  { 8046, 8038 }, { 11373, 593 }, { 1049, 1081 },
    -
    394  { 8120, 8112 }, { 1051, 1083 }, { 8122, 8048 },
    -
    395  { 1065, 1097 }, { 8136, 8050 }, { 1067, 1099 },
    -
    396  { 8138, 8052 }, { 8152, 8144 }, { 8155, 8055 },
    -
    397  { 11482, 11483 }, { 8168, 8160 }, { 8172, 8165 },
    -
    398  { 11499, 11500 }, { 8184, 8056 }, { 8187, 8061 },
    -
    399  { 42566, 42567 }, { 8486, 969 }, { 8490, 107 },
    -
    400  { 8491, 229 }, { 8498, 8526 }, { 42877, 7545 },
    -
    401  { 8544, 8560 }, { 497, 499 }, { 42923, 604 },
    -
    402  { 8545, 8561 }, { 42924, 609 }, { 8546, 8562 },
    -
    403  { 42925, 620 }, { 8547, 8563 }, { 500, 501 },
    -
    404  { 42926, 618 }, { 8548, 8564 }, { 8549, 8565 },
    -
    405  { 502, 405 }, { 42928, 670 }, { 8550, 8566 },
    -
    406  { 503, 447 }, { 42929, 647 }, { 8551, 8567 },
    -
    407  { 504, 505 }, { 42930, 669 }, { 8552, 8568 },
    -
    408  { 42931, 43859 }, { 8553, 8569 }, { 506, 507 },
    -
    409  { 42932, 42933 }, { 8554, 8570 }, { 8555, 8571 },
    -
    410  { 508, 509 }, { 42934, 42935 }, { 8556, 8572 },
    -
    411  { 8557, 8573 }, { 510, 511 }, { 42936, 42937 },
    -
    412  { 8558, 8574 }, { 8559, 8575 }, { 512, 513 },
    -
    413  { 42938, 42939 }, { 8579, 8580 }, { 9399, 9425 },
    -
    414  { 9401, 9427 }, { 9403, 9429 }, { 9405, 9431 },
    -
    415  { 9407, 9433 }, { 9409, 9435 }, { 9411, 9437 },
    -
    416  { 9413, 9439 }, { 9415, 9441 }, { 9417, 9443 },
    -
    417  { 9419, 9445 }, { 9421, 9447 }, { 9423, 9449 },
    -
    418  { 11264, 11312 }, { 93761, 93793 }, { 11266, 11314 },
    -
    419  { 93763, 93795 }, { 11268, 11316 }, { 93765, 93797 },
    -
    420  { 11270, 11318 }, { 93775, 93807 }, { 11280, 11328 },
    -
    421  { 4292, 11556 }, { 11363, 7549 }, { 11375, 592 },
    -
    422  { 11381, 11382 }, { 11391, 576 }, { 11402, 11403 },
    -
    423  { 11404, 11405 }, { 11406, 11407 }, { 11408, 11409 },
    -
    424  { 11410, 11411 }, { 11412, 11413 }, { 11414, 11415 },
    -
    425  { 11416, 11417 }, { 11418, 11419 }, { 11468, 11469 },
    -
    426  { 11470, 11471 }, { 11472, 11473 }, { 11474, 11475 },
    -
    427  { 11486, 11487 }, { 11501, 11502 }, { 42568, 42569 },
    -
    428  { 42574, 42575 }, { 42578, 42579 }, { 42580, 42581 },
    -
    429  { 42584, 42585 }, { 42588, 42589 }, { 42590, 42591 },
    -
    430  { 42592, 42593 }, { 42596, 42597 }, { 42598, 42599 },
    -
    431  { 42602, 42603 }, { 42604, 42605 }, { 212, 244 },
    -
    432  { 42638, 42639 }, { 214, 246 }, { 42640, 42641 },
    -
    433  { 366, 367 }, { 5080, 43944 }, { 42792, 42793 },
    -
    434  { 368, 369 }, { 5082, 43946 }, { 42794, 42795 },
    -
    435  { 374, 375 }, { 5088, 43952 }, { 370, 371 },
    -
    436  { 5084, 43948 }, { 42796, 42797 }, { 42802, 42803 },
    -
    437  { 376, 255 }, { 5090, 43954 }, { 372, 373 },
    -
    438  { 5086, 43950 }, { 42798, 42799 }, { 42804, 42805 },
    -
    439  { 5092, 43956 }, { 68771, 68835 }, { 418, 419 },
    -
    440  { 42844, 42845 }, { 68775, 68839 }, { 422, 640 },
    -
    441  { 42848, 42849 }, { 68777, 68841 }, { 42850, 42851 },
    -
    442  { 68779, 68843 }, { 42852, 42853 }, { 68781, 68845 },
    -
    443  { 428, 429 }, { 42854, 42855 }, { 68783, 68847 },
    -
    444  { 430, 648 }, { 42856, 42857 }, { 68785, 68849 },
    -
    445  { 42858, 42859 }, { 434, 651 }, { 42860, 42861 },
    -
    446  { 42862, 42863 }, { 42873, 42874 }, { 42875, 42876 },
    -
    447  { 452, 454 }, { 42878, 42879 }, { 42880, 42881 },
    -
    448  { 42882, 42883 }, { 458, 460 }, { 42884, 42885 },
    -
    449  { 42886, 42887 }, { 465, 466 }, { 42891, 42892 },
    -
    450  { 467, 468 }, { 42893, 613 }, { 42896, 42897 },
    -
    451  { 42898, 42899 }, { 42902, 42903 }, { 478, 479 },
    -
    452  { 42904, 42905 }, { 480, 481 }, { 42906, 42907 },
    -
    453  { 482, 483 }, { 42908, 42909 }, { 484, 485 },
    -
    454  { 42910, 42911 }, { 486, 487 }, { 42912, 42913 },
    -
    455  { 488, 489 }, { 42914, 42915 }, { 490, 491 },
    -
    456  { 42916, 42917 }, { 492, 493 }, { 42918, 42919 },
    -
    457  { 494, 495 }, { 42920, 42921 }, { 42922, 614 },
    -
    458  { 514, 515 }, { 42940, 42941 }, { 516, 517 },
    -
    459  { 42942, 42943 }, { 518, 519 }, { 42944, 42945 },
    -
    460  { 520, 521 }, { 42946, 42947 }, { 522, 523 },
    -
    461  { 42948, 42900 }, { 42949, 642 }, { 524, 525 },
    -
    462  { 42950, 7566 }, { 42951, 42952 }, { 42953, 42954 },
    -
    463  { 534, 535 }, { 42960, 42961 }, { 540, 541 },
    -
    464  { 42966, 42967 }, { 542, 543 }, { 42968, 42969 },
    -
    465  { 66567, 66607 }, { 571, 572 }, { 42997, 42998 },
    -
    466  { 5025, 43889 }, { 313, 314 }, { 5027, 43891 },
    -
    467  { 5028, 43892 }, { 315, 316 }, { 5029, 43893 },
    -
    468  { 5030, 43894 }, { 317, 318 }, { 5031, 43895 },
    -
    469  { 5032, 43896 }, { 319, 320 }, { 5033, 43897 },
    -
    470  { 5034, 43898 }, { 321, 322 }, { 5035, 43899 },
    -
    471  { 5036, 43900 }, { 323, 324 }, { 5037, 43901 },
    -
    472  { 5038, 43902 }, { 325, 326 }, { 5039, 43903 },
    -
    473  { 5040, 43904 }, { 327, 328 }, { 5041, 43905 },
    -
    474  { 5042, 43906 }, { 5043, 43907 }, { 330, 331 },
    -
    475  { 5044, 43908 }, { 5045, 43909 }, { 332, 333 },
    -
    476  { 5046, 43910 }, { 5047, 43911 }, { 334, 335 },
    -
    477  { 5048, 43912 }, { 5049, 43913 }, { 336, 337 },
    -
    478  { 5050, 43914 }, { 5051, 43915 }, { 338, 339 },
    -
    479  { 5052, 43916 }, { 5053, 43917 }, { 340, 341 },
    -
    480  { 5054, 43918 }, { 5055, 43919 }, { 342, 343 },
    -
    481  { 5056, 43920 }, { 5057, 43921 }, { 344, 345 },
    -
    482  { 5058, 43922 }, { 5059, 43923 }, { 346, 347 },
    -
    483  { 5060, 43924 }, { 5061, 43925 }, { 348, 349 },
    -
    484  { 5062, 43926 }, { 5063, 43927 }, { 350, 351 },
    -
    485  { 5064, 43928 }, { 5065, 43929 }, { 352, 353 },
    -
    486  { 5066, 43930 }, { 5067, 43931 }, { 354, 355 },
    -
    487  { 5068, 43932 }, { 5069, 43933 }, { 356, 357 },
    -
    488  { 5070, 43934 }, { 5071, 43935 }, { 358, 359 },
    -
    489  { 5072, 43936 }, { 5073, 43937 }, { 360, 361 },
    -
    490  { 42786, 42787 }, { 5074, 43938 }, { 5075, 43939 },
    -
    491  { 362, 363 }, { 42788, 42789 }, { 5076, 43940 },
    -
    492  { 5077, 43941 }, { 364, 365 }, { 42790, 42791 },
    -
    493  { 5078, 43942 }, { 5079, 43943 }, { 5081, 43945 },
    -
    494  { 5083, 43947 }, { 5085, 43949 }, { 5087, 43951 },
    -
    495  { 5089, 43953 }, { 377, 378 }, { 5091, 43955 },
    -
    496  { 379, 380 }, { 5093, 43957 }, { 65313, 65345 },
    -
    497  { 65315, 65347 }, { 65317, 65349 }, { 65319, 65351 },
    -
    498  { 65321, 65353 }, { 65323, 65355 }, { 65325, 65357 },
    -
    499  { 65327, 65359 }, { 65329, 65361 }, { 65330, 65362 },
    -
    500  }};
    -
    501 
    -
    502  if (c >= 'A' && c <= 'Z')
    -
    503  {
    -
    504  return c + 32;
    -
    505  }
    -
    506 
    -
    507  return utils::case_lookup(tolower_map, c);
    -
    508  }
    -
    509 }
    +Go to the documentation of this file.
    1/*
    +
    2 * Copyright (c) 2018-2024, peelo.net
    +
    3 * All rights reserved.
    +
    4 *
    +
    5 * Redistribution and use in source and binary forms, with or without
    +
    6 * modification, are permitted provided that the following conditions are met:
    +
    7 *
    +
    8 * * Redistributions of source code must retain the above copyright notice,
    +
    9 * this list of conditions and the following disclaimer.
    +
    10 *
    +
    11 * * Redistributions in binary form must reproduce the above copyright notice,
    +
    12 * this list of conditions and the following disclaimer in the documentation
    +
    13 * and/or other materials provided with the distribution.
    +
    14 *
    +
    15 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
    +
    16 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
    +
    17 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
    +
    18 * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
    +
    19 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
    +
    20 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
    +
    21 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
    +
    22 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
    +
    23 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
    +
    24 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
    +
    25 * POSSIBILITY OF SUCH DAMAGE.
    +
    26 */
    +
    27#pragma once
    +
    28
    + +
    30
    + +
    32{
    +
    36 inline char32_t
    +
    37 tolower(char32_t c)
    +
    38 {
    +
    39 static const std::unordered_map<char32_t, char32_t> tolower_map =
    +
    40 {{
    +
    41 { 125216, 125250 }, { 125214, 125248 }, { 125212, 125246 },
    +
    42 { 125210, 125244 }, { 125206, 125240 }, { 71871, 71903 },
    +
    43 { 71870, 71902 }, { 71869, 71901 }, { 71868, 71900 },
    +
    44 { 71867, 71899 }, { 71866, 71898 }, { 71865, 71897 },
    +
    45 { 71864, 71896 }, { 71863, 71895 }, { 71861, 71893 },
    +
    46 { 71859, 71891 }, { 71857, 71889 }, { 71855, 71887 },
    +
    47 { 71853, 71885 }, { 71851, 71883 }, { 71849, 71881 },
    +
    48 { 71847, 71879 }, { 71845, 71877 }, { 71843, 71875 },
    +
    49 { 71841, 71873 }, { 68782, 68846 }, { 68780, 68844 },
    +
    50 { 68774, 68838 }, { 68772, 68836 }, { 68770, 68834 },
    +
    51 { 68764, 68828 }, { 68762, 68826 }, { 68758, 68822 },
    +
    52 { 68750, 68814 }, { 66964, 67003 }, { 66962, 67001 },
    +
    53 { 66961, 67000 }, { 66960, 66999 }, { 66959, 66998 },
    +
    54 { 66958, 66997 }, { 66957, 66996 }, { 66953, 66992 },
    +
    55 { 66951, 66990 }, { 66949, 66988 }, { 66948, 66987 },
    +
    56 { 66947, 66986 }, { 66946, 66985 }, { 66945, 66984 },
    +
    57 { 66944, 66983 }, { 66943, 66982 }, { 66942, 66981 },
    +
    58 { 66941, 66980 }, { 66940, 66979 }, { 66770, 66810 },
    +
    59 { 66768, 66808 }, { 66766, 66806 }, { 66764, 66804 },
    +
    60 { 66762, 66802 }, { 66761, 66801 }, { 66760, 66800 },
    +
    61 { 66759, 66799 }, { 66758, 66798 }, { 66757, 66797 },
    +
    62 { 66756, 66796 }, { 66755, 66795 }, { 66754, 66794 },
    +
    63 { 66752, 66792 }, { 66750, 66790 }, { 66748, 66788 },
    +
    64 { 66746, 66786 }, { 66744, 66784 }, { 66742, 66782 },
    +
    65 { 66740, 66780 }, { 66738, 66778 }, { 66736, 66776 },
    +
    66 { 66599, 66639 }, { 66598, 66638 }, { 66597, 66637 },
    +
    67 { 66596, 66636 }, { 66595, 66635 }, { 66594, 66634 },
    +
    68 { 66593, 66633 }, { 66592, 66632 }, { 66591, 66631 },
    +
    69 { 66590, 66630 }, { 66589, 66629 }, { 66588, 66628 },
    +
    70 { 66587, 66627 }, { 66585, 66625 }, { 66583, 66623 },
    +
    71 { 66581, 66621 }, { 66579, 66619 }, { 66574, 66614 },
    +
    72 { 66572, 66612 }, { 66571, 66611 }, { 66568, 66608 },
    +
    73 { 66565, 66605 }, { 66564, 66604 }, { 66563, 66603 },
    +
    74 { 66562, 66602 }, { 66561, 66601 }, { 66560, 66600 },
    +
    75 { 65338, 65370 }, { 65337, 65369 }, { 65336, 65368 },
    +
    76 { 65335, 65367 }, { 65334, 65366 }, { 65333, 65365 },
    +
    77 { 65332, 65364 }, { 65331, 65363 }, { 125194, 125228 },
    +
    78 { 7344, 4336 }, { 125192, 125226 }, { 7342, 4334 },
    +
    79 { 125190, 125224 }, { 7340, 4332 }, { 68755, 68819 },
    +
    80 { 42828, 42829 }, { 125188, 125222 }, { 7338, 4330 },
    +
    81 { 125186, 125220 }, { 7336, 4328 }, { 125184, 125218 },
    +
    82 { 7334, 4326 }, { 68749, 68813 }, { 42822, 42823 },
    +
    83 { 7332, 4324 }, { 7330, 4322 }, { 7328, 4320 },
    +
    84 { 7326, 4318 }, { 7324, 4316 }, { 68745, 68809 },
    +
    85 { 42818, 42819 }, { 5106, 5114 }, { 7322, 4314 },
    +
    86 { 7320, 4312 }, { 7318, 4310 }, { 4266, 11530 },
    +
    87 { 4259, 11523 }, { 66928, 66967 }, { 932, 964 },
    +
    88 { 4257, 11521 }, { 7316, 4308 }, { 68737, 68801 },
    +
    89 { 42810, 42811 }, { 5098, 43962 }, { 1365, 1413 },
    +
    90 { 7314, 4306 }, { 42808, 42809 }, { 5096, 43960 },
    +
    91 { 1363, 1411 }, { 7312, 4304 }, { 42806, 42807 },
    +
    92 { 5094, 43958 }, { 1361, 1409 }, { 1359, 1407 },
    +
    93 { 66938, 66977 }, { 8013, 8005 }, { 1357, 1405 },
    +
    94 { 66936, 66975 }, { 8011, 8003 }, { 1355, 1403 },
    +
    95 { 1353, 1401 }, { 1351, 1399 }, { 1349, 1397 },
    +
    96 { 1347, 1395 }, { 1345, 1393 }, { 1343, 1391 },
    +
    97 { 1341, 1389 }, { 1339, 1387 }, { 1337, 1385 },
    +
    98 { 1336, 1384 }, { 1335, 1383 }, { 1334, 1382 },
    +
    99 { 1333, 1381 }, { 1332, 1380 }, { 1331, 1379 },
    +
    100 { 1330, 1378 }, { 221, 253 }, { 11311, 11359 },
    +
    101 { 1329, 1377 }, { 7983, 7975 }, { 11310, 11358 },
    +
    102 { 1326, 1327 }, { 217, 249 }, { 7980, 7972 },
    +
    103 { 11307, 11355 }, { 1324, 1325 }, { 7978, 7970 },
    +
    104 { 11305, 11353 }, { 256, 257 }, { 7327, 4319 },
    +
    105 { 1322, 1323 }, { 213, 245 }, { 11303, 11351 },
    +
    106 { 7325, 4317 }, { 1320, 1321 }, { 211, 243 },
    +
    107 { 11301, 11349 }, { 7323, 4315 }, { 1318, 1319 },
    +
    108 { 209, 241 }, { 11299, 11347 }, { 1316, 1317 },
    +
    109 { 207, 239 }, { 11297, 11345 }, { 1314, 1315 },
    +
    110 { 205, 237 }, { 93790, 93822 }, { 11295, 11343 },
    +
    111 { 1312, 1313 }, { 203, 235 }, { 93788, 93820 },
    +
    112 { 11293, 11341 }, { 1310, 1311 }, { 201, 233 },
    +
    113 { 7964, 7956 }, { 93786, 93818 }, { 11291, 11339 },
    +
    114 { 1308, 1309 }, { 199, 231 }, { 7962, 7954 },
    +
    115 { 93784, 93816 }, { 11289, 11337 }, { 1306, 1307 },
    +
    116 { 197, 229 }, { 7960, 7952 }, { 93782, 93814 },
    +
    117 { 11287, 11335 }, { 1272, 1273 }, { 7926, 7927 },
    +
    118 { 1270, 1271 }, { 7924, 7925 }, { 1268, 1269 },
    +
    119 { 7922, 7923 }, { 1266, 1267 }, { 7920, 7921 },
    +
    120 { 1264, 1265 }, { 7918, 7919 }, { 1262, 1263 },
    +
    121 { 7916, 7917 }, { 1260, 1261 }, { 7914, 7915 },
    +
    122 { 1258, 1259 }, { 7912, 7913 }, { 1256, 1257 },
    +
    123 { 7910, 7911 }, { 1254, 1255 }, { 7908, 7909 },
    +
    124 { 1252, 1253 }, { 7906, 7907 }, { 1250, 1251 },
    +
    125 { 7904, 7905 }, { 1248, 1249 }, { 7902, 7903 },
    +
    126 { 1246, 1247 }, { 7900, 7901 }, { 1244, 1245 },
    +
    127 { 7898, 7899 }, { 1242, 1243 }, { 7896, 7897 },
    +
    128 { 1240, 1241 }, { 7894, 7895 }, { 1238, 1239 },
    +
    129 { 7892, 7893 }, { 1236, 1237 }, { 7890, 7891 },
    +
    130 { 1234, 1235 }, { 7888, 7889 }, { 1232, 1233 },
    +
    131 { 7886, 7887 }, { 1229, 1230 }, { 1227, 1228 },
    +
    132 { 1225, 1226 }, { 1223, 1224 }, { 1221, 1222 },
    +
    133 { 1219, 1220 }, { 1217, 1218 }, { 1216, 1231 },
    +
    134 { 7870, 7871 }, { 1214, 1215 }, { 7868, 7869 },
    +
    135 { 1212, 1213 }, { 7866, 7867 }, { 1210, 1211 },
    +
    136 { 7864, 7865 }, { 1208, 1209 }, { 7862, 7863 },
    +
    137 { 1206, 1207 }, { 7860, 7861 }, { 7696, 7697 },
    +
    138 { 1042, 1074 }, { 1204, 1205 }, { 7858, 7859 },
    +
    139 { 7694, 7695 }, { 1040, 1072 }, { 1202, 1203 },
    +
    140 { 7856, 7857 }, { 7692, 7693 }, { 1038, 1118 },
    +
    141 { 1200, 1201 }, { 7854, 7855 }, { 7690, 7691 },
    +
    142 { 1036, 1116 }, { 1198, 1199 }, { 7852, 7853 },
    +
    143 { 7688, 7689 }, { 1034, 1114 }, { 1196, 1197 },
    +
    144 { 7850, 7851 }, { 7686, 7687 }, { 1032, 1112 },
    +
    145 { 1194, 1195 }, { 7848, 7849 }, { 7684, 7685 },
    +
    146 { 1030, 1110 }, { 1192, 1193 }, { 66771, 66811 },
    +
    147 { 7846, 7847 }, { 7682, 7683 }, { 1028, 1108 },
    +
    148 { 1190, 1191 }, { 66769, 66809 }, { 7844, 7845 },
    +
    149 { 7680, 7681 }, { 1026, 1106 }, { 1188, 1189 },
    +
    150 { 66767, 66807 }, { 7842, 7843 }, { 1186, 1187 },
    +
    151 { 66765, 66805 }, { 7840, 7841 }, { 1184, 1185 },
    +
    152 { 66763, 66803 }, { 7838, 223 }, { 1182, 1183 },
    +
    153 { 73, 305 }, { 1180, 1181 }, { 1178, 1179 },
    +
    154 { 1176, 1177 }, { 1174, 1175 }, { 66753, 66793 },
    +
    155 { 7828, 7829 }, { 1172, 1173 }, { 66751, 66791 },
    +
    156 { 7826, 7827 }, { 1170, 1171 }, { 66749, 66789 },
    +
    157 { 7824, 7825 }, { 1168, 1169 }, { 66747, 66787 },
    +
    158 { 7822, 7823 }, { 1166, 1167 }, { 66745, 66785 },
    +
    159 { 7820, 7821 }, { 1164, 1165 }, { 66743, 66783 },
    +
    160 { 7818, 7819 }, { 1162, 1163 }, { 66741, 66781 },
    +
    161 { 7816, 7817 }, { 71862, 71894 }, { 1152, 1153 },
    +
    162 { 7806, 7807 }, { 71860, 71892 }, { 1150, 1151 },
    +
    163 { 7804, 7805 }, { 71858, 71890 }, { 1148, 1149 },
    +
    164 { 7802, 7803 }, { 71856, 71888 }, { 1146, 1147 },
    +
    165 { 7800, 7801 }, { 71854, 71886 }, { 1144, 1145 },
    +
    166 { 7798, 7799 }, { 71852, 71884 }, { 1142, 1143 },
    +
    167 { 7796, 7797 }, { 71850, 71882 }, { 1140, 1141 },
    +
    168 { 7794, 7795 }, { 71848, 71880 }, { 1138, 1139 },
    +
    169 { 7792, 7793 }, { 71846, 71878 }, { 1136, 1137 },
    +
    170 { 7790, 7791 }, { 71844, 71876 }, { 1134, 1135 },
    +
    171 { 7788, 7789 }, { 71842, 71874 }, { 1132, 1133 },
    +
    172 { 7786, 7787 }, { 71840, 71872 }, { 1130, 1131 },
    +
    173 { 7784, 7785 }, { 1128, 1129 }, { 7782, 7783 },
    +
    174 { 1126, 1127 }, { 7780, 7781 }, { 1124, 1125 },
    +
    175 { 7778, 7779 }, { 1070, 1102 }, { 7724, 7725 },
    +
    176 { 7722, 7723 }, { 7720, 7721 }, { 1064, 1096 },
    +
    177 { 7718, 7719 }, { 1062, 1094 }, { 7716, 7717 },
    +
    178 { 1060, 1092 }, { 7714, 7715 }, { 1058, 1090 },
    +
    179 { 7712, 7713 }, { 1056, 1088 }, { 7710, 7711 },
    +
    180 { 1054, 1086 }, { 7708, 7709 }, { 7706, 7707 },
    +
    181 { 7704, 7705 }, { 1048, 1080 }, { 7702, 7703 },
    +
    182 { 1046, 1078 }, { 7700, 7701 }, { 4288, 11552 },
    +
    183 { 4286, 11550 }, { 4285, 11549 }, { 1039, 1119 },
    +
    184 { 4283, 11547 }, { 1037, 1117 }, { 4282, 11546 },
    +
    185 { 4280, 11544 }, { 4278, 11542 }, { 4276, 11540 },
    +
    186 { 4274, 11538 }, { 42572, 42573 }, { 42570, 42571 },
    +
    187 { 8185, 8057 }, { 42564, 42565 }, { 42562, 42563 },
    +
    188 { 42560, 42561 }, { 11506, 11507 }, { 8171, 8059 },
    +
    189 { 68759, 68823 }, { 42832, 42833 }, { 406, 617 },
    +
    190 { 8169, 8161 }, { 68757, 68821 }, { 42830, 42831 },
    +
    191 { 404, 611 }, { 68753, 68817 }, { 42826, 42827 },
    +
    192 { 400, 603 }, { 11490, 11491 }, { 914, 946 },
    +
    193 { 904, 941 }, { 902, 940 }, { 7993, 7985 },
    +
    194 { 922, 954 }, { 920, 952 }, { 918, 950 },
    +
    195 { 886, 887 }, { 11458, 11459 }, { 882, 883 },
    +
    196 { 11456, 11457 }, { 11452, 11453 }, { 1052, 1084 },
    +
    197 { 8123, 8049 }, { 11450, 11451 }, { 1050, 1082 },
    +
    198 { 8121, 8113 }, { 11448, 11449 }, { 11446, 11447 },
    +
    199 { 895, 1011 }, { 11444, 11445 }, { 11442, 11443 },
    +
    200 { 11440, 11441 }, { 11432, 11433 }, { 125200, 125234 },
    +
    201 { 7350, 4342 }, { 68765, 68829 }, { 412, 623 },
    +
    202 { 42838, 42839 }, { 66570, 66610 }, { 574, 11366 },
    +
    203 { 125198, 125232 }, { 7348, 4340 }, { 68763, 68827 },
    +
    204 { 42836, 42837 }, { 125196, 125230 }, { 7346, 4338 },
    +
    205 { 68761, 68825 }, { 408, 409 }, { 42834, 42835 },
    +
    206 { 66566, 66606 }, { 570, 11365 }, { 1302, 1303 },
    +
    207 { 193, 225 }, { 93778, 93810 }, { 11283, 11331 },
    +
    208 { 11436, 11437 }, { 219, 251 }, { 11309, 11357 },
    +
    209 { 990, 991 }, { 1360, 1408 }, { 125199, 125233 },
    +
    210 { 7349, 4341 }, { 278, 279 }, { 8041, 8033 },
    +
    211 { 11434, 11435 }, { 988, 989 }, { 68756, 68820 },
    +
    212 { 403, 608 }, { 1068, 1100 }, { 8139, 8053 },
    +
    213 { 11466, 11467 }, { 917, 949 }, { 1358, 1406 },
    +
    214 { 66937, 66976 }, { 8012, 8004 }, { 125197, 125231 },
    +
    215 { 7347, 4339 }, { 276, 277 }, { 1298, 1299 },
    +
    216 { 93774, 93806 }, { 11279, 11327 }, { 908, 972 },
    +
    217 { 7979, 7971 }, { 11306, 11354 }, { 4260, 11524 },
    +
    218 { 66929, 66968 }, { 933, 965 }, { 473, 474 },
    +
    219 { 1296, 1297 }, { 7950, 7942 }, { 93772, 93804 },
    +
    220 { 11277, 11325 }, { 11304, 11352 }, { 11430, 11431 },
    +
    221 { 984, 985 }, { 68752, 68816 }, { 399, 601 },
    +
    222 { 11462, 11463 }, { 913, 945 }, { 1354, 1402 },
    +
    223 { 1294, 1295 }, { 7948, 7940 }, { 93770, 93802 },
    +
    224 { 11275, 11323 }, { 11302, 11350 }, { 4256, 11520 },
    +
    225 { 929, 961 }, { 469, 470 }, { 11428, 11429 },
    +
    226 { 1352, 1400 }, { 1292, 1293 }, { 7946, 7938 },
    +
    227 { 93768, 93800 }, { 11273, 11321 }, { 11300, 11348 },
    +
    228 { 11426, 11427 }, { 66932, 66971 }, { 936, 968 },
    +
    229 { 4263, 11527 }, { 68748, 68812 }, { 5109, 5117 },
    +
    230 { 395, 396 }, { 1350, 1398 }, { 66956, 66995 },
    +
    231 { 8031, 8023 }, { 1290, 1291 }, { 7944, 7936 },
    +
    232 { 93766, 93798 }, { 11271, 11319 }, { 11298, 11346 },
    +
    233 { 11424, 11425 }, { 66930, 66969 }, { 934, 966 },
    +
    234 { 4261, 11525 }, { 68746, 68810 }, { 5107, 5115 },
    +
    235 { 393, 598 }, { 1348, 1396 }, { 66954, 66993 },
    +
    236 { 8029, 8021 }, { 1288, 1289 }, { 93764, 93796 },
    +
    237 { 11269, 11317 }, { 93791, 93823 }, { 11296, 11344 },
    +
    238 { 11422, 11423 }, { 68744, 68808 }, { 5105, 5113 },
    +
    239 { 391, 392 }, { 8154, 8054 }, { 11454, 11455 },
    +
    240 { 7976, 7968 }, { 905, 942 }, { 1346, 1394 },
    +
    241 { 66952, 66991 }, { 8027, 8019 }, { 1286, 1287 },
    +
    242 { 93762, 93794 }, { 11267, 11315 }, { 93789, 93821 },
    +
    243 { 11294, 11342 }, { 42576, 42577 }, { 1300, 1301 },
    +
    244 { 93776, 93808 }, { 11281, 11329 }, { 11308, 11356 },
    +
    245 { 4262, 11526 }, { 66931, 66970 }, { 935, 967 },
    +
    246 { 475, 476 }, { 11420, 11421 }, { 1344, 1392 },
    +
    247 { 66950, 66989 }, { 8025, 8017 }, { 125202, 125236 },
    +
    248 { 7352, 4344 }, { 68767, 68831 }, { 42840, 42841 },
    +
    249 { 1274, 1275 }, { 7928, 7929 }, { 192, 224 },
    +
    250 { 93777, 93809 }, { 11282, 11330 }, { 437, 438 },
    +
    251 { 125193, 125227 }, { 272, 273 }, { 7343, 4335 },
    +
    252 { 11400, 11401 }, { 125204, 125238 }, { 7354, 4346 },
    +
    253 { 68769, 68833 }, { 416, 417 }, { 42842, 42843 },
    +
    254 { 1276, 1277 }, { 7930, 7931 }, { 194, 226 },
    +
    255 { 93779, 93811 }, { 11284, 11332 }, { 195, 227 },
    +
    256 { 1304, 1305 }, { 93780, 93812 }, { 11285, 11333 },
    +
    257 { 42594, 42595 }, { 66576, 66616 }, { 580, 649 },
    +
    258 { 1278, 1279 }, { 7932, 7933 }, { 196, 228 },
    +
    259 { 93781, 93813 }, { 11286, 11334 }, { 1338, 1386 },
    +
    260 { 125208, 125242 }, { 7358, 4350 }, { 68773, 68837 },
    +
    261 { 420, 421 }, { 42846, 42847 }, { 66578, 66618 },
    +
    262 { 582, 583 }, { 1280, 1281 }, { 7934, 7935 },
    +
    263 { 7961, 7953 }, { 93783, 93815 }, { 11288, 11336 },
    +
    264 { 7997, 7989 }, { 926, 958 }, { 1340, 1388 },
    +
    265 { 66580, 66620 }, { 584, 585 }, { 1282, 1283 },
    +
    266 { 7963, 7955 }, { 93785, 93817 }, { 11290, 11338 },
    +
    267 { 42600, 42601 }, { 1342, 1390 }, { 1284, 1285 },
    +
    268 { 93760, 93792 }, { 11265, 11313 }, { 7965, 7957 },
    +
    269 { 93787, 93819 }, { 11292, 11340 }, { 11438, 11439 },
    +
    270 { 4265, 11529 }, { 66934, 66973 }, { 8009, 8001 },
    +
    271 { 938, 970 }, { 992, 993 }, { 65314, 65346 },
    +
    272 { 68760, 68824 }, { 407, 616 }, { 8170, 8058 },
    +
    273 { 7992, 7984 }, { 921, 953 }, { 7313, 4305 },
    +
    274 { 381, 382 }, { 5095, 43959 }, { 1362, 1410 },
    +
    275 { 125201, 125235 }, { 7351, 4343 }, { 280, 281 },
    +
    276 { 8043, 8035 }, { 68754, 68818 }, { 401, 402 },
    +
    277 { 1066, 1098 }, { 8137, 8051 }, { 11464, 11465 },
    +
    278 { 915, 947 }, { 1356, 1404 }, { 66935, 66974 },
    +
    279 { 939, 971 }, { 8010, 8002 }, { 125195, 125229 },
    +
    280 { 7345, 4337 }, { 274, 275 }, { 7315, 4307 },
    +
    281 { 68736, 68800 }, { 5097, 43961 }, { 1364, 1412 },
    +
    282 { 125203, 125237 }, { 7353, 4345 }, { 282, 283 },
    +
    283 { 8045, 8037 }, { 7317, 4309 }, { 68738, 68802 },
    +
    284 { 385, 595 }, { 5099, 43963 }, { 1366, 1414 },
    +
    285 { 125205, 125239 }, { 284, 285 }, { 8047, 8039 },
    +
    286 { 11374, 625 }, { 68766, 68830 }, { 413, 626 },
    +
    287 { 68739, 68803 }, { 42812, 42813 }, { 5100, 43964 },
    +
    288 { 386, 387 }, { 11476, 11477 }, { 7998, 7990 },
    +
    289 { 927, 959 }, { 7319, 4311 }, { 68740, 68804 },
    +
    290 { 5101, 43965 }, { 125207, 125241 }, { 7357, 4349 },
    +
    291 { 286, 287 }, { 11376, 594 }, { 68768, 68832 },
    +
    292 { 415, 629 }, { 68741, 68805 }, { 42814, 42815 },
    +
    293 { 5102, 43966 }, { 388, 389 }, { 11478, 11479 },
    +
    294 { 7321, 4313 }, { 68742, 68806 }, { 5103, 43967 },
    +
    295 { 125209, 125243 }, { 7359, 4351 }, { 288, 289 },
    +
    296 { 11378, 11379 }, { 125211, 125245 }, { 290, 291 },
    +
    297 { 125213, 125247 }, { 292, 293 }, { 125215, 125249 },
    +
    298 { 294, 295 }, { 68776, 68840 }, { 423, 424 },
    +
    299 { 8186, 8060 }, { 66933, 66972 }, { 8008, 8000 },
    +
    300 { 937, 969 }, { 4264, 11528 }, { 258, 259 },
    +
    301 { 7329, 4321 }, { 125217, 125251 }, { 296, 297 },
    +
    302 { 68778, 68842 }, { 425, 643 }, { 68751, 68815 },
    +
    303 { 42824, 42825 }, { 398, 477 }, { 11488, 11489 },
    +
    304 { 260, 261 }, { 7331, 4323 }, { 298, 299 },
    +
    305 { 262, 263 }, { 7333, 4325 }, { 300, 301 },
    +
    306 { 11390, 575 }, { 125185, 125219 }, { 264, 265 },
    +
    307 { 7335, 4327 }, { 302, 303 }, { 11392, 11393 },
    +
    308 { 68784, 68848 }, { 431, 432 }, { 125187, 125221 },
    +
    309 { 266, 267 }, { 7337, 4329 }, { 304, 105 },
    +
    310 { 11394, 11395 }, { 68786, 68850 }, { 433, 650 },
    +
    311 { 125189, 125223 }, { 268, 269 }, { 7339, 4331 },
    +
    312 { 306, 307 }, { 11396, 11397 }, { 435, 436 },
    +
    313 { 125191, 125225 }, { 270, 271 }, { 7341, 4333 },
    +
    314 { 308, 309 }, { 11398, 11399 }, { 439, 658 },
    +
    315 { 440, 441 }, { 42582, 42583 }, { 444, 445 },
    +
    316 { 42586, 42587 }, { 994, 995 }, { 65316, 65348 },
    +
    317 { 455, 457 }, { 996, 997 }, { 65318, 65350 },
    +
    318 { 998, 999 }, { 65320, 65352 }, { 4273, 11537 },
    +
    319 { 1027, 1107 }, { 202, 234 }, { 42628, 42629 },
    +
    320 { 1000, 1001 }, { 65322, 65354 }, { 4275, 11539 },
    +
    321 { 1029, 1109 }, { 204, 236 }, { 42630, 42631 },
    +
    322 { 461, 462 }, { 1002, 1003 }, { 65324, 65356 },
    +
    323 { 4277, 11541 }, { 1031, 1111 }, { 206, 238 },
    +
    324 { 42632, 42633 }, { 463, 464 }, { 1004, 1005 },
    +
    325 { 65326, 65358 }, { 4279, 11543 }, { 1033, 1113 },
    +
    326 { 208, 240 }, { 42634, 42635 }, { 1006, 1007 },
    +
    327 { 65328, 65360 }, { 4281, 11545 }, { 1035, 1115 },
    +
    328 { 210, 242 }, { 42636, 42637 }, { 4284, 11548 },
    +
    329 { 4287, 11551 }, { 1041, 1073 }, { 216, 248 },
    +
    330 { 42642, 42643 }, { 11360, 11361 }, { 4289, 11553 },
    +
    331 { 1043, 1075 }, { 218, 250 }, { 42644, 42645 },
    +
    332 { 4290, 11554 }, { 1044, 1076 }, { 7698, 7699 },
    +
    333 { 1017, 1010 }, { 11362, 619 }, { 4291, 11555 },
    +
    334 { 1045, 1077 }, { 220, 252 }, { 42646, 42647 },
    +
    335 { 1018, 1019 }, { 11364, 637 }, { 4293, 11557 },
    +
    336 { 1047, 1079 }, { 222, 254 }, { 42648, 42649 },
    +
    337 { 4295, 11559 }, { 42650, 42651 }, { 4268, 11532 },
    +
    338 { 1022, 892 }, { 4270, 11534 }, { 1024, 1104 },
    +
    339 { 1053, 1085 }, { 4272, 11536 }, { 4301, 11565 },
    +
    340 { 1055, 1087 }, { 1057, 1089 }, { 1059, 1091 },
    +
    341 { 1061, 1093 }, { 1063, 1095 }, { 526, 527 },
    +
    342 { 9398, 9424 }, { 1069, 1101 }, { 528, 529 },
    +
    343 { 9400, 9426 }, { 1071, 1103 }, { 530, 531 },
    +
    344 { 9402, 9428 }, { 532, 533 }, { 9404, 9430 },
    +
    345 { 9406, 9432 }, { 536, 537 }, { 9408, 9434 },
    +
    346 { 538, 539 }, { 9410, 9436 }, { 9412, 9438 },
    +
    347 { 9414, 9440 }, { 544, 414 }, { 9416, 9442 },
    +
    348 { 546, 547 }, { 9418, 9444 }, { 548, 549 },
    +
    349 { 9420, 9446 }, { 550, 551 }, { 9422, 9448 },
    +
    350 { 552, 553 }, { 554, 555 }, { 556, 557 },
    +
    351 { 558, 559 }, { 560, 561 }, { 562, 563 },
    +
    352 { 66569, 66609 }, { 573, 410 }, { 66573, 66613 },
    +
    353 { 577, 578 }, { 1120, 1121 }, { 7774, 7775 },
    +
    354 { 66575, 66615 }, { 579, 384 }, { 1122, 1123 },
    +
    355 { 7776, 7777 }, { 66577, 66617 }, { 581, 652 },
    +
    356 { 66582, 66622 }, { 586, 587 }, { 66584, 66624 },
    +
    357 { 588, 589 }, { 310, 311 }, { 5024, 43888 },
    +
    358 { 66586, 66626 }, { 590, 591 }, { 5026, 43890 },
    +
    359 { 7977, 7969 }, { 906, 943 }, { 7981, 7973 },
    +
    360 { 910, 973 }, { 11460, 11461 }, { 7982, 7974 },
    +
    361 { 911, 974 }, { 916, 948 }, { 919, 951 },
    +
    362 { 7994, 7986 }, { 923, 955 }, { 7995, 7987 },
    +
    363 { 924, 956 }, { 7996, 7988 }, { 925, 957 },
    +
    364 { 7999, 7991 }, { 928, 960 }, { 68743, 68807 },
    +
    365 { 42816, 42817 }, { 5104, 5112 }, { 390, 596 },
    +
    366 { 8153, 8145 }, { 11480, 11481 }, { 931, 963 },
    +
    367 { 4258, 11522 }, { 68747, 68811 }, { 42820, 42821 },
    +
    368 { 5108, 5116 }, { 394, 599 }, { 11484, 11485 },
    +
    369 { 986, 987 }, { 471, 472 }, { 1012, 952 },
    +
    370 { 1015, 1016 }, { 4267, 11531 }, { 1021, 891 },
    +
    371 { 4269, 11533 }, { 198, 230 }, { 42624, 42625 },
    +
    372 { 1023, 893 }, { 4271, 11535 }, { 200, 232 },
    +
    373 { 42626, 42627 }, { 1025, 1105 }, { 7726, 7727 },
    +
    374 { 7728, 7729 }, { 7730, 7731 }, { 7732, 7733 },
    +
    375 { 7734, 7735 }, { 7736, 7737 }, { 7738, 7739 },
    +
    376 { 7740, 7741 }, { 7742, 7743 }, { 7744, 7745 },
    +
    377 { 7746, 7747 }, { 7748, 7749 }, { 7750, 7751 },
    +
    378 { 7752, 7753 }, { 7754, 7755 }, { 7756, 7757 },
    +
    379 { 7758, 7759 }, { 7760, 7761 }, { 7762, 7763 },
    +
    380 { 7764, 7765 }, { 7766, 7767 }, { 7768, 7769 },
    +
    381 { 7770, 7771 }, { 7772, 7773 }, { 7808, 7809 },
    +
    382 { 7810, 7811 }, { 66737, 66777 }, { 7812, 7813 },
    +
    383 { 66739, 66779 }, { 7814, 7815 }, { 7872, 7873 },
    +
    384 { 7874, 7875 }, { 7876, 7877 }, { 7878, 7879 },
    +
    385 { 7880, 7881 }, { 7882, 7883 }, { 7884, 7885 },
    +
    386 { 7945, 7937 }, { 93767, 93799 }, { 11272, 11320 },
    +
    387 { 7947, 7939 }, { 93769, 93801 }, { 11274, 11322 },
    +
    388 { 7949, 7941 }, { 93771, 93803 }, { 11276, 11324 },
    +
    389 { 880, 881 }, { 7951, 7943 }, { 93773, 93805 },
    +
    390 { 11278, 11326 }, { 66965, 67004 }, { 8040, 8032 },
    +
    391 { 11367, 11368 }, { 8042, 8034 }, { 11369, 11370 },
    +
    392 { 8044, 8036 }, { 11371, 11372 }, { 975, 983 },
    +
    393 { 8046, 8038 }, { 11373, 593 }, { 1049, 1081 },
    +
    394 { 8120, 8112 }, { 1051, 1083 }, { 8122, 8048 },
    +
    395 { 1065, 1097 }, { 8136, 8050 }, { 1067, 1099 },
    +
    396 { 8138, 8052 }, { 8152, 8144 }, { 8155, 8055 },
    +
    397 { 11482, 11483 }, { 8168, 8160 }, { 8172, 8165 },
    +
    398 { 11499, 11500 }, { 8184, 8056 }, { 8187, 8061 },
    +
    399 { 42566, 42567 }, { 8486, 969 }, { 8490, 107 },
    +
    400 { 8491, 229 }, { 8498, 8526 }, { 42877, 7545 },
    +
    401 { 8544, 8560 }, { 497, 499 }, { 42923, 604 },
    +
    402 { 8545, 8561 }, { 42924, 609 }, { 8546, 8562 },
    +
    403 { 42925, 620 }, { 8547, 8563 }, { 500, 501 },
    +
    404 { 42926, 618 }, { 8548, 8564 }, { 8549, 8565 },
    +
    405 { 502, 405 }, { 42928, 670 }, { 8550, 8566 },
    +
    406 { 503, 447 }, { 42929, 647 }, { 8551, 8567 },
    +
    407 { 504, 505 }, { 42930, 669 }, { 8552, 8568 },
    +
    408 { 42931, 43859 }, { 8553, 8569 }, { 506, 507 },
    +
    409 { 42932, 42933 }, { 8554, 8570 }, { 8555, 8571 },
    +
    410 { 508, 509 }, { 42934, 42935 }, { 8556, 8572 },
    +
    411 { 8557, 8573 }, { 510, 511 }, { 42936, 42937 },
    +
    412 { 8558, 8574 }, { 8559, 8575 }, { 512, 513 },
    +
    413 { 42938, 42939 }, { 8579, 8580 }, { 9399, 9425 },
    +
    414 { 9401, 9427 }, { 9403, 9429 }, { 9405, 9431 },
    +
    415 { 9407, 9433 }, { 9409, 9435 }, { 9411, 9437 },
    +
    416 { 9413, 9439 }, { 9415, 9441 }, { 9417, 9443 },
    +
    417 { 9419, 9445 }, { 9421, 9447 }, { 9423, 9449 },
    +
    418 { 11264, 11312 }, { 93761, 93793 }, { 11266, 11314 },
    +
    419 { 93763, 93795 }, { 11268, 11316 }, { 93765, 93797 },
    +
    420 { 11270, 11318 }, { 93775, 93807 }, { 11280, 11328 },
    +
    421 { 4292, 11556 }, { 11363, 7549 }, { 11375, 592 },
    +
    422 { 11381, 11382 }, { 11391, 576 }, { 11402, 11403 },
    +
    423 { 11404, 11405 }, { 11406, 11407 }, { 11408, 11409 },
    +
    424 { 11410, 11411 }, { 11412, 11413 }, { 11414, 11415 },
    +
    425 { 11416, 11417 }, { 11418, 11419 }, { 11468, 11469 },
    +
    426 { 11470, 11471 }, { 11472, 11473 }, { 11474, 11475 },
    +
    427 { 11486, 11487 }, { 11501, 11502 }, { 42568, 42569 },
    +
    428 { 42574, 42575 }, { 42578, 42579 }, { 42580, 42581 },
    +
    429 { 42584, 42585 }, { 42588, 42589 }, { 42590, 42591 },
    +
    430 { 42592, 42593 }, { 42596, 42597 }, { 42598, 42599 },
    +
    431 { 42602, 42603 }, { 42604, 42605 }, { 212, 244 },
    +
    432 { 42638, 42639 }, { 214, 246 }, { 42640, 42641 },
    +
    433 { 366, 367 }, { 5080, 43944 }, { 42792, 42793 },
    +
    434 { 368, 369 }, { 5082, 43946 }, { 42794, 42795 },
    +
    435 { 374, 375 }, { 5088, 43952 }, { 370, 371 },
    +
    436 { 5084, 43948 }, { 42796, 42797 }, { 42802, 42803 },
    +
    437 { 376, 255 }, { 5090, 43954 }, { 372, 373 },
    +
    438 { 5086, 43950 }, { 42798, 42799 }, { 42804, 42805 },
    +
    439 { 5092, 43956 }, { 68771, 68835 }, { 418, 419 },
    +
    440 { 42844, 42845 }, { 68775, 68839 }, { 422, 640 },
    +
    441 { 42848, 42849 }, { 68777, 68841 }, { 42850, 42851 },
    +
    442 { 68779, 68843 }, { 42852, 42853 }, { 68781, 68845 },
    +
    443 { 428, 429 }, { 42854, 42855 }, { 68783, 68847 },
    +
    444 { 430, 648 }, { 42856, 42857 }, { 68785, 68849 },
    +
    445 { 42858, 42859 }, { 434, 651 }, { 42860, 42861 },
    +
    446 { 42862, 42863 }, { 42873, 42874 }, { 42875, 42876 },
    +
    447 { 452, 454 }, { 42878, 42879 }, { 42880, 42881 },
    +
    448 { 42882, 42883 }, { 458, 460 }, { 42884, 42885 },
    +
    449 { 42886, 42887 }, { 465, 466 }, { 42891, 42892 },
    +
    450 { 467, 468 }, { 42893, 613 }, { 42896, 42897 },
    +
    451 { 42898, 42899 }, { 42902, 42903 }, { 478, 479 },
    +
    452 { 42904, 42905 }, { 480, 481 }, { 42906, 42907 },
    +
    453 { 482, 483 }, { 42908, 42909 }, { 484, 485 },
    +
    454 { 42910, 42911 }, { 486, 487 }, { 42912, 42913 },
    +
    455 { 488, 489 }, { 42914, 42915 }, { 490, 491 },
    +
    456 { 42916, 42917 }, { 492, 493 }, { 42918, 42919 },
    +
    457 { 494, 495 }, { 42920, 42921 }, { 42922, 614 },
    +
    458 { 514, 515 }, { 42940, 42941 }, { 516, 517 },
    +
    459 { 42942, 42943 }, { 518, 519 }, { 42944, 42945 },
    +
    460 { 520, 521 }, { 42946, 42947 }, { 522, 523 },
    +
    461 { 42948, 42900 }, { 42949, 642 }, { 524, 525 },
    +
    462 { 42950, 7566 }, { 42951, 42952 }, { 42953, 42954 },
    +
    463 { 534, 535 }, { 42960, 42961 }, { 540, 541 },
    +
    464 { 42966, 42967 }, { 542, 543 }, { 42968, 42969 },
    +
    465 { 66567, 66607 }, { 571, 572 }, { 42997, 42998 },
    +
    466 { 5025, 43889 }, { 313, 314 }, { 5027, 43891 },
    +
    467 { 5028, 43892 }, { 315, 316 }, { 5029, 43893 },
    +
    468 { 5030, 43894 }, { 317, 318 }, { 5031, 43895 },
    +
    469 { 5032, 43896 }, { 319, 320 }, { 5033, 43897 },
    +
    470 { 5034, 43898 }, { 321, 322 }, { 5035, 43899 },
    +
    471 { 5036, 43900 }, { 323, 324 }, { 5037, 43901 },
    +
    472 { 5038, 43902 }, { 325, 326 }, { 5039, 43903 },
    +
    473 { 5040, 43904 }, { 327, 328 }, { 5041, 43905 },
    +
    474 { 5042, 43906 }, { 5043, 43907 }, { 330, 331 },
    +
    475 { 5044, 43908 }, { 5045, 43909 }, { 332, 333 },
    +
    476 { 5046, 43910 }, { 5047, 43911 }, { 334, 335 },
    +
    477 { 5048, 43912 }, { 5049, 43913 }, { 336, 337 },
    +
    478 { 5050, 43914 }, { 5051, 43915 }, { 338, 339 },
    +
    479 { 5052, 43916 }, { 5053, 43917 }, { 340, 341 },
    +
    480 { 5054, 43918 }, { 5055, 43919 }, { 342, 343 },
    +
    481 { 5056, 43920 }, { 5057, 43921 }, { 344, 345 },
    +
    482 { 5058, 43922 }, { 5059, 43923 }, { 346, 347 },
    +
    483 { 5060, 43924 }, { 5061, 43925 }, { 348, 349 },
    +
    484 { 5062, 43926 }, { 5063, 43927 }, { 350, 351 },
    +
    485 { 5064, 43928 }, { 5065, 43929 }, { 352, 353 },
    +
    486 { 5066, 43930 }, { 5067, 43931 }, { 354, 355 },
    +
    487 { 5068, 43932 }, { 5069, 43933 }, { 356, 357 },
    +
    488 { 5070, 43934 }, { 5071, 43935 }, { 358, 359 },
    +
    489 { 5072, 43936 }, { 5073, 43937 }, { 360, 361 },
    +
    490 { 42786, 42787 }, { 5074, 43938 }, { 5075, 43939 },
    +
    491 { 362, 363 }, { 42788, 42789 }, { 5076, 43940 },
    +
    492 { 5077, 43941 }, { 364, 365 }, { 42790, 42791 },
    +
    493 { 5078, 43942 }, { 5079, 43943 }, { 5081, 43945 },
    +
    494 { 5083, 43947 }, { 5085, 43949 }, { 5087, 43951 },
    +
    495 { 5089, 43953 }, { 377, 378 }, { 5091, 43955 },
    +
    496 { 379, 380 }, { 5093, 43957 }, { 65313, 65345 },
    +
    497 { 65315, 65347 }, { 65317, 65349 }, { 65319, 65351 },
    +
    498 { 65321, 65353 }, { 65323, 65355 }, { 65325, 65357 },
    +
    499 { 65327, 65359 }, { 65329, 65361 }, { 65330, 65362 },
    +
    500 }};
    +
    501
    +
    502 if (c >= 'A' && c <= 'Z')
    +
    503 {
    +
    504 return c + 32;
    +
    505 }
    +
    506
    +
    507 return utils::case_lookup(tolower_map, c);
    +
    508 }
    +
    509}
    Definition: _utils.hpp:34
    char32_t tolower(char32_t c)
    Definition: tolower.hpp:37
    diff --git a/toupper_8hpp.html b/toupper_8hpp.html index 208b1a3..4a9b510 100644 --- a/toupper_8hpp.html +++ b/toupper_8hpp.html @@ -2,8 +2,8 @@ - - + + peelo-unicode: include/peelo/unicode/ctype/toupper.hpp File Reference @@ -16,8 +16,8 @@
    - - + @@ -26,15 +26,16 @@
    +
    peelo-unicode
    - + +/* @license-end */ +

    Go to the source code of this file.

    - - + - + - +

    +

    Namespaces

     peelo
    namespace  peelo
     
     peelo::unicode
    namespace  peelo::unicode
     
     peelo::unicode::ctype
    namespace  peelo::unicode::ctype
     
    - @@ -70,7 +70,7 @@ diff --git a/toupper_8hpp_source.html b/toupper_8hpp_source.html index 55b1079..87ab99a 100644 --- a/toupper_8hpp_source.html +++ b/toupper_8hpp_source.html @@ -2,8 +2,8 @@ - - + +peelo-unicode: include/peelo/unicode/ctype/toupper.hpp Source File @@ -16,8 +16,8 @@

    +

    Functions

    char32_t peelo::unicode::ctype::toupper (char32_t c)
     
    - - + @@ -26,15 +26,16 @@
    +
    peelo-unicode
    - + +/* @license-end */ +
    -
    -
    toupper.hpp
    +
    toupper.hpp
    -Go to the documentation of this file.
    1 /*
    -
    2  * Copyright (c) 2018-2024, peelo.net
    -
    3  * All rights reserved.
    -
    4  *
    -
    5  * Redistribution and use in source and binary forms, with or without
    -
    6  * modification, are permitted provided that the following conditions are met:
    -
    7  *
    -
    8  * * Redistributions of source code must retain the above copyright notice,
    -
    9  * this list of conditions and the following disclaimer.
    -
    10  *
    -
    11  * * Redistributions in binary form must reproduce the above copyright notice,
    -
    12  * this list of conditions and the following disclaimer in the documentation
    -
    13  * and/or other materials provided with the distribution.
    -
    14  *
    -
    15  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
    -
    16  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
    -
    17  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
    -
    18  * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
    -
    19  * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
    -
    20  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
    -
    21  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
    -
    22  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
    -
    23  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
    -
    24  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
    -
    25  * POSSIBILITY OF SUCH DAMAGE.
    -
    26  */
    -
    27 #pragma once
    -
    28 
    - -
    30 
    -
    31 namespace peelo::unicode::ctype
    -
    32 {
    -
    36  inline char32_t
    -
    37  toupper(char32_t c)
    -
    38  {
    -
    39  static const std::unordered_map<char32_t, char32_t> toupper_map =
    -
    40  {{
    -
    41  { 125251, 125217 }, { 125250, 125216 }, { 125248, 125214 },
    -
    42  { 125246, 125212 }, { 125244, 125210 }, { 125242, 125208 },
    -
    43  { 125240, 125206 }, { 125238, 125204 }, { 125236, 125202 },
    -
    44  { 125234, 125200 }, { 125233, 125199 }, { 125231, 125197 },
    -
    45  { 125229, 125195 }, { 125227, 125193 }, { 125225, 125191 },
    -
    46  { 125223, 125189 }, { 125221, 125187 }, { 125219, 125185 },
    -
    47  { 93806, 93774 }, { 93805, 93773 }, { 93804, 93772 },
    -
    48  { 93803, 93771 }, { 93802, 93770 }, { 93801, 93769 },
    -
    49  { 93800, 93768 }, { 93799, 93767 }, { 93798, 93766 },
    -
    50  { 93797, 93765 }, { 93796, 93764 }, { 93795, 93763 },
    -
    51  { 93794, 93762 }, { 93793, 93761 }, { 93792, 93760 },
    -
    52  { 71902, 71870 }, { 71900, 71868 }, { 71898, 71866 },
    -
    53  { 71896, 71864 }, { 71894, 71862 }, { 71892, 71860 },
    -
    54  { 71890, 71858 }, { 71888, 71856 }, { 71886, 71854 },
    -
    55  { 71884, 71852 }, { 71882, 71850 }, { 71880, 71848 },
    -
    56  { 71878, 71846 }, { 71876, 71844 }, { 71874, 71842 },
    -
    57  { 71872, 71840 }, { 68850, 68786 }, { 68849, 68785 },
    -
    58  { 68847, 68783 }, { 68845, 68781 }, { 68843, 68779 },
    -
    59  { 68841, 68777 }, { 68839, 68775 }, { 68837, 68773 },
    -
    60  { 68835, 68771 }, { 68833, 68769 }, { 68828, 68764 },
    -
    61  { 68822, 68758 }, { 68820, 68756 }, { 68818, 68754 },
    -
    62  { 68816, 68752 }, { 68811, 68747 }, { 68809, 68745 },
    -
    63  { 68805, 68741 }, { 68804, 68740 }, { 68802, 68738 },
    -
    64  { 67004, 66965 }, { 67000, 66961 }, { 66998, 66959 },
    -
    65  { 66996, 66957 }, { 66992, 66953 }, { 66990, 66951 },
    -
    66  { 66988, 66949 }, { 66972, 66933 }, { 66971, 66932 },
    -
    67  { 66811, 66771 }, { 66809, 66769 }, { 66807, 66767 },
    -
    68  { 66805, 66765 }, { 66803, 66763 }, { 66801, 66761 },
    -
    69  { 66799, 66759 }, { 66797, 66757 }, { 66795, 66755 },
    -
    70  { 66793, 66753 }, { 66791, 66751 }, { 66789, 66749 },
    -
    71  { 66787, 66747 }, { 66785, 66745 }, { 66783, 66743 },
    -
    72  { 66781, 66741 }, { 66779, 66739 }, { 66777, 66737 },
    -
    73  { 66637, 66597 }, { 66635, 66595 }, { 66631, 66591 },
    -
    74  { 66629, 66589 }, { 66627, 66587 }, { 66623, 66583 },
    -
    75  { 66617, 66577 }, { 66611, 66571 }, { 66603, 66563 },
    -
    76  { 66602, 66562 }, { 66601, 66561 }, { 65370, 65338 },
    -
    77  { 65369, 65337 }, { 65368, 65336 }, { 65367, 65335 },
    -
    78  { 65366, 65334 }, { 65365, 65333 }, { 4317, 7325 },
    -
    79  { 4315, 7323 }, { 4313, 7321 }, { 4309, 7317 },
    -
    80  { 4307, 7315 }, { 4305, 7313 }, { 43931, 5067 },
    -
    81  { 11565, 4301 }, { 11559, 4295 }, { 11557, 4293 },
    -
    82  { 11555, 4291 }, { 11553, 4289 }, { 42605, 42604 },
    -
    83  { 11551, 4287 }, { 42603, 42602 }, { 11549, 4285 },
    -
    84  { 42601, 42600 }, { 11547, 4283 }, { 42599, 42598 },
    -
    85  { 11545, 4281 }, { 42597, 42596 }, { 11543, 4279 },
    -
    86  { 42595, 42594 }, { 11541, 4277 }, { 42593, 42592 },
    -
    87  { 11539, 4275 }, { 42591, 42590 }, { 11537, 4273 },
    -
    88  { 68800, 68736 }, { 447, 503 }, { 42589, 42588 },
    -
    89  { 11535, 4271 }, { 445, 444 }, { 42587, 42586 },
    -
    90  { 11533, 4269 }, { 42585, 42584 }, { 11531, 4267 },
    -
    91  { 441, 440 }, { 42583, 42582 }, { 11529, 4265 },
    -
    92  { 42581, 42580 }, { 11527, 4263 }, { 42579, 42578 },
    -
    93  { 11525, 4261 }, { 42577, 42576 }, { 11523, 4259 },
    -
    94  { 42575, 42574 }, { 11521, 4257 }, { 42573, 42572 },
    -
    95  { 1414, 1366 }, { 125226, 125192 }, { 305, 73 },
    -
    96  { 1412, 1364 }, { 125224, 125190 }, { 303, 302 },
    -
    97  { 1411, 1363 }, { 1409, 1361 }, { 1407, 1359 },
    -
    98  { 66986, 66947 }, { 8061, 8187 }, { 1405, 1357 },
    -
    99  { 66984, 66945 }, { 8059, 8171 }, { 1403, 1355 },
    -
    100  { 66982, 66943 }, { 8057, 8185 }, { 1401, 1353 },
    -
    101  { 66980, 66941 }, { 8055, 8155 }, { 4311, 7319 },
    -
    102  { 11382, 11381 }, { 1399, 1351 }, { 8053, 8139 },
    -
    103  { 1397, 1349 }, { 66976, 66937 }, { 8051, 8137 },
    -
    104  { 1395, 1347 }, { 66974, 66935 }, { 8049, 8123 },
    -
    105  { 1394, 1346 }, { 285, 284 }, { 66973, 66934 },
    -
    106  { 8048, 8122 }, { 1392, 1344 }, { 283, 282 },
    -
    107  { 1390, 1342 }, { 281, 280 }, { 1388, 1340 },
    -
    108  { 279, 278 }, { 1386, 1338 }, { 277, 276 },
    -
    109  { 1384, 1336 }, { 11365, 570 }, { 275, 274 },
    -
    110  { 1382, 1334 }, { 273, 272 }, { 1380, 1332 },
    -
    111  { 271, 270 }, { 11361, 11360 }, { 1378, 1330 },
    -
    112  { 269, 268 }, { 11359, 11311 }, { 1305, 1304 },
    -
    113  { 1303, 1302 }, { 7957, 7965 }, { 1301, 1300 },
    -
    114  { 7955, 7963 }, { 1299, 1298 }, { 7953, 7961 },
    -
    115  { 1297, 1296 }, { 1295, 1294 }, { 1293, 1292 },
    -
    116  { 1291, 1290 }, { 1289, 1288 }, { 7943, 7951 },
    -
    117  { 1287, 1286 }, { 7941, 7949 }, { 1285, 1284 },
    -
    118  { 7939, 7947 }, { 1283, 1282 }, { 7937, 7945 },
    -
    119  { 1281, 1280 }, { 7935, 7934 }, { 1279, 1278 },
    -
    120  { 7933, 7932 }, { 11556, 4292 }, { 1277, 1276 },
    -
    121  { 7931, 7930 }, { 11554, 4290 }, { 68817, 68753 },
    -
    122  { 464, 463 }, { 1275, 1274 }, { 7929, 7928 },
    -
    123  { 11552, 4288 }, { 68815, 68751 }, { 462, 461 },
    -
    124  { 1273, 1272 }, { 7927, 7926 }, { 11550, 4286 },
    -
    125  { 68813, 68749 }, { 460, 458 }, { 1271, 1270 },
    -
    126  { 7925, 7924 }, { 11548, 4284 }, { 1269, 1268 },
    -
    127  { 7923, 7922 }, { 11546, 4282 }, { 1267, 1266 },
    -
    128  { 7921, 7920 }, { 11544, 4280 }, { 68807, 68743 },
    -
    129  { 454, 452 }, { 1265, 1264 }, { 7919, 7918 },
    -
    130  { 11542, 4278 }, { 1263, 1262 }, { 7917, 7916 },
    -
    131  { 11540, 4276 }, { 1261, 1260 }, { 7915, 7914 },
    -
    132  { 11538, 4274 }, { 1259, 1258 }, { 7913, 7912 },
    -
    133  { 11536, 4272 }, { 1257, 1256 }, { 7911, 7910 },
    -
    134  { 11534, 4270 }, { 1255, 1254 }, { 7909, 7908 },
    -
    135  { 11532, 4268 }, { 1253, 1252 }, { 7907, 7906 },
    -
    136  { 11530, 4266 }, { 1251, 1250 }, { 7905, 7904 },
    -
    137  { 11528, 4264 }, { 438, 437 }, { 1249, 1248 },
    -
    138  { 7903, 7902 }, { 11526, 4262 }, { 436, 435 },
    -
    139  { 1247, 1246 }, { 7901, 7900 }, { 11524, 4260 },
    -
    140  { 1245, 1244 }, { 7899, 7898 }, { 11522, 4258 },
    -
    141  { 432, 431 }, { 1243, 1242 }, { 7897, 7896 },
    -
    142  { 11520, 4256 }, { 1241, 1240 }, { 7895, 7894 },
    -
    143  { 1239, 1238 }, { 7893, 7892 }, { 1237, 1236 },
    -
    144  { 7891, 7890 }, { 1235, 1234 }, { 7889, 7888 },
    -
    145  { 1233, 1232 }, { 7887, 7886 }, { 1230, 1229 },
    -
    146  { 1228, 1227 }, { 1226, 1225 }, { 1224, 1223 },
    -
    147  { 115, 7838 }, { 1222, 1221 }, { 1220, 1219 },
    -
    148  { 1218, 1217 }, { 1231, 1216 }, { 66810, 66770 },
    -
    149  { 7885, 7884 }, { 1215, 1214 }, { 66794, 66754 },
    -
    150  { 7869, 7868 }, { 1213, 1212 }, { 66792, 66752 },
    -
    151  { 7867, 7866 }, { 1211, 1210 }, { 66790, 66750 },
    -
    152  { 7865, 7864 }, { 1209, 1208 }, { 66788, 66748 },
    -
    153  { 7863, 7862 }, { 66624, 66584 }, { 7699, 7698 },
    -
    154  { 1207, 1206 }, { 66786, 66746 }, { 7861, 7860 },
    -
    155  { 1205, 1204 }, { 66784, 66744 }, { 7859, 7858 },
    -
    156  { 66620, 66580 }, { 7695, 7694 }, { 65363, 65331 },
    -
    157  { 1203, 1202 }, { 66782, 66742 }, { 7857, 7856 },
    -
    158  { 66618, 66578 }, { 7693, 7692 }, { 65361, 65329 },
    -
    159  { 1201, 1200 }, { 66780, 66740 }, { 7855, 7854 },
    -
    160  { 65357, 65325 }, { 1197, 1196 }, { 66776, 66736 },
    -
    161  { 7851, 7850 }, { 65355, 65323 }, { 1195, 1194 },
    -
    162  { 7849, 7848 }, { 71895, 71863 }, { 1185, 1184 },
    -
    163  { 71893, 71861 }, { 1183, 1182 }, { 71889, 71857 },
    -
    164  { 1179, 1178 }, { 71887, 71855 }, { 1177, 1176 },
    -
    165  { 71885, 71853 }, { 1175, 1174 }, { 7829, 7828 },
    -
    166  { 71883, 71851 }, { 1173, 1172 }, { 7827, 7826 },
    -
    167  { 71881, 71849 }, { 1171, 1170 }, { 7825, 7824 },
    -
    168  { 71879, 71847 }, { 1169, 1168 }, { 7823, 7822 },
    -
    169  { 71875, 71843 }, { 1165, 1164 }, { 7819, 7818 },
    -
    170  { 71873, 71841 }, { 1163, 1162 }, { 7817, 7816 },
    -
    171  { 1153, 1152 }, { 7807, 7806 }, { 1151, 1150 },
    -
    172  { 7805, 7804 }, { 1147, 1146 }, { 7801, 7800 },
    -
    173  { 1145, 1144 }, { 7799, 7798 }, { 1143, 1142 },
    -
    174  { 7797, 7796 }, { 1141, 1140 }, { 7795, 7794 },
    -
    175  { 1135, 1134 }, { 7789, 7788 }, { 1133, 1132 },
    -
    176  { 7787, 7786 }, { 1131, 1130 }, { 7785, 7784 },
    -
    177  { 1129, 1128 }, { 7783, 7782 }, { 1127, 1126 },
    -
    178  { 7781, 7780 }, { 1125, 1124 }, { 7779, 7778 },
    -
    179  { 1123, 1122 }, { 7777, 7776 }, { 1121, 1120 },
    -
    180  { 7775, 7774 }, { 4349, 7357 }, { 1103, 1071 },
    -
    181  { 7757, 7756 }, { 1101, 1069 }, { 7755, 7754 },
    -
    182  { 4345, 7353 }, { 1099, 1067 }, { 7753, 7752 },
    -
    183  { 4343, 7351 }, { 1016, 1015 }, { 1097, 1065 },
    -
    184  { 7751, 7750 }, { 4341, 7349 }, { 1095, 1063 },
    -
    185  { 7749, 7748 }, { 4339, 7347 }, { 1093, 1061 },
    -
    186  { 7747, 7746 }, { 4337, 7345 }, { 1010, 1017 },
    -
    187  { 1091, 1059 }, { 7745, 7744 }, { 4335, 7343 },
    -
    188  { 7743, 7742 }, { 4331, 7339 }, { 1085, 1053 },
    -
    189  { 7739, 7738 }, { 4329, 7337 }, { 1083, 1051 },
    -
    190  { 7737, 7736 }, { 4327, 7335 }, { 1081, 1049 },
    -
    191  { 7735, 7734 }, { 4325, 7333 }, { 1079, 1047 },
    -
    192  { 7733, 7732 }, { 4323, 7331 }, { 1077, 1045 },
    -
    193  { 7731, 7730 }, { 4321, 7329 }, { 1075, 1043 },
    -
    194  { 4319, 7327 }, { 7727, 7726 }, { 1118, 1038 },
    -
    195  { 1117, 1037 }, { 7771, 7770 }, { 1116, 1036 },
    -
    196  { 1115, 1035 }, { 7769, 7768 }, { 1114, 1034 },
    -
    197  { 1112, 1032 }, { 1111, 1031 }, { 7765, 7764 },
    -
    198  { 1110, 1030 }, { 1109, 1029 }, { 7763, 7762 },
    -
    199  { 1108, 1028 }, { 651, 434 }, { 43902, 5038 },
    -
    200  { 42563, 42562 }, { 66987, 66948 }, { 991, 990 },
    -
    201  { 4318, 7326 }, { 1139, 1138 }, { 7793, 7792 },
    -
    202  { 598, 393 }, { 341, 340 }, { 11431, 11430 },
    -
    203  { 1137, 1136 }, { 7791, 7790 }, { 596, 390 },
    -
    204  { 339, 338 }, { 11429, 11428 }, { 66639, 66599 },
    -
    205  { 643, 425 }, { 43894, 5030 }, { 11479, 11478 },
    -
    206  { 11477, 11476 }, { 382, 381 }, { 255, 376 },
    -
    207  { 11345, 11297 }, { 603, 400 }, { 349, 348 },
    -
    208  { 8112, 8120 }, { 11439, 11438 }, { 601, 399 },
    -
    209  { 347, 346 }, { 11437, 11436 }, { 599, 394 },
    -
    210  { 345, 344 }, { 11435, 11434 }, { 343, 342 },
    -
    211  { 11433, 11432 }, { 595, 385 }, { 337, 336 },
    -
    212  { 11427, 11426 }, { 335, 334 }, { 11425, 11424 },
    -
    213  { 1106, 1026 }, { 333, 332 }, { 11423, 11422 },
    -
    214  { 1413, 1365 }, { 331, 330 }, { 1410, 1362 },
    -
    215  { 125222, 125188 }, { 301, 300 }, { 125249, 125215 },
    -
    216  { 328, 327 }, { 585, 584 }, { 1408, 1360 },
    -
    217  { 125220, 125186 }, { 299, 298 }, { 125247, 125213 },
    -
    218  { 326, 325 }, { 583, 582 }, { 1406, 1358 },
    -
    219  { 125218, 125184 }, { 297, 296 }, { 125245, 125211 },
    -
    220  { 324, 323 }, { 1404, 1356 }, { 295, 294 },
    -
    221  { 125243, 125209 }, { 322, 321 }, { 1402, 1354 },
    -
    222  { 293, 292 }, { 125241, 125207 }, { 320, 319 },
    -
    223  { 1400, 1352 }, { 291, 290 }, { 125239, 125205 },
    -
    224  { 318, 317 }, { 1398, 1350 }, { 289, 288 },
    -
    225  { 66977, 66938 }, { 8052, 8138 }, { 125237, 125203 },
    -
    226  { 316, 315 }, { 1396, 1348 }, { 287, 286 },
    -
    227  { 66975, 66936 }, { 8050, 8136 }, { 125235, 125201 },
    -
    228  { 314, 313 }, { 67001, 66962 }, { 1005, 1004 },
    -
    229  { 1086, 1054 }, { 252, 220 }, { 11342, 11294 },
    -
    230  { 1393, 1345 }, { 125232, 125198 }, { 311, 310 },
    -
    231  { 378, 377 }, { 251, 219 }, { 11341, 11293 },
    -
    232  { 250, 218 }, { 11340, 11292 }, { 1391, 1343 },
    -
    233  { 11372, 11371 }, { 125230, 125196 }, { 309, 308 },
    -
    234  { 249, 217 }, { 11339, 11291 }, { 66625, 66585 },
    -
    235  { 629, 415 }, { 375, 374 }, { 11465, 11464 },
    -
    236  { 42823, 42822 }, { 43932, 5068 }, { 248, 216 },
    -
    237  { 11338, 11290 }, { 505, 504 }, { 42647, 42646 },
    -
    238  { 1019, 1018 }, { 1389, 1341 }, { 11370, 11369 },
    -
    239  { 125228, 125194 }, { 307, 306 }, { 11463, 11462 },
    -
    240  { 887, 886 }, { 42821, 42820 }, { 246, 214 },
    -
    241  { 11336, 11288 }, { 1387, 1339 }, { 11368, 11367 },
    -
    242  { 71877, 71845 }, { 1167, 1166 }, { 7821, 7820 },
    -
    243  { 66622, 66582 }, { 7697, 7696 }, { 626, 413 },
    -
    244  { 11459, 11458 }, { 5114, 5106 }, { 1327, 1326 },
    -
    245  { 245, 213 }, { 11335, 11287 }, { 11461, 11460 },
    -
    246  { 42819, 42818 }, { 244, 212 }, { 11334, 11286 },
    -
    247  { 501, 500 }, { 42643, 42642 }, { 1385, 1337 },
    -
    248  { 11366, 574 }, { 5112, 5104 }, { 1325, 1324 },
    -
    249  { 243, 211 }, { 11333, 11285 }, { 66619, 66579 },
    -
    250  { 623, 412 }, { 242, 210 }, { 8005, 8013 },
    -
    251  { 11332, 11284 }, { 499, 497 }, { 42641, 42640 },
    -
    252  { 1383, 1335 }, { 1323, 1322 }, { 241, 209 },
    -
    253  { 8004, 8012 }, { 11331, 11283 }, { 42793, 42792 },
    -
    254  { 367, 366 }, { 11457, 11456 }, { 240, 208 },
    -
    255  { 8003, 8011 }, { 11330, 11282 }, { 1381, 1333 },
    -
    256  { 1321, 1320 }, { 7975, 7983 }, { 239, 207 },
    -
    257  { 8002, 8010 }, { 11329, 11281 }, { 11455, 11454 },
    -
    258  { 238, 206 }, { 8001, 8009 }, { 93823, 93791 },
    -
    259  { 11328, 11280 }, { 42637, 42636 }, { 1379, 1331 },
    -
    260  { 8033, 8041 }, { 1319, 1318 }, { 7973, 7981 },
    -
    261  { 237, 205 }, { 8000, 8008 }, { 93822, 93790 },
    -
    262  { 11327, 11279 }, { 66613, 66573 }, { 617, 406 },
    -
    263  { 11453, 11452 }, { 236, 204 }, { 93821, 93789 },
    -
    264  { 11326, 11278 }, { 42635, 42634 }, { 1377, 1329 },
    -
    265  { 11358, 11310 }, { 1149, 1148 }, { 7803, 7802 },
    -
    266  { 66604, 66564 }, { 608, 403 }, { 43859, 42931 },
    -
    267  { 892, 1022 }, { 351, 350 }, { 11441, 11440 },
    -
    268  { 1309, 1308 }, { 227, 195 }, { 7990, 7998 },
    -
    269  { 93812, 93780 }, { 11317, 11269 }, { 224, 192 },
    -
    270  { 7987, 7995 }, { 93809, 93777 }, { 11314, 11266 },
    -
    271  { 1307, 1306 }, { 42651, 42650 }, { 225, 193 },
    -
    272  { 7988, 7996 }, { 93810, 93778 }, { 11315, 11267 },
    -
    273  { 353, 352 }, { 11443, 11442 }, { 226, 194 },
    -
    274  { 7989, 7997 }, { 93811, 93779 }, { 11316, 11268 },
    -
    275  { 42625, 42624 }, { 66993, 66954 }, { 997, 996 },
    -
    276  { 11395, 11394 }, { 4324, 7332 }, { 355, 354 },
    -
    277  { 11445, 11444 }, { 228, 196 }, { 7991, 7999 },
    -
    278  { 93813, 93781 }, { 11318, 11270 }, { 42627, 42626 },
    -
    279  { 66995, 66956 }, { 999, 998 }, { 11397, 11396 },
    -
    280  { 4326, 7334 }, { 1311, 1310 }, { 229, 8491 },
    -
    281  { 93814, 93782 }, { 11319, 11271 }, { 66607, 66567 },
    -
    282  { 611, 404 }, { 357, 356 }, { 11447, 11446 },
    -
    283  { 230, 198 }, { 93815, 93783 }, { 11320, 11272 },
    -
    284  { 42629, 42628 }, { 1313, 1312 }, { 231, 199 },
    -
    285  { 93816, 93784 }, { 11321, 11273 }, { 1315, 1314 },
    -
    286  { 7969, 7977 }, { 233, 201 }, { 93818, 93786 },
    -
    287  { 11323, 11275 }, { 11451, 11450 }, { 234, 202 },
    -
    288  { 93819, 93787 }, { 11324, 11276 }, { 42633, 42632 },
    -
    289  { 66612, 66572 }, { 7687, 7686 }, { 616, 407 },
    -
    290  { 359, 358 }, { 11449, 11448 }, { 1317, 1316 },
    -
    291  { 7971, 7979 }, { 235, 203 }, { 93820, 93788 },
    -
    292  { 11325, 11277 }, { 380, 379 }, { 253, 221 },
    -
    293  { 11343, 11295 }, { 254, 222 }, { 11344, 11296 },
    -
    294  { 257, 256 }, { 11347, 11299 }, { 71891, 71859 },
    -
    295  { 1181, 1180 }, { 43891, 5027 }, { 259, 258 },
    -
    296  { 11349, 11301 }, { 261, 260 }, { 11351, 11303 },
    -
    297  { 263, 262 }, { 11353, 11305 }, { 392, 391 },
    -
    298  { 649, 580 }, { 365, 364 }, { 42791, 42790 },
    -
    299  { 43900, 5036 }, { 265, 264 }, { 11355, 11307 },
    -
    300  { 66606, 66566 }, { 7681, 7680 }, { 65349, 65317 },
    -
    301  { 71899, 71867 }, { 1189, 1188 }, { 7843, 7842 },
    -
    302  { 43899, 5035 }, { 267, 266 }, { 11357, 11309 },
    -
    303  { 66608, 66568 }, { 7683, 7682 }, { 65351, 65319 },
    -
    304  { 71901, 71869 }, { 1191, 1190 }, { 7845, 7844 },
    -
    305  { 43901, 5037 }, { 396, 395 }, { 943, 906 },
    -
    306  { 5116, 5108 }, { 402, 401 }, { 232, 200 },
    -
    307  { 93817, 93785 }, { 11322, 11274 }, { 42631, 42630 },
    -
    308  { 71897, 71865 }, { 1187, 1186 }, { 7841, 7840 },
    -
    309  { 105, 304 }, { 65359, 65327 }, { 1199, 1198 },
    -
    310  { 66778, 66738 }, { 7853, 7852 }, { 7729, 7728 },
    -
    311  { 658, 439 }, { 43909, 5045 }, { 959, 927 },
    -
    312  { 66991, 66952 }, { 995, 994 }, { 11393, 11392 },
    -
    313  { 4322, 7330 }, { 8039, 8047 }, { 968, 936 },
    -
    314  { 66967, 66928 }, { 971, 939 }, { 66997, 66958 },
    -
    315  { 1001, 1000 }, { 11399, 11398 }, { 4328, 7336 },
    -
    316  { 66970, 66931 }, { 974, 911 }, { 66999, 66960 },
    -
    317  { 1003, 1002 }, { 11401, 11400 }, { 4330, 7338 },
    -
    318  { 67003, 66964 }, { 1007, 1006 }, { 68821, 68757 },
    -
    319  { 468, 467 }, { 1011, 895 }, { 68823, 68759 },
    -
    320  { 470, 469 }, { 68825, 68761 }, { 472, 471 },
    -
    321  { 68829, 68765 }, { 476, 475 }, { 66989, 66950 },
    -
    322  { 993, 992 }, { 4320, 7328 }, { 8017, 8025 },
    -
    323  { 946, 914 }, { 8032, 8040 }, { 961, 929 },
    -
    324  { 4304, 7312 }, { 4306, 7314 }, { 11379, 11378 },
    -
    325  { 4308, 7316 }, { 4310, 7318 }, { 66979, 66940 },
    -
    326  { 8054, 8154 }, { 983, 975 }, { 523, 522 },
    -
    327  { 4312, 7320 }, { 66981, 66942 }, { 8056, 8184 },
    -
    328  { 985, 984 }, { 525, 524 }, { 4314, 7322 },
    -
    329  { 66983, 66944 }, { 8058, 8170 }, { 987, 986 },
    -
    330  { 527, 526 }, { 4316, 7324 }, { 66985, 66946 },
    -
    331  { 8060, 8186 }, { 989, 988 }, { 529, 528 },
    -
    332  { 1072, 1040 }, { 531, 530 }, { 8145, 8153 },
    -
    333  { 1074, 1042 }, { 533, 532 }, { 1076, 1044 },
    -
    334  { 1078, 1046 }, { 537, 536 }, { 1080, 1048 },
    -
    335  { 539, 538 }, { 1082, 1050 }, { 1084, 1052 },
    -
    336  { 955, 923 }, { 414, 544 }, { 1088, 1056 },
    -
    337  { 547, 546 }, { 549, 548 }, { 1092, 1060 },
    -
    338  { 551, 550 }, { 8165, 8172 }, { 1094, 1062 },
    -
    339  { 553, 552 }, { 9425, 9399 }, { 1096, 1064 },
    -
    340  { 555, 554 }, { 9427, 9401 }, { 1098, 1066 },
    -
    341  { 557, 556 }, { 9429, 9403 }, { 1100, 1068 },
    -
    342  { 559, 558 }, { 9431, 9405 }, { 1102, 1070 },
    -
    343  { 561, 560 }, { 9433, 9407 }, { 11421, 11420 },
    -
    344  { 4350, 7358 }, { 65345, 65313 }, { 1104, 1024 },
    -
    345  { 563, 562 }, { 9435, 9409 }, { 1113, 1033 },
    -
    346  { 7767, 7766 }, { 9444, 9418 }, { 4333, 7341 },
    -
    347  { 1087, 1055 }, { 1119, 1039 }, { 7773, 7772 },
    -
    348  { 578, 577 }, { 384, 579 }, { 65353, 65321 },
    -
    349  { 71903, 71871 }, { 1193, 1192 }, { 7847, 7846 },
    -
    350  { 43903, 5039 }, { 587, 586 }, { 589, 588 },
    -
    351  { 591, 590 }, { 4351, 7359 }, { 65346, 65314 },
    -
    352  { 1105, 1025 }, { 7759, 7758 }, { 940, 902 },
    -
    353  { 941, 904 }, { 942, 905 }, { 66968, 66929 },
    -
    354  { 972, 908 }, { 66969, 66930 }, { 973, 910 },
    -
    355  { 945, 913 }, { 947, 915 }, { 949, 917 },
    -
    356  { 410, 573 }, { 11500, 11499 }, { 951, 919 },
    -
    357  { 953, 921 }, { 954, 922 }, { 956, 924 },
    -
    358  { 957, 925 }, { 11507, 11506 }, { 958, 926 },
    -
    359  { 42561, 42560 }, { 960, 928 }, { 8034, 8042 },
    -
    360  { 963, 931 }, { 8035, 8043 }, { 964, 932 },
    -
    361  { 424, 423 }, { 8036, 8044 }, { 965, 933 },
    -
    362  { 8037, 8045 }, { 966, 934 }, { 8038, 8046 },
    -
    363  { 967, 935 }, { 969, 8486 }, { 42571, 42570 },
    -
    364  { 970, 938 }, { 891, 1021 }, { 893, 1023 },
    -
    365  { 1107, 1027 }, { 7761, 7760 }, { 66626, 66586 },
    -
    366  { 7701, 7700 }, { 66628, 66588 }, { 7703, 7702 },
    -
    367  { 66630, 66590 }, { 7705, 7704 }, { 66632, 66592 },
    -
    368  { 7707, 7706 }, { 66634, 66594 }, { 7709, 7708 },
    -
    369  { 66636, 66596 }, { 640, 422 }, { 7711, 7710 },
    -
    370  { 7715, 7714 }, { 7717, 7716 }, { 648, 430 },
    -
    371  { 7719, 7718 }, { 650, 433 }, { 7721, 7720 },
    -
    372  { 652, 581 }, { 7723, 7722 }, { 7725, 7724 },
    -
    373  { 7809, 7808 }, { 7811, 7810 }, { 7813, 7812 },
    -
    374  { 7815, 7814 }, { 42649, 42648 }, { 223, 7838 },
    -
    375  { 7986, 7994 }, { 93808, 93776 }, { 11313, 11265 },
    -
    376  { 66796, 66756 }, { 7871, 7870 }, { 66798, 66758 },
    -
    377  { 7873, 7872 }, { 66800, 66760 }, { 7875, 7874 },
    -
    378  { 66802, 66762 }, { 7877, 7876 }, { 66804, 66764 },
    -
    379  { 7879, 7878 }, { 66806, 66766 }, { 7881, 7880 },
    -
    380  { 66808, 66768 }, { 7883, 7882 }, { 7936, 7944 },
    -
    381  { 7938, 7946 }, { 7940, 7948 }, { 7942, 7950 },
    -
    382  { 881, 880 }, { 7952, 7960 }, { 883, 882 },
    -
    383  { 7954, 7962 }, { 7956, 7964 }, { 7968, 7976 },
    -
    384  { 7970, 7978 }, { 7972, 7980 }, { 7974, 7982 },
    -
    385  { 7984, 7992 }, { 7985, 7993 }, { 93807, 93775 },
    -
    386  { 11312, 11264 }, { 948, 916 }, { 8019, 8027 },
    -
    387  { 11346, 11298 }, { 950, 918 }, { 8021, 8029 },
    -
    388  { 11348, 11300 }, { 952, 1012 }, { 8023, 8031 },
    -
    389  { 11350, 11302 }, { 8113, 8121 }, { 1073, 1041 },
    -
    390  { 8144, 8152 }, { 11471, 11470 }, { 1089, 1057 },
    -
    391  { 8160, 8168 }, { 11487, 11486 }, { 1090, 1058 },
    -
    392  { 8161, 8169 }, { 107, 8490 }, { 8526, 8498 },
    -
    393  { 68832, 68768 }, { 479, 478 }, { 42905, 42904 },
    -
    394  { 513, 512 }, { 42939, 42938 }, { 515, 514 },
    -
    395  { 42941, 42940 }, { 517, 516 }, { 42943, 42942 },
    -
    396  { 519, 518 }, { 42945, 42944 }, { 521, 520 },
    -
    397  { 42947, 42946 }, { 43927, 5063 }, { 8572, 8556 },
    -
    398  { 43928, 5064 }, { 8573, 8557 }, { 42952, 42951 },
    -
    399  { 43929, 5065 }, { 8574, 8558 }, { 43930, 5066 },
    -
    400  { 8575, 8559 }, { 42954, 42953 }, { 9424, 9398 },
    -
    401  { 9426, 9400 }, { 9428, 9402 }, { 9430, 9404 },
    -
    402  { 9432, 9406 }, { 9434, 9408 }, { 9436, 9410 },
    -
    403  { 9437, 9411 }, { 9438, 9412 }, { 9439, 9413 },
    -
    404  { 9440, 9414 }, { 9441, 9415 }, { 9442, 9416 },
    -
    405  { 9443, 9417 }, { 9445, 9419 }, { 9446, 9420 },
    -
    406  { 9447, 9421 }, { 575, 11390 }, { 9448, 9422 },
    -
    407  { 576, 11391 }, { 9449, 9423 }, { 11337, 11289 },
    -
    408  { 11352, 11304 }, { 11354, 11306 }, { 11356, 11308 },
    -
    409  { 66615, 66575 }, { 619, 11362 }, { 68831, 68767 },
    -
    410  { 7549, 11363 }, { 66633, 66593 }, { 637, 11364 },
    -
    411  { 43888, 5024 }, { 593, 11373 }, { 66621, 66581 },
    -
    412  { 625, 11374 }, { 592, 11375 }, { 594, 11376 },
    -
    413  { 4332, 7340 }, { 11403, 11402 }, { 4334, 7342 },
    -
    414  { 11405, 11404 }, { 4336, 7344 }, { 11407, 11406 },
    -
    415  { 4338, 7346 }, { 11409, 11408 }, { 4340, 7348 },
    -
    416  { 11411, 11410 }, { 4342, 7350 }, { 11413, 11412 },
    -
    417  { 4344, 7352 }, { 11415, 11414 }, { 4346, 7354 },
    -
    418  { 11417, 11416 }, { 11419, 11418 }, { 11467, 11466 },
    -
    419  { 11469, 11468 }, { 11473, 11472 }, { 11475, 11474 },
    -
    420  { 11481, 11480 }, { 11483, 11482 }, { 11485, 11484 },
    -
    421  { 11489, 11488 }, { 11491, 11490 }, { 11502, 11501 },
    -
    422  { 42565, 42564 }, { 42567, 42566 }, { 42569, 42568 },
    -
    423  { 42639, 42638 }, { 42645, 42644 }, { 361, 360 },
    -
    424  { 42787, 42786 }, { 43896, 5032 }, { 363, 362 },
    -
    425  { 42789, 42788 }, { 647, 42929 }, { 43898, 5034 },
    -
    426  { 369, 368 }, { 42795, 42794 }, { 43904, 5040 },
    -
    427  { 371, 370 }, { 42797, 42796 }, { 43906, 5042 },
    -
    428  { 373, 372 }, { 42799, 42798 }, { 43908, 5044 },
    -
    429  { 42803, 42802 }, { 43912, 5048 }, { 42805, 42804 },
    -
    430  { 43914, 5050 }, { 42807, 42806 }, { 8561, 8545 },
    -
    431  { 43916, 5052 }, { 42809, 42808 }, { 8563, 8547 },
    -
    432  { 43918, 5054 }, { 42811, 42810 }, { 669, 42930 },
    -
    433  { 8565, 8549 }, { 43920, 5056 }, { 387, 386 },
    -
    434  { 42813, 42812 }, { 8567, 8551 }, { 43922, 5058 },
    -
    435  { 389, 388 }, { 42815, 42814 }, { 8569, 8553 },
    -
    436  { 43924, 5060 }, { 42817, 42816 }, { 8571, 8555 },
    -
    437  { 43926, 5062 }, { 5113, 5105 }, { 42825, 42824 },
    -
    438  { 43934, 5070 }, { 5115, 5107 }, { 42827, 42826 },
    -
    439  { 43936, 5072 }, { 5117, 5109 }, { 42829, 42828 },
    -
    440  { 43938, 5074 }, { 405, 502 }, { 42831, 42830 },
    -
    441  { 43940, 5076 }, { 42833, 42832 }, { 43942, 5078 },
    -
    442  { 409, 408 }, { 42835, 42834 }, { 43944, 5080 },
    -
    443  { 42837, 42836 }, { 43946, 5082 }, { 42839, 42838 },
    -
    444  { 43948, 5084 }, { 42841, 42840 }, { 43950, 5086 },
    -
    445  { 417, 416 }, { 42843, 42842 }, { 43952, 5088 },
    -
    446  { 419, 418 }, { 42845, 42844 }, { 43954, 5090 },
    -
    447  { 421, 420 }, { 42847, 42846 }, { 43956, 5092 },
    -
    448  { 42849, 42848 }, { 43958, 5094 }, { 42851, 42850 },
    -
    449  { 43960, 5096 }, { 42853, 42852 }, { 43962, 5098 },
    -
    450  { 429, 428 }, { 42855, 42854 }, { 43964, 5100 },
    -
    451  { 42857, 42856 }, { 43966, 5102 }, { 42859, 42858 },
    -
    452  { 42861, 42860 }, { 42863, 42862 }, { 68801, 68737 },
    -
    453  { 42874, 42873 }, { 68803, 68739 }, { 42876, 42875 },
    -
    454  { 68806, 68742 }, { 42879, 42878 }, { 68808, 68744 },
    -
    455  { 42881, 42880 }, { 68810, 68746 }, { 457, 455 },
    -
    456  { 42883, 42882 }, { 68812, 68748 }, { 42885, 42884 },
    -
    457  { 68814, 68750 }, { 42887, 42886 }, { 68819, 68755 },
    -
    458  { 466, 465 }, { 42892, 42891 }, { 66609, 66569 },
    -
    459  { 613, 42893 }, { 68824, 68760 }, { 42897, 42896 },
    -
    460  { 68826, 68762 }, { 42899, 42898 }, { 68830, 68766 },
    -
    461  { 477, 398 }, { 42903, 42902 }, { 68834, 68770 },
    -
    462  { 481, 480 }, { 42907, 42906 }, { 68836, 68772 },
    -
    463  { 483, 482 }, { 42909, 42908 }, { 68838, 68774 },
    -
    464  { 485, 484 }, { 42911, 42910 }, { 68840, 68776 },
    -
    465  { 487, 486 }, { 42913, 42912 }, { 68842, 68778 },
    -
    466  { 489, 488 }, { 42915, 42914 }, { 68844, 68780 },
    -
    467  { 491, 490 }, { 42917, 42916 }, { 68846, 68782 },
    -
    468  { 493, 492 }, { 42919, 42918 }, { 66610, 66570 },
    -
    469  { 7685, 7684 }, { 614, 42922 }, { 66600, 66560 },
    -
    470  { 604, 42923 }, { 66605, 66565 }, { 609, 42924 },
    -
    471  { 66616, 66576 }, { 7691, 7690 }, { 620, 42925 },
    -
    472  { 66614, 66574 }, { 7689, 7688 }, { 618, 42926 },
    -
    473  { 7741, 7740 }, { 670, 42928 }, { 8566, 8550 },
    -
    474  { 43921, 5057 }, { 507, 506 }, { 42933, 42932 },
    -
    475  { 509, 508 }, { 42935, 42934 }, { 511, 510 },
    -
    476  { 42937, 42936 }, { 68827, 68763 }, { 474, 473 },
    -
    477  { 7545, 42877 }, { 42900, 42948 }, { 66638, 66598 },
    -
    478  { 7713, 7712 }, { 642, 42949 }, { 43893, 5029 },
    -
    479  { 68848, 68784 }, { 495, 494 }, { 42921, 42920 },
    -
    480  { 7566, 42950 }, { 535, 534 }, { 42961, 42960 },
    -
    481  { 541, 540 }, { 42967, 42966 }, { 543, 542 },
    -
    482  { 42969, 42968 }, { 572, 571 }, { 42998, 42997 },
    -
    483  { 43889, 5025 }, { 43890, 5026 }, { 43892, 5028 },
    -
    484  { 43895, 5031 }, { 43897, 5033 }, { 43905, 5041 },
    -
    485  { 43907, 5043 }, { 43910, 5046 }, { 43911, 5047 },
    -
    486  { 43913, 5049 }, { 8560, 8544 }, { 43915, 5051 },
    -
    487  { 8562, 8546 }, { 43917, 5053 }, { 8564, 8548 },
    -
    488  { 43919, 5055 }, { 8568, 8552 }, { 43923, 5059 },
    -
    489  { 8570, 8554 }, { 43925, 5061 }, { 43933, 5069 },
    -
    490  { 8580, 8579 }, { 43935, 5071 }, { 43937, 5073 },
    -
    491  { 43939, 5075 }, { 43941, 5077 }, { 43943, 5079 },
    -
    492  { 43945, 5081 }, { 43947, 5083 }, { 43949, 5085 },
    -
    493  { 43951, 5087 }, { 43953, 5089 }, { 43955, 5091 },
    -
    494  { 43957, 5093 }, { 43959, 5095 }, { 43961, 5097 },
    -
    495  { 43963, 5099 }, { 43965, 5101 }, { 43967, 5103 },
    -
    496  { 65347, 65315 }, { 65348, 65316 }, { 65350, 65318 },
    -
    497  { 65352, 65320 }, { 65354, 65322 }, { 65356, 65324 },
    -
    498  { 65358, 65326 }, { 65360, 65328 }, { 65362, 65330 },
    -
    499  { 65364, 65332 },
    -
    500  }};
    -
    501 
    -
    502  if (c >= 'a' && c <= 'z')
    -
    503  {
    -
    504  return c - 32;
    -
    505  }
    -
    506 
    -
    507  return utils::case_lookup(toupper_map, c);
    -
    508  }
    -
    509 }
    +Go to the documentation of this file.
    1/*
    +
    2 * Copyright (c) 2018-2024, peelo.net
    +
    3 * All rights reserved.
    +
    4 *
    +
    5 * Redistribution and use in source and binary forms, with or without
    +
    6 * modification, are permitted provided that the following conditions are met:
    +
    7 *
    +
    8 * * Redistributions of source code must retain the above copyright notice,
    +
    9 * this list of conditions and the following disclaimer.
    +
    10 *
    +
    11 * * Redistributions in binary form must reproduce the above copyright notice,
    +
    12 * this list of conditions and the following disclaimer in the documentation
    +
    13 * and/or other materials provided with the distribution.
    +
    14 *
    +
    15 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
    +
    16 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
    +
    17 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
    +
    18 * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
    +
    19 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
    +
    20 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
    +
    21 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
    +
    22 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
    +
    23 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
    +
    24 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
    +
    25 * POSSIBILITY OF SUCH DAMAGE.
    +
    26 */
    +
    27#pragma once
    +
    28
    + +
    30
    + +
    32{
    +
    36 inline char32_t
    +
    37 toupper(char32_t c)
    +
    38 {
    +
    39 static const std::unordered_map<char32_t, char32_t> toupper_map =
    +
    40 {{
    +
    41 { 125251, 125217 }, { 125250, 125216 }, { 125248, 125214 },
    +
    42 { 125246, 125212 }, { 125244, 125210 }, { 125242, 125208 },
    +
    43 { 125240, 125206 }, { 125238, 125204 }, { 125236, 125202 },
    +
    44 { 125234, 125200 }, { 125233, 125199 }, { 125231, 125197 },
    +
    45 { 125229, 125195 }, { 125227, 125193 }, { 125225, 125191 },
    +
    46 { 125223, 125189 }, { 125221, 125187 }, { 125219, 125185 },
    +
    47 { 93806, 93774 }, { 93805, 93773 }, { 93804, 93772 },
    +
    48 { 93803, 93771 }, { 93802, 93770 }, { 93801, 93769 },
    +
    49 { 93800, 93768 }, { 93799, 93767 }, { 93798, 93766 },
    +
    50 { 93797, 93765 }, { 93796, 93764 }, { 93795, 93763 },
    +
    51 { 93794, 93762 }, { 93793, 93761 }, { 93792, 93760 },
    +
    52 { 71902, 71870 }, { 71900, 71868 }, { 71898, 71866 },
    +
    53 { 71896, 71864 }, { 71894, 71862 }, { 71892, 71860 },
    +
    54 { 71890, 71858 }, { 71888, 71856 }, { 71886, 71854 },
    +
    55 { 71884, 71852 }, { 71882, 71850 }, { 71880, 71848 },
    +
    56 { 71878, 71846 }, { 71876, 71844 }, { 71874, 71842 },
    +
    57 { 71872, 71840 }, { 68850, 68786 }, { 68849, 68785 },
    +
    58 { 68847, 68783 }, { 68845, 68781 }, { 68843, 68779 },
    +
    59 { 68841, 68777 }, { 68839, 68775 }, { 68837, 68773 },
    +
    60 { 68835, 68771 }, { 68833, 68769 }, { 68828, 68764 },
    +
    61 { 68822, 68758 }, { 68820, 68756 }, { 68818, 68754 },
    +
    62 { 68816, 68752 }, { 68811, 68747 }, { 68809, 68745 },
    +
    63 { 68805, 68741 }, { 68804, 68740 }, { 68802, 68738 },
    +
    64 { 67004, 66965 }, { 67000, 66961 }, { 66998, 66959 },
    +
    65 { 66996, 66957 }, { 66992, 66953 }, { 66990, 66951 },
    +
    66 { 66988, 66949 }, { 66972, 66933 }, { 66971, 66932 },
    +
    67 { 66811, 66771 }, { 66809, 66769 }, { 66807, 66767 },
    +
    68 { 66805, 66765 }, { 66803, 66763 }, { 66801, 66761 },
    +
    69 { 66799, 66759 }, { 66797, 66757 }, { 66795, 66755 },
    +
    70 { 66793, 66753 }, { 66791, 66751 }, { 66789, 66749 },
    +
    71 { 66787, 66747 }, { 66785, 66745 }, { 66783, 66743 },
    +
    72 { 66781, 66741 }, { 66779, 66739 }, { 66777, 66737 },
    +
    73 { 66637, 66597 }, { 66635, 66595 }, { 66631, 66591 },
    +
    74 { 66629, 66589 }, { 66627, 66587 }, { 66623, 66583 },
    +
    75 { 66617, 66577 }, { 66611, 66571 }, { 66603, 66563 },
    +
    76 { 66602, 66562 }, { 66601, 66561 }, { 65370, 65338 },
    +
    77 { 65369, 65337 }, { 65368, 65336 }, { 65367, 65335 },
    +
    78 { 65366, 65334 }, { 65365, 65333 }, { 4317, 7325 },
    +
    79 { 4315, 7323 }, { 4313, 7321 }, { 4309, 7317 },
    +
    80 { 4307, 7315 }, { 4305, 7313 }, { 43931, 5067 },
    +
    81 { 11565, 4301 }, { 11559, 4295 }, { 11557, 4293 },
    +
    82 { 11555, 4291 }, { 11553, 4289 }, { 42605, 42604 },
    +
    83 { 11551, 4287 }, { 42603, 42602 }, { 11549, 4285 },
    +
    84 { 42601, 42600 }, { 11547, 4283 }, { 42599, 42598 },
    +
    85 { 11545, 4281 }, { 42597, 42596 }, { 11543, 4279 },
    +
    86 { 42595, 42594 }, { 11541, 4277 }, { 42593, 42592 },
    +
    87 { 11539, 4275 }, { 42591, 42590 }, { 11537, 4273 },
    +
    88 { 68800, 68736 }, { 447, 503 }, { 42589, 42588 },
    +
    89 { 11535, 4271 }, { 445, 444 }, { 42587, 42586 },
    +
    90 { 11533, 4269 }, { 42585, 42584 }, { 11531, 4267 },
    +
    91 { 441, 440 }, { 42583, 42582 }, { 11529, 4265 },
    +
    92 { 42581, 42580 }, { 11527, 4263 }, { 42579, 42578 },
    +
    93 { 11525, 4261 }, { 42577, 42576 }, { 11523, 4259 },
    +
    94 { 42575, 42574 }, { 11521, 4257 }, { 42573, 42572 },
    +
    95 { 1414, 1366 }, { 125226, 125192 }, { 305, 73 },
    +
    96 { 1412, 1364 }, { 125224, 125190 }, { 303, 302 },
    +
    97 { 1411, 1363 }, { 1409, 1361 }, { 1407, 1359 },
    +
    98 { 66986, 66947 }, { 8061, 8187 }, { 1405, 1357 },
    +
    99 { 66984, 66945 }, { 8059, 8171 }, { 1403, 1355 },
    +
    100 { 66982, 66943 }, { 8057, 8185 }, { 1401, 1353 },
    +
    101 { 66980, 66941 }, { 8055, 8155 }, { 4311, 7319 },
    +
    102 { 11382, 11381 }, { 1399, 1351 }, { 8053, 8139 },
    +
    103 { 1397, 1349 }, { 66976, 66937 }, { 8051, 8137 },
    +
    104 { 1395, 1347 }, { 66974, 66935 }, { 8049, 8123 },
    +
    105 { 1394, 1346 }, { 285, 284 }, { 66973, 66934 },
    +
    106 { 8048, 8122 }, { 1392, 1344 }, { 283, 282 },
    +
    107 { 1390, 1342 }, { 281, 280 }, { 1388, 1340 },
    +
    108 { 279, 278 }, { 1386, 1338 }, { 277, 276 },
    +
    109 { 1384, 1336 }, { 11365, 570 }, { 275, 274 },
    +
    110 { 1382, 1334 }, { 273, 272 }, { 1380, 1332 },
    +
    111 { 271, 270 }, { 11361, 11360 }, { 1378, 1330 },
    +
    112 { 269, 268 }, { 11359, 11311 }, { 1305, 1304 },
    +
    113 { 1303, 1302 }, { 7957, 7965 }, { 1301, 1300 },
    +
    114 { 7955, 7963 }, { 1299, 1298 }, { 7953, 7961 },
    +
    115 { 1297, 1296 }, { 1295, 1294 }, { 1293, 1292 },
    +
    116 { 1291, 1290 }, { 1289, 1288 }, { 7943, 7951 },
    +
    117 { 1287, 1286 }, { 7941, 7949 }, { 1285, 1284 },
    +
    118 { 7939, 7947 }, { 1283, 1282 }, { 7937, 7945 },
    +
    119 { 1281, 1280 }, { 7935, 7934 }, { 1279, 1278 },
    +
    120 { 7933, 7932 }, { 11556, 4292 }, { 1277, 1276 },
    +
    121 { 7931, 7930 }, { 11554, 4290 }, { 68817, 68753 },
    +
    122 { 464, 463 }, { 1275, 1274 }, { 7929, 7928 },
    +
    123 { 11552, 4288 }, { 68815, 68751 }, { 462, 461 },
    +
    124 { 1273, 1272 }, { 7927, 7926 }, { 11550, 4286 },
    +
    125 { 68813, 68749 }, { 460, 458 }, { 1271, 1270 },
    +
    126 { 7925, 7924 }, { 11548, 4284 }, { 1269, 1268 },
    +
    127 { 7923, 7922 }, { 11546, 4282 }, { 1267, 1266 },
    +
    128 { 7921, 7920 }, { 11544, 4280 }, { 68807, 68743 },
    +
    129 { 454, 452 }, { 1265, 1264 }, { 7919, 7918 },
    +
    130 { 11542, 4278 }, { 1263, 1262 }, { 7917, 7916 },
    +
    131 { 11540, 4276 }, { 1261, 1260 }, { 7915, 7914 },
    +
    132 { 11538, 4274 }, { 1259, 1258 }, { 7913, 7912 },
    +
    133 { 11536, 4272 }, { 1257, 1256 }, { 7911, 7910 },
    +
    134 { 11534, 4270 }, { 1255, 1254 }, { 7909, 7908 },
    +
    135 { 11532, 4268 }, { 1253, 1252 }, { 7907, 7906 },
    +
    136 { 11530, 4266 }, { 1251, 1250 }, { 7905, 7904 },
    +
    137 { 11528, 4264 }, { 438, 437 }, { 1249, 1248 },
    +
    138 { 7903, 7902 }, { 11526, 4262 }, { 436, 435 },
    +
    139 { 1247, 1246 }, { 7901, 7900 }, { 11524, 4260 },
    +
    140 { 1245, 1244 }, { 7899, 7898 }, { 11522, 4258 },
    +
    141 { 432, 431 }, { 1243, 1242 }, { 7897, 7896 },
    +
    142 { 11520, 4256 }, { 1241, 1240 }, { 7895, 7894 },
    +
    143 { 1239, 1238 }, { 7893, 7892 }, { 1237, 1236 },
    +
    144 { 7891, 7890 }, { 1235, 1234 }, { 7889, 7888 },
    +
    145 { 1233, 1232 }, { 7887, 7886 }, { 1230, 1229 },
    +
    146 { 1228, 1227 }, { 1226, 1225 }, { 1224, 1223 },
    +
    147 { 115, 7838 }, { 1222, 1221 }, { 1220, 1219 },
    +
    148 { 1218, 1217 }, { 1231, 1216 }, { 66810, 66770 },
    +
    149 { 7885, 7884 }, { 1215, 1214 }, { 66794, 66754 },
    +
    150 { 7869, 7868 }, { 1213, 1212 }, { 66792, 66752 },
    +
    151 { 7867, 7866 }, { 1211, 1210 }, { 66790, 66750 },
    +
    152 { 7865, 7864 }, { 1209, 1208 }, { 66788, 66748 },
    +
    153 { 7863, 7862 }, { 66624, 66584 }, { 7699, 7698 },
    +
    154 { 1207, 1206 }, { 66786, 66746 }, { 7861, 7860 },
    +
    155 { 1205, 1204 }, { 66784, 66744 }, { 7859, 7858 },
    +
    156 { 66620, 66580 }, { 7695, 7694 }, { 65363, 65331 },
    +
    157 { 1203, 1202 }, { 66782, 66742 }, { 7857, 7856 },
    +
    158 { 66618, 66578 }, { 7693, 7692 }, { 65361, 65329 },
    +
    159 { 1201, 1200 }, { 66780, 66740 }, { 7855, 7854 },
    +
    160 { 65357, 65325 }, { 1197, 1196 }, { 66776, 66736 },
    +
    161 { 7851, 7850 }, { 65355, 65323 }, { 1195, 1194 },
    +
    162 { 7849, 7848 }, { 71895, 71863 }, { 1185, 1184 },
    +
    163 { 71893, 71861 }, { 1183, 1182 }, { 71889, 71857 },
    +
    164 { 1179, 1178 }, { 71887, 71855 }, { 1177, 1176 },
    +
    165 { 71885, 71853 }, { 1175, 1174 }, { 7829, 7828 },
    +
    166 { 71883, 71851 }, { 1173, 1172 }, { 7827, 7826 },
    +
    167 { 71881, 71849 }, { 1171, 1170 }, { 7825, 7824 },
    +
    168 { 71879, 71847 }, { 1169, 1168 }, { 7823, 7822 },
    +
    169 { 71875, 71843 }, { 1165, 1164 }, { 7819, 7818 },
    +
    170 { 71873, 71841 }, { 1163, 1162 }, { 7817, 7816 },
    +
    171 { 1153, 1152 }, { 7807, 7806 }, { 1151, 1150 },
    +
    172 { 7805, 7804 }, { 1147, 1146 }, { 7801, 7800 },
    +
    173 { 1145, 1144 }, { 7799, 7798 }, { 1143, 1142 },
    +
    174 { 7797, 7796 }, { 1141, 1140 }, { 7795, 7794 },
    +
    175 { 1135, 1134 }, { 7789, 7788 }, { 1133, 1132 },
    +
    176 { 7787, 7786 }, { 1131, 1130 }, { 7785, 7784 },
    +
    177 { 1129, 1128 }, { 7783, 7782 }, { 1127, 1126 },
    +
    178 { 7781, 7780 }, { 1125, 1124 }, { 7779, 7778 },
    +
    179 { 1123, 1122 }, { 7777, 7776 }, { 1121, 1120 },
    +
    180 { 7775, 7774 }, { 4349, 7357 }, { 1103, 1071 },
    +
    181 { 7757, 7756 }, { 1101, 1069 }, { 7755, 7754 },
    +
    182 { 4345, 7353 }, { 1099, 1067 }, { 7753, 7752 },
    +
    183 { 4343, 7351 }, { 1016, 1015 }, { 1097, 1065 },
    +
    184 { 7751, 7750 }, { 4341, 7349 }, { 1095, 1063 },
    +
    185 { 7749, 7748 }, { 4339, 7347 }, { 1093, 1061 },
    +
    186 { 7747, 7746 }, { 4337, 7345 }, { 1010, 1017 },
    +
    187 { 1091, 1059 }, { 7745, 7744 }, { 4335, 7343 },
    +
    188 { 7743, 7742 }, { 4331, 7339 }, { 1085, 1053 },
    +
    189 { 7739, 7738 }, { 4329, 7337 }, { 1083, 1051 },
    +
    190 { 7737, 7736 }, { 4327, 7335 }, { 1081, 1049 },
    +
    191 { 7735, 7734 }, { 4325, 7333 }, { 1079, 1047 },
    +
    192 { 7733, 7732 }, { 4323, 7331 }, { 1077, 1045 },
    +
    193 { 7731, 7730 }, { 4321, 7329 }, { 1075, 1043 },
    +
    194 { 4319, 7327 }, { 7727, 7726 }, { 1118, 1038 },
    +
    195 { 1117, 1037 }, { 7771, 7770 }, { 1116, 1036 },
    +
    196 { 1115, 1035 }, { 7769, 7768 }, { 1114, 1034 },
    +
    197 { 1112, 1032 }, { 1111, 1031 }, { 7765, 7764 },
    +
    198 { 1110, 1030 }, { 1109, 1029 }, { 7763, 7762 },
    +
    199 { 1108, 1028 }, { 651, 434 }, { 43902, 5038 },
    +
    200 { 42563, 42562 }, { 66987, 66948 }, { 991, 990 },
    +
    201 { 4318, 7326 }, { 1139, 1138 }, { 7793, 7792 },
    +
    202 { 598, 393 }, { 341, 340 }, { 11431, 11430 },
    +
    203 { 1137, 1136 }, { 7791, 7790 }, { 596, 390 },
    +
    204 { 339, 338 }, { 11429, 11428 }, { 66639, 66599 },
    +
    205 { 643, 425 }, { 43894, 5030 }, { 11479, 11478 },
    +
    206 { 11477, 11476 }, { 382, 381 }, { 255, 376 },
    +
    207 { 11345, 11297 }, { 603, 400 }, { 349, 348 },
    +
    208 { 8112, 8120 }, { 11439, 11438 }, { 601, 399 },
    +
    209 { 347, 346 }, { 11437, 11436 }, { 599, 394 },
    +
    210 { 345, 344 }, { 11435, 11434 }, { 343, 342 },
    +
    211 { 11433, 11432 }, { 595, 385 }, { 337, 336 },
    +
    212 { 11427, 11426 }, { 335, 334 }, { 11425, 11424 },
    +
    213 { 1106, 1026 }, { 333, 332 }, { 11423, 11422 },
    +
    214 { 1413, 1365 }, { 331, 330 }, { 1410, 1362 },
    +
    215 { 125222, 125188 }, { 301, 300 }, { 125249, 125215 },
    +
    216 { 328, 327 }, { 585, 584 }, { 1408, 1360 },
    +
    217 { 125220, 125186 }, { 299, 298 }, { 125247, 125213 },
    +
    218 { 326, 325 }, { 583, 582 }, { 1406, 1358 },
    +
    219 { 125218, 125184 }, { 297, 296 }, { 125245, 125211 },
    +
    220 { 324, 323 }, { 1404, 1356 }, { 295, 294 },
    +
    221 { 125243, 125209 }, { 322, 321 }, { 1402, 1354 },
    +
    222 { 293, 292 }, { 125241, 125207 }, { 320, 319 },
    +
    223 { 1400, 1352 }, { 291, 290 }, { 125239, 125205 },
    +
    224 { 318, 317 }, { 1398, 1350 }, { 289, 288 },
    +
    225 { 66977, 66938 }, { 8052, 8138 }, { 125237, 125203 },
    +
    226 { 316, 315 }, { 1396, 1348 }, { 287, 286 },
    +
    227 { 66975, 66936 }, { 8050, 8136 }, { 125235, 125201 },
    +
    228 { 314, 313 }, { 67001, 66962 }, { 1005, 1004 },
    +
    229 { 1086, 1054 }, { 252, 220 }, { 11342, 11294 },
    +
    230 { 1393, 1345 }, { 125232, 125198 }, { 311, 310 },
    +
    231 { 378, 377 }, { 251, 219 }, { 11341, 11293 },
    +
    232 { 250, 218 }, { 11340, 11292 }, { 1391, 1343 },
    +
    233 { 11372, 11371 }, { 125230, 125196 }, { 309, 308 },
    +
    234 { 249, 217 }, { 11339, 11291 }, { 66625, 66585 },
    +
    235 { 629, 415 }, { 375, 374 }, { 11465, 11464 },
    +
    236 { 42823, 42822 }, { 43932, 5068 }, { 248, 216 },
    +
    237 { 11338, 11290 }, { 505, 504 }, { 42647, 42646 },
    +
    238 { 1019, 1018 }, { 1389, 1341 }, { 11370, 11369 },
    +
    239 { 125228, 125194 }, { 307, 306 }, { 11463, 11462 },
    +
    240 { 887, 886 }, { 42821, 42820 }, { 246, 214 },
    +
    241 { 11336, 11288 }, { 1387, 1339 }, { 11368, 11367 },
    +
    242 { 71877, 71845 }, { 1167, 1166 }, { 7821, 7820 },
    +
    243 { 66622, 66582 }, { 7697, 7696 }, { 626, 413 },
    +
    244 { 11459, 11458 }, { 5114, 5106 }, { 1327, 1326 },
    +
    245 { 245, 213 }, { 11335, 11287 }, { 11461, 11460 },
    +
    246 { 42819, 42818 }, { 244, 212 }, { 11334, 11286 },
    +
    247 { 501, 500 }, { 42643, 42642 }, { 1385, 1337 },
    +
    248 { 11366, 574 }, { 5112, 5104 }, { 1325, 1324 },
    +
    249 { 243, 211 }, { 11333, 11285 }, { 66619, 66579 },
    +
    250 { 623, 412 }, { 242, 210 }, { 8005, 8013 },
    +
    251 { 11332, 11284 }, { 499, 497 }, { 42641, 42640 },
    +
    252 { 1383, 1335 }, { 1323, 1322 }, { 241, 209 },
    +
    253 { 8004, 8012 }, { 11331, 11283 }, { 42793, 42792 },
    +
    254 { 367, 366 }, { 11457, 11456 }, { 240, 208 },
    +
    255 { 8003, 8011 }, { 11330, 11282 }, { 1381, 1333 },
    +
    256 { 1321, 1320 }, { 7975, 7983 }, { 239, 207 },
    +
    257 { 8002, 8010 }, { 11329, 11281 }, { 11455, 11454 },
    +
    258 { 238, 206 }, { 8001, 8009 }, { 93823, 93791 },
    +
    259 { 11328, 11280 }, { 42637, 42636 }, { 1379, 1331 },
    +
    260 { 8033, 8041 }, { 1319, 1318 }, { 7973, 7981 },
    +
    261 { 237, 205 }, { 8000, 8008 }, { 93822, 93790 },
    +
    262 { 11327, 11279 }, { 66613, 66573 }, { 617, 406 },
    +
    263 { 11453, 11452 }, { 236, 204 }, { 93821, 93789 },
    +
    264 { 11326, 11278 }, { 42635, 42634 }, { 1377, 1329 },
    +
    265 { 11358, 11310 }, { 1149, 1148 }, { 7803, 7802 },
    +
    266 { 66604, 66564 }, { 608, 403 }, { 43859, 42931 },
    +
    267 { 892, 1022 }, { 351, 350 }, { 11441, 11440 },
    +
    268 { 1309, 1308 }, { 227, 195 }, { 7990, 7998 },
    +
    269 { 93812, 93780 }, { 11317, 11269 }, { 224, 192 },
    +
    270 { 7987, 7995 }, { 93809, 93777 }, { 11314, 11266 },
    +
    271 { 1307, 1306 }, { 42651, 42650 }, { 225, 193 },
    +
    272 { 7988, 7996 }, { 93810, 93778 }, { 11315, 11267 },
    +
    273 { 353, 352 }, { 11443, 11442 }, { 226, 194 },
    +
    274 { 7989, 7997 }, { 93811, 93779 }, { 11316, 11268 },
    +
    275 { 42625, 42624 }, { 66993, 66954 }, { 997, 996 },
    +
    276 { 11395, 11394 }, { 4324, 7332 }, { 355, 354 },
    +
    277 { 11445, 11444 }, { 228, 196 }, { 7991, 7999 },
    +
    278 { 93813, 93781 }, { 11318, 11270 }, { 42627, 42626 },
    +
    279 { 66995, 66956 }, { 999, 998 }, { 11397, 11396 },
    +
    280 { 4326, 7334 }, { 1311, 1310 }, { 229, 8491 },
    +
    281 { 93814, 93782 }, { 11319, 11271 }, { 66607, 66567 },
    +
    282 { 611, 404 }, { 357, 356 }, { 11447, 11446 },
    +
    283 { 230, 198 }, { 93815, 93783 }, { 11320, 11272 },
    +
    284 { 42629, 42628 }, { 1313, 1312 }, { 231, 199 },
    +
    285 { 93816, 93784 }, { 11321, 11273 }, { 1315, 1314 },
    +
    286 { 7969, 7977 }, { 233, 201 }, { 93818, 93786 },
    +
    287 { 11323, 11275 }, { 11451, 11450 }, { 234, 202 },
    +
    288 { 93819, 93787 }, { 11324, 11276 }, { 42633, 42632 },
    +
    289 { 66612, 66572 }, { 7687, 7686 }, { 616, 407 },
    +
    290 { 359, 358 }, { 11449, 11448 }, { 1317, 1316 },
    +
    291 { 7971, 7979 }, { 235, 203 }, { 93820, 93788 },
    +
    292 { 11325, 11277 }, { 380, 379 }, { 253, 221 },
    +
    293 { 11343, 11295 }, { 254, 222 }, { 11344, 11296 },
    +
    294 { 257, 256 }, { 11347, 11299 }, { 71891, 71859 },
    +
    295 { 1181, 1180 }, { 43891, 5027 }, { 259, 258 },
    +
    296 { 11349, 11301 }, { 261, 260 }, { 11351, 11303 },
    +
    297 { 263, 262 }, { 11353, 11305 }, { 392, 391 },
    +
    298 { 649, 580 }, { 365, 364 }, { 42791, 42790 },
    +
    299 { 43900, 5036 }, { 265, 264 }, { 11355, 11307 },
    +
    300 { 66606, 66566 }, { 7681, 7680 }, { 65349, 65317 },
    +
    301 { 71899, 71867 }, { 1189, 1188 }, { 7843, 7842 },
    +
    302 { 43899, 5035 }, { 267, 266 }, { 11357, 11309 },
    +
    303 { 66608, 66568 }, { 7683, 7682 }, { 65351, 65319 },
    +
    304 { 71901, 71869 }, { 1191, 1190 }, { 7845, 7844 },
    +
    305 { 43901, 5037 }, { 396, 395 }, { 943, 906 },
    +
    306 { 5116, 5108 }, { 402, 401 }, { 232, 200 },
    +
    307 { 93817, 93785 }, { 11322, 11274 }, { 42631, 42630 },
    +
    308 { 71897, 71865 }, { 1187, 1186 }, { 7841, 7840 },
    +
    309 { 105, 304 }, { 65359, 65327 }, { 1199, 1198 },
    +
    310 { 66778, 66738 }, { 7853, 7852 }, { 7729, 7728 },
    +
    311 { 658, 439 }, { 43909, 5045 }, { 959, 927 },
    +
    312 { 66991, 66952 }, { 995, 994 }, { 11393, 11392 },
    +
    313 { 4322, 7330 }, { 8039, 8047 }, { 968, 936 },
    +
    314 { 66967, 66928 }, { 971, 939 }, { 66997, 66958 },
    +
    315 { 1001, 1000 }, { 11399, 11398 }, { 4328, 7336 },
    +
    316 { 66970, 66931 }, { 974, 911 }, { 66999, 66960 },
    +
    317 { 1003, 1002 }, { 11401, 11400 }, { 4330, 7338 },
    +
    318 { 67003, 66964 }, { 1007, 1006 }, { 68821, 68757 },
    +
    319 { 468, 467 }, { 1011, 895 }, { 68823, 68759 },
    +
    320 { 470, 469 }, { 68825, 68761 }, { 472, 471 },
    +
    321 { 68829, 68765 }, { 476, 475 }, { 66989, 66950 },
    +
    322 { 993, 992 }, { 4320, 7328 }, { 8017, 8025 },
    +
    323 { 946, 914 }, { 8032, 8040 }, { 961, 929 },
    +
    324 { 4304, 7312 }, { 4306, 7314 }, { 11379, 11378 },
    +
    325 { 4308, 7316 }, { 4310, 7318 }, { 66979, 66940 },
    +
    326 { 8054, 8154 }, { 983, 975 }, { 523, 522 },
    +
    327 { 4312, 7320 }, { 66981, 66942 }, { 8056, 8184 },
    +
    328 { 985, 984 }, { 525, 524 }, { 4314, 7322 },
    +
    329 { 66983, 66944 }, { 8058, 8170 }, { 987, 986 },
    +
    330 { 527, 526 }, { 4316, 7324 }, { 66985, 66946 },
    +
    331 { 8060, 8186 }, { 989, 988 }, { 529, 528 },
    +
    332 { 1072, 1040 }, { 531, 530 }, { 8145, 8153 },
    +
    333 { 1074, 1042 }, { 533, 532 }, { 1076, 1044 },
    +
    334 { 1078, 1046 }, { 537, 536 }, { 1080, 1048 },
    +
    335 { 539, 538 }, { 1082, 1050 }, { 1084, 1052 },
    +
    336 { 955, 923 }, { 414, 544 }, { 1088, 1056 },
    +
    337 { 547, 546 }, { 549, 548 }, { 1092, 1060 },
    +
    338 { 551, 550 }, { 8165, 8172 }, { 1094, 1062 },
    +
    339 { 553, 552 }, { 9425, 9399 }, { 1096, 1064 },
    +
    340 { 555, 554 }, { 9427, 9401 }, { 1098, 1066 },
    +
    341 { 557, 556 }, { 9429, 9403 }, { 1100, 1068 },
    +
    342 { 559, 558 }, { 9431, 9405 }, { 1102, 1070 },
    +
    343 { 561, 560 }, { 9433, 9407 }, { 11421, 11420 },
    +
    344 { 4350, 7358 }, { 65345, 65313 }, { 1104, 1024 },
    +
    345 { 563, 562 }, { 9435, 9409 }, { 1113, 1033 },
    +
    346 { 7767, 7766 }, { 9444, 9418 }, { 4333, 7341 },
    +
    347 { 1087, 1055 }, { 1119, 1039 }, { 7773, 7772 },
    +
    348 { 578, 577 }, { 384, 579 }, { 65353, 65321 },
    +
    349 { 71903, 71871 }, { 1193, 1192 }, { 7847, 7846 },
    +
    350 { 43903, 5039 }, { 587, 586 }, { 589, 588 },
    +
    351 { 591, 590 }, { 4351, 7359 }, { 65346, 65314 },
    +
    352 { 1105, 1025 }, { 7759, 7758 }, { 940, 902 },
    +
    353 { 941, 904 }, { 942, 905 }, { 66968, 66929 },
    +
    354 { 972, 908 }, { 66969, 66930 }, { 973, 910 },
    +
    355 { 945, 913 }, { 947, 915 }, { 949, 917 },
    +
    356 { 410, 573 }, { 11500, 11499 }, { 951, 919 },
    +
    357 { 953, 921 }, { 954, 922 }, { 956, 924 },
    +
    358 { 957, 925 }, { 11507, 11506 }, { 958, 926 },
    +
    359 { 42561, 42560 }, { 960, 928 }, { 8034, 8042 },
    +
    360 { 963, 931 }, { 8035, 8043 }, { 964, 932 },
    +
    361 { 424, 423 }, { 8036, 8044 }, { 965, 933 },
    +
    362 { 8037, 8045 }, { 966, 934 }, { 8038, 8046 },
    +
    363 { 967, 935 }, { 969, 8486 }, { 42571, 42570 },
    +
    364 { 970, 938 }, { 891, 1021 }, { 893, 1023 },
    +
    365 { 1107, 1027 }, { 7761, 7760 }, { 66626, 66586 },
    +
    366 { 7701, 7700 }, { 66628, 66588 }, { 7703, 7702 },
    +
    367 { 66630, 66590 }, { 7705, 7704 }, { 66632, 66592 },
    +
    368 { 7707, 7706 }, { 66634, 66594 }, { 7709, 7708 },
    +
    369 { 66636, 66596 }, { 640, 422 }, { 7711, 7710 },
    +
    370 { 7715, 7714 }, { 7717, 7716 }, { 648, 430 },
    +
    371 { 7719, 7718 }, { 650, 433 }, { 7721, 7720 },
    +
    372 { 652, 581 }, { 7723, 7722 }, { 7725, 7724 },
    +
    373 { 7809, 7808 }, { 7811, 7810 }, { 7813, 7812 },
    +
    374 { 7815, 7814 }, { 42649, 42648 }, { 223, 7838 },
    +
    375 { 7986, 7994 }, { 93808, 93776 }, { 11313, 11265 },
    +
    376 { 66796, 66756 }, { 7871, 7870 }, { 66798, 66758 },
    +
    377 { 7873, 7872 }, { 66800, 66760 }, { 7875, 7874 },
    +
    378 { 66802, 66762 }, { 7877, 7876 }, { 66804, 66764 },
    +
    379 { 7879, 7878 }, { 66806, 66766 }, { 7881, 7880 },
    +
    380 { 66808, 66768 }, { 7883, 7882 }, { 7936, 7944 },
    +
    381 { 7938, 7946 }, { 7940, 7948 }, { 7942, 7950 },
    +
    382 { 881, 880 }, { 7952, 7960 }, { 883, 882 },
    +
    383 { 7954, 7962 }, { 7956, 7964 }, { 7968, 7976 },
    +
    384 { 7970, 7978 }, { 7972, 7980 }, { 7974, 7982 },
    +
    385 { 7984, 7992 }, { 7985, 7993 }, { 93807, 93775 },
    +
    386 { 11312, 11264 }, { 948, 916 }, { 8019, 8027 },
    +
    387 { 11346, 11298 }, { 950, 918 }, { 8021, 8029 },
    +
    388 { 11348, 11300 }, { 952, 1012 }, { 8023, 8031 },
    +
    389 { 11350, 11302 }, { 8113, 8121 }, { 1073, 1041 },
    +
    390 { 8144, 8152 }, { 11471, 11470 }, { 1089, 1057 },
    +
    391 { 8160, 8168 }, { 11487, 11486 }, { 1090, 1058 },
    +
    392 { 8161, 8169 }, { 107, 8490 }, { 8526, 8498 },
    +
    393 { 68832, 68768 }, { 479, 478 }, { 42905, 42904 },
    +
    394 { 513, 512 }, { 42939, 42938 }, { 515, 514 },
    +
    395 { 42941, 42940 }, { 517, 516 }, { 42943, 42942 },
    +
    396 { 519, 518 }, { 42945, 42944 }, { 521, 520 },
    +
    397 { 42947, 42946 }, { 43927, 5063 }, { 8572, 8556 },
    +
    398 { 43928, 5064 }, { 8573, 8557 }, { 42952, 42951 },
    +
    399 { 43929, 5065 }, { 8574, 8558 }, { 43930, 5066 },
    +
    400 { 8575, 8559 }, { 42954, 42953 }, { 9424, 9398 },
    +
    401 { 9426, 9400 }, { 9428, 9402 }, { 9430, 9404 },
    +
    402 { 9432, 9406 }, { 9434, 9408 }, { 9436, 9410 },
    +
    403 { 9437, 9411 }, { 9438, 9412 }, { 9439, 9413 },
    +
    404 { 9440, 9414 }, { 9441, 9415 }, { 9442, 9416 },
    +
    405 { 9443, 9417 }, { 9445, 9419 }, { 9446, 9420 },
    +
    406 { 9447, 9421 }, { 575, 11390 }, { 9448, 9422 },
    +
    407 { 576, 11391 }, { 9449, 9423 }, { 11337, 11289 },
    +
    408 { 11352, 11304 }, { 11354, 11306 }, { 11356, 11308 },
    +
    409 { 66615, 66575 }, { 619, 11362 }, { 68831, 68767 },
    +
    410 { 7549, 11363 }, { 66633, 66593 }, { 637, 11364 },
    +
    411 { 43888, 5024 }, { 593, 11373 }, { 66621, 66581 },
    +
    412 { 625, 11374 }, { 592, 11375 }, { 594, 11376 },
    +
    413 { 4332, 7340 }, { 11403, 11402 }, { 4334, 7342 },
    +
    414 { 11405, 11404 }, { 4336, 7344 }, { 11407, 11406 },
    +
    415 { 4338, 7346 }, { 11409, 11408 }, { 4340, 7348 },
    +
    416 { 11411, 11410 }, { 4342, 7350 }, { 11413, 11412 },
    +
    417 { 4344, 7352 }, { 11415, 11414 }, { 4346, 7354 },
    +
    418 { 11417, 11416 }, { 11419, 11418 }, { 11467, 11466 },
    +
    419 { 11469, 11468 }, { 11473, 11472 }, { 11475, 11474 },
    +
    420 { 11481, 11480 }, { 11483, 11482 }, { 11485, 11484 },
    +
    421 { 11489, 11488 }, { 11491, 11490 }, { 11502, 11501 },
    +
    422 { 42565, 42564 }, { 42567, 42566 }, { 42569, 42568 },
    +
    423 { 42639, 42638 }, { 42645, 42644 }, { 361, 360 },
    +
    424 { 42787, 42786 }, { 43896, 5032 }, { 363, 362 },
    +
    425 { 42789, 42788 }, { 647, 42929 }, { 43898, 5034 },
    +
    426 { 369, 368 }, { 42795, 42794 }, { 43904, 5040 },
    +
    427 { 371, 370 }, { 42797, 42796 }, { 43906, 5042 },
    +
    428 { 373, 372 }, { 42799, 42798 }, { 43908, 5044 },
    +
    429 { 42803, 42802 }, { 43912, 5048 }, { 42805, 42804 },
    +
    430 { 43914, 5050 }, { 42807, 42806 }, { 8561, 8545 },
    +
    431 { 43916, 5052 }, { 42809, 42808 }, { 8563, 8547 },
    +
    432 { 43918, 5054 }, { 42811, 42810 }, { 669, 42930 },
    +
    433 { 8565, 8549 }, { 43920, 5056 }, { 387, 386 },
    +
    434 { 42813, 42812 }, { 8567, 8551 }, { 43922, 5058 },
    +
    435 { 389, 388 }, { 42815, 42814 }, { 8569, 8553 },
    +
    436 { 43924, 5060 }, { 42817, 42816 }, { 8571, 8555 },
    +
    437 { 43926, 5062 }, { 5113, 5105 }, { 42825, 42824 },
    +
    438 { 43934, 5070 }, { 5115, 5107 }, { 42827, 42826 },
    +
    439 { 43936, 5072 }, { 5117, 5109 }, { 42829, 42828 },
    +
    440 { 43938, 5074 }, { 405, 502 }, { 42831, 42830 },
    +
    441 { 43940, 5076 }, { 42833, 42832 }, { 43942, 5078 },
    +
    442 { 409, 408 }, { 42835, 42834 }, { 43944, 5080 },
    +
    443 { 42837, 42836 }, { 43946, 5082 }, { 42839, 42838 },
    +
    444 { 43948, 5084 }, { 42841, 42840 }, { 43950, 5086 },
    +
    445 { 417, 416 }, { 42843, 42842 }, { 43952, 5088 },
    +
    446 { 419, 418 }, { 42845, 42844 }, { 43954, 5090 },
    +
    447 { 421, 420 }, { 42847, 42846 }, { 43956, 5092 },
    +
    448 { 42849, 42848 }, { 43958, 5094 }, { 42851, 42850 },
    +
    449 { 43960, 5096 }, { 42853, 42852 }, { 43962, 5098 },
    +
    450 { 429, 428 }, { 42855, 42854 }, { 43964, 5100 },
    +
    451 { 42857, 42856 }, { 43966, 5102 }, { 42859, 42858 },
    +
    452 { 42861, 42860 }, { 42863, 42862 }, { 68801, 68737 },
    +
    453 { 42874, 42873 }, { 68803, 68739 }, { 42876, 42875 },
    +
    454 { 68806, 68742 }, { 42879, 42878 }, { 68808, 68744 },
    +
    455 { 42881, 42880 }, { 68810, 68746 }, { 457, 455 },
    +
    456 { 42883, 42882 }, { 68812, 68748 }, { 42885, 42884 },
    +
    457 { 68814, 68750 }, { 42887, 42886 }, { 68819, 68755 },
    +
    458 { 466, 465 }, { 42892, 42891 }, { 66609, 66569 },
    +
    459 { 613, 42893 }, { 68824, 68760 }, { 42897, 42896 },
    +
    460 { 68826, 68762 }, { 42899, 42898 }, { 68830, 68766 },
    +
    461 { 477, 398 }, { 42903, 42902 }, { 68834, 68770 },
    +
    462 { 481, 480 }, { 42907, 42906 }, { 68836, 68772 },
    +
    463 { 483, 482 }, { 42909, 42908 }, { 68838, 68774 },
    +
    464 { 485, 484 }, { 42911, 42910 }, { 68840, 68776 },
    +
    465 { 487, 486 }, { 42913, 42912 }, { 68842, 68778 },
    +
    466 { 489, 488 }, { 42915, 42914 }, { 68844, 68780 },
    +
    467 { 491, 490 }, { 42917, 42916 }, { 68846, 68782 },
    +
    468 { 493, 492 }, { 42919, 42918 }, { 66610, 66570 },
    +
    469 { 7685, 7684 }, { 614, 42922 }, { 66600, 66560 },
    +
    470 { 604, 42923 }, { 66605, 66565 }, { 609, 42924 },
    +
    471 { 66616, 66576 }, { 7691, 7690 }, { 620, 42925 },
    +
    472 { 66614, 66574 }, { 7689, 7688 }, { 618, 42926 },
    +
    473 { 7741, 7740 }, { 670, 42928 }, { 8566, 8550 },
    +
    474 { 43921, 5057 }, { 507, 506 }, { 42933, 42932 },
    +
    475 { 509, 508 }, { 42935, 42934 }, { 511, 510 },
    +
    476 { 42937, 42936 }, { 68827, 68763 }, { 474, 473 },
    +
    477 { 7545, 42877 }, { 42900, 42948 }, { 66638, 66598 },
    +
    478 { 7713, 7712 }, { 642, 42949 }, { 43893, 5029 },
    +
    479 { 68848, 68784 }, { 495, 494 }, { 42921, 42920 },
    +
    480 { 7566, 42950 }, { 535, 534 }, { 42961, 42960 },
    +
    481 { 541, 540 }, { 42967, 42966 }, { 543, 542 },
    +
    482 { 42969, 42968 }, { 572, 571 }, { 42998, 42997 },
    +
    483 { 43889, 5025 }, { 43890, 5026 }, { 43892, 5028 },
    +
    484 { 43895, 5031 }, { 43897, 5033 }, { 43905, 5041 },
    +
    485 { 43907, 5043 }, { 43910, 5046 }, { 43911, 5047 },
    +
    486 { 43913, 5049 }, { 8560, 8544 }, { 43915, 5051 },
    +
    487 { 8562, 8546 }, { 43917, 5053 }, { 8564, 8548 },
    +
    488 { 43919, 5055 }, { 8568, 8552 }, { 43923, 5059 },
    +
    489 { 8570, 8554 }, { 43925, 5061 }, { 43933, 5069 },
    +
    490 { 8580, 8579 }, { 43935, 5071 }, { 43937, 5073 },
    +
    491 { 43939, 5075 }, { 43941, 5077 }, { 43943, 5079 },
    +
    492 { 43945, 5081 }, { 43947, 5083 }, { 43949, 5085 },
    +
    493 { 43951, 5087 }, { 43953, 5089 }, { 43955, 5091 },
    +
    494 { 43957, 5093 }, { 43959, 5095 }, { 43961, 5097 },
    +
    495 { 43963, 5099 }, { 43965, 5101 }, { 43967, 5103 },
    +
    496 { 65347, 65315 }, { 65348, 65316 }, { 65350, 65318 },
    +
    497 { 65352, 65320 }, { 65354, 65322 }, { 65356, 65324 },
    +
    498 { 65358, 65326 }, { 65360, 65328 }, { 65362, 65330 },
    +
    499 { 65364, 65332 },
    +
    500 }};
    +
    501
    +
    502 if (c >= 'a' && c <= 'z')
    +
    503 {
    +
    504 return c - 32;
    +
    505 }
    +
    506
    +
    507 return utils::case_lookup(toupper_map, c);
    +
    508 }
    +
    509}
    Definition: _utils.hpp:34
    char32_t toupper(char32_t c)
    Definition: toupper.hpp:37
    diff --git a/utf16be_8hpp.html b/utf16be_8hpp.html index 54a211f..ec7c326 100644 --- a/utf16be_8hpp.html +++ b/utf16be_8hpp.html @@ -2,8 +2,8 @@ - - + + peelo-unicode: include/peelo/unicode/encoding/utf16be.hpp File Reference @@ -16,8 +16,8 @@
    - - + @@ -26,15 +26,16 @@
    +
    peelo-unicode
    - + +/* @license-end */ +

    Go to the source code of this file.

    - - + - + - + - +

    +

    Namespaces

     peelo
    namespace  peelo
     
     peelo::unicode
    namespace  peelo::unicode
     
     peelo::unicode::encoding
    namespace  peelo::unicode::encoding
     
     peelo::unicode::encoding::utf16be
    namespace  peelo::unicode::encoding::utf16be
     
    - @@ -90,7 +90,7 @@ diff --git a/utf16be_8hpp_source.html b/utf16be_8hpp_source.html index 939676d..0b9a121 100644 --- a/utf16be_8hpp_source.html +++ b/utf16be_8hpp_source.html @@ -2,8 +2,8 @@ - - + +peelo-unicode: include/peelo/unicode/encoding/utf16be.hpp Source File @@ -16,8 +16,8 @@

    +

    Functions

    void peelo::unicode::encoding::utf16be::encode_codepoint (char32_t c, std::string &output)
     
    - - + @@ -26,15 +26,16 @@
    +
    peelo-unicode
    - + +/* @license-end */ +
    -
    -
    utf16be.hpp
    +
    utf16be.hpp
    -Go to the documentation of this file.
    1 /*
    -
    2  * Copyright (c) 2018-2024, peelo.net
    -
    3  * All rights reserved.
    -
    4  *
    -
    5  * Redistribution and use in source and binary forms, with or without
    -
    6  * modification, are permitted provided that the following conditions are met:
    -
    7  *
    -
    8  * * Redistributions of source code must retain the above copyright notice,
    -
    9  * this list of conditions and the following disclaimer.
    -
    10  *
    -
    11  * * Redistributions in binary form must reproduce the above copyright notice,
    -
    12  * this list of conditions and the following disclaimer in the documentation
    -
    13  * and/or other materials provided with the distribution.
    -
    14  *
    -
    15  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
    -
    16  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
    -
    17  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
    -
    18  * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
    -
    19  * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
    -
    20  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
    -
    21  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
    -
    22  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
    -
    23  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
    -
    24  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
    -
    25  * POSSIBILITY OF SUCH DAMAGE.
    -
    26  */
    -
    27 #pragma once
    -
    28 
    - -
    30 
    - -
    32 {
    -
    33  inline void
    -
    34  encode_codepoint(char32_t c, std::string& output)
    -
    35  {
    -
    36  if (c > 0xffff)
    -
    37  {
    -
    38  const auto high = (c >> 10) + 0xd7c0;
    -
    39  const auto low = (c & 0x3ff) + 0xdc00;
    -
    40 
    -
    41  output.append(1, static_cast<unsigned char>((high >> 8) & 0xff));
    -
    42  output.append(1, static_cast<unsigned char>(high & 0xff));
    -
    43  output.append(1, static_cast<unsigned char>((low >> 8) & 0xff));
    -
    44  output.append(1, static_cast<unsigned char>(low & 0xff));
    -
    45  } else {
    -
    46  output.append(1, static_cast<unsigned char>((c & 0xff00) >> 8));
    -
    47  output.append(1, static_cast<unsigned char>(c & 0xff));
    -
    48  }
    -
    49  }
    -
    50 
    -
    55  inline std::string
    -
    56  encode(const char32_t* input, const std::size_t length)
    -
    57  {
    -
    58  return utils::encode(input, length, encode_codepoint);
    -
    59  }
    -
    60 
    -
    65  inline
    -
    66  std::string encode(const std::u32string& input)
    -
    67  {
    -
    68  return encode(input.c_str(), input.length());
    -
    69  }
    -
    70 
    -
    71  inline bool
    - -
    73  const char* input,
    -
    74  std::string::size_type& i,
    -
    75  const std::string::size_type length,
    -
    76  char32_t& output
    -
    77  )
    -
    78  {
    -
    79  unsigned char p0;
    -
    80  unsigned char p1;
    -
    81  unsigned char p2;
    -
    82  unsigned char p3;
    -
    83 
    -
    84  if ((input[i] & 0xfc) == 0xd8)
    -
    85  {
    -
    86  if (i + 3 >= length)
    -
    87  {
    -
    88  return false;
    -
    89  }
    -
    90  p0 = static_cast<unsigned char>(input[i]);
    -
    91  p1 = static_cast<unsigned char>(input[i + 1]);
    -
    92  p2 = static_cast<unsigned char>(input[i + 2]);
    -
    93  p3 = static_cast<unsigned char>(input[i + 3]);
    -
    94  output = static_cast<char32_t>(
    -
    95  ((((p0 << 8) + p1) & 0x03ff) << 10)
    -
    96  + (((p2 << 8) + p3) & 0x03ff) + 0x10000
    -
    97  );
    -
    98  i += 4;
    -
    99  } else {
    -
    100  if (i + 1 >= length)
    -
    101  {
    -
    102  return false;
    -
    103  }
    -
    104  p0 = static_cast<unsigned char>(input[i]);
    -
    105  p1 = static_cast<unsigned char>(input[i + 1]);
    -
    106  output = static_cast<char32_t>(p0 * 256 + p1);
    -
    107  i += 2;
    -
    108  }
    -
    109 
    -
    110  return true;
    -
    111  }
    -
    112 
    -
    117  inline std::u32string
    -
    118  decode(const char* input, const std::size_t length)
    -
    119  {
    -
    120  return utils::decode(input, length, decode_advance);
    -
    121  }
    -
    122 
    -
    127  inline std::u32string
    -
    128  decode(const std::string& input)
    -
    129  {
    -
    130  return utils::decode(
    -
    131  input.c_str(),
    -
    132  input.length(),
    - -
    134  );
    -
    135  }
    -
    136 
    -
    143  inline bool
    - -
    145  const char32_t* input,
    -
    146  const std::size_t length,
    -
    147  std::string& output
    -
    148  )
    -
    149  {
    -
    150  return utils::encode_validate(
    -
    151  input,
    -
    152  length,
    -
    153  output,
    - -
    155  );
    -
    156  }
    -
    157 
    -
    164  inline bool encode_validate(
    -
    165  const std::u32string& input,
    -
    166  std::string& output
    -
    167  )
    -
    168  {
    -
    169  return utils::encode_validate(
    -
    170  input.c_str(),
    -
    171  input.length(),
    -
    172  output,
    - -
    174  );
    -
    175  }
    -
    176 
    -
    183  inline bool
    - -
    185  const char* input,
    -
    186  const std::size_t length,
    -
    187  std::u32string& output
    -
    188  )
    -
    189  {
    -
    190  return utils::decode_validate(
    -
    191  input,
    -
    192  length,
    -
    193  output,
    - -
    195  );
    -
    196  }
    -
    197 
    -
    204  inline bool
    - -
    206  const std::string& input,
    -
    207  std::u32string& output
    -
    208  )
    -
    209  {
    -
    210  return utils::decode_validate(
    -
    211  input.c_str(),
    -
    212  input.length(),
    -
    213  output,
    - -
    215  );
    -
    216  }
    -
    217 }
    +Go to the documentation of this file.
    1/*
    +
    2 * Copyright (c) 2018-2024, peelo.net
    +
    3 * All rights reserved.
    +
    4 *
    +
    5 * Redistribution and use in source and binary forms, with or without
    +
    6 * modification, are permitted provided that the following conditions are met:
    +
    7 *
    +
    8 * * Redistributions of source code must retain the above copyright notice,
    +
    9 * this list of conditions and the following disclaimer.
    +
    10 *
    +
    11 * * Redistributions in binary form must reproduce the above copyright notice,
    +
    12 * this list of conditions and the following disclaimer in the documentation
    +
    13 * and/or other materials provided with the distribution.
    +
    14 *
    +
    15 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
    +
    16 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
    +
    17 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
    +
    18 * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
    +
    19 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
    +
    20 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
    +
    21 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
    +
    22 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
    +
    23 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
    +
    24 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
    +
    25 * POSSIBILITY OF SUCH DAMAGE.
    +
    26 */
    +
    27#pragma once
    +
    28
    + +
    30
    + +
    32{
    +
    33 inline void
    +
    34 encode_codepoint(char32_t c, std::string& output)
    +
    35 {
    +
    36 if (c > 0xffff)
    +
    37 {
    +
    38 const auto high = (c >> 10) + 0xd7c0;
    +
    39 const auto low = (c & 0x3ff) + 0xdc00;
    +
    40
    +
    41 output.append(1, static_cast<unsigned char>((high >> 8) & 0xff));
    +
    42 output.append(1, static_cast<unsigned char>(high & 0xff));
    +
    43 output.append(1, static_cast<unsigned char>((low >> 8) & 0xff));
    +
    44 output.append(1, static_cast<unsigned char>(low & 0xff));
    +
    45 } else {
    +
    46 output.append(1, static_cast<unsigned char>((c & 0xff00) >> 8));
    +
    47 output.append(1, static_cast<unsigned char>(c & 0xff));
    +
    48 }
    +
    49 }
    +
    50
    +
    55 inline std::string
    +
    56 encode(const char32_t* input, const std::size_t length)
    +
    57 {
    +
    58 return utils::encode(input, length, encode_codepoint);
    +
    59 }
    +
    60
    +
    65 inline
    +
    66 std::string encode(const std::u32string& input)
    +
    67 {
    +
    68 return encode(input.c_str(), input.length());
    +
    69 }
    +
    70
    +
    71 inline bool
    + +
    73 const char* input,
    +
    74 std::string::size_type& i,
    +
    75 const std::string::size_type length,
    +
    76 char32_t& output
    +
    77 )
    +
    78 {
    +
    79 unsigned char p0;
    +
    80 unsigned char p1;
    +
    81 unsigned char p2;
    +
    82 unsigned char p3;
    +
    83
    +
    84 if ((input[i] & 0xfc) == 0xd8)
    +
    85 {
    +
    86 if (i + 3 >= length)
    +
    87 {
    +
    88 return false;
    +
    89 }
    +
    90 p0 = static_cast<unsigned char>(input[i]);
    +
    91 p1 = static_cast<unsigned char>(input[i + 1]);
    +
    92 p2 = static_cast<unsigned char>(input[i + 2]);
    +
    93 p3 = static_cast<unsigned char>(input[i + 3]);
    +
    94 output = static_cast<char32_t>(
    +
    95 ((((p0 << 8) + p1) & 0x03ff) << 10)
    +
    96 + (((p2 << 8) + p3) & 0x03ff) + 0x10000
    +
    97 );
    +
    98 i += 4;
    +
    99 } else {
    +
    100 if (i + 1 >= length)
    +
    101 {
    +
    102 return false;
    +
    103 }
    +
    104 p0 = static_cast<unsigned char>(input[i]);
    +
    105 p1 = static_cast<unsigned char>(input[i + 1]);
    +
    106 output = static_cast<char32_t>(p0 * 256 + p1);
    +
    107 i += 2;
    +
    108 }
    +
    109
    +
    110 return true;
    +
    111 }
    +
    112
    +
    117 inline std::u32string
    +
    118 decode(const char* input, const std::size_t length)
    +
    119 {
    +
    120 return utils::decode(input, length, decode_advance);
    +
    121 }
    +
    122
    +
    127 inline std::u32string
    +
    128 decode(const std::string& input)
    +
    129 {
    +
    130 return utils::decode(
    +
    131 input.c_str(),
    +
    132 input.length(),
    + +
    134 );
    +
    135 }
    +
    136
    +
    143 inline bool
    + +
    145 const char32_t* input,
    +
    146 const std::size_t length,
    +
    147 std::string& output
    +
    148 )
    +
    149 {
    + +
    151 input,
    +
    152 length,
    +
    153 output,
    + +
    155 );
    +
    156 }
    +
    157
    +
    164 inline bool encode_validate(
    +
    165 const std::u32string& input,
    +
    166 std::string& output
    +
    167 )
    +
    168 {
    + +
    170 input.c_str(),
    +
    171 input.length(),
    +
    172 output,
    + +
    174 );
    +
    175 }
    +
    176
    +
    183 inline bool
    + +
    185 const char* input,
    +
    186 const std::size_t length,
    +
    187 std::u32string& output
    +
    188 )
    +
    189 {
    + +
    191 input,
    +
    192 length,
    +
    193 output,
    + +
    195 );
    +
    196 }
    +
    197
    +
    204 inline bool
    + +
    206 const std::string& input,
    +
    207 std::u32string& output
    +
    208 )
    +
    209 {
    + +
    211 input.c_str(),
    +
    212 input.length(),
    +
    213 output,
    + +
    215 );
    +
    216 }
    +
    217}
    Definition: utf16be.hpp:32
    bool decode_validate(const std::string &input, std::u32string &output)
    Definition: utf16be.hpp:205
    @@ -238,7 +238,7 @@
    diff --git a/utf16le_8hpp.html b/utf16le_8hpp.html index 4074e5f..76fe963 100644 --- a/utf16le_8hpp.html +++ b/utf16le_8hpp.html @@ -2,8 +2,8 @@ - - + + peelo-unicode: include/peelo/unicode/encoding/utf16le.hpp File Reference @@ -16,8 +16,8 @@
    - - + @@ -26,15 +26,16 @@
    +
    peelo-unicode
    - + +/* @license-end */ +

    Go to the source code of this file.

    - - + - + - + - +

    +

    Namespaces

     peelo
    namespace  peelo
     
     peelo::unicode
    namespace  peelo::unicode
     
     peelo::unicode::encoding
    namespace  peelo::unicode::encoding
     
     peelo::unicode::encoding::utf16le
    namespace  peelo::unicode::encoding::utf16le
     
    - @@ -90,7 +90,7 @@ diff --git a/utf16le_8hpp_source.html b/utf16le_8hpp_source.html index ccb052c..9956ba8 100644 --- a/utf16le_8hpp_source.html +++ b/utf16le_8hpp_source.html @@ -2,8 +2,8 @@ - - + +peelo-unicode: include/peelo/unicode/encoding/utf16le.hpp Source File @@ -16,8 +16,8 @@

    +

    Functions

    void peelo::unicode::encoding::utf16le::encode_codepoint (char32_t c, std::string &output)
     
    - - + @@ -26,15 +26,16 @@
    +
    peelo-unicode
    - + +/* @license-end */ +
    -
    -
    utf16le.hpp
    +
    utf16le.hpp
    -Go to the documentation of this file.
    1 /*
    -
    2  * Copyright (c) 2018-2024, peelo.net
    -
    3  * All rights reserved.
    -
    4  *
    -
    5  * Redistribution and use in source and binary forms, with or without
    -
    6  * modification, are permitted provided that the following conditions are met:
    -
    7  *
    -
    8  * * Redistributions of source code must retain the above copyright notice,
    -
    9  * this list of conditions and the following disclaimer.
    -
    10  *
    -
    11  * * Redistributions in binary form must reproduce the above copyright notice,
    -
    12  * this list of conditions and the following disclaimer in the documentation
    -
    13  * and/or other materials provided with the distribution.
    -
    14  *
    -
    15  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
    -
    16  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
    -
    17  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
    -
    18  * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
    -
    19  * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
    -
    20  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
    -
    21  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
    -
    22  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
    -
    23  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
    -
    24  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
    -
    25  * POSSIBILITY OF SUCH DAMAGE.
    -
    26  */
    -
    27 #pragma once
    -
    28 
    - -
    30 
    - -
    32 {
    -
    33  inline void
    -
    34  encode_codepoint(char32_t c, std::string& output)
    -
    35  {
    -
    36  if (c > 0xffff)
    -
    37  {
    -
    38  const auto high = (c >> 10) + 0xd7c0;
    -
    39  const auto low = (c & 0x3ff) + 0xdc00;
    -
    40 
    -
    41  output.append(1, static_cast<unsigned char>(high & 0xff));
    -
    42  output.append(1, static_cast<unsigned char>((high >> 8) & 0xff));
    -
    43  output.append(1, static_cast<unsigned char>(low & 0xff));
    -
    44  output.append(1, static_cast<unsigned char>((low >> 8) & 0xff));
    -
    45  } else {
    -
    46  output.append(1, static_cast<unsigned char>(c & 0xff));
    -
    47  output.append(1, static_cast<unsigned char>((c & 0xff00) >> 8));
    -
    48  }
    -
    49  }
    -
    50 
    -
    55  inline std::string
    -
    56  encode(const char32_t* input, const std::size_t length)
    -
    57  {
    -
    58  return utils::encode(input, length, encode_codepoint);
    -
    59  }
    -
    60 
    -
    65  inline std::string
    -
    66  encode(const std::u32string& input)
    -
    67  {
    -
    68  return encode(input.c_str(), input.length());
    -
    69  }
    -
    70 
    -
    71  inline bool
    - -
    73  const char* input,
    -
    74  std::string::size_type& i,
    -
    75  const std::string::size_type length,
    -
    76  char32_t& output
    -
    77  )
    -
    78  {
    -
    79  unsigned char p0;
    -
    80  unsigned char p1;
    -
    81  unsigned char p2;
    -
    82  unsigned char p3;
    -
    83 
    -
    84  if (i + 1 < length && (input[i + 1] & 0xfc) == 0xd8)
    -
    85  {
    -
    86  if (i + 3 >= length)
    -
    87  {
    -
    88  return false;
    -
    89  }
    -
    90  p0 = static_cast<unsigned char>(input[i]);
    -
    91  p1 = static_cast<unsigned char>(input[i + 1]);
    -
    92  p2 = static_cast<unsigned char>(input[i + 2]);
    -
    93  p3 = static_cast<unsigned char>(input[i + 3]);
    -
    94  output = static_cast<char32_t>(
    -
    95  ((((p1 << 8) + p0) & 0x03ff) << 10)
    -
    96  + (((p3 << 8) + p2) & 0x03ff) + 0x10000
    -
    97  );
    -
    98  i += 4;
    -
    99  } else {
    -
    100  if (i + 1 >= length)
    -
    101  {
    -
    102  return false;
    -
    103  }
    -
    104  p0 = static_cast<unsigned char>(input[i]);
    -
    105  p1 = static_cast<unsigned char>(input[i + 1]);
    -
    106  output = static_cast<char32_t>(p1 * 256 + p0);
    -
    107  i += 2;
    -
    108  }
    -
    109 
    -
    110  return true;
    -
    111  }
    -
    112 
    -
    117  inline std::u32string
    -
    118  decode(const char* input, const std::size_t length)
    -
    119  {
    -
    120  return utils::decode(input, length, decode_advance);
    -
    121  }
    -
    122 
    -
    127  inline std::u32string
    -
    128  decode(const std::string& input)
    -
    129  {
    -
    130  return utils::decode(
    -
    131  input.c_str(),
    -
    132  input.length(),
    - -
    134  );
    -
    135  }
    -
    136 
    -
    143  inline bool
    - -
    145  const char32_t* input,
    -
    146  const std::size_t length,
    -
    147  std::string& output
    -
    148  )
    -
    149  {
    -
    150  return utils::encode_validate(
    -
    151  input,
    -
    152  length,
    -
    153  output,
    - -
    155  );
    -
    156  }
    -
    157 
    -
    164  inline bool
    - -
    166  const std::u32string& input,
    -
    167  std::string& output
    -
    168  )
    -
    169  {
    -
    170  return utils::encode_validate(
    -
    171  input.c_str(),
    -
    172  input.length(),
    -
    173  output,
    - -
    175  );
    -
    176  }
    -
    177 
    -
    184  inline bool
    - -
    186  const char* input,
    -
    187  const std::size_t length,
    -
    188  std::u32string& output
    -
    189  )
    -
    190  {
    -
    191  return utils::decode_validate(
    -
    192  input,
    -
    193  length,
    -
    194  output,
    - -
    196  );
    -
    197  }
    -
    198 
    -
    205  inline bool
    - -
    207  const std::string& input,
    -
    208  std::u32string& output
    -
    209  )
    -
    210  {
    -
    211  return utils::decode_validate(
    -
    212  input.c_str(),
    -
    213  input.length(),
    -
    214  output,
    - -
    216  );
    -
    217  }
    -
    218 }
    +Go to the documentation of this file.
    1/*
    +
    2 * Copyright (c) 2018-2024, peelo.net
    +
    3 * All rights reserved.
    +
    4 *
    +
    5 * Redistribution and use in source and binary forms, with or without
    +
    6 * modification, are permitted provided that the following conditions are met:
    +
    7 *
    +
    8 * * Redistributions of source code must retain the above copyright notice,
    +
    9 * this list of conditions and the following disclaimer.
    +
    10 *
    +
    11 * * Redistributions in binary form must reproduce the above copyright notice,
    +
    12 * this list of conditions and the following disclaimer in the documentation
    +
    13 * and/or other materials provided with the distribution.
    +
    14 *
    +
    15 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
    +
    16 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
    +
    17 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
    +
    18 * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
    +
    19 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
    +
    20 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
    +
    21 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
    +
    22 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
    +
    23 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
    +
    24 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
    +
    25 * POSSIBILITY OF SUCH DAMAGE.
    +
    26 */
    +
    27#pragma once
    +
    28
    + +
    30
    + +
    32{
    +
    33 inline void
    +
    34 encode_codepoint(char32_t c, std::string& output)
    +
    35 {
    +
    36 if (c > 0xffff)
    +
    37 {
    +
    38 const auto high = (c >> 10) + 0xd7c0;
    +
    39 const auto low = (c & 0x3ff) + 0xdc00;
    +
    40
    +
    41 output.append(1, static_cast<unsigned char>(high & 0xff));
    +
    42 output.append(1, static_cast<unsigned char>((high >> 8) & 0xff));
    +
    43 output.append(1, static_cast<unsigned char>(low & 0xff));
    +
    44 output.append(1, static_cast<unsigned char>((low >> 8) & 0xff));
    +
    45 } else {
    +
    46 output.append(1, static_cast<unsigned char>(c & 0xff));
    +
    47 output.append(1, static_cast<unsigned char>((c & 0xff00) >> 8));
    +
    48 }
    +
    49 }
    +
    50
    +
    55 inline std::string
    +
    56 encode(const char32_t* input, const std::size_t length)
    +
    57 {
    +
    58 return utils::encode(input, length, encode_codepoint);
    +
    59 }
    +
    60
    +
    65 inline std::string
    +
    66 encode(const std::u32string& input)
    +
    67 {
    +
    68 return encode(input.c_str(), input.length());
    +
    69 }
    +
    70
    +
    71 inline bool
    + +
    73 const char* input,
    +
    74 std::string::size_type& i,
    +
    75 const std::string::size_type length,
    +
    76 char32_t& output
    +
    77 )
    +
    78 {
    +
    79 unsigned char p0;
    +
    80 unsigned char p1;
    +
    81 unsigned char p2;
    +
    82 unsigned char p3;
    +
    83
    +
    84 if (i + 1 < length && (input[i + 1] & 0xfc) == 0xd8)
    +
    85 {
    +
    86 if (i + 3 >= length)
    +
    87 {
    +
    88 return false;
    +
    89 }
    +
    90 p0 = static_cast<unsigned char>(input[i]);
    +
    91 p1 = static_cast<unsigned char>(input[i + 1]);
    +
    92 p2 = static_cast<unsigned char>(input[i + 2]);
    +
    93 p3 = static_cast<unsigned char>(input[i + 3]);
    +
    94 output = static_cast<char32_t>(
    +
    95 ((((p1 << 8) + p0) & 0x03ff) << 10)
    +
    96 + (((p3 << 8) + p2) & 0x03ff) + 0x10000
    +
    97 );
    +
    98 i += 4;
    +
    99 } else {
    +
    100 if (i + 1 >= length)
    +
    101 {
    +
    102 return false;
    +
    103 }
    +
    104 p0 = static_cast<unsigned char>(input[i]);
    +
    105 p1 = static_cast<unsigned char>(input[i + 1]);
    +
    106 output = static_cast<char32_t>(p1 * 256 + p0);
    +
    107 i += 2;
    +
    108 }
    +
    109
    +
    110 return true;
    +
    111 }
    +
    112
    +
    117 inline std::u32string
    +
    118 decode(const char* input, const std::size_t length)
    +
    119 {
    +
    120 return utils::decode(input, length, decode_advance);
    +
    121 }
    +
    122
    +
    127 inline std::u32string
    +
    128 decode(const std::string& input)
    +
    129 {
    +
    130 return utils::decode(
    +
    131 input.c_str(),
    +
    132 input.length(),
    + +
    134 );
    +
    135 }
    +
    136
    +
    143 inline bool
    + +
    145 const char32_t* input,
    +
    146 const std::size_t length,
    +
    147 std::string& output
    +
    148 )
    +
    149 {
    + +
    151 input,
    +
    152 length,
    +
    153 output,
    + +
    155 );
    +
    156 }
    +
    157
    +
    164 inline bool
    + +
    166 const std::u32string& input,
    +
    167 std::string& output
    +
    168 )
    +
    169 {
    + +
    171 input.c_str(),
    +
    172 input.length(),
    +
    173 output,
    + +
    175 );
    +
    176 }
    +
    177
    +
    184 inline bool
    + +
    186 const char* input,
    +
    187 const std::size_t length,
    +
    188 std::u32string& output
    +
    189 )
    +
    190 {
    + +
    192 input,
    +
    193 length,
    +
    194 output,
    + +
    196 );
    +
    197 }
    +
    198
    +
    205 inline bool
    + +
    207 const std::string& input,
    +
    208 std::u32string& output
    +
    209 )
    +
    210 {
    + +
    212 input.c_str(),
    +
    213 input.length(),
    +
    214 output,
    + +
    216 );
    +
    217 }
    +
    218}
    Definition: utf16le.hpp:32
    std::u32string decode(const char *input, const std::size_t length)
    Definition: utf16le.hpp:118
    @@ -239,7 +239,7 @@
    diff --git a/utf32be_8hpp.html b/utf32be_8hpp.html index 8a25536..cf55baa 100644 --- a/utf32be_8hpp.html +++ b/utf32be_8hpp.html @@ -2,8 +2,8 @@ - - + + peelo-unicode: include/peelo/unicode/encoding/utf32be.hpp File Reference @@ -16,8 +16,8 @@
    - - + @@ -26,15 +26,16 @@
    +
    peelo-unicode
    - + +/* @license-end */ +

    Go to the source code of this file.

    - - + - + - + - +

    +

    Namespaces

     peelo
    namespace  peelo
     
     peelo::unicode
    namespace  peelo::unicode
     
     peelo::unicode::encoding
    namespace  peelo::unicode::encoding
     
     peelo::unicode::encoding::utf32be
    namespace  peelo::unicode::encoding::utf32be
     
    - @@ -90,7 +90,7 @@ diff --git a/utf32be_8hpp_source.html b/utf32be_8hpp_source.html index d7ad53e..0243b4f 100644 --- a/utf32be_8hpp_source.html +++ b/utf32be_8hpp_source.html @@ -2,8 +2,8 @@ - - + +peelo-unicode: include/peelo/unicode/encoding/utf32be.hpp Source File @@ -16,8 +16,8 @@

    +

    Functions

    void peelo::unicode::encoding::utf32be::encode_codepoint (char32_t c, std::string &output)
     
    - - + @@ -26,15 +26,16 @@
    +
    peelo-unicode
    - + +/* @license-end */ +
    -
    -
    utf32be.hpp
    +
    utf32be.hpp
    -Go to the documentation of this file.
    1 /*
    -
    2  * Copyright (c) 2018-2024, peelo.net
    -
    3  * All rights reserved.
    -
    4  *
    -
    5  * Redistribution and use in source and binary forms, with or without
    -
    6  * modification, are permitted provided that the following conditions are met:
    -
    7  *
    -
    8  * * Redistributions of source code must retain the above copyright notice,
    -
    9  * this list of conditions and the following disclaimer.
    -
    10  *
    -
    11  * * Redistributions in binary form must reproduce the above copyright notice,
    -
    12  * this list of conditions and the following disclaimer in the documentation
    -
    13  * and/or other materials provided with the distribution.
    -
    14  *
    -
    15  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
    -
    16  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
    -
    17  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
    -
    18  * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
    -
    19  * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
    -
    20  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
    -
    21  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
    -
    22  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
    -
    23  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
    -
    24  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
    -
    25  * POSSIBILITY OF SUCH DAMAGE.
    -
    26  */
    -
    27 #pragma once
    -
    28 
    - -
    30 
    - -
    32 {
    -
    33  inline void
    -
    34  encode_codepoint(char32_t c, std::string& output)
    -
    35  {
    -
    36  output.append(1, static_cast<unsigned char>((c & 0xff000000) >> 24));
    -
    37  output.append(1, static_cast<unsigned char>((c & 0xff0000) >> 16));
    -
    38  output.append(1, static_cast<unsigned char>((c & 0xff00) >> 8));
    -
    39  output.append(1, static_cast<unsigned char>(c & 0xff));
    -
    40  }
    -
    41 
    -
    46  inline std::string
    -
    47  encode(const char32_t* input, const std::size_t length)
    -
    48  {
    -
    49  return utils::encode(input, length, encode_codepoint);
    -
    50  }
    -
    51 
    -
    56  inline std::string
    -
    57  encode(const std::u32string& input)
    -
    58  {
    -
    59  return encode(input.c_str(), input.length());
    -
    60  }
    -
    61 
    -
    62  inline bool
    - -
    64  const char* input,
    -
    65  std::string::size_type& i,
    -
    66  const std::string::size_type length,
    -
    67  char32_t& output
    -
    68  )
    -
    69  {
    -
    70  unsigned char p0;
    -
    71  unsigned char p1;
    -
    72  unsigned char p2;
    -
    73  unsigned char p3;
    -
    74 
    -
    75  if (i + 3 >= length)
    -
    76  {
    -
    77  return false;
    -
    78  }
    -
    79  p0 = static_cast<unsigned char>(input[i]);
    -
    80  p1 = static_cast<unsigned char>(input[i + 1]);
    -
    81  p2 = static_cast<unsigned char>(input[i + 2]);
    -
    82  p3 = static_cast<unsigned char>(input[i + 3]);
    -
    83  output = static_cast<char32_t>(((p0 * 256 + p1) * 256 + p2) * 256 + p3);
    -
    84  i += 4;
    -
    85 
    -
    86  return true;
    -
    87  }
    -
    88 
    -
    93  inline std::u32string
    -
    94  decode(const char* input, const std::size_t length)
    -
    95  {
    -
    96  return utils::decode(input, length, decode_advance);
    -
    97  }
    -
    98 
    -
    103  inline std::u32string
    -
    104  decode(const std::string& input)
    -
    105  {
    -
    106  return utils::decode(
    -
    107  input.c_str(),
    -
    108  input.length(),
    - -
    110  );
    -
    111  }
    -
    112 
    -
    119  inline bool
    - -
    121  const char32_t* input,
    -
    122  const std::size_t length,
    -
    123  std::string& output
    -
    124  )
    -
    125  {
    -
    126  return utils::encode_validate(
    -
    127  input,
    -
    128  length,
    -
    129  output,
    - -
    131  );
    -
    132  }
    -
    133 
    -
    140  inline bool
    - -
    142  const std::u32string& input,
    -
    143  std::string& output
    -
    144  )
    -
    145  {
    -
    146  return utils::encode_validate(
    -
    147  input.c_str(),
    -
    148  input.length(),
    -
    149  output,
    - -
    151  );
    -
    152  }
    -
    153 
    -
    160  inline bool
    - -
    162  const char* input,
    -
    163  const std::size_t length,
    -
    164  std::u32string& output
    -
    165  )
    -
    166  {
    -
    167  return utils::decode_validate(
    -
    168  input,
    -
    169  length,
    -
    170  output,
    - -
    172  );
    -
    173  }
    -
    174 
    -
    181  inline bool
    - -
    183  const std::string& input,
    -
    184  std::u32string& output
    -
    185  )
    -
    186  {
    -
    187  return utils::decode_validate(
    -
    188  input.c_str(),
    -
    189  input.length(),
    -
    190  output,
    - -
    192  );
    -
    193  }
    -
    194 }
    +Go to the documentation of this file.
    1/*
    +
    2 * Copyright (c) 2018-2024, peelo.net
    +
    3 * All rights reserved.
    +
    4 *
    +
    5 * Redistribution and use in source and binary forms, with or without
    +
    6 * modification, are permitted provided that the following conditions are met:
    +
    7 *
    +
    8 * * Redistributions of source code must retain the above copyright notice,
    +
    9 * this list of conditions and the following disclaimer.
    +
    10 *
    +
    11 * * Redistributions in binary form must reproduce the above copyright notice,
    +
    12 * this list of conditions and the following disclaimer in the documentation
    +
    13 * and/or other materials provided with the distribution.
    +
    14 *
    +
    15 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
    +
    16 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
    +
    17 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
    +
    18 * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
    +
    19 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
    +
    20 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
    +
    21 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
    +
    22 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
    +
    23 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
    +
    24 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
    +
    25 * POSSIBILITY OF SUCH DAMAGE.
    +
    26 */
    +
    27#pragma once
    +
    28
    + +
    30
    + +
    32{
    +
    33 inline void
    +
    34 encode_codepoint(char32_t c, std::string& output)
    +
    35 {
    +
    36 output.append(1, static_cast<unsigned char>((c & 0xff000000) >> 24));
    +
    37 output.append(1, static_cast<unsigned char>((c & 0xff0000) >> 16));
    +
    38 output.append(1, static_cast<unsigned char>((c & 0xff00) >> 8));
    +
    39 output.append(1, static_cast<unsigned char>(c & 0xff));
    +
    40 }
    +
    41
    +
    46 inline std::string
    +
    47 encode(const char32_t* input, const std::size_t length)
    +
    48 {
    +
    49 return utils::encode(input, length, encode_codepoint);
    +
    50 }
    +
    51
    +
    56 inline std::string
    +
    57 encode(const std::u32string& input)
    +
    58 {
    +
    59 return encode(input.c_str(), input.length());
    +
    60 }
    +
    61
    +
    62 inline bool
    + +
    64 const char* input,
    +
    65 std::string::size_type& i,
    +
    66 const std::string::size_type length,
    +
    67 char32_t& output
    +
    68 )
    +
    69 {
    +
    70 unsigned char p0;
    +
    71 unsigned char p1;
    +
    72 unsigned char p2;
    +
    73 unsigned char p3;
    +
    74
    +
    75 if (i + 3 >= length)
    +
    76 {
    +
    77 return false;
    +
    78 }
    +
    79 p0 = static_cast<unsigned char>(input[i]);
    +
    80 p1 = static_cast<unsigned char>(input[i + 1]);
    +
    81 p2 = static_cast<unsigned char>(input[i + 2]);
    +
    82 p3 = static_cast<unsigned char>(input[i + 3]);
    +
    83 output = static_cast<char32_t>(((p0 * 256 + p1) * 256 + p2) * 256 + p3);
    +
    84 i += 4;
    +
    85
    +
    86 return true;
    +
    87 }
    +
    88
    +
    93 inline std::u32string
    +
    94 decode(const char* input, const std::size_t length)
    +
    95 {
    +
    96 return utils::decode(input, length, decode_advance);
    +
    97 }
    +
    98
    +
    103 inline std::u32string
    +
    104 decode(const std::string& input)
    +
    105 {
    +
    106 return utils::decode(
    +
    107 input.c_str(),
    +
    108 input.length(),
    + +
    110 );
    +
    111 }
    +
    112
    +
    119 inline bool
    + +
    121 const char32_t* input,
    +
    122 const std::size_t length,
    +
    123 std::string& output
    +
    124 )
    +
    125 {
    + +
    127 input,
    +
    128 length,
    +
    129 output,
    + +
    131 );
    +
    132 }
    +
    133
    +
    140 inline bool
    + +
    142 const std::u32string& input,
    +
    143 std::string& output
    +
    144 )
    +
    145 {
    + +
    147 input.c_str(),
    +
    148 input.length(),
    +
    149 output,
    + +
    151 );
    +
    152 }
    +
    153
    +
    160 inline bool
    + +
    162 const char* input,
    +
    163 const std::size_t length,
    +
    164 std::u32string& output
    +
    165 )
    +
    166 {
    + +
    168 input,
    +
    169 length,
    +
    170 output,
    + +
    172 );
    +
    173 }
    +
    174
    +
    181 inline bool
    + +
    183 const std::string& input,
    +
    184 std::u32string& output
    +
    185 )
    +
    186 {
    + +
    188 input.c_str(),
    +
    189 input.length(),
    +
    190 output,
    + +
    192 );
    +
    193 }
    +
    194}
    Definition: utf32be.hpp:32
    bool decode_validate(const char *input, const std::size_t length, std::u32string &output)
    Definition: utf32be.hpp:161
    @@ -215,7 +215,7 @@
    diff --git a/utf32le_8hpp.html b/utf32le_8hpp.html index a64e8ea..1504834 100644 --- a/utf32le_8hpp.html +++ b/utf32le_8hpp.html @@ -2,8 +2,8 @@ - - + + peelo-unicode: include/peelo/unicode/encoding/utf32le.hpp File Reference @@ -16,8 +16,8 @@
    - - + @@ -26,15 +26,16 @@
    +
    peelo-unicode
    - + +/* @license-end */ +

    Go to the source code of this file.

    - - + - + - + - +

    +

    Namespaces

     peelo
    namespace  peelo
     
     peelo::unicode
    namespace  peelo::unicode
     
     peelo::unicode::encoding
    namespace  peelo::unicode::encoding
     
     peelo::unicode::encoding::utf32le
    namespace  peelo::unicode::encoding::utf32le
     
    - @@ -90,7 +90,7 @@ diff --git a/utf32le_8hpp_source.html b/utf32le_8hpp_source.html index e28866b..cdfb83f 100644 --- a/utf32le_8hpp_source.html +++ b/utf32le_8hpp_source.html @@ -2,8 +2,8 @@ - - + +peelo-unicode: include/peelo/unicode/encoding/utf32le.hpp Source File @@ -16,8 +16,8 @@

    +

    Functions

    void peelo::unicode::encoding::utf32le::encode_codepoint (char32_t c, std::string &output)
     
    - - + @@ -26,15 +26,16 @@
    +
    peelo-unicode
    - + +/* @license-end */ +
    -
    -
    utf32le.hpp
    +
    utf32le.hpp
    -Go to the documentation of this file.
    1 /*
    -
    2  * Copyright (c) 2018-2024, peelo.net
    -
    3  * All rights reserved.
    -
    4  *
    -
    5  * Redistribution and use in source and binary forms, with or without
    -
    6  * modification, are permitted provided that the following conditions are met:
    -
    7  *
    -
    8  * * Redistributions of source code must retain the above copyright notice,
    -
    9  * this list of conditions and the following disclaimer.
    -
    10  *
    -
    11  * * Redistributions in binary form must reproduce the above copyright notice,
    -
    12  * this list of conditions and the following disclaimer in the documentation
    -
    13  * and/or other materials provided with the distribution.
    -
    14  *
    -
    15  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
    -
    16  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
    -
    17  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
    -
    18  * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
    -
    19  * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
    -
    20  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
    -
    21  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
    -
    22  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
    -
    23  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
    -
    24  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
    -
    25  * POSSIBILITY OF SUCH DAMAGE.
    -
    26  */
    -
    27 #pragma once
    -
    28 
    - -
    30 
    - -
    32 {
    -
    33  inline void
    -
    34  encode_codepoint(char32_t c, std::string& output)
    -
    35  {
    -
    36  output.append(1, static_cast<unsigned char>(c & 0xff));
    -
    37  output.append(1, static_cast<unsigned char>((c & 0xff00) >> 8));
    -
    38  output.append(1, static_cast<unsigned char>((c & 0xff0000) >> 16));
    -
    39  output.append(1, static_cast<unsigned char>((c & 0xff000000) >> 24));
    -
    40  }
    -
    41 
    -
    46  inline std::string
    -
    47  encode(const char32_t* input, const std::size_t length)
    -
    48  {
    -
    49  return utils::encode(input, length, encode_codepoint);
    -
    50  }
    -
    51 
    -
    56  inline std::string
    -
    57  encode(const std::u32string& input)
    -
    58  {
    -
    59  return encode(input.c_str(), input.length());
    -
    60  }
    -
    61 
    -
    62  inline bool
    - -
    64  const char* input,
    -
    65  std::string::size_type& i,
    -
    66  const std::string::size_type length,
    -
    67  char32_t& output
    -
    68  )
    -
    69  {
    -
    70  unsigned char p0;
    -
    71  unsigned char p1;
    -
    72  unsigned char p2;
    -
    73  unsigned char p3;
    -
    74 
    -
    75  if (i + 3 >= length)
    -
    76  {
    -
    77  return false;
    -
    78  }
    -
    79  p0 = static_cast<unsigned char>(input[i]);
    -
    80  p1 = static_cast<unsigned char>(input[i + 1]);
    -
    81  p2 = static_cast<unsigned char>(input[i + 2]);
    -
    82  p3 = static_cast<unsigned char>(input[i + 3]);
    -
    83  output = static_cast<char32_t>(((p3 * 256 + p2) * 256 + p1) * 256 + p0);
    -
    84  i += 4;
    -
    85 
    -
    86  return true;
    -
    87  }
    -
    88 
    -
    93  inline std::u32string
    -
    94  decode(const char* input, const std::size_t length)
    -
    95  {
    -
    96  return utils::decode(input, length, decode_advance);
    -
    97  }
    -
    98 
    -
    103  inline std::u32string
    -
    104  decode(const std::string& input)
    -
    105  {
    -
    106  return utils::decode(
    -
    107  input.c_str(),
    -
    108  input.length(),
    - -
    110  );
    -
    111  }
    -
    112 
    -
    119  inline bool
    - -
    121  const char32_t* input,
    -
    122  const std::size_t length,
    -
    123  std::string& output
    -
    124  )
    -
    125  {
    -
    126  return utils::encode_validate(
    -
    127  input,
    -
    128  length,
    -
    129  output,
    - -
    131  );
    -
    132  }
    -
    133 
    -
    140  inline bool
    - -
    142  const std::u32string& input,
    -
    143  std::string& output
    -
    144  )
    -
    145  {
    -
    146  return utils::encode_validate(
    -
    147  input.c_str(),
    -
    148  input.length(),
    -
    149  output,
    - -
    151  );
    -
    152  }
    -
    153 
    -
    160  inline bool
    - -
    162  const char* input,
    -
    163  const std::size_t length,
    -
    164  std::u32string& output
    -
    165  )
    -
    166  {
    -
    167  return utils::decode_validate(
    -
    168  input,
    -
    169  length,
    -
    170  output,
    - -
    172  );
    -
    173  }
    -
    174 
    -
    181  inline bool
    - -
    183  const std::string& input,
    -
    184  std::u32string& output
    -
    185  )
    -
    186  {
    -
    187  return utils::decode_validate(
    -
    188  input.c_str(),
    -
    189  input.length(),
    -
    190  output,
    - -
    192  );
    -
    193  }
    -
    194 }
    +Go to the documentation of this file.
    1/*
    +
    2 * Copyright (c) 2018-2024, peelo.net
    +
    3 * All rights reserved.
    +
    4 *
    +
    5 * Redistribution and use in source and binary forms, with or without
    +
    6 * modification, are permitted provided that the following conditions are met:
    +
    7 *
    +
    8 * * Redistributions of source code must retain the above copyright notice,
    +
    9 * this list of conditions and the following disclaimer.
    +
    10 *
    +
    11 * * Redistributions in binary form must reproduce the above copyright notice,
    +
    12 * this list of conditions and the following disclaimer in the documentation
    +
    13 * and/or other materials provided with the distribution.
    +
    14 *
    +
    15 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
    +
    16 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
    +
    17 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
    +
    18 * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
    +
    19 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
    +
    20 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
    +
    21 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
    +
    22 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
    +
    23 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
    +
    24 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
    +
    25 * POSSIBILITY OF SUCH DAMAGE.
    +
    26 */
    +
    27#pragma once
    +
    28
    + +
    30
    + +
    32{
    +
    33 inline void
    +
    34 encode_codepoint(char32_t c, std::string& output)
    +
    35 {
    +
    36 output.append(1, static_cast<unsigned char>(c & 0xff));
    +
    37 output.append(1, static_cast<unsigned char>((c & 0xff00) >> 8));
    +
    38 output.append(1, static_cast<unsigned char>((c & 0xff0000) >> 16));
    +
    39 output.append(1, static_cast<unsigned char>((c & 0xff000000) >> 24));
    +
    40 }
    +
    41
    +
    46 inline std::string
    +
    47 encode(const char32_t* input, const std::size_t length)
    +
    48 {
    +
    49 return utils::encode(input, length, encode_codepoint);
    +
    50 }
    +
    51
    +
    56 inline std::string
    +
    57 encode(const std::u32string& input)
    +
    58 {
    +
    59 return encode(input.c_str(), input.length());
    +
    60 }
    +
    61
    +
    62 inline bool
    + +
    64 const char* input,
    +
    65 std::string::size_type& i,
    +
    66 const std::string::size_type length,
    +
    67 char32_t& output
    +
    68 )
    +
    69 {
    +
    70 unsigned char p0;
    +
    71 unsigned char p1;
    +
    72 unsigned char p2;
    +
    73 unsigned char p3;
    +
    74
    +
    75 if (i + 3 >= length)
    +
    76 {
    +
    77 return false;
    +
    78 }
    +
    79 p0 = static_cast<unsigned char>(input[i]);
    +
    80 p1 = static_cast<unsigned char>(input[i + 1]);
    +
    81 p2 = static_cast<unsigned char>(input[i + 2]);
    +
    82 p3 = static_cast<unsigned char>(input[i + 3]);
    +
    83 output = static_cast<char32_t>(((p3 * 256 + p2) * 256 + p1) * 256 + p0);
    +
    84 i += 4;
    +
    85
    +
    86 return true;
    +
    87 }
    +
    88
    +
    93 inline std::u32string
    +
    94 decode(const char* input, const std::size_t length)
    +
    95 {
    +
    96 return utils::decode(input, length, decode_advance);
    +
    97 }
    +
    98
    +
    103 inline std::u32string
    +
    104 decode(const std::string& input)
    +
    105 {
    +
    106 return utils::decode(
    +
    107 input.c_str(),
    +
    108 input.length(),
    + +
    110 );
    +
    111 }
    +
    112
    +
    119 inline bool
    + +
    121 const char32_t* input,
    +
    122 const std::size_t length,
    +
    123 std::string& output
    +
    124 )
    +
    125 {
    + +
    127 input,
    +
    128 length,
    +
    129 output,
    + +
    131 );
    +
    132 }
    +
    133
    +
    140 inline bool
    + +
    142 const std::u32string& input,
    +
    143 std::string& output
    +
    144 )
    +
    145 {
    + +
    147 input.c_str(),
    +
    148 input.length(),
    +
    149 output,
    + +
    151 );
    +
    152 }
    +
    153
    +
    160 inline bool
    + +
    162 const char* input,
    +
    163 const std::size_t length,
    +
    164 std::u32string& output
    +
    165 )
    +
    166 {
    + +
    168 input,
    +
    169 length,
    +
    170 output,
    + +
    172 );
    +
    173 }
    +
    174
    +
    181 inline bool
    + +
    183 const std::string& input,
    +
    184 std::u32string& output
    +
    185 )
    +
    186 {
    + +
    188 input.c_str(),
    +
    189 input.length(),
    +
    190 output,
    + +
    192 );
    +
    193 }
    +
    194}
    Definition: utf32le.hpp:32
    std::string encode(const std::u32string &input)
    Definition: utf32le.hpp:57
    @@ -215,7 +215,7 @@
    diff --git a/utf8_8hpp.html b/utf8_8hpp.html index 191fb0f..5ef5068 100644 --- a/utf8_8hpp.html +++ b/utf8_8hpp.html @@ -2,8 +2,8 @@ - - + + peelo-unicode: include/peelo/unicode/encoding/utf8.hpp File Reference @@ -16,8 +16,8 @@
    - - + @@ -26,15 +26,16 @@
    +
    peelo-unicode
    - + +/* @license-end */ +

    Go to the source code of this file.

    - - + - + - + - +

    +

    Namespaces

     peelo
    namespace  peelo
     
     peelo::unicode
    namespace  peelo::unicode
     
     peelo::unicode::encoding
    namespace  peelo::unicode::encoding
     
     peelo::unicode::encoding::utf8
    namespace  peelo::unicode::encoding::utf8
     
    - @@ -94,7 +94,7 @@ diff --git a/utf8_8hpp_source.html b/utf8_8hpp_source.html index 7531a4a..9f7ac3b 100644 --- a/utf8_8hpp_source.html +++ b/utf8_8hpp_source.html @@ -2,8 +2,8 @@ - - + +peelo-unicode: include/peelo/unicode/encoding/utf8.hpp Source File @@ -16,8 +16,8 @@

    +

    Functions

    std::size_t peelo::unicode::encoding::utf8::sequence_length (unsigned char byte)
     
    - - + @@ -26,15 +26,16 @@
    +
    peelo-unicode
    - + +/* @license-end */ +
    -
    -
    utf8.hpp
    +
    utf8.hpp
    -Go to the documentation of this file.
    1 /*
    -
    2  * Copyright (c) 2018-2024, peelo.net
    -
    3  * All rights reserved.
    -
    4  *
    -
    5  * Redistribution and use in source and binary forms, with or without
    -
    6  * modification, are permitted provided that the following conditions are met:
    -
    7  *
    -
    8  * * Redistributions of source code must retain the above copyright notice,
    -
    9  * this list of conditions and the following disclaimer.
    -
    10  *
    -
    11  * * Redistributions in binary form must reproduce the above copyright notice,
    -
    12  * this list of conditions and the following disclaimer in the documentation
    -
    13  * and/or other materials provided with the distribution.
    -
    14  *
    -
    15  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
    -
    16  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
    -
    17  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
    -
    18  * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
    -
    19  * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
    -
    20  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
    -
    21  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
    -
    22  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
    -
    23  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
    -
    24  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
    -
    25  * POSSIBILITY OF SUCH DAMAGE.
    -
    26  */
    -
    27 #pragma once
    -
    28 
    - -
    30 
    - -
    32 {
    -
    39  inline std::size_t
    -
    40  sequence_length(unsigned char byte)
    -
    41  {
    -
    42  if ((byte & 0x80) == 0x00)
    -
    43  {
    -
    44  return 1;
    -
    45  }
    -
    46  else if ((byte & 0xc0) == 0x80)
    -
    47  {
    -
    48  return 0;
    -
    49  }
    -
    50  else if ((byte & 0xe0) == 0xc0)
    -
    51  {
    -
    52  return 2;
    -
    53  }
    -
    54  else if ((byte & 0xf0) == 0xe0)
    -
    55  {
    -
    56  return 3;
    -
    57  }
    -
    58  else if ((byte & 0xf8) == 0xf0)
    -
    59  {
    -
    60  return 4;
    -
    61  } else {
    -
    62  return 0;
    -
    63  }
    -
    64  }
    -
    65 
    -
    71  inline std::size_t
    -
    72  codepoint_length(char32_t c)
    -
    73  {
    -
    74  if (c < 0x007f)
    -
    75  {
    -
    76  return 1;
    -
    77  }
    -
    78  else if (c < 0x07ff)
    -
    79  {
    -
    80  return 2;
    -
    81  }
    -
    82  else if (c < 0xffff)
    -
    83  {
    -
    84  return 3;
    -
    85  }
    -
    86  else if (c < 0x10ffff)
    -
    87  {
    -
    88  return 4;
    -
    89  } else {
    -
    90  return 0;
    -
    91  }
    -
    92  }
    -
    93 
    -
    94  inline void
    -
    95  encode_codepoint(char32_t c, std::string& output)
    -
    96  {
    -
    97  if (c <= 0x7f)
    -
    98  {
    -
    99  output.append(1, static_cast<char>(c));
    -
    100  }
    -
    101  else if (c <= 0x07ff)
    -
    102  {
    -
    103  output.append(1, static_cast<char>(0xc0 | ((c & 0x7c0) >> 6)));
    -
    104  output.append(1, static_cast<char>(0x80 | (c & 0x3f)));
    -
    105  }
    -
    106  else if (c <= 0xffff)
    -
    107  {
    -
    108  output.append(1, static_cast<char>(0xe0 | ((c & 0xf000)) >> 12));
    -
    109  output.append(1, static_cast<char>(0x80 | ((c & 0xfc0)) >> 6));
    -
    110  output.append(1, static_cast<char>(0x80 | (c & 0x3f)));
    -
    111  } else {
    -
    112  output.append(1, static_cast<char>(0xf0 | ((c & 0x1c0000) >> 18)));
    -
    113  output.append(1, static_cast<char>(0x80 | ((c & 0x3f000) >> 12)));
    -
    114  output.append(1, static_cast<char>(0x80 | ((c & 0xfc0) >> 6)));
    -
    115  output.append(1, static_cast<char>(0x80 | (c & 0x3f)));
    -
    116  }
    -
    117  }
    -
    118 
    -
    123  inline std::string
    -
    124  encode(const char32_t* input, std::size_t length)
    -
    125  {
    -
    126  return utils::encode(input, length, encode_codepoint);
    -
    127  }
    -
    128 
    -
    133  inline std::string
    -
    134  encode(const std::u32string& input)
    -
    135  {
    -
    136  return utils::encode(
    -
    137  input.c_str(),
    -
    138  input.length(),
    - -
    140  );
    -
    141  }
    -
    142 
    -
    143  inline bool
    - -
    145  const char* input,
    -
    146  std::size_t& i,
    -
    147  const std::size_t length,
    -
    148  char32_t& result
    -
    149  )
    -
    150  {
    -
    151  const auto seq_length = sequence_length(input[i]);
    -
    152 
    -
    153  if (!seq_length || i + (seq_length - 1) >= length)
    -
    154  {
    -
    155  return false;
    -
    156  }
    -
    157 
    -
    158  switch (seq_length)
    -
    159  {
    -
    160  case 1:
    -
    161  result = static_cast<char32_t>(input[i]);
    -
    162  break;
    -
    163 
    -
    164  case 2:
    -
    165  result = static_cast<char32_t>(input[i] & 0x1f);
    -
    166  break;
    -
    167 
    -
    168  case 3:
    -
    169  result = static_cast<char32_t>(input[i] & 0x0f);
    -
    170  break;
    -
    171 
    -
    172  case 4:
    -
    173  result = static_cast<char32_t>(input[i] & 0x07);
    -
    174  break;
    -
    175 
    -
    176  default:
    -
    177  return false;
    -
    178  }
    -
    179 
    -
    180  for (std::size_t j = 1; j < seq_length; ++j)
    -
    181  {
    -
    182  if ((input[i + j] & 0xc0) != 0x80)
    -
    183  {
    -
    184  return false;
    -
    185  }
    -
    186  result = (result << 6) | (input[i + j] & 0x3f);
    -
    187  }
    -
    188 
    -
    189  i += seq_length;
    -
    190 
    -
    191  return true;
    -
    192  }
    -
    193 
    -
    198  inline std::u32string
    -
    199  decode(const char* input, const std::size_t length)
    -
    200  {
    -
    201  return utils::decode(input, length, decode_advance);
    -
    202  }
    -
    203 
    -
    208  inline std::u32string
    -
    209  decode(const std::string& input)
    -
    210  {
    -
    211  return utils::decode(
    -
    212  input.c_str(),
    -
    213  input.length(),
    - -
    215  );
    -
    216  }
    -
    217 
    -
    224  inline bool
    - -
    226  const char32_t* input,
    -
    227  const std::size_t length,
    -
    228  std::string& output
    -
    229  )
    -
    230  {
    -
    231  return utils::encode_validate(
    -
    232  input,
    -
    233  length,
    -
    234  output,
    - -
    236  );
    -
    237  }
    -
    238 
    -
    245  inline bool
    -
    246  encode_validate(const std::u32string& input, std::string& output)
    -
    247  {
    -
    248  return utils::encode_validate(
    -
    249  input.c_str(),
    -
    250  input.length(),
    -
    251  output,
    - -
    253  );
    -
    254  }
    -
    255 
    -
    262  inline bool
    - -
    264  const char* input,
    -
    265  const std::size_t length,
    -
    266  std::u32string& output
    -
    267  )
    -
    268  {
    -
    269  return utils::decode_validate(
    -
    270  input,
    -
    271  length,
    -
    272  output,
    - -
    274  );
    -
    275  }
    -
    276 
    -
    283  inline bool
    -
    284  decode_validate(const std::string& input, std::u32string& output)
    -
    285  {
    -
    286  return utils::decode_validate(
    -
    287  input.c_str(),
    -
    288  input.length(),
    -
    289  output,
    - -
    291  );
    -
    292  }
    -
    293 }
    +Go to the documentation of this file.
    1/*
    +
    2 * Copyright (c) 2018-2024, peelo.net
    +
    3 * All rights reserved.
    +
    4 *
    +
    5 * Redistribution and use in source and binary forms, with or without
    +
    6 * modification, are permitted provided that the following conditions are met:
    +
    7 *
    +
    8 * * Redistributions of source code must retain the above copyright notice,
    +
    9 * this list of conditions and the following disclaimer.
    +
    10 *
    +
    11 * * Redistributions in binary form must reproduce the above copyright notice,
    +
    12 * this list of conditions and the following disclaimer in the documentation
    +
    13 * and/or other materials provided with the distribution.
    +
    14 *
    +
    15 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
    +
    16 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
    +
    17 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
    +
    18 * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
    +
    19 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
    +
    20 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
    +
    21 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
    +
    22 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
    +
    23 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
    +
    24 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
    +
    25 * POSSIBILITY OF SUCH DAMAGE.
    +
    26 */
    +
    27#pragma once
    +
    28
    + +
    30
    + +
    32{
    +
    39 inline std::size_t
    +
    40 sequence_length(unsigned char byte)
    +
    41 {
    +
    42 if ((byte & 0x80) == 0x00)
    +
    43 {
    +
    44 return 1;
    +
    45 }
    +
    46 else if ((byte & 0xc0) == 0x80)
    +
    47 {
    +
    48 return 0;
    +
    49 }
    +
    50 else if ((byte & 0xe0) == 0xc0)
    +
    51 {
    +
    52 return 2;
    +
    53 }
    +
    54 else if ((byte & 0xf0) == 0xe0)
    +
    55 {
    +
    56 return 3;
    +
    57 }
    +
    58 else if ((byte & 0xf8) == 0xf0)
    +
    59 {
    +
    60 return 4;
    +
    61 } else {
    +
    62 return 0;
    +
    63 }
    +
    64 }
    +
    65
    +
    71 inline std::size_t
    +
    72 codepoint_length(char32_t c)
    +
    73 {
    +
    74 if (c < 0x007f)
    +
    75 {
    +
    76 return 1;
    +
    77 }
    +
    78 else if (c < 0x07ff)
    +
    79 {
    +
    80 return 2;
    +
    81 }
    +
    82 else if (c < 0xffff)
    +
    83 {
    +
    84 return 3;
    +
    85 }
    +
    86 else if (c < 0x10ffff)
    +
    87 {
    +
    88 return 4;
    +
    89 } else {
    +
    90 return 0;
    +
    91 }
    +
    92 }
    +
    93
    +
    94 inline void
    +
    95 encode_codepoint(char32_t c, std::string& output)
    +
    96 {
    +
    97 if (c <= 0x7f)
    +
    98 {
    +
    99 output.append(1, static_cast<char>(c));
    +
    100 }
    +
    101 else if (c <= 0x07ff)
    +
    102 {
    +
    103 output.append(1, static_cast<char>(0xc0 | ((c & 0x7c0) >> 6)));
    +
    104 output.append(1, static_cast<char>(0x80 | (c & 0x3f)));
    +
    105 }
    +
    106 else if (c <= 0xffff)
    +
    107 {
    +
    108 output.append(1, static_cast<char>(0xe0 | ((c & 0xf000)) >> 12));
    +
    109 output.append(1, static_cast<char>(0x80 | ((c & 0xfc0)) >> 6));
    +
    110 output.append(1, static_cast<char>(0x80 | (c & 0x3f)));
    +
    111 } else {
    +
    112 output.append(1, static_cast<char>(0xf0 | ((c & 0x1c0000) >> 18)));
    +
    113 output.append(1, static_cast<char>(0x80 | ((c & 0x3f000) >> 12)));
    +
    114 output.append(1, static_cast<char>(0x80 | ((c & 0xfc0) >> 6)));
    +
    115 output.append(1, static_cast<char>(0x80 | (c & 0x3f)));
    +
    116 }
    +
    117 }
    +
    118
    +
    123 inline std::string
    +
    124 encode(const char32_t* input, std::size_t length)
    +
    125 {
    +
    126 return utils::encode(input, length, encode_codepoint);
    +
    127 }
    +
    128
    +
    133 inline std::string
    +
    134 encode(const std::u32string& input)
    +
    135 {
    +
    136 return utils::encode(
    +
    137 input.c_str(),
    +
    138 input.length(),
    + +
    140 );
    +
    141 }
    +
    142
    +
    143 inline bool
    + +
    145 const char* input,
    +
    146 std::size_t& i,
    +
    147 const std::size_t length,
    +
    148 char32_t& result
    +
    149 )
    +
    150 {
    +
    151 const auto seq_length = sequence_length(input[i]);
    +
    152
    +
    153 if (!seq_length || i + (seq_length - 1) >= length)
    +
    154 {
    +
    155 return false;
    +
    156 }
    +
    157
    +
    158 switch (seq_length)
    +
    159 {
    +
    160 case 1:
    +
    161 result = static_cast<char32_t>(input[i]);
    +
    162 break;
    +
    163
    +
    164 case 2:
    +
    165 result = static_cast<char32_t>(input[i] & 0x1f);
    +
    166 break;
    +
    167
    +
    168 case 3:
    +
    169 result = static_cast<char32_t>(input[i] & 0x0f);
    +
    170 break;
    +
    171
    +
    172 case 4:
    +
    173 result = static_cast<char32_t>(input[i] & 0x07);
    +
    174 break;
    +
    175
    +
    176 default:
    +
    177 return false;
    +
    178 }
    +
    179
    +
    180 for (std::size_t j = 1; j < seq_length; ++j)
    +
    181 {
    +
    182 if ((input[i + j] & 0xc0) != 0x80)
    +
    183 {
    +
    184 return false;
    +
    185 }
    +
    186 result = (result << 6) | (input[i + j] & 0x3f);
    +
    187 }
    +
    188
    +
    189 i += seq_length;
    +
    190
    +
    191 return true;
    +
    192 }
    +
    193
    +
    198 inline std::u32string
    +
    199 decode(const char* input, const std::size_t length)
    +
    200 {
    +
    201 return utils::decode(input, length, decode_advance);
    +
    202 }
    +
    203
    +
    208 inline std::u32string
    +
    209 decode(const std::string& input)
    +
    210 {
    +
    211 return utils::decode(
    +
    212 input.c_str(),
    +
    213 input.length(),
    + +
    215 );
    +
    216 }
    +
    217
    +
    224 inline bool
    + +
    226 const char32_t* input,
    +
    227 const std::size_t length,
    +
    228 std::string& output
    +
    229 )
    +
    230 {
    + +
    232 input,
    +
    233 length,
    +
    234 output,
    + +
    236 );
    +
    237 }
    +
    238
    +
    245 inline bool
    +
    246 encode_validate(const std::u32string& input, std::string& output)
    +
    247 {
    + +
    249 input.c_str(),
    +
    250 input.length(),
    +
    251 output,
    + +
    253 );
    +
    254 }
    +
    255
    +
    262 inline bool
    + +
    264 const char* input,
    +
    265 const std::size_t length,
    +
    266 std::u32string& output
    +
    267 )
    +
    268 {
    + +
    270 input,
    +
    271 length,
    +
    272 output,
    + +
    274 );
    +
    275 }
    +
    276
    +
    283 inline bool
    +
    284 decode_validate(const std::string& input, std::u32string& output)
    +
    285 {
    + +
    287 input.c_str(),
    +
    288 input.length(),
    +
    289 output,
    + +
    291 );
    +
    292 }
    +
    293}
    Definition: utf8.hpp:32
    std::string encode(const char32_t *input, std::size_t length)
    Definition: utf8.hpp:124
    @@ -305,7 +305,7 @@