| /** |
| * This file has no copyright assigned and is placed in the Public Domain. |
| * This file is part of the mingw-w64 runtime package. |
| * No warranty is given; refer to the file DISCLAIMER.PD within this package. |
| */ |
| |
| #define CHARTYPE_BIT_ALNUM (1) |
| #define CHARTYPE_BIT_ALPHA (1 << 1) |
| #define CHARTYPE_BIT_BLANK (1 << 2) |
| #define CHARTYPE_BIT_CONTROL (1 << 3) |
| #define CHARTYPE_BIT_DIGIT (1 << 4) |
| #define CHARTYPE_BIT_GRAPH (1 << 5) |
| #define CHARTYPE_BIT_LOWER (1 << 6) |
| #define CHARTYPE_BIT_PRINT (1 << 7) |
| #define CHARTYPE_BIT_PUNCT (1 << 8) |
| #define CHARTYPE_BIT_SPACE (1 << 9) |
| #define CHARTYPE_BIT_UPPER (1 << 10) |
| #define CHARTYPE_BIT_XDIGIT (1 << 11) |
| |
| #define CHARTYPE_ALNUM (CHARTYPE_BIT_ALNUM) |
| #define CHARTYPE_ALPHA (CHARTYPE_BIT_ALPHA | CHARTYPE_ALNUM) |
| #define CHARTYPE_BLANK (CHARTYPE_BIT_BLANK) |
| #define CHARTYPE_CONTROL (CHARTYPE_BIT_CONTROL) |
| #define CHARTYPE_DIGIT (CHARTYPE_BIT_DIGIT | CHARTYPE_ALNUM) |
| #define CHARTYPE_GRAPH (CHARTYPE_BIT_GRAPH | CHARTYPE_PRINT) |
| #define CHARTYPE_LOWER (CHARTYPE_BIT_LOWER | CHARTYPE_ALPHA) |
| #define CHARTYPE_PRINT (CHARTYPE_BIT_PRINT) |
| #define CHARTYPE_PUNCT (CHARTYPE_BIT_PUNCT) |
| #define CHARTYPE_SPACE (CHARTYPE_BIT_SPACE) |
| #define CHARTYPE_UPPER (CHARTYPE_BIT_UPPER | CHARTYPE_ALPHA) |
| #define CHARTYPE_XDIGIT (CHARTYPE_BIT_XDIGIT) |
| |
| struct { |
| wctype_t CharType; |
| int Lower; |
| int Upper; |
| } CharTypeTable[] = { |
| // NUL |
| {(CHARTYPE_CONTROL), 0x00, 0x00}, |
| // SOH |
| {(CHARTYPE_CONTROL), 0x01, 0x01}, |
| // STX |
| {(CHARTYPE_CONTROL), 0x02, 0x02}, |
| // ETX |
| {(CHARTYPE_CONTROL), 0x03, 0x03}, |
| // EOT |
| {(CHARTYPE_CONTROL), 0x04, 0x04}, |
| // ENQ |
| {(CHARTYPE_CONTROL), 0x05, 0x05}, |
| // ACK |
| {(CHARTYPE_CONTROL), 0x06, 0x06}, |
| // bell |
| {(CHARTYPE_CONTROL), 0x07, 0x07}, |
| // backspace |
| {(CHARTYPE_CONTROL), 0x08, 0x08}, |
| // TAB |
| {(CHARTYPE_BLANK | CHARTYPE_CONTROL | CHARTYPE_SPACE), 0x09, 0x09}, |
| // LF |
| {(CHARTYPE_CONTROL | CHARTYPE_SPACE), 0x0A, 0x0A}, |
| // vertical tab |
| {(CHARTYPE_CONTROL | CHARTYPE_SPACE), 0x0B, 0x0B}, |
| // form feed |
| {(CHARTYPE_CONTROL | CHARTYPE_SPACE), 0x0C, 0x0C}, |
| // CR |
| {(CHARTYPE_CONTROL | CHARTYPE_SPACE), 0x0D, 0x0D}, |
| // SO |
| {(CHARTYPE_CONTROL), 0x0E, 0x0E}, |
| // SI |
| {(CHARTYPE_CONTROL), 0x0F, 0x0F}, |
| // DLE |
| {(CHARTYPE_CONTROL), 0x10, 0x10}, |
| // DC1 |
| {(CHARTYPE_CONTROL), 0x11, 0x11}, |
| // DC2 |
| {(CHARTYPE_CONTROL), 0x12, 0x12}, |
| // DC3 |
| {(CHARTYPE_CONTROL), 0x13, 0x13}, |
| // DC4 |
| {(CHARTYPE_CONTROL), 0x14, 0x14}, |
| // NAK |
| {(CHARTYPE_CONTROL), 0x15, 0x15}, |
| // SYN |
| {(CHARTYPE_CONTROL), 0x16, 0x16}, |
| // ETB |
| {(CHARTYPE_CONTROL), 0x17, 0x17}, |
| // CAN |
| {(CHARTYPE_CONTROL), 0x18, 0x18}, |
| // EM |
| {(CHARTYPE_CONTROL), 0x19, 0x19}, |
| // SUB |
| {(CHARTYPE_CONTROL), 0x1A, 0x1A}, |
| // ESC |
| {(CHARTYPE_CONTROL), 0x1B, 0x1B}, |
| // IS4 |
| {(CHARTYPE_CONTROL), 0x1C, 0x1C}, |
| // IS3 |
| {(CHARTYPE_CONTROL), 0x1D, 0x1D}, |
| // IS2 |
| {(CHARTYPE_CONTROL), 0x1E, 0x1E}, |
| // IS1 |
| {(CHARTYPE_CONTROL), 0x1F, 0x1F}, |
| // space |
| {(CHARTYPE_BLANK | CHARTYPE_PRINT | CHARTYPE_SPACE), 0x20, 0x20}, |
| // ! |
| {(CHARTYPE_GRAPH | CHARTYPE_PUNCT), 0x21, 0x21}, |
| // " |
| {(CHARTYPE_GRAPH | CHARTYPE_PUNCT), 0x22, 0x22}, |
| // # |
| {(CHARTYPE_GRAPH | CHARTYPE_PUNCT), 0x23, 0x23}, |
| // $ |
| {(CHARTYPE_GRAPH | CHARTYPE_PUNCT), 0x24, 0x24}, |
| // % |
| {(CHARTYPE_GRAPH | CHARTYPE_PUNCT), 0x25, 0x25}, |
| // & |
| {(CHARTYPE_GRAPH | CHARTYPE_PUNCT), 0x26, 0x26}, |
| // ' |
| {(CHARTYPE_GRAPH | CHARTYPE_PUNCT), 0x27, 0x27}, |
| // ( |
| {(CHARTYPE_GRAPH | CHARTYPE_PUNCT), 0x28, 0x28}, |
| // ) |
| {(CHARTYPE_GRAPH | CHARTYPE_PUNCT), 0x29, 0x29}, |
| // * |
| {(CHARTYPE_GRAPH | CHARTYPE_PUNCT), 0x2A, 0x2A}, |
| // + |
| {(CHARTYPE_GRAPH | CHARTYPE_PUNCT), 0x2B, 0x2B}, |
| // , |
| {(CHARTYPE_GRAPH | CHARTYPE_PUNCT), 0x2C, 0x2C}, |
| // - |
| {(CHARTYPE_GRAPH | CHARTYPE_PUNCT), 0x2D, 0x2D}, |
| // . |
| {(CHARTYPE_GRAPH | CHARTYPE_PUNCT), 0x2E, 0x2E}, |
| // / |
| {(CHARTYPE_GRAPH | CHARTYPE_PUNCT), 0x2F, 0x2F}, |
| // 0 |
| {(CHARTYPE_DIGIT | CHARTYPE_GRAPH | CHARTYPE_XDIGIT), 0x30, 0x30}, |
| // 1 |
| {(CHARTYPE_DIGIT | CHARTYPE_GRAPH | CHARTYPE_XDIGIT), 0x31, 0x31}, |
| // 2 |
| {(CHARTYPE_DIGIT | CHARTYPE_GRAPH | CHARTYPE_XDIGIT), 0x32, 0x32}, |
| // 3 |
| {(CHARTYPE_DIGIT | CHARTYPE_GRAPH | CHARTYPE_XDIGIT), 0x33, 0x33}, |
| // 4 |
| {(CHARTYPE_DIGIT | CHARTYPE_GRAPH | CHARTYPE_XDIGIT), 0x34, 0x34}, |
| // 5 |
| {(CHARTYPE_DIGIT | CHARTYPE_GRAPH | CHARTYPE_XDIGIT), 0x35, 0x35}, |
| // 6 |
| {(CHARTYPE_DIGIT | CHARTYPE_GRAPH | CHARTYPE_XDIGIT), 0x36, 0x36}, |
| // 7 |
| {(CHARTYPE_DIGIT | CHARTYPE_GRAPH | CHARTYPE_XDIGIT), 0x37, 0x37}, |
| // 8 |
| {(CHARTYPE_DIGIT | CHARTYPE_GRAPH | CHARTYPE_XDIGIT), 0x38, 0x38}, |
| // 9 |
| {(CHARTYPE_DIGIT | CHARTYPE_GRAPH | CHARTYPE_XDIGIT), 0x39, 0x39}, |
| // : |
| {(CHARTYPE_GRAPH | CHARTYPE_PUNCT), 0x3A, 0x3A}, |
| // ; |
| {(CHARTYPE_GRAPH | CHARTYPE_PUNCT), 0x3B, 0x3B}, |
| // < |
| {(CHARTYPE_GRAPH | CHARTYPE_PUNCT), 0x3C, 0x3C}, |
| // = |
| {(CHARTYPE_GRAPH | CHARTYPE_PUNCT), 0x3D, 0x3D}, |
| // > |
| {(CHARTYPE_GRAPH | CHARTYPE_PUNCT), 0x3E, 0x3E}, |
| // ? |
| {(CHARTYPE_GRAPH | CHARTYPE_PUNCT), 0x3F, 0x3F}, |
| // @ |
| {(CHARTYPE_GRAPH | CHARTYPE_PUNCT), 0x40, 0x40}, |
| // A |
| {(CHARTYPE_UPPER | CHARTYPE_GRAPH | CHARTYPE_XDIGIT), 0x61, 0x41}, |
| // B |
| {(CHARTYPE_UPPER | CHARTYPE_GRAPH | CHARTYPE_XDIGIT), 0x62, 0x42}, |
| // C |
| {(CHARTYPE_UPPER | CHARTYPE_GRAPH | CHARTYPE_XDIGIT), 0x63, 0x43}, |
| // D |
| {(CHARTYPE_UPPER | CHARTYPE_GRAPH | CHARTYPE_XDIGIT), 0x64, 0x44}, |
| // E |
| {(CHARTYPE_UPPER | CHARTYPE_GRAPH | CHARTYPE_XDIGIT), 0x65, 0x45}, |
| // F |
| {(CHARTYPE_UPPER | CHARTYPE_GRAPH | CHARTYPE_XDIGIT), 0x66, 0x46}, |
| // G |
| {(CHARTYPE_UPPER | CHARTYPE_GRAPH), 0x67, 0x47}, |
| // H |
| {(CHARTYPE_UPPER | CHARTYPE_GRAPH), 0x68, 0x48}, |
| // I |
| {(CHARTYPE_UPPER | CHARTYPE_GRAPH), 0x69, 0x49}, |
| // J |
| {(CHARTYPE_UPPER | CHARTYPE_GRAPH), 0x6A, 0x4A}, |
| // K |
| {(CHARTYPE_UPPER | CHARTYPE_GRAPH), 0x6B, 0x4B}, |
| // L |
| {(CHARTYPE_UPPER | CHARTYPE_GRAPH), 0x6C, 0x4C}, |
| // M |
| {(CHARTYPE_UPPER | CHARTYPE_GRAPH), 0x6D, 0x4D}, |
| // N |
| {(CHARTYPE_UPPER | CHARTYPE_GRAPH), 0x6E, 0x4E}, |
| // O |
| {(CHARTYPE_UPPER | CHARTYPE_GRAPH), 0x6F, 0x4F}, |
| // P |
| {(CHARTYPE_UPPER | CHARTYPE_GRAPH), 0x70, 0x50}, |
| // Q |
| {(CHARTYPE_UPPER | CHARTYPE_GRAPH), 0x71, 0x51}, |
| // R |
| {(CHARTYPE_UPPER | CHARTYPE_GRAPH), 0x72, 0x52}, |
| // S |
| {(CHARTYPE_UPPER | CHARTYPE_GRAPH), 0x73, 0x53}, |
| // T |
| {(CHARTYPE_UPPER | CHARTYPE_GRAPH), 0x74, 0x54}, |
| // U |
| {(CHARTYPE_UPPER | CHARTYPE_GRAPH), 0x75, 0x55}, |
| // V |
| {(CHARTYPE_UPPER | CHARTYPE_GRAPH), 0x76, 0x56}, |
| // W |
| {(CHARTYPE_UPPER | CHARTYPE_GRAPH), 0x77, 0x57}, |
| // X |
| {(CHARTYPE_UPPER | CHARTYPE_GRAPH), 0x78, 0x58}, |
| // Y |
| {(CHARTYPE_UPPER | CHARTYPE_GRAPH), 0x79, 0x59}, |
| // Z |
| {(CHARTYPE_UPPER | CHARTYPE_GRAPH), 0x7A, 0x5A}, |
| // [ |
| {(CHARTYPE_GRAPH | CHARTYPE_PUNCT), 0x5B, 0x5B}, |
| // '\' |
| {(CHARTYPE_GRAPH | CHARTYPE_PUNCT), 0x5C, 0x5C}, |
| // ] |
| {(CHARTYPE_GRAPH | CHARTYPE_PUNCT), 0x5D, 0x5D}, |
| // ^ |
| {(CHARTYPE_GRAPH | CHARTYPE_PUNCT), 0x5E, 0x5E}, |
| // _ |
| {(CHARTYPE_GRAPH | CHARTYPE_PUNCT), 0x5F, 0x5F}, |
| // ` |
| {(CHARTYPE_GRAPH | CHARTYPE_PUNCT), 0x60, 0x60}, |
| // a |
| {(CHARTYPE_LOWER | CHARTYPE_GRAPH | CHARTYPE_XDIGIT), 0x61, 0x41}, |
| // b |
| {(CHARTYPE_LOWER | CHARTYPE_GRAPH | CHARTYPE_XDIGIT), 0x62, 0x42}, |
| // c |
| {(CHARTYPE_LOWER | CHARTYPE_GRAPH | CHARTYPE_XDIGIT), 0x63, 0x43}, |
| // d |
| {(CHARTYPE_LOWER | CHARTYPE_GRAPH | CHARTYPE_XDIGIT), 0x64, 0x44}, |
| // e |
| {(CHARTYPE_LOWER | CHARTYPE_GRAPH | CHARTYPE_XDIGIT), 0x65, 0x45}, |
| // f |
| {(CHARTYPE_LOWER | CHARTYPE_GRAPH | CHARTYPE_XDIGIT), 0x66, 0x46}, |
| // g |
| {(CHARTYPE_LOWER | CHARTYPE_GRAPH), 0x67, 0x47}, |
| // h |
| {(CHARTYPE_LOWER | CHARTYPE_GRAPH), 0x68, 0x48}, |
| // i |
| {(CHARTYPE_LOWER | CHARTYPE_GRAPH), 0x69, 0x49}, |
| // j |
| {(CHARTYPE_LOWER | CHARTYPE_GRAPH), 0x6A, 0x4A}, |
| // k |
| {(CHARTYPE_LOWER | CHARTYPE_GRAPH), 0x6B, 0x4B}, |
| // l |
| {(CHARTYPE_LOWER | CHARTYPE_GRAPH), 0x6C, 0x4C}, |
| // m |
| {(CHARTYPE_LOWER | CHARTYPE_GRAPH), 0x6D, 0x4D}, |
| // n |
| {(CHARTYPE_LOWER | CHARTYPE_GRAPH), 0x6E, 0x4E}, |
| // o |
| {(CHARTYPE_LOWER | CHARTYPE_GRAPH), 0x6F, 0x4F}, |
| // p |
| {(CHARTYPE_LOWER | CHARTYPE_GRAPH), 0x70, 0x50}, |
| // q |
| {(CHARTYPE_LOWER | CHARTYPE_GRAPH), 0x71, 0x51}, |
| // r |
| {(CHARTYPE_LOWER | CHARTYPE_GRAPH), 0x72, 0x52}, |
| // s |
| {(CHARTYPE_LOWER | CHARTYPE_GRAPH), 0x73, 0x53}, |
| // t |
| {(CHARTYPE_LOWER | CHARTYPE_GRAPH), 0x74, 0x54}, |
| // u |
| {(CHARTYPE_LOWER | CHARTYPE_GRAPH), 0x75, 0x55}, |
| // v |
| {(CHARTYPE_LOWER | CHARTYPE_GRAPH), 0x76, 0x56}, |
| // w |
| {(CHARTYPE_LOWER | CHARTYPE_GRAPH), 0x77, 0x57}, |
| // x |
| {(CHARTYPE_LOWER | CHARTYPE_GRAPH), 0x78, 0x58}, |
| // y |
| {(CHARTYPE_LOWER | CHARTYPE_GRAPH), 0x79, 0x59}, |
| // z |
| {(CHARTYPE_LOWER | CHARTYPE_GRAPH), 0x7A, 0x5A}, |
| // { |
| {(CHARTYPE_GRAPH | CHARTYPE_PUNCT), 0x7B, 0x7B}, |
| // | |
| {(CHARTYPE_GRAPH | CHARTYPE_PUNCT), 0x7C, 0x7C}, |
| // } |
| {(CHARTYPE_GRAPH | CHARTYPE_PUNCT), 0x7D, 0x7D}, |
| // ~ |
| {(CHARTYPE_GRAPH | CHARTYPE_PUNCT), 0x7E, 0x7E}, |
| // DEL |
| {(CHARTYPE_CONTROL), 0x7F, 0x7F}, |
| }; |