]> git.proxmox.com Git - rustc.git/blob - src/libcore/unicode/printable.rs
New upstream version 1.46.0+dfsg1
[rustc.git] / src / libcore / unicode / printable.rs
1 // NOTE: The following code was generated by "src/libcore/unicode/printable.py",
2 // do not edit directly!
3
4 fn check(x: u16, singletonuppers: &[(u8, u8)], singletonlowers: &[u8], normal: &[u8]) -> bool {
5 let xupper = (x >> 8) as u8;
6 let mut lowerstart = 0;
7 for &(upper, lowercount) in singletonuppers {
8 let lowerend = lowerstart + lowercount as usize;
9 if xupper == upper {
10 for &lower in &singletonlowers[lowerstart..lowerend] {
11 if lower == x as u8 {
12 return false;
13 }
14 }
15 } else if xupper < upper {
16 break;
17 }
18 lowerstart = lowerend;
19 }
20
21 let mut x = x as i32;
22 let mut normal = normal.iter().cloned();
23 let mut current = true;
24 while let Some(v) = normal.next() {
25 let len = if v & 0x80 != 0 {
26 ((v & 0x7f) as i32) << 8 | normal.next().unwrap() as i32
27 } else {
28 v as i32
29 };
30 x -= len;
31 if x < 0 {
32 break;
33 }
34 current = !current;
35 }
36 current
37 }
38
39 pub(crate) fn is_printable(x: char) -> bool {
40 let x = x as u32;
41 let lower = x as u16;
42 if x < 0x10000 {
43 check(lower, SINGLETONS0U, SINGLETONS0L, NORMAL0)
44 } else if x < 0x20000 {
45 check(lower, SINGLETONS1U, SINGLETONS1L, NORMAL1)
46 } else {
47 if 0x2a6de <= x && x < 0x2a700 {
48 return false;
49 }
50 if 0x2b735 <= x && x < 0x2b740 {
51 return false;
52 }
53 if 0x2b81e <= x && x < 0x2b820 {
54 return false;
55 }
56 if 0x2cea2 <= x && x < 0x2ceb0 {
57 return false;
58 }
59 if 0x2ebe1 <= x && x < 0x2f800 {
60 return false;
61 }
62 if 0x2fa1e <= x && x < 0x30000 {
63 return false;
64 }
65 if 0x3134b <= x && x < 0xe0100 {
66 return false;
67 }
68 if 0xe01f0 <= x && x < 0x110000 {
69 return false;
70 }
71 true
72 }
73 }
74
75 #[rustfmt::skip]
76 const SINGLETONS0U: &[(u8, u8)] = &[
77 (0x00, 1),
78 (0x03, 5),
79 (0x05, 6),
80 (0x06, 3),
81 (0x07, 6),
82 (0x08, 8),
83 (0x09, 17),
84 (0x0a, 28),
85 (0x0b, 25),
86 (0x0c, 20),
87 (0x0d, 16),
88 (0x0e, 13),
89 (0x0f, 4),
90 (0x10, 3),
91 (0x12, 18),
92 (0x13, 9),
93 (0x16, 1),
94 (0x17, 5),
95 (0x18, 2),
96 (0x19, 3),
97 (0x1a, 7),
98 (0x1c, 2),
99 (0x1d, 1),
100 (0x1f, 22),
101 (0x20, 3),
102 (0x2b, 3),
103 (0x2c, 2),
104 (0x2d, 11),
105 (0x2e, 1),
106 (0x30, 3),
107 (0x31, 2),
108 (0x32, 1),
109 (0xa7, 2),
110 (0xa9, 2),
111 (0xaa, 4),
112 (0xab, 8),
113 (0xfa, 2),
114 (0xfb, 5),
115 (0xfd, 4),
116 (0xfe, 3),
117 (0xff, 9),
118 ];
119 #[rustfmt::skip]
120 const SINGLETONS0L: &[u8] = &[
121 0xad, 0x78, 0x79, 0x8b, 0x8d, 0xa2, 0x30, 0x57,
122 0x58, 0x8b, 0x8c, 0x90, 0x1c, 0x1d, 0xdd, 0x0e,
123 0x0f, 0x4b, 0x4c, 0xfb, 0xfc, 0x2e, 0x2f, 0x3f,
124 0x5c, 0x5d, 0x5f, 0xb5, 0xe2, 0x84, 0x8d, 0x8e,
125 0x91, 0x92, 0xa9, 0xb1, 0xba, 0xbb, 0xc5, 0xc6,
126 0xc9, 0xca, 0xde, 0xe4, 0xe5, 0xff, 0x00, 0x04,
127 0x11, 0x12, 0x29, 0x31, 0x34, 0x37, 0x3a, 0x3b,
128 0x3d, 0x49, 0x4a, 0x5d, 0x84, 0x8e, 0x92, 0xa9,
129 0xb1, 0xb4, 0xba, 0xbb, 0xc6, 0xca, 0xce, 0xcf,
130 0xe4, 0xe5, 0x00, 0x04, 0x0d, 0x0e, 0x11, 0x12,
131 0x29, 0x31, 0x34, 0x3a, 0x3b, 0x45, 0x46, 0x49,
132 0x4a, 0x5e, 0x64, 0x65, 0x84, 0x91, 0x9b, 0x9d,
133 0xc9, 0xce, 0xcf, 0x0d, 0x11, 0x29, 0x45, 0x49,
134 0x57, 0x64, 0x65, 0x8d, 0x91, 0xa9, 0xb4, 0xba,
135 0xbb, 0xc5, 0xc9, 0xdf, 0xe4, 0xe5, 0xf0, 0x0d,
136 0x11, 0x45, 0x49, 0x64, 0x65, 0x80, 0x84, 0xb2,
137 0xbc, 0xbe, 0xbf, 0xd5, 0xd7, 0xf0, 0xf1, 0x83,
138 0x85, 0x8b, 0xa4, 0xa6, 0xbe, 0xbf, 0xc5, 0xc7,
139 0xce, 0xcf, 0xda, 0xdb, 0x48, 0x98, 0xbd, 0xcd,
140 0xc6, 0xce, 0xcf, 0x49, 0x4e, 0x4f, 0x57, 0x59,
141 0x5e, 0x5f, 0x89, 0x8e, 0x8f, 0xb1, 0xb6, 0xb7,
142 0xbf, 0xc1, 0xc6, 0xc7, 0xd7, 0x11, 0x16, 0x17,
143 0x5b, 0x5c, 0xf6, 0xf7, 0xfe, 0xff, 0x80, 0x0d,
144 0x6d, 0x71, 0xde, 0xdf, 0x0e, 0x0f, 0x1f, 0x6e,
145 0x6f, 0x1c, 0x1d, 0x5f, 0x7d, 0x7e, 0xae, 0xaf,
146 0xbb, 0xbc, 0xfa, 0x16, 0x17, 0x1e, 0x1f, 0x46,
147 0x47, 0x4e, 0x4f, 0x58, 0x5a, 0x5c, 0x5e, 0x7e,
148 0x7f, 0xb5, 0xc5, 0xd4, 0xd5, 0xdc, 0xf0, 0xf1,
149 0xf5, 0x72, 0x73, 0x8f, 0x74, 0x75, 0x96, 0x2f,
150 0x5f, 0x26, 0x2e, 0x2f, 0xa7, 0xaf, 0xb7, 0xbf,
151 0xc7, 0xcf, 0xd7, 0xdf, 0x9a, 0x40, 0x97, 0x98,
152 0x30, 0x8f, 0x1f, 0xc0, 0xc1, 0xce, 0xff, 0x4e,
153 0x4f, 0x5a, 0x5b, 0x07, 0x08, 0x0f, 0x10, 0x27,
154 0x2f, 0xee, 0xef, 0x6e, 0x6f, 0x37, 0x3d, 0x3f,
155 0x42, 0x45, 0x90, 0x91, 0xfe, 0xff, 0x53, 0x67,
156 0x75, 0xc8, 0xc9, 0xd0, 0xd1, 0xd8, 0xd9, 0xe7,
157 0xfe, 0xff,
158 ];
159 #[rustfmt::skip]
160 const SINGLETONS1U: &[(u8, u8)] = &[
161 (0x00, 6),
162 (0x01, 1),
163 (0x03, 1),
164 (0x04, 2),
165 (0x08, 8),
166 (0x09, 2),
167 (0x0a, 5),
168 (0x0b, 2),
169 (0x0e, 4),
170 (0x10, 1),
171 (0x11, 2),
172 (0x12, 5),
173 (0x13, 17),
174 (0x14, 1),
175 (0x15, 2),
176 (0x17, 2),
177 (0x19, 13),
178 (0x1c, 5),
179 (0x1d, 8),
180 (0x24, 1),
181 (0x6a, 3),
182 (0x6b, 2),
183 (0xbc, 2),
184 (0xd1, 2),
185 (0xd4, 12),
186 (0xd5, 9),
187 (0xd6, 2),
188 (0xd7, 2),
189 (0xda, 1),
190 (0xe0, 5),
191 (0xe1, 2),
192 (0xe8, 2),
193 (0xee, 32),
194 (0xf0, 4),
195 (0xf8, 2),
196 (0xf9, 2),
197 (0xfa, 2),
198 (0xfb, 1),
199 ];
200 #[rustfmt::skip]
201 const SINGLETONS1L: &[u8] = &[
202 0x0c, 0x27, 0x3b, 0x3e, 0x4e, 0x4f, 0x8f, 0x9e,
203 0x9e, 0x9f, 0x06, 0x07, 0x09, 0x36, 0x3d, 0x3e,
204 0x56, 0xf3, 0xd0, 0xd1, 0x04, 0x14, 0x18, 0x36,
205 0x37, 0x56, 0x57, 0x7f, 0xaa, 0xae, 0xaf, 0xbd,
206 0x35, 0xe0, 0x12, 0x87, 0x89, 0x8e, 0x9e, 0x04,
207 0x0d, 0x0e, 0x11, 0x12, 0x29, 0x31, 0x34, 0x3a,
208 0x45, 0x46, 0x49, 0x4a, 0x4e, 0x4f, 0x64, 0x65,
209 0x5c, 0xb6, 0xb7, 0x1b, 0x1c, 0x07, 0x08, 0x0a,
210 0x0b, 0x14, 0x17, 0x36, 0x39, 0x3a, 0xa8, 0xa9,
211 0xd8, 0xd9, 0x09, 0x37, 0x90, 0x91, 0xa8, 0x07,
212 0x0a, 0x3b, 0x3e, 0x66, 0x69, 0x8f, 0x92, 0x6f,
213 0x5f, 0xee, 0xef, 0x5a, 0x62, 0x9a, 0x9b, 0x27,
214 0x28, 0x55, 0x9d, 0xa0, 0xa1, 0xa3, 0xa4, 0xa7,
215 0xa8, 0xad, 0xba, 0xbc, 0xc4, 0x06, 0x0b, 0x0c,
216 0x15, 0x1d, 0x3a, 0x3f, 0x45, 0x51, 0xa6, 0xa7,
217 0xcc, 0xcd, 0xa0, 0x07, 0x19, 0x1a, 0x22, 0x25,
218 0x3e, 0x3f, 0xc5, 0xc6, 0x04, 0x20, 0x23, 0x25,
219 0x26, 0x28, 0x33, 0x38, 0x3a, 0x48, 0x4a, 0x4c,
220 0x50, 0x53, 0x55, 0x56, 0x58, 0x5a, 0x5c, 0x5e,
221 0x60, 0x63, 0x65, 0x66, 0x6b, 0x73, 0x78, 0x7d,
222 0x7f, 0x8a, 0xa4, 0xaa, 0xaf, 0xb0, 0xc0, 0xd0,
223 0xae, 0xaf, 0x79, 0xcc, 0x6e, 0x6f, 0x93,
224 ];
225 #[rustfmt::skip]
226 const NORMAL0: &[u8] = &[
227 0x00, 0x20,
228 0x5f, 0x22,
229 0x82, 0xdf, 0x04,
230 0x82, 0x44, 0x08,
231 0x1b, 0x04,
232 0x06, 0x11,
233 0x81, 0xac, 0x0e,
234 0x80, 0xab, 0x35,
235 0x28, 0x0b,
236 0x80, 0xe0, 0x03,
237 0x19, 0x08,
238 0x01, 0x04,
239 0x2f, 0x04,
240 0x34, 0x04,
241 0x07, 0x03,
242 0x01, 0x07,
243 0x06, 0x07,
244 0x11, 0x0a,
245 0x50, 0x0f,
246 0x12, 0x07,
247 0x55, 0x07,
248 0x03, 0x04,
249 0x1c, 0x0a,
250 0x09, 0x03,
251 0x08, 0x03,
252 0x07, 0x03,
253 0x02, 0x03,
254 0x03, 0x03,
255 0x0c, 0x04,
256 0x05, 0x03,
257 0x0b, 0x06,
258 0x01, 0x0e,
259 0x15, 0x05,
260 0x3a, 0x03,
261 0x11, 0x07,
262 0x06, 0x05,
263 0x10, 0x07,
264 0x57, 0x07,
265 0x02, 0x07,
266 0x15, 0x0d,
267 0x50, 0x04,
268 0x43, 0x03,
269 0x2d, 0x03,
270 0x01, 0x04,
271 0x11, 0x06,
272 0x0f, 0x0c,
273 0x3a, 0x04,
274 0x1d, 0x25,
275 0x5f, 0x20,
276 0x6d, 0x04,
277 0x6a, 0x25,
278 0x80, 0xc8, 0x05,
279 0x82, 0xb0, 0x03,
280 0x1a, 0x06,
281 0x82, 0xfd, 0x03,
282 0x59, 0x07,
283 0x15, 0x0b,
284 0x17, 0x09,
285 0x14, 0x0c,
286 0x14, 0x0c,
287 0x6a, 0x06,
288 0x0a, 0x06,
289 0x1a, 0x06,
290 0x59, 0x07,
291 0x2b, 0x05,
292 0x46, 0x0a,
293 0x2c, 0x04,
294 0x0c, 0x04,
295 0x01, 0x03,
296 0x31, 0x0b,
297 0x2c, 0x04,
298 0x1a, 0x06,
299 0x0b, 0x03,
300 0x80, 0xac, 0x06,
301 0x0a, 0x06,
302 0x21, 0x3f,
303 0x4c, 0x04,
304 0x2d, 0x03,
305 0x74, 0x08,
306 0x3c, 0x03,
307 0x0f, 0x03,
308 0x3c, 0x07,
309 0x38, 0x08,
310 0x2b, 0x05,
311 0x82, 0xff, 0x11,
312 0x18, 0x08,
313 0x2f, 0x11,
314 0x2d, 0x03,
315 0x20, 0x10,
316 0x21, 0x0f,
317 0x80, 0x8c, 0x04,
318 0x82, 0x97, 0x19,
319 0x0b, 0x15,
320 0x88, 0x94, 0x05,
321 0x2f, 0x05,
322 0x3b, 0x07,
323 0x02, 0x0e,
324 0x18, 0x09,
325 0x80, 0xb3, 0x2d,
326 0x74, 0x0c,
327 0x80, 0xd6, 0x1a,
328 0x0c, 0x05,
329 0x80, 0xff, 0x05,
330 0x80, 0xdf, 0x0c,
331 0xee, 0x0d, 0x03,
332 0x84, 0x8d, 0x03,
333 0x37, 0x09,
334 0x81, 0x5c, 0x14,
335 0x80, 0xb8, 0x08,
336 0x80, 0xcb, 0x2a,
337 0x38, 0x03,
338 0x0a, 0x06,
339 0x38, 0x08,
340 0x46, 0x08,
341 0x0c, 0x06,
342 0x74, 0x0b,
343 0x1e, 0x03,
344 0x5a, 0x04,
345 0x59, 0x09,
346 0x80, 0x83, 0x18,
347 0x1c, 0x0a,
348 0x16, 0x09,
349 0x4c, 0x04,
350 0x80, 0x8a, 0x06,
351 0xab, 0xa4, 0x0c,
352 0x17, 0x04,
353 0x31, 0xa1, 0x04,
354 0x81, 0xda, 0x26,
355 0x07, 0x0c,
356 0x05, 0x05,
357 0x80, 0xa5, 0x11,
358 0x81, 0x6d, 0x10,
359 0x78, 0x28,
360 0x2a, 0x06,
361 0x4c, 0x04,
362 0x80, 0x8d, 0x04,
363 0x80, 0xbe, 0x03,
364 0x1b, 0x03,
365 0x0f, 0x0d,
366 ];
367 #[rustfmt::skip]
368 const NORMAL1: &[u8] = &[
369 0x5e, 0x22,
370 0x7b, 0x05,
371 0x03, 0x04,
372 0x2d, 0x03,
373 0x66, 0x03,
374 0x01, 0x2f,
375 0x2e, 0x80, 0x82,
376 0x1d, 0x03,
377 0x31, 0x0f,
378 0x1c, 0x04,
379 0x24, 0x09,
380 0x1e, 0x05,
381 0x2b, 0x05,
382 0x44, 0x04,
383 0x0e, 0x2a,
384 0x80, 0xaa, 0x06,
385 0x24, 0x04,
386 0x24, 0x04,
387 0x28, 0x08,
388 0x34, 0x0b,
389 0x01, 0x80, 0x90,
390 0x81, 0x37, 0x09,
391 0x16, 0x0a,
392 0x08, 0x80, 0x98,
393 0x39, 0x03,
394 0x63, 0x08,
395 0x09, 0x30,
396 0x16, 0x05,
397 0x21, 0x03,
398 0x1b, 0x05,
399 0x01, 0x40,
400 0x38, 0x04,
401 0x4b, 0x05,
402 0x2f, 0x04,
403 0x0a, 0x07,
404 0x09, 0x07,
405 0x40, 0x20,
406 0x27, 0x04,
407 0x0c, 0x09,
408 0x36, 0x03,
409 0x3a, 0x05,
410 0x1a, 0x07,
411 0x04, 0x0c,
412 0x07, 0x50,
413 0x49, 0x37,
414 0x33, 0x0d,
415 0x33, 0x07,
416 0x2e, 0x08,
417 0x0a, 0x81, 0x26,
418 0x52, 0x4e,
419 0x28, 0x08,
420 0x2a, 0x56,
421 0x1c, 0x14,
422 0x17, 0x09,
423 0x4e, 0x04,
424 0x1e, 0x0f,
425 0x43, 0x0e,
426 0x19, 0x07,
427 0x0a, 0x06,
428 0x48, 0x08,
429 0x27, 0x09,
430 0x75, 0x0b,
431 0x3f, 0x41,
432 0x2a, 0x06,
433 0x3b, 0x05,
434 0x0a, 0x06,
435 0x51, 0x06,
436 0x01, 0x05,
437 0x10, 0x03,
438 0x05, 0x80, 0x8b,
439 0x62, 0x1e,
440 0x48, 0x08,
441 0x0a, 0x80, 0xa6,
442 0x5e, 0x22,
443 0x45, 0x0b,
444 0x0a, 0x06,
445 0x0d, 0x13,
446 0x39, 0x07,
447 0x0a, 0x36,
448 0x2c, 0x04,
449 0x10, 0x80, 0xc0,
450 0x3c, 0x64,
451 0x53, 0x0c,
452 0x48, 0x09,
453 0x0a, 0x46,
454 0x45, 0x1b,
455 0x48, 0x08,
456 0x53, 0x1d,
457 0x39, 0x81, 0x07,
458 0x46, 0x0a,
459 0x1d, 0x03,
460 0x47, 0x49,
461 0x37, 0x03,
462 0x0e, 0x08,
463 0x0a, 0x06,
464 0x39, 0x07,
465 0x0a, 0x81, 0x36,
466 0x19, 0x80, 0xb7,
467 0x01, 0x0f,
468 0x32, 0x0d,
469 0x83, 0x9b, 0x66,
470 0x75, 0x0b,
471 0x80, 0xc4, 0x8a, 0xbc,
472 0x84, 0x2f, 0x8f, 0xd1,
473 0x82, 0x47, 0xa1, 0xb9,
474 0x82, 0x39, 0x07,
475 0x2a, 0x04,
476 0x02, 0x60,
477 0x26, 0x0a,
478 0x46, 0x0a,
479 0x28, 0x05,
480 0x13, 0x82, 0xb0,
481 0x5b, 0x65,
482 0x4b, 0x04,
483 0x39, 0x07,
484 0x11, 0x40,
485 0x05, 0x0b,
486 0x02, 0x0e,
487 0x97, 0xf8, 0x08,
488 0x84, 0xd6, 0x2a,
489 0x09, 0xa2, 0xf7,
490 0x81, 0x1f, 0x31,
491 0x03, 0x11,
492 0x04, 0x08,
493 0x81, 0x8c, 0x89, 0x04,
494 0x6b, 0x05,
495 0x0d, 0x03,
496 0x09, 0x07,
497 0x10, 0x93, 0x60,
498 0x80, 0xf6, 0x0a,
499 0x73, 0x08,
500 0x6e, 0x17,
501 0x46, 0x80, 0x9a,
502 0x14, 0x0c,
503 0x57, 0x09,
504 0x19, 0x80, 0x87,
505 0x81, 0x47, 0x03,
506 0x85, 0x42, 0x0f,
507 0x15, 0x85, 0x50,
508 0x2b, 0x80, 0xd5,
509 0x2d, 0x03,
510 0x1a, 0x04,
511 0x02, 0x81, 0x70,
512 0x3a, 0x05,
513 0x01, 0x85, 0x00,
514 0x80, 0xd7, 0x29,
515 0x4c, 0x04,
516 0x0a, 0x04,
517 0x02, 0x83, 0x11,
518 0x44, 0x4c,
519 0x3d, 0x80, 0xc2,
520 0x3c, 0x06,
521 0x01, 0x04,
522 0x55, 0x05,
523 0x1b, 0x34,
524 0x02, 0x81, 0x0e,
525 0x2c, 0x04,
526 0x64, 0x0c,
527 0x56, 0x0a,
528 0x80, 0xae, 0x38,
529 0x1d, 0x0d,
530 0x2c, 0x04,
531 0x09, 0x07,
532 0x02, 0x0e,
533 0x06, 0x80, 0x9a,
534 0x83, 0xd8, 0x08,
535 0x0d, 0x03,
536 0x0d, 0x03,
537 0x74, 0x0c,
538 0x59, 0x07,
539 0x0c, 0x14,
540 0x0c, 0x04,
541 0x38, 0x08,
542 0x0a, 0x06,
543 0x28, 0x08,
544 0x22, 0x4e,
545 0x81, 0x54, 0x0c,
546 0x15, 0x03,
547 0x03, 0x05,
548 0x07, 0x09,
549 0x19, 0x07,
550 0x07, 0x09,
551 0x03, 0x0d,
552 0x07, 0x29,
553 0x80, 0xcb, 0x25,
554 0x0a, 0x84, 0x06,
555 ];