1 // NOTE: The following code was generated by "library/core/src/unicode/printable.py",
2 // do not edit directly!
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;
10 for &lower in &singletonlowers[lowerstart..lowerend] {
15 } else if xupper < upper {
18 lowerstart = lowerend;
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
39 pub(crate) fn is_printable(x: char) -> bool {
49 } else if x < 0x10000 {
50 check(lower, SINGLETONS0U, SINGLETONS0L, NORMAL0)
51 } else if x < 0x20000 {
52 check(lower, SINGLETONS1U, SINGLETONS1L, NORMAL1)
54 if 0x2a6e0 <= x && x < 0x2a700 {
57 if 0x2b73a <= x && x < 0x2b740 {
60 if 0x2b81e <= x && x < 0x2b820 {
63 if 0x2cea2 <= x && x < 0x2ceb0 {
66 if 0x2ebe1 <= x && x < 0x2f800 {
69 if 0x2fa1e <= x && x < 0x30000 {
72 if 0x3134b <= x && x < 0x31350 {
75 if 0x323b0 <= x && x < 0xe0100 {
78 if 0xe01f0 <= x && x < 0x110000 {
86 const SINGLETONS0U: &[(u8, u8)] = &[
129 const SINGLETONS0L: &[u8] = &[
130 0xad, 0x78, 0x79, 0x8b, 0x8d, 0xa2, 0x30, 0x57,
131 0x58, 0x8b, 0x8c, 0x90, 0x1c, 0xdd, 0x0e, 0x0f,
132 0x4b, 0x4c, 0xfb, 0xfc, 0x2e, 0x2f, 0x3f, 0x5c,
133 0x5d, 0x5f, 0xe2, 0x84, 0x8d, 0x8e, 0x91, 0x92,
134 0xa9, 0xb1, 0xba, 0xbb, 0xc5, 0xc6, 0xc9, 0xca,
135 0xde, 0xe4, 0xe5, 0xff, 0x00, 0x04, 0x11, 0x12,
136 0x29, 0x31, 0x34, 0x37, 0x3a, 0x3b, 0x3d, 0x49,
137 0x4a, 0x5d, 0x84, 0x8e, 0x92, 0xa9, 0xb1, 0xb4,
138 0xba, 0xbb, 0xc6, 0xca, 0xce, 0xcf, 0xe4, 0xe5,
139 0x00, 0x04, 0x0d, 0x0e, 0x11, 0x12, 0x29, 0x31,
140 0x34, 0x3a, 0x3b, 0x45, 0x46, 0x49, 0x4a, 0x5e,
141 0x64, 0x65, 0x84, 0x91, 0x9b, 0x9d, 0xc9, 0xce,
142 0xcf, 0x0d, 0x11, 0x29, 0x3a, 0x3b, 0x45, 0x49,
143 0x57, 0x5b, 0x5c, 0x5e, 0x5f, 0x64, 0x65, 0x8d,
144 0x91, 0xa9, 0xb4, 0xba, 0xbb, 0xc5, 0xc9, 0xdf,
145 0xe4, 0xe5, 0xf0, 0x0d, 0x11, 0x45, 0x49, 0x64,
146 0x65, 0x80, 0x84, 0xb2, 0xbc, 0xbe, 0xbf, 0xd5,
147 0xd7, 0xf0, 0xf1, 0x83, 0x85, 0x8b, 0xa4, 0xa6,
148 0xbe, 0xbf, 0xc5, 0xc7, 0xcf, 0xda, 0xdb, 0x48,
149 0x98, 0xbd, 0xcd, 0xc6, 0xce, 0xcf, 0x49, 0x4e,
150 0x4f, 0x57, 0x59, 0x5e, 0x5f, 0x89, 0x8e, 0x8f,
151 0xb1, 0xb6, 0xb7, 0xbf, 0xc1, 0xc6, 0xc7, 0xd7,
152 0x11, 0x16, 0x17, 0x5b, 0x5c, 0xf6, 0xf7, 0xfe,
153 0xff, 0x80, 0x6d, 0x71, 0xde, 0xdf, 0x0e, 0x1f,
154 0x6e, 0x6f, 0x1c, 0x1d, 0x5f, 0x7d, 0x7e, 0xae,
155 0xaf, 0x7f, 0xbb, 0xbc, 0x16, 0x17, 0x1e, 0x1f,
156 0x46, 0x47, 0x4e, 0x4f, 0x58, 0x5a, 0x5c, 0x5e,
157 0x7e, 0x7f, 0xb5, 0xc5, 0xd4, 0xd5, 0xdc, 0xf0,
158 0xf1, 0xf5, 0x72, 0x73, 0x8f, 0x74, 0x75, 0x96,
159 0x26, 0x2e, 0x2f, 0xa7, 0xaf, 0xb7, 0xbf, 0xc7,
160 0xcf, 0xd7, 0xdf, 0x9a, 0x40, 0x97, 0x98, 0x30,
161 0x8f, 0x1f, 0xd2, 0xd4, 0xce, 0xff, 0x4e, 0x4f,
162 0x5a, 0x5b, 0x07, 0x08, 0x0f, 0x10, 0x27, 0x2f,
163 0xee, 0xef, 0x6e, 0x6f, 0x37, 0x3d, 0x3f, 0x42,
164 0x45, 0x90, 0x91, 0x53, 0x67, 0x75, 0xc8, 0xc9,
165 0xd0, 0xd1, 0xd8, 0xd9, 0xe7, 0xfe, 0xff,
168 const SINGLETONS1U: &[(u8, u8)] = &[
215 const SINGLETONS1L: &[u8] = &[
216 0x0c, 0x27, 0x3b, 0x3e, 0x4e, 0x4f, 0x8f, 0x9e,
217 0x9e, 0x9f, 0x7b, 0x8b, 0x93, 0x96, 0xa2, 0xb2,
218 0xba, 0x86, 0xb1, 0x06, 0x07, 0x09, 0x36, 0x3d,
219 0x3e, 0x56, 0xf3, 0xd0, 0xd1, 0x04, 0x14, 0x18,
220 0x36, 0x37, 0x56, 0x57, 0x7f, 0xaa, 0xae, 0xaf,
221 0xbd, 0x35, 0xe0, 0x12, 0x87, 0x89, 0x8e, 0x9e,
222 0x04, 0x0d, 0x0e, 0x11, 0x12, 0x29, 0x31, 0x34,
223 0x3a, 0x45, 0x46, 0x49, 0x4a, 0x4e, 0x4f, 0x64,
224 0x65, 0x5c, 0xb6, 0xb7, 0x1b, 0x1c, 0x07, 0x08,
225 0x0a, 0x0b, 0x14, 0x17, 0x36, 0x39, 0x3a, 0xa8,
226 0xa9, 0xd8, 0xd9, 0x09, 0x37, 0x90, 0x91, 0xa8,
227 0x07, 0x0a, 0x3b, 0x3e, 0x66, 0x69, 0x8f, 0x92,
228 0x11, 0x6f, 0x5f, 0xbf, 0xee, 0xef, 0x5a, 0x62,
229 0xf4, 0xfc, 0xff, 0x53, 0x54, 0x9a, 0x9b, 0x2e,
230 0x2f, 0x27, 0x28, 0x55, 0x9d, 0xa0, 0xa1, 0xa3,
231 0xa4, 0xa7, 0xa8, 0xad, 0xba, 0xbc, 0xc4, 0x06,
232 0x0b, 0x0c, 0x15, 0x1d, 0x3a, 0x3f, 0x45, 0x51,
233 0xa6, 0xa7, 0xcc, 0xcd, 0xa0, 0x07, 0x19, 0x1a,
234 0x22, 0x25, 0x3e, 0x3f, 0xe7, 0xec, 0xef, 0xff,
235 0xc5, 0xc6, 0x04, 0x20, 0x23, 0x25, 0x26, 0x28,
236 0x33, 0x38, 0x3a, 0x48, 0x4a, 0x4c, 0x50, 0x53,
237 0x55, 0x56, 0x58, 0x5a, 0x5c, 0x5e, 0x60, 0x63,
238 0x65, 0x66, 0x6b, 0x73, 0x78, 0x7d, 0x7f, 0x8a,
239 0xa4, 0xaa, 0xaf, 0xb0, 0xc0, 0xd0, 0xae, 0xaf,
240 0x6e, 0x6f, 0xbe, 0x93,
243 const NORMAL0: &[u8] = &[
382 const NORMAL1: &[u8] = &[
490 0x80, 0xc4, 0x8a, 0x4c,
494 0x82, 0x47, 0xa1, 0xb9,
515 0x81, 0x8c, 0x89, 0x04,