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