// // ctype.cpp // // Copyright (c) Microsoft Corporation. All rights reserved. // // Definition of the character classification data used by the character // classification macros in . // #include #include extern "C" unsigned short const* __cdecl __pwctype_func() { return _pwctype; } extern "C" unsigned short const* __cdecl __pctype_func() { // This is a leaf function and thus use of _LocaleUpdate is not required. __acrt_ptd* const ptd{__acrt_getptd()}; __crt_locale_data* locale_info{ptd->_locale_info}; __acrt_update_locale_info(ptd, &locale_info); return locale_info->_public._locale_pctype; } // NOTE: The characteristics stored in this lookup table are not always // consistent with what is required by C. For example, GetStringTypeW returns // _DIGIT and _PUNCT for U+00B2 and U+00B3 (SUBSCRIPT TWO and SUBSCRIPT THREE), // but these categories are mutually exclusive in C. We have chosen to // implement this lookup table for consistency with GetStringTypeW, rather than // try to implement something completely different. We expect this is sufficient, // as C character classification does not map well to Unicode. extern "C" extern unsigned short const _wctype[] { 0, // -1 EOF _CONTROL , // 00 (NUL) _CONTROL , // 01 (SOH) _CONTROL , // 02 (STX) _CONTROL , // 03 (ETX) _CONTROL , // 04 (EOT) _CONTROL , // 05 (ENQ) _CONTROL , // 06 (ACK) _CONTROL , // 07 (BEL) _CONTROL , // 08 (BS) // \t is a blank character, but is not registered as _Blank on the table, because that will make it //printable. Also Windows (via GetStringType()) considered all _BLANK characters to also be _PRINT characters, //so does not have a way to specify blank, non-printable. _SPACE | _CONTROL , // 09 (HT) _SPACE | _CONTROL , // 0A (LF) _SPACE | _CONTROL , // 0B (VT) _SPACE | _CONTROL , // 0C (FF) _SPACE | _CONTROL , // 0D (CR) _CONTROL , // 0E (SI) _CONTROL , // 0F (SO) _CONTROL , // 10 (DLE) _CONTROL , // 11 (DC1) _CONTROL , // 12 (DC2) _CONTROL , // 13 (DC3) _CONTROL , // 14 (DC4) _CONTROL , // 15 (NAK) _CONTROL , // 16 (SYN) _CONTROL , // 17 (ETB) _CONTROL , // 18 (CAN) _CONTROL , // 19 (EM) _CONTROL , // 1A (SUB) _CONTROL , // 1B (ESC) _CONTROL , // 1C (FS) _CONTROL , // 1D (GS) _CONTROL , // 1E (RS) _CONTROL , // 1F (US) _SPACE | _BLANK , // 20 SPACE _PUNCT , // 21 ! _PUNCT , // 22 " _PUNCT , // 23 # _PUNCT , // 24 $ _PUNCT , // 25 % _PUNCT , // 26 & _PUNCT , // 27 ' _PUNCT , // 28 ( _PUNCT , // 29 ) _PUNCT , // 2A * _PUNCT , // 2B + _PUNCT , // 2C , _PUNCT , // 2D - _PUNCT , // 2E . _PUNCT , // 2F / _DIGIT | _HEX , // 30 0 _DIGIT | _HEX , // 31 1 _DIGIT | _HEX , // 32 2 _DIGIT | _HEX , // 33 3 _DIGIT | _HEX , // 34 4 _DIGIT | _HEX , // 35 5 _DIGIT | _HEX , // 36 6 _DIGIT | _HEX , // 37 7 _DIGIT | _HEX , // 38 8 _DIGIT | _HEX , // 39 9 _PUNCT , // 3A : _PUNCT , // 3B ; _PUNCT , // 3C < _PUNCT , // 3D = _PUNCT , // 3E > _PUNCT , // 3F ? _PUNCT , // 40 @ _UPPER | _HEX | C1_ALPHA , // 41 A _UPPER | _HEX | C1_ALPHA , // 42 B _UPPER | _HEX | C1_ALPHA , // 43 C _UPPER | _HEX | C1_ALPHA , // 44 D _UPPER | _HEX | C1_ALPHA , // 45 E _UPPER | _HEX | C1_ALPHA , // 46 F _UPPER | C1_ALPHA , // 47 G _UPPER | C1_ALPHA , // 48 H _UPPER | C1_ALPHA , // 49 I _UPPER | C1_ALPHA , // 4A J _UPPER | C1_ALPHA , // 4B K _UPPER | C1_ALPHA , // 4C L _UPPER | C1_ALPHA , // 4D M _UPPER | C1_ALPHA , // 4E N _UPPER | C1_ALPHA , // 4F O _UPPER | C1_ALPHA , // 50 P _UPPER | C1_ALPHA , // 51 Q _UPPER | C1_ALPHA , // 52 R _UPPER | C1_ALPHA , // 53 S _UPPER | C1_ALPHA , // 54 T _UPPER | C1_ALPHA , // 55 U _UPPER | C1_ALPHA , // 56 V _UPPER | C1_ALPHA , // 57 W _UPPER | C1_ALPHA , // 58 X _UPPER | C1_ALPHA , // 59 Y _UPPER | C1_ALPHA , // 5A Z _PUNCT , // 5B [ _PUNCT , // 5C \ _PUNCT , // 5D ] _PUNCT , // 5E ^ _PUNCT , // 5F _ _PUNCT , // 60 ` _LOWER | _HEX | C1_ALPHA , // 61 a _LOWER | _HEX | C1_ALPHA , // 62 b _LOWER | _HEX | C1_ALPHA , // 63 c _LOWER | _HEX | C1_ALPHA , // 64 d _LOWER | _HEX | C1_ALPHA , // 65 e _LOWER | _HEX | C1_ALPHA , // 66 f _LOWER | C1_ALPHA , // 67 g _LOWER | C1_ALPHA , // 68 h _LOWER | C1_ALPHA , // 69 i _LOWER | C1_ALPHA , // 6A j _LOWER | C1_ALPHA , // 6B k _LOWER | C1_ALPHA , // 6C l _LOWER | C1_ALPHA , // 6D m _LOWER | C1_ALPHA , // 6E n _LOWER | C1_ALPHA , // 6F o _LOWER | C1_ALPHA , // 70 p _LOWER | C1_ALPHA , // 71 q _LOWER | C1_ALPHA , // 72 r _LOWER | C1_ALPHA , // 73 s _LOWER | C1_ALPHA , // 74 t _LOWER | C1_ALPHA , // 75 u _LOWER | C1_ALPHA , // 76 v _LOWER | C1_ALPHA , // 77 w _LOWER | C1_ALPHA , // 78 x _LOWER | C1_ALPHA , // 79 y _LOWER | C1_ALPHA , // 7A z _PUNCT , // 7B { _PUNCT , // 7C | _PUNCT , // 7D } _PUNCT , // 7E ~ _CONTROL , // 7F (DEL) _CONTROL , // 80 (XXX) _CONTROL , // 81 (XXX) _CONTROL , // 82 (BPH / BREAK PERMITTED HERE) _CONTROL , // 83 (NBH / NO BREAK HERE) _CONTROL , // 84 (IND / formerly known as INDEX) _SPACE | _CONTROL , // 85 (NEL / NEXT LINE) _CONTROL , // 86 (SSA / START OF SELCETED AREA) _CONTROL , // 87 (ESA / END OF SELECTED AREA) _CONTROL , // 88 (HTS / CHARACTER TABULATION SET) _CONTROL , // 89 (HTJ / CHARACTER TABULATION WITH JUSTIFICATION) _CONTROL , // 8A (VTS / LINE TABULATION SET) _CONTROL , // 8B (PLD / PARTIAL LINE FORWARD) _CONTROL , // 8C (PLU / PARTIAL LINE BACKWARD) _CONTROL , // 8D (RI / REVERSE LINE FEED) _CONTROL , // 8E (SS2 / SINGLE SHIFT TWO) _CONTROL , // 8F (SS3 / SINGLE SHIFT THREE) _CONTROL , // 90 (DCS / DEVICE CONTROL STRING) _CONTROL , // 91 (PU1 / PRIVATE USE ONE) _CONTROL , // 92 (PU2 / PRIVATE USE TWO) _CONTROL , // 93 (STS / SET TRANSMIT STATE) _CONTROL , // 94 (CCH / CANCEL CHARACTER) _CONTROL , // 95 (MW / MESSAGE WAITING) _CONTROL , // 96 (SPA / START OF GUARDED AREA) _CONTROL , // 97 (EPA / END OF GUARDED AREA) _CONTROL , // 98 (SOS / START OF STRING) _CONTROL , // 99 (XXX) _CONTROL , // 9A (SCI / SINGLE CHARACTER INTRODUCER) _CONTROL , // 9B (CSI / CONTROL SEQUENCE INTRODUCER) _CONTROL , // 9C (ST / STRING TERMINATOR) _CONTROL , // 9D (OSC / OPERATING SYSTEM COMMAND) _CONTROL , // 9E (PM / PRIVACY MESSAGE) _CONTROL , // 9F (APC / APPLICATION PROGRAM COMMAND) _SPACE , // A0 (NBSP / NO-BREAK SPACE) _PUNCT , // A1 (INVERTED EXCLAMATION MARK) _PUNCT , // A2 (CENT SIGN) _PUNCT , // A3 (POUND SIGN) _PUNCT , // A4 (CURRENCY SIGN) _PUNCT , // A5 (YEN SIGN) _PUNCT , // A6 (BROKEN BAR) _PUNCT , // A7 (SECTION SIGN) _PUNCT , // A8 (DIAERESIS) _PUNCT , // A9 (COPYRIGHT SIGN) _LOWER | _PUNCT | C1_ALPHA, // AA (FEMININE ORDINAL INDICATOR) _PUNCT , // AB (LEFT-POINTING DOUBLE ANGLE QUOTATION MARK) _PUNCT , // AC (NOT SIGN) _PUNCT | _CONTROL , // AD (SOFT HYPHEN) _PUNCT , // AE (REGISTERED SIGN) _PUNCT , // AF (MACRON) _PUNCT , // B0 (DEGREE SIGN) _PUNCT , // B1 (PLUS-MINUS SIGN) _DIGIT | _PUNCT , // B2 (SUPERSCRIPT TWO) _DIGIT | _PUNCT , // B3 (SUPERSCRIPT THREE) _PUNCT , // B4 (ACUTE ACCENT) _LOWER | _PUNCT | C1_ALPHA, // B5 (MICRO SIGN) _PUNCT , // B6 (PILCROW SIGN) _PUNCT , // B7 (MIDDLE DOT) _PUNCT , // B8 (CEDILLA) _DIGIT | _PUNCT , // B9 (SUPERSCRIPT ONE) _LOWER | _PUNCT | C1_ALPHA, // BA (MASCULINE ORDINAL INDICATOR) _PUNCT , // BB (RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK) _PUNCT , // BC (VULGAR FRACTION ONE QUARTER) _PUNCT , // BD (VULGAR FRACTION ONE HALF) _PUNCT , // BE (VULGAR FRACTION THREE QUARTERS) _PUNCT , // BF (INVERTED QUESTION MARK) _UPPER | C1_ALPHA , // C0 (LATIN CAPTIAL LETTER A WITH GRAVE) _UPPER | C1_ALPHA , // C1 (LATIN CAPITAL LETTER A WITH ACUTE) _UPPER | C1_ALPHA , // C2 (LATIN CAPITAL LETTER A WITH CIRCUMFLEX) _UPPER | C1_ALPHA , // C3 (LATIN CAPITAL LETTER A WITH TILDE) _UPPER | C1_ALPHA , // C4 (LATIN CAPITAL LETTER A WITH DIAERESIS) _UPPER | C1_ALPHA , // C5 (LATIN CAPITAL LETTER A WITH RING ABOVE) _UPPER | C1_ALPHA , // C6 (LATIN CAPITAL LETTER AE) _UPPER | C1_ALPHA , // C7 (LATIN CAPITAL LETTER C WITH CEDILLA) _UPPER | C1_ALPHA , // C8 (LATIN CAPITAL LETTER E WITH GRAVE) _UPPER | C1_ALPHA , // C9 (LATIN CAPITAL LETTER E WITH ACUTE) _UPPER | C1_ALPHA , // CA (LATIN CAPITAL LETTER E WITH CIRCUMFLEX) _UPPER | C1_ALPHA , // CB (LATIN CAPITAL LETTER E WITH DIAERESIS) _UPPER | C1_ALPHA , // CC (LATIN CAPITAL LETTER I WITH GRAVE) _UPPER | C1_ALPHA , // CD (LATIN CAPITAL LETTER I WITH ACUTE) _UPPER | C1_ALPHA , // CE (LATIN CAPITAL LETTER I WITH CIRCUMFLEX) _UPPER | C1_ALPHA , // CF (LATIN CAPITAL LETTER I WITH DIAERESIS _UPPER | C1_ALPHA , // D0 (LATIN CAPITAL LETTER ETH) _UPPER | C1_ALPHA , // D1 (LATIN CAPITAL LETTER N WITH TILDE) _UPPER | C1_ALPHA , // D2 (LATIN CAPITAL LETTER O WITH GRAVE) _UPPER | C1_ALPHA , // D3 (LATIN CAPITAL LETTER O WITH ACUTE) _UPPER | C1_ALPHA , // D4 (LATIN CAPITAL LETTER O WITH CIRCUMFLEX) _UPPER | C1_ALPHA , // D5 (LATIN CAPITAL LETTER O WITH TILDE) _UPPER | C1_ALPHA , // D6 (LATIN CAPITAL LETTER O WITH DIAERESIS) _PUNCT , // D7 (MULTIPLICATION SIGN) _UPPER | C1_ALPHA , // D8 (LATIN CAPITAL LETTER O WITH STROKE) _UPPER | C1_ALPHA , // D9 (LATIN CAPITAL LETTER U WITH GRAVE) _UPPER | C1_ALPHA , // DA (LATIN CAPITAL LETTER U WITH ACUTE) _UPPER | C1_ALPHA , // DB (LATIN CAPITAL LETTER U WITH CIRCUMFLEX) _UPPER | C1_ALPHA , // DC (LATIN CAPITAL LETTER U WITH DIAERESIS) _UPPER | C1_ALPHA , // DD (LATIN CAPITAL LETTER Y WITH ACUTE) _UPPER | C1_ALPHA , // DE (LATIN CAPITAL LETTER THORN) _LOWER | C1_ALPHA , // DF (LATIN SMALL LETTER SHARP S) _LOWER | C1_ALPHA , // E0 (LATIN SMALL LETTER A WITH GRAVE) _LOWER | C1_ALPHA , // E1 (LATIN SMALL LETTER A WITH ACUTE) _LOWER | C1_ALPHA , // E2 (LATIN SMALL LETTER A WITH CIRCUMFLEX) _LOWER | C1_ALPHA , // E3 (LATIN SMALL LETTER A WITH TILDE) _LOWER | C1_ALPHA , // E4 (LATIN SMALL LETTER A WITH DIAERESIS) _LOWER | C1_ALPHA , // E5 (LATIN SMALL LETTER A WITH RING ABOVE) _LOWER | C1_ALPHA , // E6 (LATIN SMALL LETTER AE) _LOWER | C1_ALPHA , // E7 (LATIN SMALL LETTER C WITH CEDILLA) _LOWER | C1_ALPHA , // E8 (LATIN SMALL LETTER E WITH GRAVE) _LOWER | C1_ALPHA , // E9 (LATIN SMALL LETTER E WITH ACUTE) _LOWER | C1_ALPHA , // EA (LATIN SMALL LETTER E WITH CIRCUMFLEX) _LOWER | C1_ALPHA , // EB (LATIN SMALL LETTER E WITH DIAERESIS) _LOWER | C1_ALPHA , // EC (LATIN SMALL LETTER I WITH GRAVE) _LOWER | C1_ALPHA , // ED (LATIN SMALL LETTER I WITH ACUTE) _LOWER | C1_ALPHA , // EE (LATIN SMALL LETTER I WITH CIRCUMFLEX) _LOWER | C1_ALPHA , // EF (LATIN SMALL LETTER I WITH DIAERESIS) _LOWER | C1_ALPHA , // F0 (LATIN SMALL LETTER ETH) _LOWER | C1_ALPHA , // F1 (LATIN SMALL LETTER N WITH TILDE) _LOWER | C1_ALPHA , // F2 (LATIN SMALL LETTER O WITH GRAVE) _LOWER | C1_ALPHA , // F3 (LATIN SMALL LETTER O WITH ACUTE) _LOWER | C1_ALPHA , // F4 (LATIN SMALL LETTER O WITH CIRCUMFLEX) _LOWER | C1_ALPHA , // F5 (LATIN SMALL LETTER O WITH TILDE) _LOWER | C1_ALPHA , // F6 (LATIN SMALL LETTER O WITH DIAERESIS) _PUNCT , // F7 (DIVISION SIGN) _LOWER | C1_ALPHA , // F8 (LATIN SMALL LETTER O WITH STROKE) _LOWER | C1_ALPHA , // F9 (LATIN SMALL LETTER U WITH GRAVE) _LOWER | C1_ALPHA , // FA (LATIN SMALL LETTER U WITH ACUTE) _LOWER | C1_ALPHA , // FB (LATIN SMALL LETTER U WITH CIRCUMFLEX) _LOWER | C1_ALPHA , // FC (LATIN SMALL LETTER U WITH DIAERESIS) _LOWER | C1_ALPHA , // FD (LATIN SMALL LETTER Y WITH ACUTE) _LOWER | C1_ALPHA , // FE (LATIN SMALL LETTER THORN) _LOWER | C1_ALPHA , // FF (LATIN SMALL LETTER Y WITH DIAERESIS) _UPPER | C1_ALPHA , //100 (LATIN CAPITAL LETTER A WITH MACRON) }; extern "C" extern unsigned short const __newctype[384] { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // -1 EOF _CONTROL, // 00 (NUL) _CONTROL, // 01 (SOH) _CONTROL, // 02 (STX) _CONTROL, // 03 (ETX) _CONTROL, // 04 (EOT) _CONTROL, // 05 (ENQ) _CONTROL, // 06 (ACK) _CONTROL, // 07 (BEL) _CONTROL, // 08 (BS) // \t is a blank character, but is not registered as _Blank on the table, because that will make it //printable. Also Windows (via GetStringType()) considered all _BLANK characters to also be _PRINT characters, //so does not have a way to specify blank, non-printable. _SPACE+_CONTROL, // 09 (HT) _SPACE+_CONTROL, // 0A (LF) _SPACE+_CONTROL, // 0B (VT) _SPACE+_CONTROL, // 0C (FF) _SPACE+_CONTROL, // 0D (CR) _CONTROL, // 0E (SI) _CONTROL, // 0F (SO) _CONTROL, // 10 (DLE) _CONTROL, // 11 (DC1) _CONTROL, // 12 (DC2) _CONTROL, // 13 (DC3) _CONTROL, // 14 (DC4) _CONTROL, // 15 (NAK) _CONTROL, // 16 (SYN) _CONTROL, // 17 (ETB) _CONTROL, // 18 (CAN) _CONTROL, // 19 (EM) _CONTROL, // 1A (SUB) _CONTROL, // 1B (ESC) _CONTROL, // 1C (FS) _CONTROL, // 1D (GS) _CONTROL, // 1E (RS) _CONTROL, // 1F (US) _SPACE+_BLANK, // 20 SPACE _PUNCT, // 21 ! _PUNCT, // 22 " _PUNCT, // 23 # _PUNCT, // 24 $ _PUNCT, // 25 % _PUNCT, // 26 & _PUNCT, // 27 ' _PUNCT, // 28 ( _PUNCT, // 29 ) _PUNCT, // 2A * _PUNCT, // 2B + _PUNCT, // 2C , _PUNCT, // 2D - _PUNCT, // 2E . _PUNCT, // 2F / _DIGIT+_HEX, // 30 0 _DIGIT+_HEX, // 31 1 _DIGIT+_HEX, // 32 2 _DIGIT+_HEX, // 33 3 _DIGIT+_HEX, // 34 4 _DIGIT+_HEX, // 35 5 _DIGIT+_HEX, // 36 6 _DIGIT+_HEX, // 37 7 _DIGIT+_HEX, // 38 8 _DIGIT+_HEX, // 39 9 _PUNCT, // 3A : _PUNCT, // 3B ; _PUNCT, // 3C < _PUNCT, // 3D = _PUNCT, // 3E > _PUNCT, // 3F ? _PUNCT, // 40 @ _UPPER+_HEX, // 41 A _UPPER+_HEX, // 42 B _UPPER+_HEX, // 43 C _UPPER+_HEX, // 44 D _UPPER+_HEX, // 45 E _UPPER+_HEX, // 46 F _UPPER, // 47 G _UPPER, // 48 H _UPPER, // 49 I _UPPER, // 4A J _UPPER, // 4B K _UPPER, // 4C L _UPPER, // 4D M _UPPER, // 4E N _UPPER, // 4F O _UPPER, // 50 P _UPPER, // 51 Q _UPPER, // 52 R _UPPER, // 53 S _UPPER, // 54 T _UPPER, // 55 U _UPPER, // 56 V _UPPER, // 57 W _UPPER, // 58 X _UPPER, // 59 Y _UPPER, // 5A Z _PUNCT, // 5B [ _PUNCT, // 5C \ backslash _PUNCT, // 5D ] _PUNCT, // 5E ^ _PUNCT, // 5F _ _PUNCT, // 60 ` _LOWER+_HEX, // 61 a _LOWER+_HEX, // 62 b _LOWER+_HEX, // 63 c _LOWER+_HEX, // 64 d _LOWER+_HEX, // 65 e _LOWER+_HEX, // 66 f _LOWER, // 67 g _LOWER, // 68 h _LOWER, // 69 i _LOWER, // 6A j _LOWER, // 6B k _LOWER, // 6C l _LOWER, // 6D m _LOWER, // 6E n _LOWER, // 6F o _LOWER, // 70 p _LOWER, // 71 q _LOWER, // 72 r _LOWER, // 73 s _LOWER, // 74 t _LOWER, // 75 u _LOWER, // 76 v _LOWER, // 77 w _LOWER, // 78 x _LOWER, // 79 y _LOWER, // 7A z _PUNCT, // 7B { _PUNCT, // 7C | _PUNCT, // 7D } _PUNCT, // 7E ~ _CONTROL, // 7F (DEL) // and the rest are 0... }; extern "C" extern unsigned char const __newclmap[384] { 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f, 0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97, 0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, 0x9e, 0x9f, 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7, 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf, 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7, 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf, 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, 0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, 0xde, 0xdf, 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef, 0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, 0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, 0xfe, 0xff, 0x00, // 00 (NUL) 0x01, // 01 (SOH) 0x02, // 02 (STX) 0x03, // 03 (ETX) 0x04, // 04 (EOT) 0x05, // 05 (ENQ) 0x06, // 06 (ACK) 0x07, // 07 (BEL) 0x08, // 08 (BS) 0x09, // 09 (HT) 0x0A, // 0A (LF) 0x0B, // 0B (VT) 0x0C, // 0C (FF) 0x0D, // 0D (CR) 0x0E, // 0E (SI) 0x0F, // 0F (SO) 0x10, // 10 (DLE) 0x11, // 11 (DC1) 0x12, // 12 (DC2) 0x13, // 13 (DC3) 0x14, // 14 (DC4) 0x15, // 15 (NAK) 0x16, // 16 (SYN) 0x17, // 17 (ETB) 0x18, // 18 (CAN) 0x19, // 19 (EM) 0x1A, // 1A (SUB) 0x1B, // 1B (ESC) 0x1C, // 1C (FS) 0x1D, // 1D (GS) 0x1E, // 1E (RS) 0x1F, // 1F (US) 0x20, // 20 SPACE 0x21, // 21 ! 0x22, // 22 " 0x23, // 23 # 0x24, // 24 $ 0x25, // 25 % 0x26, // 26 & 0x27, // 27 ' 0x28, // 28 ( 0x29, // 29 ) 0x2A, // 2A * 0x2B, // 2B + 0x2C, // 2C , 0x2D, // 2D - 0x2E, // 2E . 0x2F, // 2F / 0x30, // 30 0 0x31, // 31 1 0x32, // 32 2 0x33, // 33 3 0x34, // 34 4 0x35, // 35 5 0x36, // 36 6 0x37, // 37 7 0x38, // 38 8 0x39, // 39 9 0x3A, // 3A : 0x3B, // 3B ; 0x3C, // 3C < 0x3D, // 3D = 0x3E, // 3E > 0x3F, // 3F ? 0x40, // 40 @ 0x61, // 41 A 0x62, // 42 B 0x63, // 43 C 0x64, // 44 D 0x65, // 45 E 0x66, // 46 F 0x67, // 47 G 0x68, // 48 H 0x69, // 49 I 0x6A, // 4A J 0x6B, // 4B K 0x6C, // 4C L 0x6D, // 4D M 0x6E, // 4E N 0x6F, // 4F O 0x70, // 50 P 0x71, // 51 Q 0x72, // 52 R 0x73, // 53 S 0x74, // 54 T 0x75, // 55 U 0x76, // 56 V 0x77, // 57 W 0x78, // 58 X 0x79, // 59 Y 0x7A, // 5A Z 0x5B, // 5B [ 0x5C, // 5C \ 0x5D, // 5D ] 0x5E, // 5E ^ 0x5F, // 5F _ 0x60, // 60 ` 0x61, // 61 a 0x62, // 62 b 0x63, // 63 c 0x64, // 64 d 0x65, // 65 e 0x66, // 66 f 0x67, // 67 g 0x68, // 68 h 0x69, // 69 i 0x6A, // 6A j 0x6B, // 6B k 0x6C, // 6C l 0x6D, // 6D m 0x6E, // 6E n 0x6F, // 6F o 0x70, // 70 p 0x71, // 71 q 0x72, // 72 r 0x73, // 73 s 0x74, // 74 t 0x75, // 75 u 0x76, // 76 v 0x77, // 77 w 0x78, // 78 x 0x79, // 79 y 0x7A, // 7A z 0x7B, // 7B { 0x7C, // 7C | 0x7D, // 7D } 0x7E, // 7E ~ 0x7F, // 7F (DEL) 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f, 0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97, 0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, 0x9e, 0x9f, 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7, 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf, 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7, 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf, 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, 0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, 0xde, 0xdf, 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef, 0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, 0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, 0xfe, 0xff }; extern "C" extern unsigned char const __newcumap[384] { 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f, 0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97, 0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, 0x9e, 0x9f, 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7, 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf, 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7, 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf, 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, 0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, 0xde, 0xdf, 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef, 0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, 0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, 0xfe, 0xff, 0x00, // 00 (NUL) 0x01, // 01 (SOH) 0x02, // 02 (STX) 0x03, // 03 (ETX) 0x04, // 04 (EOT) 0x05, // 05 (ENQ) 0x06, // 06 (ACK) 0x07, // 07 (BEL) 0x08, // 08 (BS) 0x09, // 09 (HT) 0x0A, // 0A (LF) 0x0B, // 0B (VT) 0x0C, // 0C (FF) 0x0D, // 0D (CR) 0x0E, // 0E (SI) 0x0F, // 0F (SO) 0x10, // 10 (DLE) 0x11, // 11 (DC1) 0x12, // 12 (DC2) 0x13, // 13 (DC3) 0x14, // 14 (DC4) 0x15, // 15 (NAK) 0x16, // 16 (SYN) 0x17, // 17 (ETB) 0x18, // 18 (CAN) 0x19, // 19 (EM) 0x1A, // 1A (SUB) 0x1B, // 1B (ESC) 0x1C, // 1C (FS) 0x1D, // 1D (GS) 0x1E, // 1E (RS) 0x1F, // 1F (US) 0x20, // 20 SPACE 0x21, // 21 ! 0x22, // 22 " 0x23, // 23 # 0x24, // 24 $ 0x25, // 25 % 0x26, // 26 & 0x27, // 27 ' 0x28, // 28 ( 0x29, // 29 ) 0x2A, // 2A * 0x2B, // 2B + 0x2C, // 2C , 0x2D, // 2D - 0x2E, // 2E . 0x2F, // 2F / 0x30, // 30 0 0x31, // 31 1 0x32, // 32 2 0x33, // 33 3 0x34, // 34 4 0x35, // 35 5 0x36, // 36 6 0x37, // 37 7 0x38, // 38 8 0x39, // 39 9 0x3A, // 3A : 0x3B, // 3B ; 0x3C, // 3C < 0x3D, // 3D = 0x3E, // 3E > 0x3F, // 3F ? 0x40, // 40 @ 0x41, // 41 A 0x42, // 42 B 0x43, // 43 C 0x44, // 44 D 0x45, // 45 E 0x46, // 46 F 0x47, // 47 G 0x48, // 48 H 0x49, // 49 I 0x4A, // 4A J 0x4B, // 4B K 0x4C, // 4C L 0x4D, // 4D M 0x4E, // 4E N 0x4F, // 4F O 0x50, // 50 P 0x51, // 51 Q 0x52, // 52 R 0x53, // 53 S 0x54, // 54 T 0x55, // 55 U 0x56, // 56 V 0x57, // 57 W 0x58, // 58 X 0x59, // 59 Y 0x5A, // 5A Z 0x5B, // 5B [ 0x5C, // 5C \ 0x5D, // 5D ] 0x5E, // 5E ^ 0x5F, // 5F _ 0x60, // 60 ` 0x41, // 61 a 0x42, // 62 b 0x43, // 63 c 0x44, // 64 d 0x45, // 65 e 0x46, // 66 f 0x47, // 67 g 0x48, // 68 h 0x49, // 69 i 0x4A, // 6A j 0x4B, // 6B k 0x4C, // 6C l 0x4D, // 6D m 0x4E, // 6E n 0x4F, // 6F o 0x50, // 70 p 0x51, // 71 q 0x52, // 72 r 0x53, // 73 s 0x54, // 74 t 0x55, // 75 u 0x56, // 76 v 0x57, // 77 w 0x58, // 78 x 0x59, // 79 y 0x5A, // 7A z 0x7B, // 7B { 0x7C, // 7C | 0x7D, // 7D } 0x7E, // 7E ~ 0x7F, // 7F (DEL) 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f, 0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97, 0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, 0x9e, 0x9f, 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7, 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf, 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7, 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf, 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, 0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, 0xde, 0xdf, 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef, 0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, 0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, 0xfe, 0xff }; extern "C" unsigned short const* _pctype {__newctype + 128}; // Pointer to table for char's extern "C" unsigned short const* _pwctype{_wctype + 1 }; // Pointer to table for wchar_t's