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