ReactOS 0.4.16-dev-822-gbcedb53
ctype.cpp
Go to the documentation of this file.
1//
2// ctype.cpp
3//
4// Copyright (c) Microsoft Corporation. All rights reserved.
5//
6// Definition of the character classification data used by the character
7// classification macros in <ctype.h>.
8//
9#include <corecrt_internal.h>
10#include <ctype.h>
11
12
13
14extern "C" unsigned short const* __cdecl __pwctype_func()
15{
16 return _pwctype;
17}
18
19extern "C" unsigned short const* __cdecl __pctype_func()
20{
21 // This is a leaf function and thus use of _LocaleUpdate is not required.
23 __crt_locale_data* locale_info{ptd->_locale_info};
24
25 __acrt_update_locale_info(ptd, &locale_info);
26 return locale_info->_public._locale_pctype;
27}
28
29
30
31// NOTE: The characteristics stored in this lookup table are not always
32// consistent with what is required by C. For example, GetStringTypeW returns
33// _DIGIT and _PUNCT for U+00B2 and U+00B3 (SUBSCRIPT TWO and SUBSCRIPT THREE),
34// but these categories are mutually exclusive in C. We have chosen to
35// implement this lookup table for consistency with GetStringTypeW, rather than
36// try to implement something completely different. We expect this is sufficient,
37// as C character classification does not map well to Unicode.
38extern "C" unsigned short const _wctype[]
39{
40 0, // -1 EOF
41 _CONTROL , // 00 (NUL)
42 _CONTROL , // 01 (SOH)
43 _CONTROL , // 02 (STX)
44 _CONTROL , // 03 (ETX)
45 _CONTROL , // 04 (EOT)
46 _CONTROL , // 05 (ENQ)
47 _CONTROL , // 06 (ACK)
48 _CONTROL , // 07 (BEL)
49 _CONTROL , // 08 (BS)
50 // \t is a blank character, but is not registered as _Blank on the table, because that will make it
51 //printable. Also Windows (via GetStringType()) considered all _BLANK characters to also be _PRINT characters,
52 //so does not have a way to specify blank, non-printable.
53 _SPACE | _CONTROL , // 09 (HT)
54 _SPACE | _CONTROL , // 0A (LF)
55 _SPACE | _CONTROL , // 0B (VT)
56 _SPACE | _CONTROL , // 0C (FF)
57 _SPACE | _CONTROL , // 0D (CR)
58 _CONTROL , // 0E (SI)
59 _CONTROL , // 0F (SO)
60 _CONTROL , // 10 (DLE)
61 _CONTROL , // 11 (DC1)
62 _CONTROL , // 12 (DC2)
63 _CONTROL , // 13 (DC3)
64 _CONTROL , // 14 (DC4)
65 _CONTROL , // 15 (NAK)
66 _CONTROL , // 16 (SYN)
67 _CONTROL , // 17 (ETB)
68 _CONTROL , // 18 (CAN)
69 _CONTROL , // 19 (EM)
70 _CONTROL , // 1A (SUB)
71 _CONTROL , // 1B (ESC)
72 _CONTROL , // 1C (FS)
73 _CONTROL , // 1D (GS)
74 _CONTROL , // 1E (RS)
75 _CONTROL , // 1F (US)
76 _SPACE | _BLANK , // 20 SPACE
77 _PUNCT , // 21 !
78 _PUNCT , // 22 "
79 _PUNCT , // 23 #
80 _PUNCT , // 24 $
81 _PUNCT , // 25 %
82 _PUNCT , // 26 &
83 _PUNCT , // 27 '
84 _PUNCT , // 28 (
85 _PUNCT , // 29 )
86 _PUNCT , // 2A *
87 _PUNCT , // 2B +
88 _PUNCT , // 2C ,
89 _PUNCT , // 2D -
90 _PUNCT , // 2E .
91 _PUNCT , // 2F /
92 _DIGIT | _HEX , // 30 0
93 _DIGIT | _HEX , // 31 1
94 _DIGIT | _HEX , // 32 2
95 _DIGIT | _HEX , // 33 3
96 _DIGIT | _HEX , // 34 4
97 _DIGIT | _HEX , // 35 5
98 _DIGIT | _HEX , // 36 6
99 _DIGIT | _HEX , // 37 7
100 _DIGIT | _HEX , // 38 8
101 _DIGIT | _HEX , // 39 9
102 _PUNCT , // 3A :
103 _PUNCT , // 3B ;
104 _PUNCT , // 3C <
105 _PUNCT , // 3D =
106 _PUNCT , // 3E >
107 _PUNCT , // 3F ?
108 _PUNCT , // 40 @
109 _UPPER | _HEX | C1_ALPHA , // 41 A
110 _UPPER | _HEX | C1_ALPHA , // 42 B
111 _UPPER | _HEX | C1_ALPHA , // 43 C
112 _UPPER | _HEX | C1_ALPHA , // 44 D
113 _UPPER | _HEX | C1_ALPHA , // 45 E
114 _UPPER | _HEX | C1_ALPHA , // 46 F
115 _UPPER | C1_ALPHA , // 47 G
116 _UPPER | C1_ALPHA , // 48 H
117 _UPPER | C1_ALPHA , // 49 I
118 _UPPER | C1_ALPHA , // 4A J
119 _UPPER | C1_ALPHA , // 4B K
120 _UPPER | C1_ALPHA , // 4C L
121 _UPPER | C1_ALPHA , // 4D M
122 _UPPER | C1_ALPHA , // 4E N
123 _UPPER | C1_ALPHA , // 4F O
124 _UPPER | C1_ALPHA , // 50 P
125 _UPPER | C1_ALPHA , // 51 Q
126 _UPPER | C1_ALPHA , // 52 R
127 _UPPER | C1_ALPHA , // 53 S
128 _UPPER | C1_ALPHA , // 54 T
129 _UPPER | C1_ALPHA , // 55 U
130 _UPPER | C1_ALPHA , // 56 V
131 _UPPER | C1_ALPHA , // 57 W
132 _UPPER | C1_ALPHA , // 58 X
133 _UPPER | C1_ALPHA , // 59 Y
134 _UPPER | C1_ALPHA , // 5A Z
135 _PUNCT , // 5B [
136 _PUNCT , // 5C '\'
137 _PUNCT , // 5D ]
138 _PUNCT , // 5E ^
139 _PUNCT , // 5F _
140 _PUNCT , // 60 `
141 _LOWER | _HEX | C1_ALPHA , // 61 a
142 _LOWER | _HEX | C1_ALPHA , // 62 b
143 _LOWER | _HEX | C1_ALPHA , // 63 c
144 _LOWER | _HEX | C1_ALPHA , // 64 d
145 _LOWER | _HEX | C1_ALPHA , // 65 e
146 _LOWER | _HEX | C1_ALPHA , // 66 f
147 _LOWER | C1_ALPHA , // 67 g
148 _LOWER | C1_ALPHA , // 68 h
149 _LOWER | C1_ALPHA , // 69 i
150 _LOWER | C1_ALPHA , // 6A j
151 _LOWER | C1_ALPHA , // 6B k
152 _LOWER | C1_ALPHA , // 6C l
153 _LOWER | C1_ALPHA , // 6D m
154 _LOWER | C1_ALPHA , // 6E n
155 _LOWER | C1_ALPHA , // 6F o
156 _LOWER | C1_ALPHA , // 70 p
157 _LOWER | C1_ALPHA , // 71 q
158 _LOWER | C1_ALPHA , // 72 r
159 _LOWER | C1_ALPHA , // 73 s
160 _LOWER | C1_ALPHA , // 74 t
161 _LOWER | C1_ALPHA , // 75 u
162 _LOWER | C1_ALPHA , // 76 v
163 _LOWER | C1_ALPHA , // 77 w
164 _LOWER | C1_ALPHA , // 78 x
165 _LOWER | C1_ALPHA , // 79 y
166 _LOWER | C1_ALPHA , // 7A z
167 _PUNCT , // 7B {
168 _PUNCT , // 7C |
169 _PUNCT , // 7D }
170 _PUNCT , // 7E ~
171 _CONTROL , // 7F (DEL)
172 _CONTROL , // 80 (XXX)
173 _CONTROL , // 81 (XXX)
174 _CONTROL , // 82 (BPH / BREAK PERMITTED HERE)
175 _CONTROL , // 83 (NBH / NO BREAK HERE)
176 _CONTROL , // 84 (IND / formerly known as INDEX)
177 _SPACE | _CONTROL , // 85 (NEL / NEXT LINE)
178 _CONTROL , // 86 (SSA / START OF SELCETED AREA)
179 _CONTROL , // 87 (ESA / END OF SELECTED AREA)
180 _CONTROL , // 88 (HTS / CHARACTER TABULATION SET)
181 _CONTROL , // 89 (HTJ / CHARACTER TABULATION WITH JUSTIFICATION)
182 _CONTROL , // 8A (VTS / LINE TABULATION SET)
183 _CONTROL , // 8B (PLD / PARTIAL LINE FORWARD)
184 _CONTROL , // 8C (PLU / PARTIAL LINE BACKWARD)
185 _CONTROL , // 8D (RI / REVERSE LINE FEED)
186 _CONTROL , // 8E (SS2 / SINGLE SHIFT TWO)
187 _CONTROL , // 8F (SS3 / SINGLE SHIFT THREE)
188 _CONTROL , // 90 (DCS / DEVICE CONTROL STRING)
189 _CONTROL , // 91 (PU1 / PRIVATE USE ONE)
190 _CONTROL , // 92 (PU2 / PRIVATE USE TWO)
191 _CONTROL , // 93 (STS / SET TRANSMIT STATE)
192 _CONTROL , // 94 (CCH / CANCEL CHARACTER)
193 _CONTROL , // 95 (MW / MESSAGE WAITING)
194 _CONTROL , // 96 (SPA / START OF GUARDED AREA)
195 _CONTROL , // 97 (EPA / END OF GUARDED AREA)
196 _CONTROL , // 98 (SOS / START OF STRING)
197 _CONTROL , // 99 (XXX)
198 _CONTROL , // 9A (SCI / SINGLE CHARACTER INTRODUCER)
199 _CONTROL , // 9B (CSI / CONTROL SEQUENCE INTRODUCER)
200 _CONTROL , // 9C (ST / STRING TERMINATOR)
201 _CONTROL , // 9D (OSC / OPERATING SYSTEM COMMAND)
202 _CONTROL , // 9E (PM / PRIVACY MESSAGE)
203 _CONTROL , // 9F (APC / APPLICATION PROGRAM COMMAND)
204 _SPACE , // A0 (NBSP / NO-BREAK SPACE)
205 _PUNCT , // A1 (INVERTED EXCLAMATION MARK)
206 _PUNCT , // A2 (CENT SIGN)
207 _PUNCT , // A3 (POUND SIGN)
208 _PUNCT , // A4 (CURRENCY SIGN)
209 _PUNCT , // A5 (YEN SIGN)
210 _PUNCT , // A6 (BROKEN BAR)
211 _PUNCT , // A7 (SECTION SIGN)
212 _PUNCT , // A8 (DIAERESIS)
213 _PUNCT , // A9 (COPYRIGHT SIGN)
214 _LOWER | _PUNCT | C1_ALPHA, // AA (FEMININE ORDINAL INDICATOR)
215 _PUNCT , // AB (LEFT-POINTING DOUBLE ANGLE QUOTATION MARK)
216 _PUNCT , // AC (NOT SIGN)
217 _PUNCT | _CONTROL , // AD (SOFT HYPHEN)
218 _PUNCT , // AE (REGISTERED SIGN)
219 _PUNCT , // AF (MACRON)
220 _PUNCT , // B0 (DEGREE SIGN)
221 _PUNCT , // B1 (PLUS-MINUS SIGN)
222 _DIGIT | _PUNCT , // B2 (SUPERSCRIPT TWO)
223 _DIGIT | _PUNCT , // B3 (SUPERSCRIPT THREE)
224 _PUNCT , // B4 (ACUTE ACCENT)
225 _LOWER | _PUNCT | C1_ALPHA, // B5 (MICRO SIGN)
226 _PUNCT , // B6 (PILCROW SIGN)
227 _PUNCT , // B7 (MIDDLE DOT)
228 _PUNCT , // B8 (CEDILLA)
229 _DIGIT | _PUNCT , // B9 (SUPERSCRIPT ONE)
230 _LOWER | _PUNCT | C1_ALPHA, // BA (MASCULINE ORDINAL INDICATOR)
231 _PUNCT , // BB (RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK)
232 _PUNCT , // BC (VULGAR FRACTION ONE QUARTER)
233 _PUNCT , // BD (VULGAR FRACTION ONE HALF)
234 _PUNCT , // BE (VULGAR FRACTION THREE QUARTERS)
235 _PUNCT , // BF (INVERTED QUESTION MARK)
236 _UPPER | C1_ALPHA , // C0 (LATIN CAPTIAL LETTER A WITH GRAVE)
237 _UPPER | C1_ALPHA , // C1 (LATIN CAPITAL LETTER A WITH ACUTE)
238 _UPPER | C1_ALPHA , // C2 (LATIN CAPITAL LETTER A WITH CIRCUMFLEX)
239 _UPPER | C1_ALPHA , // C3 (LATIN CAPITAL LETTER A WITH TILDE)
240 _UPPER | C1_ALPHA , // C4 (LATIN CAPITAL LETTER A WITH DIAERESIS)
241 _UPPER | C1_ALPHA , // C5 (LATIN CAPITAL LETTER A WITH RING ABOVE)
242 _UPPER | C1_ALPHA , // C6 (LATIN CAPITAL LETTER AE)
243 _UPPER | C1_ALPHA , // C7 (LATIN CAPITAL LETTER C WITH CEDILLA)
244 _UPPER | C1_ALPHA , // C8 (LATIN CAPITAL LETTER E WITH GRAVE)
245 _UPPER | C1_ALPHA , // C9 (LATIN CAPITAL LETTER E WITH ACUTE)
246 _UPPER | C1_ALPHA , // CA (LATIN CAPITAL LETTER E WITH CIRCUMFLEX)
247 _UPPER | C1_ALPHA , // CB (LATIN CAPITAL LETTER E WITH DIAERESIS)
248 _UPPER | C1_ALPHA , // CC (LATIN CAPITAL LETTER I WITH GRAVE)
249 _UPPER | C1_ALPHA , // CD (LATIN CAPITAL LETTER I WITH ACUTE)
250 _UPPER | C1_ALPHA , // CE (LATIN CAPITAL LETTER I WITH CIRCUMFLEX)
251 _UPPER | C1_ALPHA , // CF (LATIN CAPITAL LETTER I WITH DIAERESIS
252 _UPPER | C1_ALPHA , // D0 (LATIN CAPITAL LETTER ETH)
253 _UPPER | C1_ALPHA , // D1 (LATIN CAPITAL LETTER N WITH TILDE)
254 _UPPER | C1_ALPHA , // D2 (LATIN CAPITAL LETTER O WITH GRAVE)
255 _UPPER | C1_ALPHA , // D3 (LATIN CAPITAL LETTER O WITH ACUTE)
256 _UPPER | C1_ALPHA , // D4 (LATIN CAPITAL LETTER O WITH CIRCUMFLEX)
257 _UPPER | C1_ALPHA , // D5 (LATIN CAPITAL LETTER O WITH TILDE)
258 _UPPER | C1_ALPHA , // D6 (LATIN CAPITAL LETTER O WITH DIAERESIS)
259 _PUNCT , // D7 (MULTIPLICATION SIGN)
260 _UPPER | C1_ALPHA , // D8 (LATIN CAPITAL LETTER O WITH STROKE)
261 _UPPER | C1_ALPHA , // D9 (LATIN CAPITAL LETTER U WITH GRAVE)
262 _UPPER | C1_ALPHA , // DA (LATIN CAPITAL LETTER U WITH ACUTE)
263 _UPPER | C1_ALPHA , // DB (LATIN CAPITAL LETTER U WITH CIRCUMFLEX)
264 _UPPER | C1_ALPHA , // DC (LATIN CAPITAL LETTER U WITH DIAERESIS)
265 _UPPER | C1_ALPHA , // DD (LATIN CAPITAL LETTER Y WITH ACUTE)
266 _UPPER | C1_ALPHA , // DE (LATIN CAPITAL LETTER THORN)
267 _LOWER | C1_ALPHA , // DF (LATIN SMALL LETTER SHARP S)
268 _LOWER | C1_ALPHA , // E0 (LATIN SMALL LETTER A WITH GRAVE)
269 _LOWER | C1_ALPHA , // E1 (LATIN SMALL LETTER A WITH ACUTE)
270 _LOWER | C1_ALPHA , // E2 (LATIN SMALL LETTER A WITH CIRCUMFLEX)
271 _LOWER | C1_ALPHA , // E3 (LATIN SMALL LETTER A WITH TILDE)
272 _LOWER | C1_ALPHA , // E4 (LATIN SMALL LETTER A WITH DIAERESIS)
273 _LOWER | C1_ALPHA , // E5 (LATIN SMALL LETTER A WITH RING ABOVE)
274 _LOWER | C1_ALPHA , // E6 (LATIN SMALL LETTER AE)
275 _LOWER | C1_ALPHA , // E7 (LATIN SMALL LETTER C WITH CEDILLA)
276 _LOWER | C1_ALPHA , // E8 (LATIN SMALL LETTER E WITH GRAVE)
277 _LOWER | C1_ALPHA , // E9 (LATIN SMALL LETTER E WITH ACUTE)
278 _LOWER | C1_ALPHA , // EA (LATIN SMALL LETTER E WITH CIRCUMFLEX)
279 _LOWER | C1_ALPHA , // EB (LATIN SMALL LETTER E WITH DIAERESIS)
280 _LOWER | C1_ALPHA , // EC (LATIN SMALL LETTER I WITH GRAVE)
281 _LOWER | C1_ALPHA , // ED (LATIN SMALL LETTER I WITH ACUTE)
282 _LOWER | C1_ALPHA , // EE (LATIN SMALL LETTER I WITH CIRCUMFLEX)
283 _LOWER | C1_ALPHA , // EF (LATIN SMALL LETTER I WITH DIAERESIS)
284 _LOWER | C1_ALPHA , // F0 (LATIN SMALL LETTER ETH)
285 _LOWER | C1_ALPHA , // F1 (LATIN SMALL LETTER N WITH TILDE)
286 _LOWER | C1_ALPHA , // F2 (LATIN SMALL LETTER O WITH GRAVE)
287 _LOWER | C1_ALPHA , // F3 (LATIN SMALL LETTER O WITH ACUTE)
288 _LOWER | C1_ALPHA , // F4 (LATIN SMALL LETTER O WITH CIRCUMFLEX)
289 _LOWER | C1_ALPHA , // F5 (LATIN SMALL LETTER O WITH TILDE)
290 _LOWER | C1_ALPHA , // F6 (LATIN SMALL LETTER O WITH DIAERESIS)
291 _PUNCT , // F7 (DIVISION SIGN)
292 _LOWER | C1_ALPHA , // F8 (LATIN SMALL LETTER O WITH STROKE)
293 _LOWER | C1_ALPHA , // F9 (LATIN SMALL LETTER U WITH GRAVE)
294 _LOWER | C1_ALPHA , // FA (LATIN SMALL LETTER U WITH ACUTE)
295 _LOWER | C1_ALPHA , // FB (LATIN SMALL LETTER U WITH CIRCUMFLEX)
296 _LOWER | C1_ALPHA , // FC (LATIN SMALL LETTER U WITH DIAERESIS)
297 _LOWER | C1_ALPHA , // FD (LATIN SMALL LETTER Y WITH ACUTE)
298 _LOWER | C1_ALPHA , // FE (LATIN SMALL LETTER THORN)
299 _LOWER | C1_ALPHA , // FF (LATIN SMALL LETTER Y WITH DIAERESIS)
300 _UPPER | C1_ALPHA , //100 (LATIN CAPITAL LETTER A WITH MACRON)
301};
302
303extern "C" unsigned short const __newctype[384]
304{
305 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
306 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
307 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
308 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
309 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
310 0, 0, 0, 0, 0, 0, 0,
311 0, // -1 EOF
312 _CONTROL, // 00 (NUL)
313 _CONTROL, // 01 (SOH)
314 _CONTROL, // 02 (STX)
315 _CONTROL, // 03 (ETX)
316 _CONTROL, // 04 (EOT)
317 _CONTROL, // 05 (ENQ)
318 _CONTROL, // 06 (ACK)
319 _CONTROL, // 07 (BEL)
320 _CONTROL, // 08 (BS)
321 // \t is a blank character, but is not registered as _Blank on the table, because that will make it
322 //printable. Also Windows (via GetStringType()) considered all _BLANK characters to also be _PRINT characters,
323 //so does not have a way to specify blank, non-printable.
324 _SPACE+_CONTROL, // 09 (HT)
325 _SPACE+_CONTROL, // 0A (LF)
326 _SPACE+_CONTROL, // 0B (VT)
327 _SPACE+_CONTROL, // 0C (FF)
328 _SPACE+_CONTROL, // 0D (CR)
329 _CONTROL, // 0E (SI)
330 _CONTROL, // 0F (SO)
331 _CONTROL, // 10 (DLE)
332 _CONTROL, // 11 (DC1)
333 _CONTROL, // 12 (DC2)
334 _CONTROL, // 13 (DC3)
335 _CONTROL, // 14 (DC4)
336 _CONTROL, // 15 (NAK)
337 _CONTROL, // 16 (SYN)
338 _CONTROL, // 17 (ETB)
339 _CONTROL, // 18 (CAN)
340 _CONTROL, // 19 (EM)
341 _CONTROL, // 1A (SUB)
342 _CONTROL, // 1B (ESC)
343 _CONTROL, // 1C (FS)
344 _CONTROL, // 1D (GS)
345 _CONTROL, // 1E (RS)
346 _CONTROL, // 1F (US)
347 _SPACE+_BLANK, // 20 SPACE
348 _PUNCT, // 21 !
349 _PUNCT, // 22 "
350 _PUNCT, // 23 #
351 _PUNCT, // 24 $
352 _PUNCT, // 25 %
353 _PUNCT, // 26 &
354 _PUNCT, // 27 '
355 _PUNCT, // 28 (
356 _PUNCT, // 29 )
357 _PUNCT, // 2A *
358 _PUNCT, // 2B +
359 _PUNCT, // 2C ,
360 _PUNCT, // 2D -
361 _PUNCT, // 2E .
362 _PUNCT, // 2F /
363 _DIGIT+_HEX, // 30 0
364 _DIGIT+_HEX, // 31 1
365 _DIGIT+_HEX, // 32 2
366 _DIGIT+_HEX, // 33 3
367 _DIGIT+_HEX, // 34 4
368 _DIGIT+_HEX, // 35 5
369 _DIGIT+_HEX, // 36 6
370 _DIGIT+_HEX, // 37 7
371 _DIGIT+_HEX, // 38 8
372 _DIGIT+_HEX, // 39 9
373 _PUNCT, // 3A :
374 _PUNCT, // 3B ;
375 _PUNCT, // 3C <
376 _PUNCT, // 3D =
377 _PUNCT, // 3E >
378 _PUNCT, // 3F ?
379 _PUNCT, // 40 @
380 _UPPER+_HEX, // 41 A
381 _UPPER+_HEX, // 42 B
382 _UPPER+_HEX, // 43 C
383 _UPPER+_HEX, // 44 D
384 _UPPER+_HEX, // 45 E
385 _UPPER+_HEX, // 46 F
386 _UPPER, // 47 G
387 _UPPER, // 48 H
388 _UPPER, // 49 I
389 _UPPER, // 4A J
390 _UPPER, // 4B K
391 _UPPER, // 4C L
392 _UPPER, // 4D M
393 _UPPER, // 4E N
394 _UPPER, // 4F O
395 _UPPER, // 50 P
396 _UPPER, // 51 Q
397 _UPPER, // 52 R
398 _UPPER, // 53 S
399 _UPPER, // 54 T
400 _UPPER, // 55 U
401 _UPPER, // 56 V
402 _UPPER, // 57 W
403 _UPPER, // 58 X
404 _UPPER, // 59 Y
405 _UPPER, // 5A Z
406 _PUNCT, // 5B [
407 _PUNCT, // 5C \ backslash
408 _PUNCT, // 5D ]
409 _PUNCT, // 5E ^
410 _PUNCT, // 5F _
411 _PUNCT, // 60 `
412 _LOWER+_HEX, // 61 a
413 _LOWER+_HEX, // 62 b
414 _LOWER+_HEX, // 63 c
415 _LOWER+_HEX, // 64 d
416 _LOWER+_HEX, // 65 e
417 _LOWER+_HEX, // 66 f
418 _LOWER, // 67 g
419 _LOWER, // 68 h
420 _LOWER, // 69 i
421 _LOWER, // 6A j
422 _LOWER, // 6B k
423 _LOWER, // 6C l
424 _LOWER, // 6D m
425 _LOWER, // 6E n
426 _LOWER, // 6F o
427 _LOWER, // 70 p
428 _LOWER, // 71 q
429 _LOWER, // 72 r
430 _LOWER, // 73 s
431 _LOWER, // 74 t
432 _LOWER, // 75 u
433 _LOWER, // 76 v
434 _LOWER, // 77 w
435 _LOWER, // 78 x
436 _LOWER, // 79 y
437 _LOWER, // 7A z
438 _PUNCT, // 7B {
439 _PUNCT, // 7C |
440 _PUNCT, // 7D }
441 _PUNCT, // 7E ~
442 _CONTROL, // 7F (DEL)
443 // and the rest are 0...
444};
445
446extern "C" unsigned char const __newclmap[384]
447{
448 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f,
449 0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97, 0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, 0x9e, 0x9f,
450 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7, 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf,
451 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7, 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf,
452 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf,
453 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, 0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, 0xde, 0xdf,
454 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef,
455 0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, 0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, 0xfe, 0xff,
456 0x00, // 00 (NUL)
457 0x01, // 01 (SOH)
458 0x02, // 02 (STX)
459 0x03, // 03 (ETX)
460 0x04, // 04 (EOT)
461 0x05, // 05 (ENQ)
462 0x06, // 06 (ACK)
463 0x07, // 07 (BEL)
464 0x08, // 08 (BS)
465 0x09, // 09 (HT)
466 0x0A, // 0A (LF)
467 0x0B, // 0B (VT)
468 0x0C, // 0C (FF)
469 0x0D, // 0D (CR)
470 0x0E, // 0E (SI)
471 0x0F, // 0F (SO)
472 0x10, // 10 (DLE)
473 0x11, // 11 (DC1)
474 0x12, // 12 (DC2)
475 0x13, // 13 (DC3)
476 0x14, // 14 (DC4)
477 0x15, // 15 (NAK)
478 0x16, // 16 (SYN)
479 0x17, // 17 (ETB)
480 0x18, // 18 (CAN)
481 0x19, // 19 (EM)
482 0x1A, // 1A (SUB)
483 0x1B, // 1B (ESC)
484 0x1C, // 1C (FS)
485 0x1D, // 1D (GS)
486 0x1E, // 1E (RS)
487 0x1F, // 1F (US)
488 0x20, // 20 SPACE
489 0x21, // 21 !
490 0x22, // 22 "
491 0x23, // 23 #
492 0x24, // 24 $
493 0x25, // 25 %
494 0x26, // 26 &
495 0x27, // 27 '
496 0x28, // 28 (
497 0x29, // 29 )
498 0x2A, // 2A *
499 0x2B, // 2B +
500 0x2C, // 2C ,
501 0x2D, // 2D -
502 0x2E, // 2E .
503 0x2F, // 2F /
504 0x30, // 30 0
505 0x31, // 31 1
506 0x32, // 32 2
507 0x33, // 33 3
508 0x34, // 34 4
509 0x35, // 35 5
510 0x36, // 36 6
511 0x37, // 37 7
512 0x38, // 38 8
513 0x39, // 39 9
514 0x3A, // 3A :
515 0x3B, // 3B ;
516 0x3C, // 3C <
517 0x3D, // 3D =
518 0x3E, // 3E >
519 0x3F, // 3F ?
520 0x40, // 40 @
521 0x61, // 41 A
522 0x62, // 42 B
523 0x63, // 43 C
524 0x64, // 44 D
525 0x65, // 45 E
526 0x66, // 46 F
527 0x67, // 47 G
528 0x68, // 48 H
529 0x69, // 49 I
530 0x6A, // 4A J
531 0x6B, // 4B K
532 0x6C, // 4C L
533 0x6D, // 4D M
534 0x6E, // 4E N
535 0x6F, // 4F O
536 0x70, // 50 P
537 0x71, // 51 Q
538 0x72, // 52 R
539 0x73, // 53 S
540 0x74, // 54 T
541 0x75, // 55 U
542 0x76, // 56 V
543 0x77, // 57 W
544 0x78, // 58 X
545 0x79, // 59 Y
546 0x7A, // 5A Z
547 0x5B, // 5B [
548 0x5C, // 5C '\'
549 0x5D, // 5D ]
550 0x5E, // 5E ^
551 0x5F, // 5F _
552 0x60, // 60 `
553 0x61, // 61 a
554 0x62, // 62 b
555 0x63, // 63 c
556 0x64, // 64 d
557 0x65, // 65 e
558 0x66, // 66 f
559 0x67, // 67 g
560 0x68, // 68 h
561 0x69, // 69 i
562 0x6A, // 6A j
563 0x6B, // 6B k
564 0x6C, // 6C l
565 0x6D, // 6D m
566 0x6E, // 6E n
567 0x6F, // 6F o
568 0x70, // 70 p
569 0x71, // 71 q
570 0x72, // 72 r
571 0x73, // 73 s
572 0x74, // 74 t
573 0x75, // 75 u
574 0x76, // 76 v
575 0x77, // 77 w
576 0x78, // 78 x
577 0x79, // 79 y
578 0x7A, // 7A z
579 0x7B, // 7B {
580 0x7C, // 7C |
581 0x7D, // 7D }
582 0x7E, // 7E ~
583 0x7F, // 7F (DEL)
584 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f,
585 0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97, 0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, 0x9e, 0x9f,
586 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7, 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf,
587 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7, 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf,
588 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf,
589 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, 0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, 0xde, 0xdf,
590 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef,
591 0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, 0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, 0xfe, 0xff
592};
593
594extern "C" unsigned char const __newcumap[384]
595{
596 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f,
597 0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97, 0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, 0x9e, 0x9f,
598 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7, 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf,
599 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7, 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf,
600 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf,
601 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, 0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, 0xde, 0xdf,
602 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef,
603 0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, 0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, 0xfe, 0xff,
604 0x00, // 00 (NUL)
605 0x01, // 01 (SOH)
606 0x02, // 02 (STX)
607 0x03, // 03 (ETX)
608 0x04, // 04 (EOT)
609 0x05, // 05 (ENQ)
610 0x06, // 06 (ACK)
611 0x07, // 07 (BEL)
612 0x08, // 08 (BS)
613 0x09, // 09 (HT)
614 0x0A, // 0A (LF)
615 0x0B, // 0B (VT)
616 0x0C, // 0C (FF)
617 0x0D, // 0D (CR)
618 0x0E, // 0E (SI)
619 0x0F, // 0F (SO)
620 0x10, // 10 (DLE)
621 0x11, // 11 (DC1)
622 0x12, // 12 (DC2)
623 0x13, // 13 (DC3)
624 0x14, // 14 (DC4)
625 0x15, // 15 (NAK)
626 0x16, // 16 (SYN)
627 0x17, // 17 (ETB)
628 0x18, // 18 (CAN)
629 0x19, // 19 (EM)
630 0x1A, // 1A (SUB)
631 0x1B, // 1B (ESC)
632 0x1C, // 1C (FS)
633 0x1D, // 1D (GS)
634 0x1E, // 1E (RS)
635 0x1F, // 1F (US)
636 0x20, // 20 SPACE
637 0x21, // 21 !
638 0x22, // 22 "
639 0x23, // 23 #
640 0x24, // 24 $
641 0x25, // 25 %
642 0x26, // 26 &
643 0x27, // 27 '
644 0x28, // 28 (
645 0x29, // 29 )
646 0x2A, // 2A *
647 0x2B, // 2B +
648 0x2C, // 2C ,
649 0x2D, // 2D -
650 0x2E, // 2E .
651 0x2F, // 2F /
652 0x30, // 30 0
653 0x31, // 31 1
654 0x32, // 32 2
655 0x33, // 33 3
656 0x34, // 34 4
657 0x35, // 35 5
658 0x36, // 36 6
659 0x37, // 37 7
660 0x38, // 38 8
661 0x39, // 39 9
662 0x3A, // 3A :
663 0x3B, // 3B ;
664 0x3C, // 3C <
665 0x3D, // 3D =
666 0x3E, // 3E >
667 0x3F, // 3F ?
668 0x40, // 40 @
669 0x41, // 41 A
670 0x42, // 42 B
671 0x43, // 43 C
672 0x44, // 44 D
673 0x45, // 45 E
674 0x46, // 46 F
675 0x47, // 47 G
676 0x48, // 48 H
677 0x49, // 49 I
678 0x4A, // 4A J
679 0x4B, // 4B K
680 0x4C, // 4C L
681 0x4D, // 4D M
682 0x4E, // 4E N
683 0x4F, // 4F O
684 0x50, // 50 P
685 0x51, // 51 Q
686 0x52, // 52 R
687 0x53, // 53 S
688 0x54, // 54 T
689 0x55, // 55 U
690 0x56, // 56 V
691 0x57, // 57 W
692 0x58, // 58 X
693 0x59, // 59 Y
694 0x5A, // 5A Z
695 0x5B, // 5B [
696 0x5C, // 5C '\'
697 0x5D, // 5D ]
698 0x5E, // 5E ^
699 0x5F, // 5F _
700 0x60, // 60 `
701 0x41, // 61 a
702 0x42, // 62 b
703 0x43, // 63 c
704 0x44, // 64 d
705 0x45, // 65 e
706 0x46, // 66 f
707 0x47, // 67 g
708 0x48, // 68 h
709 0x49, // 69 i
710 0x4A, // 6A j
711 0x4B, // 6B k
712 0x4C, // 6C l
713 0x4D, // 6D m
714 0x4E, // 6E n
715 0x4F, // 6F o
716 0x50, // 70 p
717 0x51, // 71 q
718 0x52, // 72 r
719 0x53, // 73 s
720 0x54, // 74 t
721 0x55, // 75 u
722 0x56, // 76 v
723 0x57, // 77 w
724 0x58, // 78 x
725 0x59, // 79 y
726 0x5A, // 7A z
727 0x7B, // 7B {
728 0x7C, // 7C |
729 0x7D, // 7D }
730 0x7E, // 7E ~
731 0x7F, // 7F (DEL)
732 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f,
733 0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97, 0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, 0x9e, 0x9f,
734 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7, 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf,
735 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7, 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf,
736 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf,
737 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, 0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, 0xde, 0xdf,
738 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef,
739 0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, 0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, 0xfe, 0xff
740};
741
742
743
744extern "C" { unsigned short const* _pctype {__newctype + 128}; } // Pointer to table for char's
745extern "C" { unsigned short const* _pwctype{_wctype + 1 }; } // Pointer to table for wchar_t's
#define __cdecl
Definition: accygwin.h:79
__acrt_ptd *__cdecl __acrt_getptd(void)
_In_ size_t const _In_ int _In_ bool const _In_ unsigned const _In_ __acrt_rounding_mode const _Inout_ __crt_cached_ptd_host & ptd
Definition: cvt.cpp:355
#define C1_ALPHA
Definition: unicode.h:39
#define _BLANK
Definition: ctype.h:72
#define _PUNCT
Definition: ctype.h:70
#define _CONTROL
Definition: ctype.h:71
#define _LOWER
Definition: ctype.h:66
#define _SPACE
Definition: ctype.h:68
#define _UPPER
Definition: ctype.h:65
#define _HEX
Definition: ctype.h:73
#define _DIGIT
Definition: ctype.h:67
void __acrt_update_locale_info(__acrt_ptd *const ptd, __crt_locale_data **const locale_info)
unsigned char const __newclmap[384]
Definition: ctype.cpp:447
unsigned short const * _pctype
Definition: ctype.cpp:744
unsigned short const *__cdecl __pctype_func()
Definition: ctype.cpp:19
unsigned char const __newcumap[384]
Definition: ctype.cpp:595
unsigned short const *__cdecl __pwctype_func()
Definition: ctype.cpp:14
unsigned short const _wctype[]
Definition: ctype.cpp:39
unsigned short const * _pwctype
Definition: ctype.cpp:745
unsigned short const __newctype[384]
Definition: ctype.cpp:304