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