]> git.lizzy.rs Git - rust.git/blob - src/libcore/char_private.rs
Rollup merge of #35058 - jethrogb:no_panic_abs, r=alexcrichton
[rust.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 ];