#include const unsigned char _CTYPE_TABLE[256] = { // Control characters (ASCII 0-31) _CNTRL_MASK, _CNTRL_MASK, _CNTRL_MASK, _CNTRL_MASK, _CNTRL_MASK, _CNTRL_MASK, _CNTRL_MASK, _CNTRL_MASK, // 0-7 _CNTRL_MASK, _CNTRL_MASK, _CNTRL_MASK, _CNTRL_MASK, _CNTRL_MASK, _CNTRL_MASK, _CNTRL_MASK, _CNTRL_MASK, // 8-15 _CNTRL_MASK, _CNTRL_MASK, _CNTRL_MASK, _CNTRL_MASK, _CNTRL_MASK, _CNTRL_MASK, _CNTRL_MASK, _CNTRL_MASK, // 16-23 _CNTRL_MASK, _CNTRL_MASK, _CNTRL_MASK, _CNTRL_MASK, _CNTRL_MASK, _CNTRL_MASK, _CNTRL_MASK, _CNTRL_MASK, // 24-31 // Space (ASCII 32) _SPACE_MASK | _PRINT_MASK, // Punctuation (ASCII 33-47) _PUNCT_MASK | _PRINT_MASK, // '!' (ASCII 33) _PUNCT_MASK | _PRINT_MASK, // '"' (ASCII 34) _PUNCT_MASK | _PRINT_MASK, // '#' (ASCII 35) _PUNCT_MASK | _PRINT_MASK, // '$' (ASCII 36) _PUNCT_MASK | _PRINT_MASK, // '%' (ASCII 37) _PUNCT_MASK | _PRINT_MASK, // '&' (ASCII 38) _PUNCT_MASK | _PRINT_MASK, // '\'' (ASCII 39) _PUNCT_MASK | _PRINT_MASK, // '(' (ASCII 40) _PUNCT_MASK | _PRINT_MASK, // ')' (ASCII 41) _PUNCT_MASK | _PRINT_MASK, // '*' (ASCII 42) _PUNCT_MASK | _PRINT_MASK, // '+' (ASCII 43) _PUNCT_MASK | _PRINT_MASK, // ',' (ASCII 44) _PUNCT_MASK | _PRINT_MASK, // '-' (ASCII 45) _PUNCT_MASK | _PRINT_MASK, // '.' (ASCII 46) _PUNCT_MASK | _PRINT_MASK, // '/' (ASCII 47) // Digits (ASCII 48-57) _DIGIT_MASK | _PRINT_MASK, // '0' (ASCII 48) _DIGIT_MASK | _PRINT_MASK, // '1' (ASCII 49) _DIGIT_MASK | _PRINT_MASK, // '2' (ASCII 50) _DIGIT_MASK | _PRINT_MASK, // '3' (ASCII 51) _DIGIT_MASK | _PRINT_MASK, // '4' (ASCII 52) _DIGIT_MASK | _PRINT_MASK, // '5' (ASCII 53) _DIGIT_MASK | _PRINT_MASK, // '6' (ASCII 54) _DIGIT_MASK | _PRINT_MASK, // '7' (ASCII 55) _DIGIT_MASK | _PRINT_MASK, // '8' (ASCII 56) _DIGIT_MASK | _PRINT_MASK, // '9' (ASCII 57) // Punctuation (ASCII 58-64) _PUNCT_MASK | _PRINT_MASK, // ':' (ASCII 58) _PUNCT_MASK | _PRINT_MASK, // ';' (ASCII 59) _PUNCT_MASK | _PRINT_MASK, // '<' (ASCII 60) _PUNCT_MASK | _PRINT_MASK, // '=' (ASCII 61) _PUNCT_MASK | _PRINT_MASK, // '>' (ASCII 62) _PUNCT_MASK | _PRINT_MASK, // '?' (ASCII 63) _PUNCT_MASK | _PRINT_MASK, // '@' (ASCII 64) // Upperchase letters (ASCII 65-90) _ALPHA_MASK | _PRINT_MASK, // 'A' (ASCII 65) _ALPHA_MASK | _PRINT_MASK, // 'B' (ASCII 66) _ALPHA_MASK | _PRINT_MASK, // 'C' (ASCII 67) _ALPHA_MASK | _PRINT_MASK, // 'D' (ASCII 68) _ALPHA_MASK | _PRINT_MASK, // 'E' (ASCII 69) _ALPHA_MASK | _PRINT_MASK, // 'F' (ASCII 70) _ALPHA_MASK | _PRINT_MASK, // 'G' (ASCII 71) _ALPHA_MASK | _PRINT_MASK, // 'H' (ASCII 72) _ALPHA_MASK | _PRINT_MASK, // 'I' (ASCII 73) _ALPHA_MASK | _PRINT_MASK, // 'J' (ASCII 74) _ALPHA_MASK | _PRINT_MASK, // 'K' (ASCII 75) _ALPHA_MASK | _PRINT_MASK, // 'L' (ASCII 76) _ALPHA_MASK | _PRINT_MASK, // 'M' (ASCII 77) _ALPHA_MASK | _PRINT_MASK, // 'N' (ASCII 78) _ALPHA_MASK | _PRINT_MASK, // 'O' (ASCII 79) _ALPHA_MASK | _PRINT_MASK, // 'P' (ASCII 80) _ALPHA_MASK | _PRINT_MASK, // 'Q' (ASCII 81) _ALPHA_MASK | _PRINT_MASK, // 'R' (ASCII 82) _ALPHA_MASK | _PRINT_MASK, // 'S' (ASCII 83) _ALPHA_MASK | _PRINT_MASK, // 'T' (ASCII 84) _ALPHA_MASK | _PRINT_MASK, // 'U' (ASCII 85) _ALPHA_MASK | _PRINT_MASK, // 'V' (ASCII 86) _ALPHA_MASK | _PRINT_MASK, // 'W' (ASCII 87) _ALPHA_MASK | _PRINT_MASK, // 'X' (ASCII 88) _ALPHA_MASK | _PRINT_MASK, // 'Y' (ASCII 89) _ALPHA_MASK | _PRINT_MASK, // 'Z' (ASCII 90) // Punctuation (ASCII 91-96) _PUNCT_MASK | _PRINT_MASK, // '[' (ASCII 91) _PUNCT_MASK | _PRINT_MASK, // '\' (ASCII 92) _PUNCT_MASK | _PRINT_MASK, // ']' (ASCII 93) _PUNCT_MASK | _PRINT_MASK, // '^' (ASCII 94) _PUNCT_MASK | _PRINT_MASK, // '_' (ASCII 95) _PUNCT_MASK | _PRINT_MASK, // '`' (ASCII 96) // Lowercase letters (ASCII 97-122) _ALPHA_MASK | _LOWER_MASK | _PRINT_MASK, // 'a' (ASCII 97) _ALPHA_MASK | _LOWER_MASK | _PRINT_MASK, // 'b' (ASCII 98) _ALPHA_MASK | _LOWER_MASK | _PRINT_MASK, // 'c' (ASCII 99) _ALPHA_MASK | _LOWER_MASK | _PRINT_MASK, // 'd' (ASCII 100) _ALPHA_MASK | _LOWER_MASK | _PRINT_MASK, // 'e' (ASCII 101) _ALPHA_MASK | _LOWER_MASK | _PRINT_MASK, // 'f' (ASCII 102) _ALPHA_MASK | _LOWER_MASK | _PRINT_MASK, // 'g' (ASCII 103) _ALPHA_MASK | _LOWER_MASK | _PRINT_MASK, // 'h' (ASCII 104) _ALPHA_MASK | _LOWER_MASK | _PRINT_MASK, // 'i' (ASCII 105) _ALPHA_MASK | _LOWER_MASK | _PRINT_MASK, // 'j' (ASCII 106) _ALPHA_MASK | _LOWER_MASK | _PRINT_MASK, // 'k' (ASCII 107) _ALPHA_MASK | _LOWER_MASK | _PRINT_MASK, // 'l' (ASCII 108) _ALPHA_MASK | _LOWER_MASK | _PRINT_MASK, // 'm' (ASCII 109) _ALPHA_MASK | _LOWER_MASK | _PRINT_MASK, // 'n' (ASCII 110) _ALPHA_MASK | _LOWER_MASK | _PRINT_MASK, // 'o' (ASCII 111) _ALPHA_MASK | _LOWER_MASK | _PRINT_MASK, // 'p' (ASCII 112) _ALPHA_MASK | _LOWER_MASK | _PRINT_MASK, // 'q' (ASCII 113) _ALPHA_MASK | _LOWER_MASK | _PRINT_MASK, // 'r' (ASCII 114) _ALPHA_MASK | _LOWER_MASK | _PRINT_MASK, // 's' (ASCII 115) _ALPHA_MASK | _LOWER_MASK | _PRINT_MASK, // 't' (ASCII 116) _ALPHA_MASK | _LOWER_MASK | _PRINT_MASK, // 'u' (ASCII 117) _ALPHA_MASK | _LOWER_MASK | _PRINT_MASK, // 'v' (ASCII 118) _ALPHA_MASK | _LOWER_MASK | _PRINT_MASK, // 'w' (ASCII 119) _ALPHA_MASK | _LOWER_MASK | _PRINT_MASK, // 'x' (ASCII 120) _ALPHA_MASK | _LOWER_MASK | _PRINT_MASK, // 'y' (ASCII 121) _ALPHA_MASK | _LOWER_MASK | _PRINT_MASK, // 'z' (ASCII 122) // Punctuation (ASCII 123-126 _PUNCT_MASK | _PRINT_MASK, // '{' (ASCII 123) _PUNCT_MASK | _PRINT_MASK, // '|' (ASCII 124) _PUNCT_MASK | _PRINT_MASK, // '}' (ASCII 125) _PUNCT_MASK | _PRINT_MASK, // '~' (ASCII 126) // Control character (ASCII 127) _CNTRL_MASK // DEL (ASCII 127) };