1 #include "Python.h"
2 
3 /* Our own locale-independent ctype.h-like macros */
4 
5 const unsigned int _Py_ctype_table[256] = {
6     0, /* 0x0 '\x00' */
7     0, /* 0x1 '\x01' */
8     0, /* 0x2 '\x02' */
9     0, /* 0x3 '\x03' */
10     0, /* 0x4 '\x04' */
11     0, /* 0x5 '\x05' */
12     0, /* 0x6 '\x06' */
13     0, /* 0x7 '\x07' */
14     0, /* 0x8 '\x08' */
15     PY_CTF_SPACE, /* 0x9 '\t' */
16     PY_CTF_SPACE, /* 0xa '\n' */
17     PY_CTF_SPACE, /* 0xb '\v' */
18     PY_CTF_SPACE, /* 0xc '\f' */
19     PY_CTF_SPACE, /* 0xd '\r' */
20     0, /* 0xe '\x0e' */
21     0, /* 0xf '\x0f' */
22     0, /* 0x10 '\x10' */
23     0, /* 0x11 '\x11' */
24     0, /* 0x12 '\x12' */
25     0, /* 0x13 '\x13' */
26     0, /* 0x14 '\x14' */
27     0, /* 0x15 '\x15' */
28     0, /* 0x16 '\x16' */
29     0, /* 0x17 '\x17' */
30     0, /* 0x18 '\x18' */
31     0, /* 0x19 '\x19' */
32     0, /* 0x1a '\x1a' */
33     0, /* 0x1b '\x1b' */
34     0, /* 0x1c '\x1c' */
35     0, /* 0x1d '\x1d' */
36     0, /* 0x1e '\x1e' */
37     0, /* 0x1f '\x1f' */
38     PY_CTF_SPACE, /* 0x20 ' ' */
39     0, /* 0x21 '!' */
40     0, /* 0x22 '"' */
41     0, /* 0x23 '#' */
42     0, /* 0x24 '$' */
43     0, /* 0x25 '%' */
44     0, /* 0x26 '&' */
45     0, /* 0x27 "'" */
46     0, /* 0x28 '(' */
47     0, /* 0x29 ')' */
48     0, /* 0x2a '*' */
49     0, /* 0x2b '+' */
50     0, /* 0x2c ',' */
51     0, /* 0x2d '-' */
52     0, /* 0x2e '.' */
53     0, /* 0x2f '/' */
54     PY_CTF_DIGIT|PY_CTF_XDIGIT, /* 0x30 '0' */
55     PY_CTF_DIGIT|PY_CTF_XDIGIT, /* 0x31 '1' */
56     PY_CTF_DIGIT|PY_CTF_XDIGIT, /* 0x32 '2' */
57     PY_CTF_DIGIT|PY_CTF_XDIGIT, /* 0x33 '3' */
58     PY_CTF_DIGIT|PY_CTF_XDIGIT, /* 0x34 '4' */
59     PY_CTF_DIGIT|PY_CTF_XDIGIT, /* 0x35 '5' */
60     PY_CTF_DIGIT|PY_CTF_XDIGIT, /* 0x36 '6' */
61     PY_CTF_DIGIT|PY_CTF_XDIGIT, /* 0x37 '7' */
62     PY_CTF_DIGIT|PY_CTF_XDIGIT, /* 0x38 '8' */
63     PY_CTF_DIGIT|PY_CTF_XDIGIT, /* 0x39 '9' */
64     0, /* 0x3a ':' */
65     0, /* 0x3b ';' */
66     0, /* 0x3c '<' */
67     0, /* 0x3d '=' */
68     0, /* 0x3e '>' */
69     0, /* 0x3f '?' */
70     0, /* 0x40 '@' */
71     PY_CTF_UPPER|PY_CTF_XDIGIT, /* 0x41 'A' */
72     PY_CTF_UPPER|PY_CTF_XDIGIT, /* 0x42 'B' */
73     PY_CTF_UPPER|PY_CTF_XDIGIT, /* 0x43 'C' */
74     PY_CTF_UPPER|PY_CTF_XDIGIT, /* 0x44 'D' */
75     PY_CTF_UPPER|PY_CTF_XDIGIT, /* 0x45 'E' */
76     PY_CTF_UPPER|PY_CTF_XDIGIT, /* 0x46 'F' */
77     PY_CTF_UPPER, /* 0x47 'G' */
78     PY_CTF_UPPER, /* 0x48 'H' */
79     PY_CTF_UPPER, /* 0x49 'I' */
80     PY_CTF_UPPER, /* 0x4a 'J' */
81     PY_CTF_UPPER, /* 0x4b 'K' */
82     PY_CTF_UPPER, /* 0x4c 'L' */
83     PY_CTF_UPPER, /* 0x4d 'M' */
84     PY_CTF_UPPER, /* 0x4e 'N' */
85     PY_CTF_UPPER, /* 0x4f 'O' */
86     PY_CTF_UPPER, /* 0x50 'P' */
87     PY_CTF_UPPER, /* 0x51 'Q' */
88     PY_CTF_UPPER, /* 0x52 'R' */
89     PY_CTF_UPPER, /* 0x53 'S' */
90     PY_CTF_UPPER, /* 0x54 'T' */
91     PY_CTF_UPPER, /* 0x55 'U' */
92     PY_CTF_UPPER, /* 0x56 'V' */
93     PY_CTF_UPPER, /* 0x57 'W' */
94     PY_CTF_UPPER, /* 0x58 'X' */
95     PY_CTF_UPPER, /* 0x59 'Y' */
96     PY_CTF_UPPER, /* 0x5a 'Z' */
97     0, /* 0x5b '[' */
98     0, /* 0x5c '\\' */
99     0, /* 0x5d ']' */
100     0, /* 0x5e '^' */
101     0, /* 0x5f '_' */
102     0, /* 0x60 '`' */
103     PY_CTF_LOWER|PY_CTF_XDIGIT, /* 0x61 'a' */
104     PY_CTF_LOWER|PY_CTF_XDIGIT, /* 0x62 'b' */
105     PY_CTF_LOWER|PY_CTF_XDIGIT, /* 0x63 'c' */
106     PY_CTF_LOWER|PY_CTF_XDIGIT, /* 0x64 'd' */
107     PY_CTF_LOWER|PY_CTF_XDIGIT, /* 0x65 'e' */
108     PY_CTF_LOWER|PY_CTF_XDIGIT, /* 0x66 'f' */
109     PY_CTF_LOWER, /* 0x67 'g' */
110     PY_CTF_LOWER, /* 0x68 'h' */
111     PY_CTF_LOWER, /* 0x69 'i' */
112     PY_CTF_LOWER, /* 0x6a 'j' */
113     PY_CTF_LOWER, /* 0x6b 'k' */
114     PY_CTF_LOWER, /* 0x6c 'l' */
115     PY_CTF_LOWER, /* 0x6d 'm' */
116     PY_CTF_LOWER, /* 0x6e 'n' */
117     PY_CTF_LOWER, /* 0x6f 'o' */
118     PY_CTF_LOWER, /* 0x70 'p' */
119     PY_CTF_LOWER, /* 0x71 'q' */
120     PY_CTF_LOWER, /* 0x72 'r' */
121     PY_CTF_LOWER, /* 0x73 's' */
122     PY_CTF_LOWER, /* 0x74 't' */
123     PY_CTF_LOWER, /* 0x75 'u' */
124     PY_CTF_LOWER, /* 0x76 'v' */
125     PY_CTF_LOWER, /* 0x77 'w' */
126     PY_CTF_LOWER, /* 0x78 'x' */
127     PY_CTF_LOWER, /* 0x79 'y' */
128     PY_CTF_LOWER, /* 0x7a 'z' */
129     0, /* 0x7b '{' */
130     0, /* 0x7c '|' */
131     0, /* 0x7d '}' */
132     0, /* 0x7e '~' */
133     0, /* 0x7f '\x7f' */
134     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
135     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
136     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
137     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
138     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
139     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
140     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
141     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
142 };
143 
144 
145 const unsigned char _Py_ctype_tolower[256] = {
146     0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
147     0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
148     0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17,
149     0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f,
150     0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27,
151     0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f,
152     0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
153     0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f,
154     0x40, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,
155     0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f,
156     0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77,
157     0x78, 0x79, 0x7a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f,
158     0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,
159     0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f,
160     0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77,
161     0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x7f,
162     0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87,
163     0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f,
164     0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97,
165     0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, 0x9e, 0x9f,
166     0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7,
167     0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf,
168     0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7,
169     0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf,
170     0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7,
171     0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf,
172     0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7,
173     0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, 0xde, 0xdf,
174     0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7,
175     0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef,
176     0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7,
177     0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, 0xfe, 0xff,
178 };
179 
180 const unsigned char _Py_ctype_toupper[256] = {
181     0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
182     0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
183     0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17,
184     0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f,
185     0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27,
186     0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f,
187     0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
188     0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f,
189     0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47,
190     0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f,
191     0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57,
192     0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f,
193     0x60, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47,
194     0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f,
195     0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57,
196     0x58, 0x59, 0x5a, 0x7b, 0x7c, 0x7d, 0x7e, 0x7f,
197     0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87,
198     0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f,
199     0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97,
200     0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, 0x9e, 0x9f,
201     0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7,
202     0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf,
203     0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7,
204     0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf,
205     0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7,
206     0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf,
207     0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7,
208     0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, 0xde, 0xdf,
209     0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7,
210     0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef,
211     0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7,
212     0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, 0xfe, 0xff,
213 };
214 
215