]> git.proxmox.com Git - rustc.git/blob - src/libcore/char_private.rs
New upstream version 1.12.0+dfsg1
[rustc.git] / src / libcore / char_private.rs
1 // Copyright 2012-2016 The Rust Project Developers. See the COPYRIGHT
2 // file at the top-level directory of this distribution and at
3 // http://rust-lang.org/COPYRIGHT.
4 //
5 // Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
6 // http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
7 // <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
8 // option. This file may not be copied, modified, or distributed
9 // except according to those terms.
10
11 // NOTE: The following code was generated by "src/etc/char_private.py",
12 // do not edit directly!
13
14 use slice::SliceExt;
15
16 fn check(x: u16, singletons: &[u16], normal: &[u16]) -> bool {
17 for &s in singletons {
18 if x == s {
19 return false;
20 } else if x < s {
21 break;
22 }
23 }
24 for w in normal.chunks(2) {
25 let start = w[0];
26 let len = w[1];
27 let difference = (x as i32) - (start as i32);
28 if 0 <= difference {
29 if difference < len as i32 {
30 return false;
31 }
32 } else {
33 break;
34 }
35 }
36 true
37 }
38
39 pub 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, SINGLETONS0, NORMAL0)
44 } else if x < 0x20000 {
45 check(lower, SINGLETONS1, NORMAL1)
46 } else {
47 if 0x20000 <= x && x < 0x2f800 {
48 return false;
49 }
50 if 0x2fa1e <= x && x < 0xe0100 {
51 return false;
52 }
53 if 0xe01f0 <= x && x < 0x110000 {
54 return false;
55 }
56 true
57 }
58 }
59
60 const SINGLETONS0: &'static [u16] = &[
61 0xad,
62 0x378,
63 0x379,
64 0x38b,
65 0x38d,
66 0x3a2,
67 0x557,
68 0x558,
69 0x560,
70 0x588,
71 0x590,
72 0x61c,
73 0x61d,
74 0x6dd,
75 0x70e,
76 0x70f,
77 0x74b,
78 0x74c,
79 0x82e,
80 0x82f,
81 0x83f,
82 0x85c,
83 0x85d,
84 0x8a1,
85 0x8ff,
86 0x978,
87 0x980,
88 0x984,
89 0x98d,
90 0x98e,
91 0x991,
92 0x992,
93 0x9a9,
94 0x9b1,
95 0x9ba,
96 0x9bb,
97 0x9c5,
98 0x9c6,
99 0x9c9,
100 0x9ca,
101 0x9de,
102 0x9e4,
103 0x9e5,
104 0xa04,
105 0xa11,
106 0xa12,
107 0xa29,
108 0xa31,
109 0xa34,
110 0xa37,
111 0xa3a,
112 0xa3b,
113 0xa3d,
114 0xa49,
115 0xa4a,
116 0xa5d,
117 0xa84,
118 0xa8e,
119 0xa92,
120 0xaa9,
121 0xab1,
122 0xab4,
123 0xaba,
124 0xabb,
125 0xac6,
126 0xaca,
127 0xace,
128 0xacf,
129 0xae4,
130 0xae5,
131 0xb04,
132 0xb0d,
133 0xb0e,
134 0xb11,
135 0xb12,
136 0xb29,
137 0xb31,
138 0xb34,
139 0xb3a,
140 0xb3b,
141 0xb45,
142 0xb46,
143 0xb49,
144 0xb4a,
145 0xb5e,
146 0xb64,
147 0xb65,
148 0xb84,
149 0xb91,
150 0xb9b,
151 0xb9d,
152 0xbc9,
153 0xbce,
154 0xbcf,
155 0xc04,
156 0xc0d,
157 0xc11,
158 0xc29,
159 0xc34,
160 0xc45,
161 0xc49,
162 0xc57,
163 0xc64,
164 0xc65,
165 0xc80,
166 0xc81,
167 0xc84,
168 0xc8d,
169 0xc91,
170 0xca9,
171 0xcb4,
172 0xcba,
173 0xcbb,
174 0xcc5,
175 0xcc9,
176 0xcdf,
177 0xce4,
178 0xce5,
179 0xcf0,
180 0xd04,
181 0xd0d,
182 0xd11,
183 0xd3b,
184 0xd3c,
185 0xd45,
186 0xd49,
187 0xd64,
188 0xd65,
189 0xd80,
190 0xd81,
191 0xd84,
192 0xdb2,
193 0xdbc,
194 0xdbe,
195 0xdbf,
196 0xdd5,
197 0xdd7,
198 0xe83,
199 0xe85,
200 0xe86,
201 0xe89,
202 0xe8b,
203 0xe8c,
204 0xe98,
205 0xea0,
206 0xea4,
207 0xea6,
208 0xea8,
209 0xea9,
210 0xeac,
211 0xeba,
212 0xebe,
213 0xebf,
214 0xec5,
215 0xec7,
216 0xece,
217 0xecf,
218 0xeda,
219 0xedb,
220 0xf48,
221 0xf98,
222 0xfbd,
223 0xfcd,
224 0x10c6,
225 0x10ce,
226 0x10cf,
227 0x1249,
228 0x124e,
229 0x124f,
230 0x1257,
231 0x1259,
232 0x125e,
233 0x125f,
234 0x1289,
235 0x128e,
236 0x128f,
237 0x12b1,
238 0x12b6,
239 0x12b7,
240 0x12bf,
241 0x12c1,
242 0x12c6,
243 0x12c7,
244 0x12d7,
245 0x1311,
246 0x1316,
247 0x1317,
248 0x135b,
249 0x135c,
250 0x1680,
251 0x170d,
252 0x176d,
253 0x1771,
254 0x17de,
255 0x17df,
256 0x180e,
257 0x180f,
258 0x196e,
259 0x196f,
260 0x1a1c,
261 0x1a1d,
262 0x1a5f,
263 0x1a7d,
264 0x1a7e,
265 0x1f16,
266 0x1f17,
267 0x1f1e,
268 0x1f1f,
269 0x1f46,
270 0x1f47,
271 0x1f4e,
272 0x1f4f,
273 0x1f58,
274 0x1f5a,
275 0x1f5c,
276 0x1f5e,
277 0x1f7e,
278 0x1f7f,
279 0x1fb5,
280 0x1fc5,
281 0x1fd4,
282 0x1fd5,
283 0x1fdc,
284 0x1ff0,
285 0x1ff1,
286 0x1ff5,
287 0x2072,
288 0x2073,
289 0x208f,
290 0x2700,
291 0x2c2f,
292 0x2c5f,
293 0x2d26,
294 0x2d2e,
295 0x2d2f,
296 0x2da7,
297 0x2daf,
298 0x2db7,
299 0x2dbf,
300 0x2dc7,
301 0x2dcf,
302 0x2dd7,
303 0x2ddf,
304 0x2e9a,
305 0x3040,
306 0x3097,
307 0x3098,
308 0x318f,
309 0x321f,
310 0x32ff,
311 0xa78f,
312 0xa9ce,
313 0xaa4e,
314 0xaa4f,
315 0xaa5a,
316 0xaa5b,
317 0xab07,
318 0xab08,
319 0xab0f,
320 0xab10,
321 0xab27,
322 0xabee,
323 0xabef,
324 0xfa6e,
325 0xfa6f,
326 0xfb37,
327 0xfb3d,
328 0xfb3f,
329 0xfb42,
330 0xfb45,
331 0xfd90,
332 0xfd91,
333 0xfdfe,
334 0xfdff,
335 0xfe53,
336 0xfe67,
337 0xfe75,
338 0xffc8,
339 0xffc9,
340 0xffd0,
341 0xffd1,
342 0xffd8,
343 0xffd9,
344 0xffe7,
345 0xfffe,
346 0xffff,
347 ];
348 const SINGLETONS1: &'static [u16] = &[
349 0xc,
350 0x27,
351 0x3b,
352 0x3e,
353 0x4e,
354 0x4f,
355 0x31f,
356 0x39e,
357 0x49e,
358 0x49f,
359 0x806,
360 0x807,
361 0x809,
362 0x836,
363 0x83d,
364 0x83e,
365 0x856,
366 0xa04,
367 0xa14,
368 0xa18,
369 0xb56,
370 0xb57,
371 0x10bd,
372 0x1135,
373 0xd127,
374 0xd128,
375 0xd455,
376 0xd49d,
377 0xd4a0,
378 0xd4a1,
379 0xd4a3,
380 0xd4a4,
381 0xd4a7,
382 0xd4a8,
383 0xd4ad,
384 0xd4ba,
385 0xd4bc,
386 0xd4c4,
387 0xd506,
388 0xd50b,
389 0xd50c,
390 0xd515,
391 0xd51d,
392 0xd53a,
393 0xd53f,
394 0xd545,
395 0xd551,
396 0xd6a6,
397 0xd6a7,
398 0xd7cc,
399 0xd7cd,
400 0xee04,
401 0xee20,
402 0xee23,
403 0xee25,
404 0xee26,
405 0xee28,
406 0xee33,
407 0xee38,
408 0xee3a,
409 0xee48,
410 0xee4a,
411 0xee4c,
412 0xee50,
413 0xee53,
414 0xee55,
415 0xee56,
416 0xee58,
417 0xee5a,
418 0xee5c,
419 0xee5e,
420 0xee60,
421 0xee63,
422 0xee65,
423 0xee66,
424 0xee6b,
425 0xee73,
426 0xee78,
427 0xee7d,
428 0xee7f,
429 0xee8a,
430 0xeea4,
431 0xeeaa,
432 0xf0af,
433 0xf0b0,
434 0xf0bf,
435 0xf0c0,
436 0xf0d0,
437 0xf12f,
438 0xf336,
439 0xf3c5,
440 0xf43f,
441 0xf441,
442 0xf4f8,
443 0xf53e,
444 0xf53f,
445 ];
446 const NORMAL0: &'static [u16] = &[
447 0x0, 0x20,
448 0x7f, 0x22,
449 0x37f, 0x5,
450 0x528, 0x9,
451 0x58b, 0x4,
452 0x5c8, 0x8,
453 0x5eb, 0x5,
454 0x5f5, 0x11,
455 0x7b2, 0xe,
456 0x7fb, 0x5,
457 0x85f, 0x41,
458 0x8ad, 0x37,
459 0x9b3, 0x3,
460 0x9cf, 0x8,
461 0x9d8, 0x4,
462 0x9fc, 0x5,
463 0xa0b, 0x4,
464 0xa43, 0x4,
465 0xa4e, 0x3,
466 0xa52, 0x7,
467 0xa5f, 0x7,
468 0xa76, 0xb,
469 0xad1, 0xf,
470 0xaf2, 0xf,
471 0xb4e, 0x8,
472 0xb58, 0x4,
473 0xb78, 0xa,
474 0xb8b, 0x3,
475 0xb96, 0x3,
476 0xba0, 0x3,
477 0xba5, 0x3,
478 0xbab, 0x3,
479 0xbba, 0x4,
480 0xbc3, 0x3,
481 0xbd1, 0x6,
482 0xbd8, 0xe,
483 0xbfb, 0x6,
484 0xc3a, 0x3,
485 0xc4e, 0x7,
486 0xc5a, 0x6,
487 0xc70, 0x8,
488 0xcce, 0x7,
489 0xcd7, 0x7,
490 0xcf3, 0xf,
491 0xd4f, 0x8,
492 0xd58, 0x8,
493 0xd76, 0x3,
494 0xd97, 0x3,
495 0xdc7, 0x3,
496 0xdcb, 0x4,
497 0xde0, 0x12,
498 0xdf5, 0xc,
499 0xe3b, 0x4,
500 0xe5c, 0x25,
501 0xe8e, 0x6,
502 0xee0, 0x20,
503 0xf6d, 0x4,
504 0xfdb, 0x25,
505 0x10c8, 0x5,
506 0x137d, 0x3,
507 0x139a, 0x6,
508 0x13f5, 0xb,
509 0x169d, 0x3,
510 0x16f1, 0xf,
511 0x1715, 0xb,
512 0x1737, 0x9,
513 0x1754, 0xc,
514 0x1774, 0xc,
515 0x17ea, 0x6,
516 0x17fa, 0x6,
517 0x181a, 0x6,
518 0x1878, 0x8,
519 0x18ab, 0x5,
520 0x18f6, 0xa,
521 0x191d, 0x3,
522 0x192c, 0x4,
523 0x193c, 0x4,
524 0x1941, 0x3,
525 0x1975, 0xb,
526 0x19ac, 0x4,
527 0x19ca, 0x6,
528 0x19db, 0x3,
529 0x1a8a, 0x6,
530 0x1a9a, 0x6,
531 0x1aae, 0x52,
532 0x1b4c, 0x4,
533 0x1b7d, 0x3,
534 0x1bf4, 0x8,
535 0x1c38, 0x3,
536 0x1c4a, 0x3,
537 0x1c80, 0x40,
538 0x1cc8, 0x8,
539 0x1cf7, 0x9,
540 0x1de7, 0x15,
541 0x1fff, 0x11,
542 0x2028, 0x8,
543 0x205f, 0x11,
544 0x209d, 0x3,
545 0x20ba, 0x16,
546 0x20f1, 0xf,
547 0x218a, 0x6,
548 0x23f4, 0xc,
549 0x2427, 0x19,
550 0x244b, 0x15,
551 0x2b4d, 0x3,
552 0x2b5a, 0xa6,
553 0x2cf4, 0x5,
554 0x2d28, 0x5,
555 0x2d68, 0x7,
556 0x2d71, 0xe,
557 0x2d97, 0x9,
558 0x2e3c, 0x44,
559 0x2ef4, 0xc,
560 0x2fd6, 0x1a,
561 0x2ffc, 0x5,
562 0x3100, 0x5,
563 0x312e, 0x3,
564 0x31bb, 0x5,
565 0x31e4, 0xc,
566 0x3400, 0x19c0,
567 0x4e00, 0x5200,
568 0xa48d, 0x3,
569 0xa4c7, 0x9,
570 0xa62c, 0x14,
571 0xa698, 0x7,
572 0xa6f8, 0x8,
573 0xa794, 0xc,
574 0xa7ab, 0x4d,
575 0xa82c, 0x4,
576 0xa83a, 0x6,
577 0xa878, 0x8,
578 0xa8c5, 0x9,
579 0xa8da, 0x6,
580 0xa8fc, 0x4,
581 0xa954, 0xb,
582 0xa97d, 0x3,
583 0xa9da, 0x4,
584 0xa9e0, 0x20,
585 0xaa37, 0x9,
586 0xaa7c, 0x4,
587 0xaac3, 0x18,
588 0xaaf7, 0xa,
589 0xab17, 0x9,
590 0xab2f, 0x91,
591 0xabfa, 0x2bb6,
592 0xd7c7, 0x4,
593 0xd7fc, 0x2104,
594 0xfada, 0x26,
595 0xfb07, 0xc,
596 0xfb18, 0x5,
597 0xfbc2, 0x11,
598 0xfd40, 0x10,
599 0xfdc8, 0x28,
600 0xfe1a, 0x6,
601 0xfe27, 0x9,
602 0xfe6c, 0x4,
603 0xfefd, 0x4,
604 0xffbf, 0x3,
605 0xffdd, 0x3,
606 0xffef, 0xd,
607 ];
608 const NORMAL1: &'static [u16] = &[
609 0x5e, 0x22,
610 0xfb, 0x5,
611 0x103, 0x4,
612 0x134, 0x3,
613 0x18b, 0x5,
614 0x19c, 0x34,
615 0x1fe, 0x82,
616 0x29d, 0x3,
617 0x2d1, 0x2f,
618 0x324, 0xc,
619 0x34b, 0x35,
620 0x3c4, 0x4,
621 0x3d6, 0x2a,
622 0x4aa, 0x356,
623 0x839, 0x3,
624 0x860, 0xa0,
625 0x91c, 0x3,
626 0x93a, 0x5,
627 0x940, 0x40,
628 0x9b8, 0x6,
629 0x9c0, 0x40,
630 0xa07, 0x5,
631 0xa34, 0x4,
632 0xa3b, 0x4,
633 0xa48, 0x8,
634 0xa59, 0x7,
635 0xa80, 0x80,
636 0xb36, 0x3,
637 0xb73, 0x5,
638 0xb80, 0x80,
639 0xc49, 0x217,
640 0xe7f, 0x181,
641 0x104e, 0x4,
642 0x1070, 0x10,
643 0x10c2, 0xe,
644 0x10e9, 0x7,
645 0x10fa, 0x6,
646 0x1144, 0x3c,
647 0x11c9, 0x7,
648 0x11da, 0x4a6,
649 0x16b8, 0x8,
650 0x16ca, 0x936,
651 0x236f, 0x91,
652 0x2463, 0xd,
653 0x2474, 0xb8c,
654 0x342f, 0x33d1,
655 0x6a39, 0x4c7,
656 0x6f45, 0xb,
657 0x6f7f, 0x10,
658 0x6fa0, 0x4060,
659 0xb002, 0x1ffe,
660 0xd0f6, 0xa,
661 0xd173, 0x8,
662 0xd1de, 0x22,
663 0xd246, 0xba,
664 0xd357, 0x9,
665 0xd372, 0x8e,
666 0xd547, 0x3,
667 0xd800, 0x1600,
668 0xee3c, 0x6,
669 0xee43, 0x4,
670 0xee9c, 0x5,
671 0xeebc, 0x34,
672 0xeef2, 0x10e,
673 0xf02c, 0x4,
674 0xf094, 0xc,
675 0xf0e0, 0x20,
676 0xf10b, 0x5,
677 0xf16c, 0x4,
678 0xf19b, 0x4b,
679 0xf203, 0xd,
680 0xf23b, 0x5,
681 0xf249, 0x7,
682 0xf252, 0xae,
683 0xf321, 0xf,
684 0xf37d, 0x3,
685 0xf394, 0xc,
686 0xf3cb, 0x15,
687 0xf3f1, 0xf,
688 0xf4fd, 0x3,
689 0xf544, 0xc,
690 0xf568, 0x93,
691 0xf641, 0x4,
692 0xf650, 0x30,
693 0xf6c6, 0x3a,
694 0xf774, 0x88c,
695 ];