1 /* $NetBSD: ag-char-map.h,v 1.1.1.1 2009/12/13 16:57:15 kardel Exp $ */ 2 3 /* 4 * Character mapping generated 11/08/09 08:41:19 5 * 6 * This file contains the character classifications 7 * used by AutoGen and AutoOpts for identifying tokens. 8 */ 9 #ifndef AG_CHAR_MAP_H_GUARD 10 #define AG_CHAR_MAP_H_GUARD 1 11 12 #ifdef HAVE_CONFIG_H 13 # if defined(HAVE_INTTYPES_H) 14 # include <inttypes.h> 15 # elif defined(HAVE_STDINT_H) 16 # include <stdint.h> 17 18 # else 19 # ifndef HAVE_INT8_T 20 typedef signed char int8_t; 21 # endif 22 # ifndef HAVE_UINT8_T 23 typedef unsigned char uint8_t; 24 # endif 25 # ifndef HAVE_INT16_T 26 typedef signed short int16_t; 27 # endif 28 # ifndef HAVE_UINT16_T 29 typedef unsigned short uint16_t; 30 # endif 31 # ifndef HAVE_UINT_T 32 typedef unsigned int uint_t; 33 # endif 34 35 # ifndef HAVE_INT32_T 36 # if SIZEOF_INT == 4 37 typedef signed int int32_t; 38 # elif SIZEOF_LONG == 4 39 typedef signed long int32_t; 40 # endif 41 # endif 42 43 # ifndef HAVE_UINT32_T 44 # if SIZEOF_INT == 4 45 typedef unsigned int uint32_t; 46 # elif SIZEOF_LONG == 4 47 typedef unsigned long uint32_t; 48 # endif 49 # endif 50 # endif /* HAVE_*INT*_H header */ 51 52 #else /* not HAVE_CONFIG_H -- */ 53 # ifdef __sun 54 # include <inttypes.h> 55 # else 56 # include <stdint.h> 57 # endif 58 #endif /* HAVE_CONFIG_H */ 59 60 #if 0 /* mapping specification source (from autogen.map) */ 61 // 62 // %guard autoopts_internal 63 // %file ag-char-map.h 64 // %table opt-char-cat 65 // 66 // %comment 67 // This file contains the character classifications 68 // used by AutoGen and AutoOpts for identifying tokens. 69 // % 70 // 71 // lower-case "a-z" 72 // upper-case "A-Z" 73 // alphabetic +lower-case +upper-case 74 // oct-digit "0-7" 75 // dec-digit "89" +oct-digit 76 // hex-digit "a-fA-F" +dec-digit 77 // alphanumeric +alphabetic +dec-digit 78 // var-first "_" +alphabetic 79 // variable-name +var-first +dec-digit 80 // option-name "^-" +variable-name 81 // value-name ":" +option-name 82 // horiz-white "\t " 83 // compound-name "[.]" +value-name +horiz-white 84 // whitespace "\v\f\r\n\b" +horiz-white 85 // unquotable "!-~" -"\"#(),;<=>[\\]`{}?*'" 86 // end-xml-token "/>" +whitespace 87 // graphic "!-~" 88 // plus-n-space "+" +whitespace 89 // punctuation "!-~" -alphanumeric -"_" 90 // suffix "-._" +alphanumeric 91 // suffix-fmt "%/" +suffix 92 // false-type "nNfF0\x00" 93 // 94 #endif /* 0 -- mapping spec. source */ 95 96 typedef uint32_t opt_char_cat_mask_t; 97 extern opt_char_cat_mask_t const opt_char_cat[128]; 98 99 static inline int is_opt_char_cat_char(char ch, opt_char_cat_mask_t mask) { 100 unsigned int ix = (unsigned char)ch; 101 return ((ix < 0x7F) && ((opt_char_cat[ix] & mask) != 0)); } 102 103 #define IS_LOWER_CASE_CHAR(_c) is_opt_char_cat_char((_c), 0x00001) 104 #define IS_UPPER_CASE_CHAR(_c) is_opt_char_cat_char((_c), 0x00002) 105 #define IS_ALPHABETIC_CHAR(_c) is_opt_char_cat_char((_c), 0x00003) 106 #define IS_OCT_DIGIT_CHAR(_c) is_opt_char_cat_char((_c), 0x00004) 107 #define IS_DEC_DIGIT_CHAR(_c) is_opt_char_cat_char((_c), 0x0000C) 108 #define IS_HEX_DIGIT_CHAR(_c) is_opt_char_cat_char((_c), 0x0001C) 109 #define IS_ALPHANUMERIC_CHAR(_c) is_opt_char_cat_char((_c), 0x0000F) 110 #define IS_VAR_FIRST_CHAR(_c) is_opt_char_cat_char((_c), 0x00023) 111 #define IS_VARIABLE_NAME_CHAR(_c) is_opt_char_cat_char((_c), 0x0002F) 112 #define IS_OPTION_NAME_CHAR(_c) is_opt_char_cat_char((_c), 0x0006F) 113 #define IS_VALUE_NAME_CHAR(_c) is_opt_char_cat_char((_c), 0x000EF) 114 #define IS_HORIZ_WHITE_CHAR(_c) is_opt_char_cat_char((_c), 0x00100) 115 #define IS_COMPOUND_NAME_CHAR(_c) is_opt_char_cat_char((_c), 0x003EF) 116 #define IS_WHITESPACE_CHAR(_c) is_opt_char_cat_char((_c), 0x00500) 117 #define IS_UNQUOTABLE_CHAR(_c) is_opt_char_cat_char((_c), 0x00800) 118 #define IS_END_XML_TOKEN_CHAR(_c) is_opt_char_cat_char((_c), 0x01500) 119 #define IS_GRAPHIC_CHAR(_c) is_opt_char_cat_char((_c), 0x02000) 120 #define IS_PLUS_N_SPACE_CHAR(_c) is_opt_char_cat_char((_c), 0x04500) 121 #define IS_PUNCTUATION_CHAR(_c) is_opt_char_cat_char((_c), 0x08000) 122 #define IS_SUFFIX_CHAR(_c) is_opt_char_cat_char((_c), 0x1000F) 123 #define IS_SUFFIX_FMT_CHAR(_c) is_opt_char_cat_char((_c), 0x3000F) 124 #define IS_FALSE_TYPE_CHAR(_c) is_opt_char_cat_char((_c), 0x40000) 125 126 #ifdef AUTOOPTS_INTERNAL 127 opt_char_cat_mask_t const opt_char_cat[128] = { 128 /*x00*/ 0x40000, /*x01*/ 0x00000, /*x02*/ 0x00000, /*x03*/ 0x00000, 129 /*x04*/ 0x00000, /*x05*/ 0x00000, /*x06*/ 0x00000, /*\a */ 0x00000, 130 /*\b */ 0x00400, /*\t */ 0x00100, /*\n */ 0x00400, /*\v */ 0x00400, 131 /*\f */ 0x00400, /*\r */ 0x00400, /*x0E*/ 0x00000, /*x0F*/ 0x00000, 132 /*x10*/ 0x00000, /*x11*/ 0x00000, /*x12*/ 0x00000, /*x13*/ 0x00000, 133 /*x14*/ 0x00000, /*x15*/ 0x00000, /*x16*/ 0x00000, /*x17*/ 0x00000, 134 /*x18*/ 0x00000, /*x19*/ 0x00000, /*x1A*/ 0x00000, /*x1B*/ 0x00000, 135 /*x1C*/ 0x00000, /*x1D*/ 0x00000, /*x1E*/ 0x00000, /*x1F*/ 0x00000, 136 /* */ 0x00100, /* ! */ 0x0A800, /* " */ 0x0A000, /* # */ 0x0A000, 137 /* $ */ 0x0A800, /* % */ 0x2A800, /* & */ 0x0A800, /* ' */ 0x0A000, 138 /* ( */ 0x0A000, /* ) */ 0x0A000, /* * */ 0x0A000, /* + */ 0x0E800, 139 /* , */ 0x0A000, /* - */ 0x1A840, /* . */ 0x1AA00, /* / */ 0x2B800, 140 /* 0 */ 0x42804, /* 1 */ 0x02804, /* 2 */ 0x02804, /* 3 */ 0x02804, 141 /* 4 */ 0x02804, /* 5 */ 0x02804, /* 6 */ 0x02804, /* 7 */ 0x02804, 142 /* 8 */ 0x02808, /* 9 */ 0x02808, /* : */ 0x0A880, /* ; */ 0x0A000, 143 /* < */ 0x0A000, /* = */ 0x0A000, /* > */ 0x0B000, /* ? */ 0x0A000, 144 /* @ */ 0x0A800, /* A */ 0x02812, /* B */ 0x02812, /* C */ 0x02812, 145 /* D */ 0x02812, /* E */ 0x02812, /* F */ 0x42812, /* G */ 0x02802, 146 /* H */ 0x02802, /* I */ 0x02802, /* J */ 0x02802, /* K */ 0x02802, 147 /* L */ 0x02802, /* M */ 0x02802, /* N */ 0x42802, /* O */ 0x02802, 148 /* P */ 0x02802, /* Q */ 0x02802, /* R */ 0x02802, /* S */ 0x02802, 149 /* T */ 0x02802, /* U */ 0x02802, /* V */ 0x02802, /* W */ 0x02802, 150 /* X */ 0x02802, /* Y */ 0x02802, /* Z */ 0x02802, /* [ */ 0x0A200, 151 /* \ */ 0x0A000, /* ] */ 0x0A200, /* ^ */ 0x0A840, /* _ */ 0x12820, 152 /* ` */ 0x0A000, /* a */ 0x02811, /* b */ 0x02811, /* c */ 0x02811, 153 /* d */ 0x02811, /* e */ 0x02811, /* f */ 0x42811, /* g */ 0x02801, 154 /* h */ 0x02801, /* i */ 0x02801, /* j */ 0x02801, /* k */ 0x02801, 155 /* l */ 0x02801, /* m */ 0x02801, /* n */ 0x42801, /* o */ 0x02801, 156 /* p */ 0x02801, /* q */ 0x02801, /* r */ 0x02801, /* s */ 0x02801, 157 /* t */ 0x02801, /* u */ 0x02801, /* v */ 0x02801, /* w */ 0x02801, 158 /* x */ 0x02801, /* y */ 0x02801, /* z */ 0x02801, /* { */ 0x0A000, 159 /* | */ 0x0A800, /* } */ 0x0A000, /* ~ */ 0x0A800, /*x7F*/ 0x00000 160 }; 161 #endif /* AUTOOPTS_INTERNAL */ 162 #endif /* AG_CHAR_MAP_H_GUARD */ 163