Ada 2.8.0
Fast spec-compliant URL parser
Loading...
Searching...
No Matches
character_sets-inl.h
Go to the documentation of this file.
1
7#ifndef ADA_CHARACTER_SETS_INL_H
8#define ADA_CHARACTER_SETS_INL_H
9
10#include "ada/character_sets.h"
11
18
19constexpr char hex[1024] =
20 "%00\0%01\0%02\0%03\0%04\0%05\0%06\0%07\0"
21 "%08\0%09\0%0A\0%0B\0%0C\0%0D\0%0E\0%0F\0"
22 "%10\0%11\0%12\0%13\0%14\0%15\0%16\0%17\0"
23 "%18\0%19\0%1A\0%1B\0%1C\0%1D\0%1E\0%1F\0"
24 "%20\0%21\0%22\0%23\0%24\0%25\0%26\0%27\0"
25 "%28\0%29\0%2A\0%2B\0%2C\0%2D\0%2E\0%2F\0"
26 "%30\0%31\0%32\0%33\0%34\0%35\0%36\0%37\0"
27 "%38\0%39\0%3A\0%3B\0%3C\0%3D\0%3E\0%3F\0"
28 "%40\0%41\0%42\0%43\0%44\0%45\0%46\0%47\0"
29 "%48\0%49\0%4A\0%4B\0%4C\0%4D\0%4E\0%4F\0"
30 "%50\0%51\0%52\0%53\0%54\0%55\0%56\0%57\0"
31 "%58\0%59\0%5A\0%5B\0%5C\0%5D\0%5E\0%5F\0"
32 "%60\0%61\0%62\0%63\0%64\0%65\0%66\0%67\0"
33 "%68\0%69\0%6A\0%6B\0%6C\0%6D\0%6E\0%6F\0"
34 "%70\0%71\0%72\0%73\0%74\0%75\0%76\0%77\0"
35 "%78\0%79\0%7A\0%7B\0%7C\0%7D\0%7E\0%7F\0"
36 "%80\0%81\0%82\0%83\0%84\0%85\0%86\0%87\0"
37 "%88\0%89\0%8A\0%8B\0%8C\0%8D\0%8E\0%8F\0"
38 "%90\0%91\0%92\0%93\0%94\0%95\0%96\0%97\0"
39 "%98\0%99\0%9A\0%9B\0%9C\0%9D\0%9E\0%9F\0"
40 "%A0\0%A1\0%A2\0%A3\0%A4\0%A5\0%A6\0%A7\0"
41 "%A8\0%A9\0%AA\0%AB\0%AC\0%AD\0%AE\0%AF\0"
42 "%B0\0%B1\0%B2\0%B3\0%B4\0%B5\0%B6\0%B7\0"
43 "%B8\0%B9\0%BA\0%BB\0%BC\0%BD\0%BE\0%BF\0"
44 "%C0\0%C1\0%C2\0%C3\0%C4\0%C5\0%C6\0%C7\0"
45 "%C8\0%C9\0%CA\0%CB\0%CC\0%CD\0%CE\0%CF\0"
46 "%D0\0%D1\0%D2\0%D3\0%D4\0%D5\0%D6\0%D7\0"
47 "%D8\0%D9\0%DA\0%DB\0%DC\0%DD\0%DE\0%DF\0"
48 "%E0\0%E1\0%E2\0%E3\0%E4\0%E5\0%E6\0%E7\0"
49 "%E8\0%E9\0%EA\0%EB\0%EC\0%ED\0%EE\0%EF\0"
50 "%F0\0%F1\0%F2\0%F3\0%F4\0%F5\0%F6\0%F7\0"
51 "%F8\0%F9\0%FA\0%FB\0%FC\0%FD\0%FE\0%FF";
52
53constexpr uint8_t C0_CONTROL_PERCENT_ENCODE[32] = {
54 // 00 01 02 03 04 05 06 07
55 0x01 | 0x02 | 0x04 | 0x08 | 0x10 | 0x20 | 0x40 | 0x80,
56 // 08 09 0A 0B 0C 0D 0E 0F
57 0x01 | 0x02 | 0x04 | 0x08 | 0x10 | 0x20 | 0x40 | 0x80,
58 // 10 11 12 13 14 15 16 17
59 0x01 | 0x02 | 0x04 | 0x08 | 0x10 | 0x20 | 0x40 | 0x80,
60 // 18 19 1A 1B 1C 1D 1E 1F
61 0x01 | 0x02 | 0x04 | 0x08 | 0x10 | 0x20 | 0x40 | 0x80,
62 // 20 21 22 23 24 25 26 27
63 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00,
64 // 28 29 2A 2B 2C 2D 2E 2F
65 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00,
66 // 30 31 32 33 34 35 36 37
67 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00,
68 // 38 39 3A 3B 3C 3D 3E 3F
69 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00,
70 // 40 41 42 43 44 45 46 47
71 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00,
72 // 48 49 4A 4B 4C 4D 4E 4F
73 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00,
74 // 50 51 52 53 54 55 56 57
75 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00,
76 // 58 59 5A 5B 5C 5D 5E 5F
77 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00,
78 // 60 61 62 63 64 65 66 67
79 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00,
80 // 68 69 6A 6B 6C 6D 6E 6F
81 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00,
82 // 70 71 72 73 74 75 76 77
83 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00,
84 // 78 79 7A 7B 7C 7D 7E 7F
85 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x80,
86 // 80 81 82 83 84 85 86 87
87 0x01 | 0x02 | 0x04 | 0x08 | 0x10 | 0x20 | 0x40 | 0x80,
88 // 88 89 8A 8B 8C 8D 8E 8F
89 0x01 | 0x02 | 0x04 | 0x08 | 0x10 | 0x20 | 0x40 | 0x80,
90 // 90 91 92 93 94 95 96 97
91 0x01 | 0x02 | 0x04 | 0x08 | 0x10 | 0x20 | 0x40 | 0x80,
92 // 98 99 9A 9B 9C 9D 9E 9F
93 0x01 | 0x02 | 0x04 | 0x08 | 0x10 | 0x20 | 0x40 | 0x80,
94 // A0 A1 A2 A3 A4 A5 A6 A7
95 0x01 | 0x02 | 0x04 | 0x08 | 0x10 | 0x20 | 0x40 | 0x80,
96 // A8 A9 AA AB AC AD AE AF
97 0x01 | 0x02 | 0x04 | 0x08 | 0x10 | 0x20 | 0x40 | 0x80,
98 // B0 B1 B2 B3 B4 B5 B6 B7
99 0x01 | 0x02 | 0x04 | 0x08 | 0x10 | 0x20 | 0x40 | 0x80,
100 // B8 B9 BA BB BC BD BE BF
101 0x01 | 0x02 | 0x04 | 0x08 | 0x10 | 0x20 | 0x40 | 0x80,
102 // C0 C1 C2 C3 C4 C5 C6 C7
103 0x01 | 0x02 | 0x04 | 0x08 | 0x10 | 0x20 | 0x40 | 0x80,
104 // C8 C9 CA CB CC CD CE CF
105 0x01 | 0x02 | 0x04 | 0x08 | 0x10 | 0x20 | 0x40 | 0x80,
106 // D0 D1 D2 D3 D4 D5 D6 D7
107 0x01 | 0x02 | 0x04 | 0x08 | 0x10 | 0x20 | 0x40 | 0x80,
108 // D8 D9 DA DB DC DD DE DF
109 0x01 | 0x02 | 0x04 | 0x08 | 0x10 | 0x20 | 0x40 | 0x80,
110 // E0 E1 E2 E3 E4 E5 E6 E7
111 0x01 | 0x02 | 0x04 | 0x08 | 0x10 | 0x20 | 0x40 | 0x80,
112 // E8 E9 EA EB EC ED EE EF
113 0x01 | 0x02 | 0x04 | 0x08 | 0x10 | 0x20 | 0x40 | 0x80,
114 // F0 F1 F2 F3 F4 F5 F6 F7
115 0x01 | 0x02 | 0x04 | 0x08 | 0x10 | 0x20 | 0x40 | 0x80,
116 // F8 F9 FA FB FC FD FE FF
117 0x01 | 0x02 | 0x04 | 0x08 | 0x10 | 0x20 | 0x40 | 0x80};
118
119constexpr uint8_t SPECIAL_QUERY_PERCENT_ENCODE[32] = {
120 // 00 01 02 03 04 05 06 07
121 0x01 | 0x02 | 0x04 | 0x08 | 0x10 | 0x20 | 0x40 | 0x80,
122 // 08 09 0A 0B 0C 0D 0E 0F
123 0x01 | 0x02 | 0x04 | 0x08 | 0x10 | 0x20 | 0x40 | 0x80,
124 // 10 11 12 13 14 15 16 17
125 0x01 | 0x02 | 0x04 | 0x08 | 0x10 | 0x20 | 0x40 | 0x80,
126 // 18 19 1A 1B 1C 1D 1E 1F
127 0x01 | 0x02 | 0x04 | 0x08 | 0x10 | 0x20 | 0x40 | 0x80,
128 // 20 21 22 23 24 25 26 27
129 0x01 | 0x00 | 0x04 | 0x08 | 0x00 | 0x00 | 0x00 | 0x80,
130 // 28 29 2A 2B 2C 2D 2E 2F
131 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00,
132 // 30 31 32 33 34 35 36 37
133 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00,
134 // 38 39 3A 3B 3C 3D 3E 3F
135 0x00 | 0x00 | 0x00 | 0x00 | 0x10 | 0x00 | 0x40 | 0x00,
136 // 40 41 42 43 44 45 46 47
137 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00,
138 // 48 49 4A 4B 4C 4D 4E 4F
139 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00,
140 // 50 51 52 53 54 55 56 57
141 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00,
142 // 58 59 5A 5B 5C 5D 5E 5F
143 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00,
144 // 60 61 62 63 64 65 66 67
145 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00,
146 // 68 69 6A 6B 6C 6D 6E 6F
147 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00,
148 // 70 71 72 73 74 75 76 77
149 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00,
150 // 78 79 7A 7B 7C 7D 7E 7F
151 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x80,
152 // 80 81 82 83 84 85 86 87
153 0x01 | 0x02 | 0x04 | 0x08 | 0x10 | 0x20 | 0x40 | 0x80,
154 // 88 89 8A 8B 8C 8D 8E 8F
155 0x01 | 0x02 | 0x04 | 0x08 | 0x10 | 0x20 | 0x40 | 0x80,
156 // 90 91 92 93 94 95 96 97
157 0x01 | 0x02 | 0x04 | 0x08 | 0x10 | 0x20 | 0x40 | 0x80,
158 // 98 99 9A 9B 9C 9D 9E 9F
159 0x01 | 0x02 | 0x04 | 0x08 | 0x10 | 0x20 | 0x40 | 0x80,
160 // A0 A1 A2 A3 A4 A5 A6 A7
161 0x01 | 0x02 | 0x04 | 0x08 | 0x10 | 0x20 | 0x40 | 0x80,
162 // A8 A9 AA AB AC AD AE AF
163 0x01 | 0x02 | 0x04 | 0x08 | 0x10 | 0x20 | 0x40 | 0x80,
164 // B0 B1 B2 B3 B4 B5 B6 B7
165 0x01 | 0x02 | 0x04 | 0x08 | 0x10 | 0x20 | 0x40 | 0x80,
166 // B8 B9 BA BB BC BD BE BF
167 0x01 | 0x02 | 0x04 | 0x08 | 0x10 | 0x20 | 0x40 | 0x80,
168 // C0 C1 C2 C3 C4 C5 C6 C7
169 0x01 | 0x02 | 0x04 | 0x08 | 0x10 | 0x20 | 0x40 | 0x80,
170 // C8 C9 CA CB CC CD CE CF
171 0x01 | 0x02 | 0x04 | 0x08 | 0x10 | 0x20 | 0x40 | 0x80,
172 // D0 D1 D2 D3 D4 D5 D6 D7
173 0x01 | 0x02 | 0x04 | 0x08 | 0x10 | 0x20 | 0x40 | 0x80,
174 // D8 D9 DA DB DC DD DE DF
175 0x01 | 0x02 | 0x04 | 0x08 | 0x10 | 0x20 | 0x40 | 0x80,
176 // E0 E1 E2 E3 E4 E5 E6 E7
177 0x01 | 0x02 | 0x04 | 0x08 | 0x10 | 0x20 | 0x40 | 0x80,
178 // E8 E9 EA EB EC ED EE EF
179 0x01 | 0x02 | 0x04 | 0x08 | 0x10 | 0x20 | 0x40 | 0x80,
180 // F0 F1 F2 F3 F4 F5 F6 F7
181 0x01 | 0x02 | 0x04 | 0x08 | 0x10 | 0x20 | 0x40 | 0x80,
182 // F8 F9 FA FB FC FD FE FF
183 0x01 | 0x02 | 0x04 | 0x08 | 0x10 | 0x20 | 0x40 | 0x80};
184
185constexpr uint8_t QUERY_PERCENT_ENCODE[32] = {
186 // 00 01 02 03 04 05 06 07
187 0x01 | 0x02 | 0x04 | 0x08 | 0x10 | 0x20 | 0x40 | 0x80,
188 // 08 09 0A 0B 0C 0D 0E 0F
189 0x01 | 0x02 | 0x04 | 0x08 | 0x10 | 0x20 | 0x40 | 0x80,
190 // 10 11 12 13 14 15 16 17
191 0x01 | 0x02 | 0x04 | 0x08 | 0x10 | 0x20 | 0x40 | 0x80,
192 // 18 19 1A 1B 1C 1D 1E 1F
193 0x01 | 0x02 | 0x04 | 0x08 | 0x10 | 0x20 | 0x40 | 0x80,
194 // 20 21 22 23 24 25 26 27
195 0x01 | 0x00 | 0x04 | 0x08 | 0x00 | 0x00 | 0x00 | 0x00,
196 // 28 29 2A 2B 2C 2D 2E 2F
197 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00,
198 // 30 31 32 33 34 35 36 37
199 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00,
200 // 38 39 3A 3B 3C 3D 3E 3F
201 0x00 | 0x00 | 0x00 | 0x00 | 0x10 | 0x00 | 0x40 | 0x00,
202 // 40 41 42 43 44 45 46 47
203 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00,
204 // 48 49 4A 4B 4C 4D 4E 4F
205 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00,
206 // 50 51 52 53 54 55 56 57
207 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00,
208 // 58 59 5A 5B 5C 5D 5E 5F
209 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00,
210 // 60 61 62 63 64 65 66 67
211 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00,
212 // 68 69 6A 6B 6C 6D 6E 6F
213 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00,
214 // 70 71 72 73 74 75 76 77
215 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00,
216 // 78 79 7A 7B 7C 7D 7E 7F
217 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x80,
218 // 80 81 82 83 84 85 86 87
219 0x01 | 0x02 | 0x04 | 0x08 | 0x10 | 0x20 | 0x40 | 0x80,
220 // 88 89 8A 8B 8C 8D 8E 8F
221 0x01 | 0x02 | 0x04 | 0x08 | 0x10 | 0x20 | 0x40 | 0x80,
222 // 90 91 92 93 94 95 96 97
223 0x01 | 0x02 | 0x04 | 0x08 | 0x10 | 0x20 | 0x40 | 0x80,
224 // 98 99 9A 9B 9C 9D 9E 9F
225 0x01 | 0x02 | 0x04 | 0x08 | 0x10 | 0x20 | 0x40 | 0x80,
226 // A0 A1 A2 A3 A4 A5 A6 A7
227 0x01 | 0x02 | 0x04 | 0x08 | 0x10 | 0x20 | 0x40 | 0x80,
228 // A8 A9 AA AB AC AD AE AF
229 0x01 | 0x02 | 0x04 | 0x08 | 0x10 | 0x20 | 0x40 | 0x80,
230 // B0 B1 B2 B3 B4 B5 B6 B7
231 0x01 | 0x02 | 0x04 | 0x08 | 0x10 | 0x20 | 0x40 | 0x80,
232 // B8 B9 BA BB BC BD BE BF
233 0x01 | 0x02 | 0x04 | 0x08 | 0x10 | 0x20 | 0x40 | 0x80,
234 // C0 C1 C2 C3 C4 C5 C6 C7
235 0x01 | 0x02 | 0x04 | 0x08 | 0x10 | 0x20 | 0x40 | 0x80,
236 // C8 C9 CA CB CC CD CE CF
237 0x01 | 0x02 | 0x04 | 0x08 | 0x10 | 0x20 | 0x40 | 0x80,
238 // D0 D1 D2 D3 D4 D5 D6 D7
239 0x01 | 0x02 | 0x04 | 0x08 | 0x10 | 0x20 | 0x40 | 0x80,
240 // D8 D9 DA DB DC DD DE DF
241 0x01 | 0x02 | 0x04 | 0x08 | 0x10 | 0x20 | 0x40 | 0x80,
242 // E0 E1 E2 E3 E4 E5 E6 E7
243 0x01 | 0x02 | 0x04 | 0x08 | 0x10 | 0x20 | 0x40 | 0x80,
244 // E8 E9 EA EB EC ED EE EF
245 0x01 | 0x02 | 0x04 | 0x08 | 0x10 | 0x20 | 0x40 | 0x80,
246 // F0 F1 F2 F3 F4 F5 F6 F7
247 0x01 | 0x02 | 0x04 | 0x08 | 0x10 | 0x20 | 0x40 | 0x80,
248 // F8 F9 FA FB FC FD FE FF
249 0x01 | 0x02 | 0x04 | 0x08 | 0x10 | 0x20 | 0x40 | 0x80};
250
251constexpr uint8_t FRAGMENT_PERCENT_ENCODE[32] = {
252 // 00 01 02 03 04 05 06 07
253 0x01 | 0x02 | 0x04 | 0x08 | 0x10 | 0x20 | 0x40 | 0x80,
254 // 08 09 0A 0B 0C 0D 0E 0F
255 0x01 | 0x02 | 0x04 | 0x08 | 0x10 | 0x20 | 0x40 | 0x80,
256 // 10 11 12 13 14 15 16 17
257 0x01 | 0x02 | 0x04 | 0x08 | 0x10 | 0x20 | 0x40 | 0x80,
258 // 18 19 1A 1B 1C 1D 1E 1F
259 0x01 | 0x02 | 0x04 | 0x08 | 0x10 | 0x20 | 0x40 | 0x80,
260 // 20 21 22 23 24 25 26 27
261 0x01 | 0x00 | 0x04 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00,
262 // 28 29 2A 2B 2C 2D 2E 2F
263 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00,
264 // 30 31 32 33 34 35 36 37
265 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00,
266 // 38 39 3A 3B 3C 3D 3E 3F
267 0x00 | 0x00 | 0x00 | 0x00 | 0x10 | 0x00 | 0x40 | 0x00,
268 // 40 41 42 43 44 45 46 47
269 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00,
270 // 48 49 4A 4B 4C 4D 4E 4F
271 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00,
272 // 50 51 52 53 54 55 56 57
273 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00,
274 // 58 59 5A 5B 5C 5D 5E 5F
275 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00,
276 // 60 61 62 63 64 65 66 67
277 0x01 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00,
278 // 68 69 6A 6B 6C 6D 6E 6F
279 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00,
280 // 70 71 72 73 74 75 76 77
281 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00,
282 // 78 79 7A 7B 7C 7D 7E 7F
283 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x80,
284 // 80 81 82 83 84 85 86 87
285 0x01 | 0x02 | 0x04 | 0x08 | 0x10 | 0x20 | 0x40 | 0x80,
286 // 88 89 8A 8B 8C 8D 8E 8F
287 0x01 | 0x02 | 0x04 | 0x08 | 0x10 | 0x20 | 0x40 | 0x80,
288 // 90 91 92 93 94 95 96 97
289 0x01 | 0x02 | 0x04 | 0x08 | 0x10 | 0x20 | 0x40 | 0x80,
290 // 98 99 9A 9B 9C 9D 9E 9F
291 0x01 | 0x02 | 0x04 | 0x08 | 0x10 | 0x20 | 0x40 | 0x80,
292 // A0 A1 A2 A3 A4 A5 A6 A7
293 0x01 | 0x02 | 0x04 | 0x08 | 0x10 | 0x20 | 0x40 | 0x80,
294 // A8 A9 AA AB AC AD AE AF
295 0x01 | 0x02 | 0x04 | 0x08 | 0x10 | 0x20 | 0x40 | 0x80,
296 // B0 B1 B2 B3 B4 B5 B6 B7
297 0x01 | 0x02 | 0x04 | 0x08 | 0x10 | 0x20 | 0x40 | 0x80,
298 // B8 B9 BA BB BC BD BE BF
299 0x01 | 0x02 | 0x04 | 0x08 | 0x10 | 0x20 | 0x40 | 0x80,
300 // C0 C1 C2 C3 C4 C5 C6 C7
301 0x01 | 0x02 | 0x04 | 0x08 | 0x10 | 0x20 | 0x40 | 0x80,
302 // C8 C9 CA CB CC CD CE CF
303 0x01 | 0x02 | 0x04 | 0x08 | 0x10 | 0x20 | 0x40 | 0x80,
304 // D0 D1 D2 D3 D4 D5 D6 D7
305 0x01 | 0x02 | 0x04 | 0x08 | 0x10 | 0x20 | 0x40 | 0x80,
306 // D8 D9 DA DB DC DD DE DF
307 0x01 | 0x02 | 0x04 | 0x08 | 0x10 | 0x20 | 0x40 | 0x80,
308 // E0 E1 E2 E3 E4 E5 E6 E7
309 0x01 | 0x02 | 0x04 | 0x08 | 0x10 | 0x20 | 0x40 | 0x80,
310 // E8 E9 EA EB EC ED EE EF
311 0x01 | 0x02 | 0x04 | 0x08 | 0x10 | 0x20 | 0x40 | 0x80,
312 // F0 F1 F2 F3 F4 F5 F6 F7
313 0x01 | 0x02 | 0x04 | 0x08 | 0x10 | 0x20 | 0x40 | 0x80,
314 // F8 F9 FA FB FC FD FE FF
315 0x01 | 0x02 | 0x04 | 0x08 | 0x10 | 0x20 | 0x40 | 0x80};
316
317constexpr uint8_t USERINFO_PERCENT_ENCODE[32] = {
318 // 00 01 02 03 04 05 06 07
319 0x01 | 0x02 | 0x04 | 0x08 | 0x10 | 0x20 | 0x40 | 0x80,
320 // 08 09 0A 0B 0C 0D 0E 0F
321 0x01 | 0x02 | 0x04 | 0x08 | 0x10 | 0x20 | 0x40 | 0x80,
322 // 10 11 12 13 14 15 16 17
323 0x01 | 0x02 | 0x04 | 0x08 | 0x10 | 0x20 | 0x40 | 0x80,
324 // 18 19 1A 1B 1C 1D 1E 1F
325 0x01 | 0x02 | 0x04 | 0x08 | 0x10 | 0x20 | 0x40 | 0x80,
326 // 20 21 22 23 24 25 26 27
327 0x01 | 0x00 | 0x04 | 0x08 | 0x00 | 0x00 | 0x00 | 0x00,
328 // 28 29 2A 2B 2C 2D 2E 2F
329 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x80,
330 // 30 31 32 33 34 35 36 37
331 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00,
332 // 38 39 3A 3B 3C 3D 3E 3F
333 0x00 | 0x00 | 0x04 | 0x08 | 0x10 | 0x20 | 0x40 | 0x80,
334 // 40 41 42 43 44 45 46 47
335 0x01 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00,
336 // 48 49 4A 4B 4C 4D 4E 4F
337 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00,
338 // 50 51 52 53 54 55 56 57
339 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00,
340 // 58 59 5A 5B 5C 5D 5E 5F
341 0x00 | 0x00 | 0x00 | 0x08 | 0x10 | 0x20 | 0x40 | 0x00,
342 // 60 61 62 63 64 65 66 67
343 0x01 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00,
344 // 68 69 6A 6B 6C 6D 6E 6F
345 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00,
346 // 70 71 72 73 74 75 76 77
347 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00,
348 // 78 79 7A 7B 7C 7D 7E 7F
349 0x00 | 0x00 | 0x00 | 0x08 | 0x10 | 0x20 | 0x00 | 0x80,
350 // 80 81 82 83 84 85 86 87
351 0x01 | 0x02 | 0x04 | 0x08 | 0x10 | 0x20 | 0x40 | 0x80,
352 // 88 89 8A 8B 8C 8D 8E 8F
353 0x01 | 0x02 | 0x04 | 0x08 | 0x10 | 0x20 | 0x40 | 0x80,
354 // 90 91 92 93 94 95 96 97
355 0x01 | 0x02 | 0x04 | 0x08 | 0x10 | 0x20 | 0x40 | 0x80,
356 // 98 99 9A 9B 9C 9D 9E 9F
357 0x01 | 0x02 | 0x04 | 0x08 | 0x10 | 0x20 | 0x40 | 0x80,
358 // A0 A1 A2 A3 A4 A5 A6 A7
359 0x01 | 0x02 | 0x04 | 0x08 | 0x10 | 0x20 | 0x40 | 0x80,
360 // A8 A9 AA AB AC AD AE AF
361 0x01 | 0x02 | 0x04 | 0x08 | 0x10 | 0x20 | 0x40 | 0x80,
362 // B0 B1 B2 B3 B4 B5 B6 B7
363 0x01 | 0x02 | 0x04 | 0x08 | 0x10 | 0x20 | 0x40 | 0x80,
364 // B8 B9 BA BB BC BD BE BF
365 0x01 | 0x02 | 0x04 | 0x08 | 0x10 | 0x20 | 0x40 | 0x80,
366 // C0 C1 C2 C3 C4 C5 C6 C7
367 0x01 | 0x02 | 0x04 | 0x08 | 0x10 | 0x20 | 0x40 | 0x80,
368 // C8 C9 CA CB CC CD CE CF
369 0x01 | 0x02 | 0x04 | 0x08 | 0x10 | 0x20 | 0x40 | 0x80,
370 // D0 D1 D2 D3 D4 D5 D6 D7
371 0x01 | 0x02 | 0x04 | 0x08 | 0x10 | 0x20 | 0x40 | 0x80,
372 // D8 D9 DA DB DC DD DE DF
373 0x01 | 0x02 | 0x04 | 0x08 | 0x10 | 0x20 | 0x40 | 0x80,
374 // E0 E1 E2 E3 E4 E5 E6 E7
375 0x01 | 0x02 | 0x04 | 0x08 | 0x10 | 0x20 | 0x40 | 0x80,
376 // E8 E9 EA EB EC ED EE EF
377 0x01 | 0x02 | 0x04 | 0x08 | 0x10 | 0x20 | 0x40 | 0x80,
378 // F0 F1 F2 F3 F4 F5 F6 F7
379 0x01 | 0x02 | 0x04 | 0x08 | 0x10 | 0x20 | 0x40 | 0x80,
380 // F8 F9 FA FB FC FD FE FF
381 0x01 | 0x02 | 0x04 | 0x08 | 0x10 | 0x20 | 0x40 | 0x80};
382
383constexpr uint8_t PATH_PERCENT_ENCODE[32] = {
384 // 00 01 02 03 04 05 06 07
385 0x01 | 0x02 | 0x04 | 0x08 | 0x10 | 0x20 | 0x40 | 0x80,
386 // 08 09 0A 0B 0C 0D 0E 0F
387 0x01 | 0x02 | 0x04 | 0x08 | 0x10 | 0x20 | 0x40 | 0x80,
388 // 10 11 12 13 14 15 16 17
389 0x01 | 0x02 | 0x04 | 0x08 | 0x10 | 0x20 | 0x40 | 0x80,
390 // 18 19 1A 1B 1C 1D 1E 1F
391 0x01 | 0x02 | 0x04 | 0x08 | 0x10 | 0x20 | 0x40 | 0x80,
392 // 20 21 22 23 24 25 26 27
393 0x01 | 0x00 | 0x04 | 0x08 | 0x00 | 0x00 | 0x00 | 0x00,
394 // 28 29 2A 2B 2C 2D 2E 2F
395 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00,
396 // 30 31 32 33 34 35 36 37
397 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00,
398 // 38 39 3A 3B 3C 3D 3E 3F
399 0x00 | 0x00 | 0x00 | 0x00 | 0x10 | 0x00 | 0x40 | 0x80,
400 // 40 41 42 43 44 45 46 47
401 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00,
402 // 48 49 4A 4B 4C 4D 4E 4F
403 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00,
404 // 50 51 52 53 54 55 56 57
405 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00,
406 // 58 59 5A 5B 5C 5D 5E 5F
407 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00,
408 // 60 61 62 63 64 65 66 67
409 0x01 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00,
410 // 68 69 6A 6B 6C 6D 6E 6F
411 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00,
412 // 70 71 72 73 74 75 76 77
413 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00,
414 // 78 79 7A 7B 7C 7D 7E 7F
415 0x00 | 0x00 | 0x00 | 0x08 | 0x00 | 0x20 | 0x00 | 0x80,
416 // 80 81 82 83 84 85 86 87
417 0x01 | 0x02 | 0x04 | 0x08 | 0x10 | 0x20 | 0x40 | 0x80,
418 // 88 89 8A 8B 8C 8D 8E 8F
419 0x01 | 0x02 | 0x04 | 0x08 | 0x10 | 0x20 | 0x40 | 0x80,
420 // 90 91 92 93 94 95 96 97
421 0x01 | 0x02 | 0x04 | 0x08 | 0x10 | 0x20 | 0x40 | 0x80,
422 // 98 99 9A 9B 9C 9D 9E 9F
423 0x01 | 0x02 | 0x04 | 0x08 | 0x10 | 0x20 | 0x40 | 0x80,
424 // A0 A1 A2 A3 A4 A5 A6 A7
425 0x01 | 0x02 | 0x04 | 0x08 | 0x10 | 0x20 | 0x40 | 0x80,
426 // A8 A9 AA AB AC AD AE AF
427 0x01 | 0x02 | 0x04 | 0x08 | 0x10 | 0x20 | 0x40 | 0x80,
428 // B0 B1 B2 B3 B4 B5 B6 B7
429 0x01 | 0x02 | 0x04 | 0x08 | 0x10 | 0x20 | 0x40 | 0x80,
430 // B8 B9 BA BB BC BD BE BF
431 0x01 | 0x02 | 0x04 | 0x08 | 0x10 | 0x20 | 0x40 | 0x80,
432 // C0 C1 C2 C3 C4 C5 C6 C7
433 0x01 | 0x02 | 0x04 | 0x08 | 0x10 | 0x20 | 0x40 | 0x80,
434 // C8 C9 CA CB CC CD CE CF
435 0x01 | 0x02 | 0x04 | 0x08 | 0x10 | 0x20 | 0x40 | 0x80,
436 // D0 D1 D2 D3 D4 D5 D6 D7
437 0x01 | 0x02 | 0x04 | 0x08 | 0x10 | 0x20 | 0x40 | 0x80,
438 // D8 D9 DA DB DC DD DE DF
439 0x01 | 0x02 | 0x04 | 0x08 | 0x10 | 0x20 | 0x40 | 0x80,
440 // E0 E1 E2 E3 E4 E5 E6 E7
441 0x01 | 0x02 | 0x04 | 0x08 | 0x10 | 0x20 | 0x40 | 0x80,
442 // E8 E9 EA EB EC ED EE EF
443 0x01 | 0x02 | 0x04 | 0x08 | 0x10 | 0x20 | 0x40 | 0x80,
444 // F0 F1 F2 F3 F4 F5 F6 F7
445 0x01 | 0x02 | 0x04 | 0x08 | 0x10 | 0x20 | 0x40 | 0x80,
446 // F8 F9 FA FB FC FD FE FF
447 0x01 | 0x02 | 0x04 | 0x08 | 0x10 | 0x20 | 0x40 | 0x80};
448
449constexpr uint8_t WWW_FORM_URLENCODED_PERCENT_ENCODE[32] = {
450 // 00 01 02 03 04 05 06 07
451 0x01 | 0x02 | 0x04 | 0x08 | 0x10 | 0x20 | 0x40 | 0x80,
452 // 08 09 0A 0B 0C 0D 0E 0F
453 0x01 | 0x02 | 0x04 | 0x08 | 0x10 | 0x20 | 0x40 | 0x80,
454 // 10 11 12 13 14 15 16 17
455 0x01 | 0x02 | 0x04 | 0x08 | 0x10 | 0x20 | 0x40 | 0x80,
456 // 18 19 1A 1B 1C 1D 1E 1F
457 0x01 | 0x02 | 0x04 | 0x08 | 0x10 | 0x20 | 0x40 | 0x80,
458 // 20 21 22 23 24 25 26 27
459 0x00 | 0x02 | 0x04 | 0x08 | 0x10 | 0x20 | 0x40 | 0x80,
460 // 28 29 2A 2B 2C 2D 2E 2F
461 0x01 | 0x02 | 0x00 | 0x08 | 0x10 | 0x00 | 0x00 | 0x80,
462 // 30 31 32 33 34 35 36 37
463 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00,
464 // 38 39 3A 3B 3C 3D 3E 3F
465 0x00 | 0x00 | 0x04 | 0x08 | 0x10 | 0x20 | 0x40 | 0x80,
466 // 40 41 42 43 44 45 46 47
467 0x01 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00,
468 // 48 49 4A 4B 4C 4D 4E 4F
469 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00,
470 // 50 51 52 53 54 55 56 57
471 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00,
472 // 58 59 5A 5B 5C 5D 5E 5F
473 0x00 | 0x00 | 0x00 | 0x08 | 0x00 | 0x20 | 0x40 | 0x00,
474 // 60 61 62 63 64 65 66 67
475 0x01 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00,
476 // 68 69 6A 6B 6C 6D 6E 6F
477 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00,
478 // 70 71 72 73 74 75 76 77
479 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00,
480 // 78 79 7A 7B 7C 7D 7E 7F
481 0x00 | 0x00 | 0x00 | 0x08 | 0x10 | 0x20 | 0x40 | 0x80,
482 // 80 81 82 83 84 85 86 87
483 0x01 | 0x02 | 0x04 | 0x08 | 0x10 | 0x20 | 0x40 | 0x80,
484 // 88 89 8A 8B 8C 8D 8E 8F
485 0x01 | 0x02 | 0x04 | 0x08 | 0x10 | 0x20 | 0x40 | 0x80,
486 // 90 91 92 93 94 95 96 97
487 0x01 | 0x02 | 0x04 | 0x08 | 0x10 | 0x20 | 0x40 | 0x80,
488 // 98 99 9A 9B 9C 9D 9E 9F
489 0x01 | 0x02 | 0x04 | 0x08 | 0x10 | 0x20 | 0x40 | 0x80,
490 // A0 A1 A2 A3 A4 A5 A6 A7
491 0x01 | 0x02 | 0x04 | 0x08 | 0x10 | 0x20 | 0x40 | 0x80,
492 // A8 A9 AA AB AC AD AE AF
493 0x01 | 0x02 | 0x04 | 0x08 | 0x10 | 0x20 | 0x40 | 0x80,
494 // B0 B1 B2 B3 B4 B5 B6 B7
495 0x01 | 0x02 | 0x04 | 0x08 | 0x10 | 0x20 | 0x40 | 0x80,
496 // B8 B9 BA BB BC BD BE BF
497 0x01 | 0x02 | 0x04 | 0x08 | 0x10 | 0x20 | 0x40 | 0x80,
498 // C0 C1 C2 C3 C4 C5 C6 C7
499 0x01 | 0x02 | 0x04 | 0x08 | 0x10 | 0x20 | 0x40 | 0x80,
500 // C8 C9 CA CB CC CD CE CF
501 0x01 | 0x02 | 0x04 | 0x08 | 0x10 | 0x20 | 0x40 | 0x80,
502 // D0 D1 D2 D3 D4 D5 D6 D7
503 0x01 | 0x02 | 0x04 | 0x08 | 0x10 | 0x20 | 0x40 | 0x80,
504 // D8 D9 DA DB DC DD DE DF
505 0x01 | 0x02 | 0x04 | 0x08 | 0x10 | 0x20 | 0x40 | 0x80,
506 // E0 E1 E2 E3 E4 E5 E6 E7
507 0x01 | 0x02 | 0x04 | 0x08 | 0x10 | 0x20 | 0x40 | 0x80,
508 // E8 E9 EA EB EC ED EE EF
509 0x01 | 0x02 | 0x04 | 0x08 | 0x10 | 0x20 | 0x40 | 0x80,
510 // F0 F1 F2 F3 F4 F5 F6 F7
511 0x01 | 0x02 | 0x04 | 0x08 | 0x10 | 0x20 | 0x40 | 0x80,
512 // F8 F9 FA FB FC FD FE FF
513 0x01 | 0x02 | 0x04 | 0x08 | 0x10 | 0x20 | 0x40 | 0x80};
514
515ada_really_inline bool bit_at(const uint8_t a[], const uint8_t i) {
516 return !!(a[i >> 3] & (1 << (i & 7)));
517}
518
519} // namespace ada::character_sets
520
521#endif // ADA_CHARACTER_SETS_INL_H
Declaration of the character sets used by unicode functions.
#define ada_really_inline
Definition common_defs.h:84
Includes the definitions for unicode character sets.
constexpr uint8_t QUERY_PERCENT_ENCODE[32]
constexpr uint8_t SPECIAL_QUERY_PERCENT_ENCODE[32]
constexpr uint8_t PATH_PERCENT_ENCODE[32]
constexpr uint8_t C0_CONTROL_PERCENT_ENCODE[32]
constexpr uint8_t USERINFO_PERCENT_ENCODE[32]
constexpr uint8_t FRAGMENT_PERCENT_ENCODE[32]
constexpr uint8_t WWW_FORM_URLENCODED_PERCENT_ENCODE[32]
ada_really_inline bool bit_at(const uint8_t a[], const uint8_t i)
constexpr char hex[1024]