1
1
// NOTE: The following code was generated by "library/core/src/unicode/printable.py",
2
2
// do not edit directly!
3
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 ] {
4
+ fn check ( x : u16 , singletons_upper : & [ ( u8 , u8 ) ] , singletons_lower : & [ u8 ] , normal : & [ u8 ] ) -> bool {
5
+ let x_upper = ( x >> 8 ) as u8 ;
6
+ let mut lower_start = 0 ;
7
+ for & ( upper, lower_count ) in singletons_upper {
8
+ let lower_end = lower_start + lower_count as usize ;
9
+ if x_upper == upper {
10
+ for & lower in & singletons_lower [ lower_start..lower_end ] {
11
11
if lower == x as u8 {
12
12
return false ;
13
13
}
14
14
}
15
- } else if xupper < upper {
15
+ } else if x_upper < upper {
16
16
break ;
17
17
}
18
- lowerstart = lowerend ;
18
+ lower_start = lower_end ;
19
19
}
20
20
21
21
let mut x = x as i32 ;
@@ -40,53 +40,27 @@ pub(crate) fn is_printable(x: char) -> bool {
40
40
let x = x as u32 ;
41
41
let lower = x as u16 ;
42
42
43
- if x < 32 {
44
- // ASCII fast path
45
- false
46
- } else if x < 127 {
47
- // ASCII fast path
48
- true
49
- } else if x < 0x10000 {
50
- check ( lower, SINGLETONS0U , SINGLETONS0L , NORMAL0 )
51
- } else if x < 0x20000 {
52
- check ( lower, SINGLETONS1U , SINGLETONS1L , NORMAL1 )
53
- } else {
54
- if 0x2a6e0 <= x && x < 0x2a700 {
55
- return false ;
56
- }
57
- if 0x2b73a <= x && x < 0x2b740 {
58
- return false ;
59
- }
60
- if 0x2b81e <= x && x < 0x2b820 {
61
- return false ;
62
- }
63
- if 0x2cea2 <= x && x < 0x2ceb0 {
64
- return false ;
65
- }
66
- if 0x2ebe1 <= x && x < 0x2ebf0 {
67
- return false ;
68
- }
69
- if 0x2ee5e <= x && x < 0x2f800 {
70
- return false ;
71
- }
72
- if 0x2fa1e <= x && x < 0x30000 {
73
- return false ;
74
- }
75
- if 0x3134b <= x && x < 0x31350 {
76
- return false ;
77
- }
78
- if 0x323b0 <= x && x < 0xe0100 {
79
- return false ;
80
- }
81
- if 0xe01f0 <= x && x < 0x110000 {
82
- return false ;
83
- }
84
- true
43
+ match x {
44
+ ..32 => false , // ASCII fast path
45
+ ..127 => true , // ASCII fast path
46
+ ..0x10000 => check ( lower, SINGLETONS0_UPPER , SINGLETONS0_LOWER , NORMAL0 ) ,
47
+ ..0x20000 => check ( lower, SINGLETONS1_UPPER , SINGLETONS1_LOWER , NORMAL1 ) ,
48
+ 0x2a6e0 ..0x2a700 => false ,
49
+ 0x2b73a ..0x2b740 => false ,
50
+ 0x2b81e ..0x2b820 => false ,
51
+ 0x2cea2 ..0x2ceb0 => false ,
52
+ 0x2ebe1 ..0x2ebf0 => false ,
53
+ 0x2ee5e ..0x2f800 => false ,
54
+ 0x2fa1e ..0x30000 => false ,
55
+ 0x3134b ..0x31350 => false ,
56
+ 0x323b0 ..0xe0100 => false ,
57
+ 0xe01f0 ..0x110000 => false ,
58
+ _ => true ,
85
59
}
86
60
}
87
61
88
62
#[ rustfmt:: skip]
89
- const SINGLETONS0U : & [ ( u8 , u8 ) ] = & [
63
+ const SINGLETONS0_UPPER : & [ ( u8 , u8 ) ] = & [
90
64
( 0x00 , 1 ) ,
91
65
( 0x03 , 5 ) ,
92
66
( 0x05 , 6 ) ,
@@ -129,7 +103,7 @@ const SINGLETONS0U: &[(u8, u8)] = &[
129
103
( 0xff , 9 ) ,
130
104
] ;
131
105
#[ rustfmt:: skip]
132
- const SINGLETONS0L : & [ u8 ] = & [
106
+ const SINGLETONS0_LOWER : & [ u8 ] = & [
133
107
0xad , 0x78 , 0x79 , 0x8b , 0x8d , 0xa2 , 0x30 , 0x57 ,
134
108
0x58 , 0x8b , 0x8c , 0x90 , 0x1c , 0xdd , 0x0e , 0x0f ,
135
109
0x4b , 0x4c , 0xfb , 0xfc , 0x2e , 0x2f , 0x3f , 0x5c ,
@@ -169,7 +143,7 @@ const SINGLETONS0L: &[u8] = &[
169
143
0xfe , 0xff ,
170
144
] ;
171
145
#[ rustfmt:: skip]
172
- const SINGLETONS1U : & [ ( u8 , u8 ) ] = & [
146
+ const SINGLETONS1_UPPER : & [ ( u8 , u8 ) ] = & [
173
147
( 0x00 , 6 ) ,
174
148
( 0x01 , 1 ) ,
175
149
( 0x03 , 1 ) ,
@@ -216,7 +190,7 @@ const SINGLETONS1U: &[(u8, u8)] = &[
216
190
( 0xfb , 1 ) ,
217
191
] ;
218
192
#[ rustfmt:: skip]
219
- const SINGLETONS1L : & [ u8 ] = & [
193
+ const SINGLETONS1_LOWER : & [ u8 ] = & [
220
194
0x0c , 0x27 , 0x3b , 0x3e , 0x4e , 0x4f , 0x8f , 0x9e ,
221
195
0x9e , 0x9f , 0x7b , 0x8b , 0x93 , 0x96 , 0xa2 , 0xb2 ,
222
196
0xba , 0x86 , 0xb1 , 0x06 , 0x07 , 0x09 , 0x36 , 0x3d ,
0 commit comments