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