]>
Commit | Line | Data |
---|---|---|
2aa62f2b | 1 | /** @file\r |
2 | Character classification and case conversion tables, and functions,\r | |
3 | for the C Standard Library as required to implement ctype.h.\r | |
4 | \r | |
5 | These are the default, C locale, tables.\r | |
6 | \r | |
681cc25c | 7 | Copyright (c) 2010 - 2011, Intel Corporation. All rights reserved.<BR>\r |
2aa62f2b | 8 | This program and the accompanying materials are licensed and made available under\r |
9 | the terms and conditions of the BSD License that accompanies this distribution.\r | |
10 | The full text of the license may be found at\r | |
681cc25c | 11 | http://opensource.org/licenses/bsd-license.\r |
2aa62f2b | 12 | \r |
13 | THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r | |
14 | WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r | |
2aa62f2b | 15 | **/\r |
16 | #include <LibConfig.h>\r | |
17 | #include <ctype.h>\r | |
18 | \r | |
681cc25c | 19 | /// ASCII-7 Character Classification Table\r |
2aa62f2b | 20 | const UINT16 _C_CharClassTable[128] = {\r |
21 | /* 00 NUL */ ( _CC ),\r | |
22 | /* 01 SOH */ ( _CC ),\r | |
23 | /* 02 STX */ ( _CC ),\r | |
24 | /* 03 ETX */ ( _CC ),\r | |
25 | /* 04 EOT */ ( _CC ),\r | |
26 | /* 05 ENQ */ ( _CC ),\r | |
27 | /* 06 ACK */ ( _CC ),\r | |
28 | /* 07 BEL */ ( _CC ),\r | |
29 | /* 08 BS */ ( _CC ),\r | |
30 | /* 09 TAB */ ( _CC | _CW | _CB ),\r | |
31 | /* 0A LF */ ( _CC | _CW ),\r | |
32 | /* 0B VT */ ( _CC | _CW ),\r | |
33 | /* 0C FF */ ( _CC | _CW ),\r | |
34 | /* 0D CR */ ( _CC | _CW ),\r | |
35 | /* 0E SO */ ( _CC ),\r | |
36 | /* 0F SI */ ( _CC ),\r | |
37 | /* 10 DLE */ ( _CC ),\r | |
38 | /* 11 DC1 */ ( _CC ),\r | |
39 | /* 12 DC2 */ ( _CC ),\r | |
40 | /* 13 DC3 */ ( _CC ),\r | |
41 | /* 14 DC4 */ ( _CC ),\r | |
42 | /* 15 NAK */ ( _CC ),\r | |
43 | /* 16 SYN */ ( _CC ),\r | |
44 | /* 17 ETB */ ( _CC ),\r | |
45 | /* 18 CAN */ ( _CC ),\r | |
46 | /* 19 EM */ ( _CC ),\r | |
47 | /* 1A SUB */ ( _CC ),\r | |
48 | /* 1B ESC */ ( _CC ),\r | |
49 | /* 1C FS */ ( _CC ),\r | |
50 | /* 1D GS */ ( _CC ),\r | |
51 | /* 1E RS */ ( _CC ),\r | |
52 | /* 1F US */ ( _CC ),\r | |
53 | /* 20 ' ' */ ( _CW | _CS | _CB ),\r | |
54 | /* 21 '!' */ ( _CP | _CG ),\r | |
55 | /* 22 '"' */ ( _CP | _CG ),\r | |
56 | /* 23 '#' */ ( _CP | _CG ),\r | |
57 | /* 24 '$' */ ( _CP | _CG ),\r | |
58 | /* 25 '%' */ ( _CP | _CG ),\r | |
59 | /* 26 '&' */ ( _CP | _CG ),\r | |
0c1992fb | 60 | /* 27 '\''*/ ( _CP | _CG | _C0 ),\r |
2aa62f2b | 61 | /* 28 '(' */ ( _CP | _CG ),\r |
62 | /* 29 ')' */ ( _CP | _CG ),\r | |
63 | /* 2A '*' */ ( _CP | _CG ),\r | |
64 | /* 2B '+' */ ( _CP | _CG ),\r | |
65 | /* 2C ',' */ ( _CP | _CG ),\r | |
66 | /* 2D '-' */ ( _CP | _CG ),\r | |
67 | /* 2E '.' */ ( _CP | _CG ),\r | |
0c1992fb | 68 | /* 2F '/' */ ( _CP | _CG | _C0 ),\r |
2aa62f2b | 69 | /* 30 '0' */ ( _CD | _CG ),\r |
70 | /* 31 '1' */ ( _CD | _CG ),\r | |
71 | /* 32 '2' */ ( _CD | _CG ),\r | |
72 | /* 33 '3' */ ( _CD | _CG ),\r | |
73 | /* 34 '4' */ ( _CD | _CG ),\r | |
74 | /* 35 '5' */ ( _CD | _CG ),\r | |
75 | /* 36 '6' */ ( _CD | _CG ),\r | |
76 | /* 37 '7' */ ( _CD | _CG ),\r | |
77 | /* 38 '8' */ ( _CD | _CG ),\r | |
78 | /* 39 '9' */ ( _CD | _CG ),\r | |
79 | /* 3A ':' */ ( _CP | _CG ),\r | |
80 | /* 3B ';' */ ( _CP | _CG ),\r | |
81 | /* 3C '<' */ ( _CP | _CG ),\r | |
82 | /* 3D '=' */ ( _CP | _CG ),\r | |
83 | /* 3E '>' */ ( _CP | _CG ),\r | |
84 | /* 3F '?' */ ( _CP | _CG ),\r | |
85 | /* 40 '@' */ ( _CP | _CG ),\r | |
86 | /* 41 'A' */ ( _CU | _CX | _CG ),\r | |
87 | /* 42 'B' */ ( _CU | _CX | _CG ),\r | |
88 | /* 43 'C' */ ( _CU | _CX | _CG ),\r | |
89 | /* 44 'D' */ ( _CU | _CX | _CG ),\r | |
90 | /* 45 'E' */ ( _CU | _CX | _CG ),\r | |
91 | /* 46 'F' */ ( _CU | _CX | _CG ),\r | |
92 | /* 47 'G' */ ( _CU | _CG ),\r | |
93 | /* 48 'H' */ ( _CU | _CG ),\r | |
94 | /* 49 'I' */ ( _CU | _CG ),\r | |
95 | /* 4A 'J' */ ( _CU | _CG ),\r | |
96 | /* 4B 'K' */ ( _CU | _CG ),\r | |
97 | /* 4C 'L' */ ( _CU | _CG ),\r | |
98 | /* 4D 'M' */ ( _CU | _CG ),\r | |
99 | /* 4E 'N' */ ( _CU | _CG ),\r | |
100 | /* 4F 'O' */ ( _CU | _CG ),\r | |
101 | /* 50 'P' */ ( _CU | _CG ),\r | |
102 | /* 51 'Q' */ ( _CU | _CG ),\r | |
103 | /* 52 'R' */ ( _CU | _CG ),\r | |
104 | /* 53 'S' */ ( _CU | _CG ),\r | |
105 | /* 54 'T' */ ( _CU | _CG ),\r | |
106 | /* 55 'U' */ ( _CU | _CG ),\r | |
107 | /* 56 'V' */ ( _CU | _CG ),\r | |
108 | /* 57 'W' */ ( _CU | _CG ),\r | |
109 | /* 58 'X' */ ( _CU | _CG ),\r | |
110 | /* 59 'Y' */ ( _CU | _CG ),\r | |
111 | /* 5A 'Z' */ ( _CU | _CG ),\r | |
112 | /* 5B '[' */ ( _CP | _CG ),\r | |
113 | /* 5C '\' */ ( _CP | _CG ),\r | |
114 | /* 5D ']' */ ( _CP | _CG ),\r | |
115 | /* 5E '^' */ ( _CP | _CG ),\r | |
116 | /* 5F '_' */ ( _CP | _CG ),\r | |
117 | /* 60 '`' */ ( _CP | _CG ),\r | |
118 | /* 61 'a' */ ( _CL | _CX | _CG ),\r | |
119 | /* 62 'b' */ ( _CL | _CX | _CG ),\r | |
120 | /* 63 'c' */ ( _CL | _CX | _CG ),\r | |
121 | /* 64 'd' */ ( _CL | _CX | _CG ),\r | |
122 | /* 65 'e' */ ( _CL | _CX | _CG ),\r | |
123 | /* 66 'f' */ ( _CL | _CX | _CG ),\r | |
124 | /* 67 'g' */ ( _CL | _CG ),\r | |
125 | /* 68 'h' */ ( _CL | _CG ),\r | |
126 | /* 69 'i' */ ( _CL | _CG ),\r | |
127 | /* 6A 'j' */ ( _CL | _CG ),\r | |
128 | /* 6B 'k' */ ( _CL | _CG ),\r | |
129 | /* 6C 'l' */ ( _CL | _CG ),\r | |
130 | /* 6D 'm' */ ( _CL | _CG ),\r | |
131 | /* 6E 'n' */ ( _CL | _CG ),\r | |
132 | /* 6F 'o' */ ( _CL | _CG ),\r | |
133 | /* 70 'p' */ ( _CL | _CG ),\r | |
134 | /* 71 'q' */ ( _CL | _CG ),\r | |
135 | /* 72 'r' */ ( _CL | _CG ),\r | |
136 | /* 73 's' */ ( _CL | _CG ),\r | |
137 | /* 74 't' */ ( _CL | _CG ),\r | |
138 | /* 75 'u' */ ( _CL | _CG ),\r | |
139 | /* 76 'v' */ ( _CL | _CG ),\r | |
140 | /* 77 'w' */ ( _CL | _CG ),\r | |
141 | /* 78 'x' */ ( _CL | _CG ),\r | |
142 | /* 79 'y' */ ( _CL | _CG ),\r | |
143 | /* 7A 'z' */ ( _CL | _CG ),\r | |
144 | /* 7B '{' */ ( _CP | _CG ),\r | |
145 | /* 7C '|' */ ( _CP | _CG ),\r | |
146 | /* 7D '}' */ ( _CP | _CG ),\r | |
147 | /* 7E '~' */ ( _CP | _CG ),\r | |
148 | /* 7F DEL */ ( _CC )\r | |
149 | };\r | |
150 | \r | |
681cc25c | 151 | /// ASCII-7 Upper case to Lower case character conversion table\r |
2aa62f2b | 152 | const UINT8 _C_ToLowerTable[128] = {\r |
153 | /* 00 NUL */ 0x00, /* 01 SOH */ 0x01,\r | |
154 | /* 02 STX */ 0x02, /* 03 ETX */ 0x03,\r | |
155 | /* 04 EOT */ 0x04, /* 05 ENQ */ 0x05,\r | |
156 | /* 06 ACK */ 0x06, /* 07 BEL */ 0x07,\r | |
157 | /* 08 BS */ 0x08, /* 09 TAB */ 0x09,\r | |
158 | /* 0A LF */ 0x0A, /* 0B VT */ 0x0B,\r | |
159 | /* 0C FF */ 0x0C, /* 0D CR */ 0x0D,\r | |
160 | /* 0E SO */ 0x0E, /* 0F SI */ 0x0F,\r | |
161 | /* 10 DLE */ 0x10, /* 11 DC1 */ 0x11,\r | |
162 | /* 12 DC2 */ 0x12, /* 13 DC3 */ 0x13,\r | |
163 | /* 14 DC4 */ 0x14, /* 15 NAK */ 0x15,\r | |
164 | /* 16 SYN */ 0x16, /* 17 ETB */ 0x17,\r | |
165 | /* 18 CAN */ 0x18, /* 19 EM */ 0x19,\r | |
166 | /* 1A SUB */ 0x1A, /* 1B ESC */ 0x1B,\r | |
167 | /* 1C FS */ 0x1C, /* 1D GS */ 0x1D,\r | |
168 | /* 1E RS */ 0x1E, /* 1F US */ 0x1F,\r | |
169 | /* 20 ' ' */ 0x20, /* 21 '!' */ 0x21,\r | |
170 | /* 22 '"' */ 0x22, /* 23 '#' */ 0x23,\r | |
171 | /* 24 '$' */ 0x24, /* 25 '%' */ 0x25,\r | |
172 | /* 26 '&' */ 0x26, /* 27 '\''*/ 0x27,\r | |
173 | /* 28 '(' */ 0x28, /* 29 ')' */ 0x29,\r | |
174 | /* 2A '*' */ 0x2A, /* 2B '+' */ 0x2B,\r | |
175 | /* 2C ',' */ 0x2C, /* 2D '-' */ 0x2D,\r | |
176 | /* 2E '.' */ 0x2E, /* 2F '/' */ 0x2F,\r | |
177 | /* 30 '0' */ 0x30, /* 31 '1' */ 0x31,\r | |
178 | /* 32 '2' */ 0x32, /* 33 '3' */ 0x33,\r | |
179 | /* 34 '4' */ 0x34, /* 35 '5' */ 0x35,\r | |
180 | /* 36 '6' */ 0x36, /* 37 '7' */ 0x37,\r | |
181 | /* 38 '8' */ 0x38, /* 39 '9' */ 0x39,\r | |
182 | /* 3A ':' */ 0x3A, /* 3B ';' */ 0x3B,\r | |
183 | /* 3C '<' */ 0x3C, /* 3D '=' */ 0x3D,\r | |
184 | /* 3E '>' */ 0x3E, /* 3F '?' */ 0x3F,\r | |
185 | /* 40 '@' */ 0x40, /* 41 'A' */ 0x61,\r | |
186 | /* 42 'B' */ 0x62, /* 43 'C' */ 0x63,\r | |
187 | /* 44 'D' */ 0x64, /* 45 'E' */ 0x65,\r | |
188 | /* 46 'F' */ 0x66, /* 47 'G' */ 0x67,\r | |
189 | /* 48 'H' */ 0x68, /* 49 'I' */ 0x69,\r | |
190 | /* 4A 'J' */ 0x6A, /* 4B 'K' */ 0x6B,\r | |
191 | /* 4C 'L' */ 0x6C, /* 4D 'M' */ 0x6D,\r | |
192 | /* 4E 'N' */ 0x6E, /* 4F 'O' */ 0x6F,\r | |
193 | /* 50 'P' */ 0x70, /* 51 'Q' */ 0x71,\r | |
194 | /* 52 'R' */ 0x72, /* 53 'S' */ 0x73,\r | |
195 | /* 54 'T' */ 0x74, /* 55 'U' */ 0x75,\r | |
196 | /* 56 'V' */ 0x76, /* 57 'W' */ 0x77,\r | |
197 | /* 58 'X' */ 0x78, /* 59 'Y' */ 0x79,\r | |
198 | /* 5A 'Z' */ 0x7A, /* 5B '[' */ 0x5B,\r | |
199 | /* 5C '\' */ 0x5C, /* 5D ']' */ 0x5D,\r | |
200 | /* 5E '^' */ 0x5E, /* 5F '_' */ 0x5F,\r | |
201 | /* 60 '`' */ 0x60, /* 61 'a' */ 0x61,\r | |
202 | /* 62 'b' */ 0x62, /* 63 'c' */ 0x63,\r | |
203 | /* 64 'd' */ 0x64, /* 65 'e' */ 0x65,\r | |
204 | /* 66 'f' */ 0x66, /* 67 'g' */ 0x67,\r | |
205 | /* 68 'h' */ 0x68, /* 69 'i' */ 0x69,\r | |
206 | /* 6A 'j' */ 0x6A, /* 6B 'k' */ 0x6B,\r | |
207 | /* 6C 'l' */ 0x6C, /* 6D 'm' */ 0x6D,\r | |
208 | /* 6E 'n' */ 0x6E, /* 6F 'o' */ 0x6F,\r | |
209 | /* 70 'p' */ 0x70, /* 71 'q' */ 0x71,\r | |
210 | /* 72 'r' */ 0x72, /* 73 's' */ 0x73,\r | |
211 | /* 74 't' */ 0x74, /* 75 'u' */ 0x75,\r | |
212 | /* 76 'v' */ 0x76, /* 77 'w' */ 0x77,\r | |
213 | /* 78 'x' */ 0x78, /* 79 'y' */ 0x79,\r | |
214 | /* 7A 'z' */ 0x7A, /* 7B '{' */ 0x7B,\r | |
215 | /* 7C '|' */ 0x7C, /* 7D '}' */ 0x7D,\r | |
216 | /* 7E '~' */ 0x7E, /* 7F DEL */ 0x7F\r | |
217 | };\r | |
218 | \r | |
681cc25c | 219 | /// ASCII-7 Lower case to Upper case character conversion table\r |
2aa62f2b | 220 | const UINT8 _C_ToUpperTable[128] = {\r |
221 | /* 00 NUL */ 0x00, /* 01 SOH */ 0x01,\r | |
222 | /* 02 STX */ 0x02, /* 03 ETX */ 0x03,\r | |
223 | /* 04 EOT */ 0x04, /* 05 ENQ */ 0x05,\r | |
224 | /* 06 ACK */ 0x06, /* 07 BEL */ 0x07,\r | |
225 | /* 08 BS */ 0x08, /* 09 TAB */ 0x09,\r | |
226 | /* 0A LF */ 0x0A, /* 0B VT */ 0x0B,\r | |
227 | /* 0C FF */ 0x0C, /* 0D CR */ 0x0D,\r | |
228 | /* 0E SO */ 0x0E, /* 0F SI */ 0x0F,\r | |
229 | /* 10 DLE */ 0x10, /* 11 DC1 */ 0x11,\r | |
230 | /* 12 DC2 */ 0x12, /* 13 DC3 */ 0x13,\r | |
231 | /* 14 DC4 */ 0x14, /* 15 NAK */ 0x15,\r | |
232 | /* 16 SYN */ 0x16, /* 17 ETB */ 0x17,\r | |
233 | /* 18 CAN */ 0x18, /* 19 EM */ 0x19,\r | |
234 | /* 1A SUB */ 0x1A, /* 1B ESC */ 0x1B,\r | |
235 | /* 1C FS */ 0x1C, /* 1D GS */ 0x1D,\r | |
236 | /* 1E RS */ 0x1E, /* 1F US */ 0x1F,\r | |
237 | /* 20 ' ' */ 0x20, /* 21 '!' */ 0x21,\r | |
238 | /* 22 '"' */ 0x22, /* 23 '#' */ 0x23,\r | |
239 | /* 24 '$' */ 0x24, /* 25 '%' */ 0x25,\r | |
240 | /* 26 '&' */ 0x26, /* 27 '\''*/ 0x27,\r | |
241 | /* 28 '(' */ 0x28, /* 29 ')' */ 0x29,\r | |
242 | /* 2A '*' */ 0x2A, /* 2B '+' */ 0x2B,\r | |
243 | /* 2C ',' */ 0x2C, /* 2D '-' */ 0x2D,\r | |
244 | /* 2E '.' */ 0x2E, /* 2F '/' */ 0x2F,\r | |
245 | /* 30 '0' */ 0x30, /* 31 '1' */ 0x31,\r | |
246 | /* 32 '2' */ 0x32, /* 33 '3' */ 0x33,\r | |
247 | /* 34 '4' */ 0x34, /* 35 '5' */ 0x35,\r | |
248 | /* 36 '6' */ 0x36, /* 37 '7' */ 0x37,\r | |
249 | /* 38 '8' */ 0x38, /* 39 '9' */ 0x39,\r | |
250 | /* 3A ':' */ 0x3A, /* 3B ';' */ 0x3B,\r | |
251 | /* 3C '<' */ 0x3C, /* 3D '=' */ 0x3D,\r | |
252 | /* 3E '>' */ 0x3E, /* 3F '?' */ 0x3F,\r | |
253 | /* 40 '@' */ 0x40, /* 41 'A' */ 0x41,\r | |
254 | /* 42 'B' */ 0x42, /* 43 'C' */ 0x43,\r | |
255 | /* 44 'D' */ 0x44, /* 45 'E' */ 0x45,\r | |
256 | /* 46 'F' */ 0x46, /* 47 'G' */ 0x47,\r | |
257 | /* 48 'H' */ 0x48, /* 49 'I' */ 0x49,\r | |
258 | /* 4A 'J' */ 0x4A, /* 4B 'K' */ 0x4B,\r | |
259 | /* 4C 'L' */ 0x4C, /* 4D 'M' */ 0x4D,\r | |
260 | /* 4E 'N' */ 0x4E, /* 4F 'O' */ 0x4F,\r | |
261 | /* 50 'P' */ 0x50, /* 51 'Q' */ 0x51,\r | |
262 | /* 52 'R' */ 0x52, /* 53 'S' */ 0x53,\r | |
263 | /* 54 'T' */ 0x54, /* 55 'U' */ 0x55,\r | |
264 | /* 56 'V' */ 0x56, /* 57 'W' */ 0x57,\r | |
265 | /* 58 'X' */ 0x58, /* 59 'Y' */ 0x59,\r | |
266 | /* 5A 'Z' */ 0x5A, /* 5B '[' */ 0x5B,\r | |
267 | /* 5C '\' */ 0x5C, /* 5D ']' */ 0x5D,\r | |
268 | /* 5E '^' */ 0x5E, /* 5F '_' */ 0x5F,\r | |
269 | /* 60 '`' */ 0x60, /* 61 'a' */ 0x41,\r | |
270 | /* 62 'b' */ 0x42, /* 63 'c' */ 0x43,\r | |
271 | /* 64 'd' */ 0x44, /* 65 'e' */ 0x45,\r | |
272 | /* 66 'f' */ 0x46, /* 67 'g' */ 0x47,\r | |
273 | /* 68 'h' */ 0x48, /* 69 'i' */ 0x49,\r | |
274 | /* 6A 'j' */ 0x4A, /* 6B 'k' */ 0x4B,\r | |
275 | /* 6C 'l' */ 0x4C, /* 6D 'm' */ 0x4D,\r | |
276 | /* 6E 'n' */ 0x4E, /* 6F 'o' */ 0x4F,\r | |
277 | /* 70 'p' */ 0x50, /* 71 'q' */ 0x51,\r | |
278 | /* 72 'r' */ 0x52, /* 73 's' */ 0x53,\r | |
279 | /* 74 't' */ 0x54, /* 75 'u' */ 0x55,\r | |
280 | /* 76 'v' */ 0x56, /* 77 'w' */ 0x57,\r | |
281 | /* 78 'x' */ 0x58, /* 79 'y' */ 0x59,\r | |
282 | /* 7A 'z' */ 0x5A, /* 7B '{' */ 0x7B,\r | |
283 | /* 7C '|' */ 0x7C, /* 7D '}' */ 0x7D,\r | |
284 | /* 7E '~' */ 0x7E, /* 7F DEL */ 0x7F\r | |
285 | };\r | |
286 | \r | |
681cc25c | 287 | /// Default character classification table is 7-bit ASCII\r |
2aa62f2b | 288 | const UINT16 *_cClass = _C_CharClassTable;\r |
289 | \r | |
681cc25c | 290 | /// Default upper to lower conversion table is 7-bit ASCII\r |
2aa62f2b | 291 | const UINT8 *_lConvT = _C_ToLowerTable;\r |
292 | \r | |
681cc25c | 293 | /// Default lower to upper conversion table is 7-bit ASCII\r |
2aa62f2b | 294 | const UINT8 *_uConvT = _C_ToUpperTable;\r |
295 | \r | |
681cc25c | 296 | /** Sets the character classification and case conversion tables for the 'C' locale.\r |
297 | \r | |
298 | A set of locale-independent pointers are used to point to the classification and\r | |
299 | conversion tables for the currently specified locale. This function is used to\r | |
300 | establish the tables for the 'C' locale.\r | |
301 | **/\r | |
2aa62f2b | 302 | void\r |
303 | __set_C_locale( void )\r | |
304 | {\r | |
305 | _cClass = _C_CharClassTable;\r | |
306 | _lConvT = _C_ToLowerTable;\r | |
307 | _uConvT = _C_ToUpperTable;\r | |
308 | }\r |