Annotation of gcc/cp/hash.h, revision 1.1.1.2

1.1       root        1: /* C code produced by gperf version 2.5 (GNU C++ version) */
1.1.1.2 ! root        2: /* Command-line: gperf -p -j1 -g -o -t -N is_reserved_word -k1,4,7,$ ../../../devo/gcc/cp/gxx.gperf  */
1.1       root        3: /* Command-line: gperf -p -j1 -g -o -t -N is_reserved_word -k1,4,$,7 gplus.gperf  */
                      4: struct resword { char *name; short token; enum rid rid;};
                      5: 
1.1.1.2 ! root        6: #define TOTAL_KEYWORDS 97
1.1       root        7: #define MIN_WORD_LENGTH 2
                      8: #define MAX_WORD_LENGTH 16
                      9: #define MIN_HASH_VALUE 4
1.1.1.2 ! root       10: #define MAX_HASH_VALUE 219
        !            11: /* maximum key range = 216, duplicates = 0 */
1.1       root       12: 
                     13: #ifdef __GNUC__
                     14: inline
                     15: #endif
                     16: static unsigned int
                     17: hash (str, len)
                     18:      register char *str;
                     19:      register int unsigned len;
                     20: {
                     21:   static unsigned char asso_values[] =
                     22:     {
1.1.1.2 ! root       23:      220, 220, 220, 220, 220, 220, 220, 220, 220, 220,
        !            24:      220, 220, 220, 220, 220, 220, 220, 220, 220, 220,
        !            25:      220, 220, 220, 220, 220, 220, 220, 220, 220, 220,
        !            26:      220, 220, 220, 220, 220, 220, 220, 220, 220, 220,
        !            27:      220, 220, 220, 220, 220, 220, 220, 220, 220, 220,
        !            28:      220, 220, 220, 220, 220, 220, 220, 220, 220, 220,
        !            29:      220, 220, 220, 220, 220, 220, 220, 220, 220, 220,
        !            30:      220, 220, 220, 220, 220, 220, 220, 220, 220, 220,
        !            31:      220, 220, 220, 220, 220, 220, 220, 220, 220, 220,
        !            32:      220, 220, 220, 220, 220,   0, 220,  88,  16,  19,
        !            33:       52,   0,   9,  72,   1,  77, 220,   0,   0,  38,
        !            34:       13,  44,  38,  30,  27,  57,   1,  14,   0,   2,
        !            35:        2,   7, 220, 220, 220, 220, 220, 220,
1.1       root       36:     };
                     37:   register int hval = len;
                     38: 
                     39:   switch (hval)
                     40:     {
                     41:       default:
                     42:       case 7:
                     43:         hval += asso_values[str[6]];
                     44:       case 6:
                     45:       case 5:
                     46:       case 4:
                     47:         hval += asso_values[str[3]];
                     48:       case 3:
                     49:       case 2:
                     50:       case 1:
                     51:         hval += asso_values[str[0]];
                     52:     }
                     53:   return hval + asso_values[str[len - 1]];
                     54: }
                     55: 
                     56: #ifdef __GNUC__
                     57: inline
                     58: #endif
                     59: struct resword *
                     60: is_reserved_word (str, len)
                     61:      register char *str;
                     62:      register unsigned int len;
                     63: {
                     64:   static struct resword wordlist[] =
                     65:     {
                     66:       {"",}, {"",}, {"",}, {"",}, 
                     67:       {"else",  ELSE, NORID,},
                     68:       {"true",  CXX_TRUE, NORID,},
                     69:       {"",}, 
1.1.1.2 ! root       70:       {"while",  WHILE, NORID,},
        !            71:       {"virtual",  SCSPEC, RID_VIRTUAL,},
        !            72:       {"",}, {"",}, 
1.1       root       73:       {"try",  TRY, NORID,},
                     74:       {"",}, {"",}, {"",}, {"",}, 
1.1.1.2 ! root       75:       {"typeof",  TYPEOF, NORID,},
        !            76:       {"not",  '!', NORID,},
        !            77:       {"new",  NEW, NORID,},
        !            78:       {"extern",  SCSPEC, RID_EXTERN,},
        !            79:       {"bool",  TYPESPEC, RID_BOOL,},
        !            80:       {"",}, {"",}, 
        !            81:       {"case",  CASE, NORID,},
        !            82:       {"__alignof__",  ALIGNOF, NORID},
1.1       root       83:       {"",}, 
1.1.1.2 ! root       84:       {"typedef",  SCSPEC, RID_TYPEDEF,},
        !            85:       {"",}, 
        !            86:       {"__extension__",  EXTENSION, NORID},
        !            87:       {"",}, {"",}, 
        !            88:       {"__alignof",  ALIGNOF, NORID},
        !            89:       {"xor",  '^', NORID,},
1.1       root       90:       {"",}, 
1.1.1.2 ! root       91:       {"__inline",  SCSPEC, RID_INLINE},
1.1       root       92:       {"",}, 
1.1.1.2 ! root       93:       {"__inline__",  SCSPEC, RID_INLINE},
1.1       root       94:       {"",}, 
1.1.1.2 ! root       95:       {"xor_eq",  ASSIGN, NORID,},
        !            96:       {"for",  FOR, NORID,},
        !            97:       {"",}, {"",}, 
        !            98:       {"continue",  CONTINUE, NORID,},
        !            99:       {"",}, 
        !           100:       {"catch",  CATCH, NORID,},
        !           101:       {"private",  VISSPEC, RID_PRIVATE,},
        !           102:       {"",}, 
        !           103:       {"typename",  TYPENAME_KEYWORD, NORID,},
        !           104:       {"template",  TEMPLATE, RID_TEMPLATE,},
        !           105:       {"not_eq",  EQCOMPARE, NORID,},
        !           106:       {"",}, {"",}, 
        !           107:       {"throw",  THROW, NORID,},
        !           108:       {"__const",  TYPE_QUAL, RID_CONST},
1.1       root      109:       {"__const__",  TYPE_QUAL, RID_CONST},
                    110:       {"__volatile",  TYPE_QUAL, RID_VOLATILE},
1.1.1.2 ! root      111:       {"__wchar_t",  TYPESPEC, RID_WCHAR  /* Unique to ANSI C++ */,},
1.1       root      112:       {"__volatile__",  TYPE_QUAL, RID_VOLATILE},
1.1.1.2 ! root      113:       {"delete",  DELETE, NORID,},
        !           114:       {"typeid",  TYPEID, NORID,},
        !           115:       {"return",  RETURN, NORID,},
1.1       root      116:       {"__typeof__",  TYPEOF, NORID},
1.1.1.2 ! root      117:       {"compl",  '~', NORID,},
        !           118:       {"public",  VISSPEC, RID_PUBLIC,},
        !           119:       {"__asm__",  GCC_ASM_KEYWORD, NORID},
        !           120:       {"switch",  SWITCH, NORID,},
        !           121:       {"",}, 
1.1       root      122:       {"friend",  SCSPEC, RID_FRIEND,},
1.1.1.2 ! root      123:       {"__typeof",  TYPEOF, NORID},
        !           124:       {"",}, 
        !           125:       {"static_cast",  STATIC_CAST, NORID,},
1.1       root      126:       {"false",  CXX_FALSE, NORID,},
                    127:       {"sizeof",  SIZEOF, NORID,},
1.1.1.2 ! root      128:       {"or",  OROR, NORID,},
        !           129:       {"double",  TYPESPEC, RID_DOUBLE,},
1.1       root      130:       {"",}, 
1.1.1.2 ! root      131:       {"union",  AGGR, RID_UNION,},
        !           132:       {"char",  TYPESPEC, RID_CHAR,},
        !           133:       {"struct",  AGGR, RID_RECORD,},
        !           134:       {"or_eq",  ASSIGN, NORID,},
        !           135:       {"enum",  ENUM, NORID,},
1.1       root      136:       {"int",  TYPESPEC, RID_INT,},
1.1.1.2 ! root      137:       {"const",  TYPE_QUAL, RID_CONST,},
        !           138:       {"static",  SCSPEC, RID_STATIC,},
        !           139:       {"reinterpret_cast",  REINTERPRET_CAST, NORID,},
        !           140:       {"",}, 
        !           141:       {"explicit",  SCSPEC, RID_EXPLICIT,},
1.1       root      142:       {"__signed__",  TYPESPEC, RID_SIGNED},
1.1.1.2 ! root      143:       {"if",  IF, NORID,},
1.1       root      144:       {"__attribute",  ATTRIBUTE, NORID},
1.1.1.2 ! root      145:       {"short",  TYPESPEC, RID_SHORT,},
1.1       root      146:       {"__attribute__",  ATTRIBUTE, NORID},
1.1.1.2 ! root      147:       {"bitor",  '|', NORID,},
        !           148:       {"signature",  AGGR, RID_SIGNATURE       /* Extension */,},
        !           149:       {"",}, 
        !           150:       {"__sigof__",  SIGOF, NORID              /* Extension */,},
        !           151:       {"volatile",  TYPE_QUAL, RID_VOLATILE,},
1.1       root      152:       {"__label__",  LABEL, NORID},
1.1.1.2 ! root      153:       {"do",  DO, NORID,},
1.1       root      154:       {"",}, 
                    155:       {"__asm",  GCC_ASM_KEYWORD, NORID},
1.1.1.2 ! root      156:       {"protected",  VISSPEC, RID_PROTECTED,},
1.1       root      157:       {"",}, 
                    158:       {"float",  TYPESPEC, RID_FLOAT,},
1.1.1.2 ! root      159:       {"using",  USING, NORID,},
1.1       root      160:       {"",}, 
1.1.1.2 ! root      161:       {"const_cast",  CONST_CAST, NORID,},
1.1       root      162:       {"",}, 
1.1.1.2 ! root      163:       {"void",  TYPESPEC, RID_VOID,},
        !           164:       {"break",  BREAK, NORID,},
        !           165:       {"namespace",  NAMESPACE, NORID,},
        !           166:       {"",}, {"",}, {"",}, {"",}, 
        !           167:       {"sigof",  SIGOF, NORID          /* Extension */,},
        !           168:       {"",}, {"",}, {"",}, 
        !           169:       {"this",  THIS, NORID,},
        !           170:       {"",}, {"",}, {"",}, {"",}, 
        !           171:       {"and_eq",  ASSIGN, NORID,},
        !           172:       {"",}, {"",}, {"",}, 
        !           173:       {"signed",  TYPESPEC, RID_SIGNED,},
1.1       root      174:       {"asm",  ASM_KEYWORD, NORID,},
1.1.1.2 ! root      175:       {"",}, {"",}, {"",}, 
1.1       root      176:       {"mutable",  SCSPEC, RID_MUTABLE,},
1.1.1.2 ! root      177:       {"",}, {"",}, {"",}, 
        !           178:       {"__signed",  TYPESPEC, RID_SIGNED},
        !           179:       {"class",  AGGR, RID_CLASS,},
1.1       root      180:       {"register",  SCSPEC, RID_REGISTER,},
                    181:       {"",}, {"",}, {"",}, 
1.1.1.2 ! root      182:       {"and",  ANDAND, NORID,},
1.1       root      183:       {"",}, {"",}, {"",}, {"",}, 
1.1.1.2 ! root      184:       {"long",  TYPESPEC, RID_LONG,},
        !           185:       {"default",  DEFAULT, NORID,},
        !           186:       {"operator",  OPERATOR, NORID,},
        !           187:       {"unsigned",  TYPESPEC, RID_UNSIGNED,},
1.1       root      188:       {"",}, {"",}, {"",}, {"",}, {"",}, {"",}, {"",}, {"",}, 
1.1.1.2 ! root      189:       {"inline",  SCSPEC, RID_INLINE,},
        !           190:       {"",}, 
        !           191:       {"bitand",  '&', NORID,},
        !           192:       {"",}, 
        !           193:       {"goto",  GOTO, NORID,},
1.1       root      194:       {"",}, {"",}, {"",}, {"",}, {"",}, {"",}, {"",}, 
1.1.1.2 ! root      195:       {"dynamic_cast",  DYNAMIC_CAST, NORID,},
        !           196:       {"",}, {"",}, {"",}, {"",}, {"",}, 
        !           197:       {"__signature__",  AGGR, RID_SIGNATURE   /* Extension */,},
        !           198:       {"",}, 
        !           199:       {"auto",  SCSPEC, RID_AUTO,},
1.1       root      200:       {"",}, {"",}, {"",}, {"",}, {"",}, {"",}, {"",}, {"",}, {"",}, 
                    201:       {"",}, {"",}, {"",}, {"",}, {"",}, {"",}, {"",}, {"",}, {"",}, 
                    202:       {"",}, {"",}, {"",}, {"",}, {"",}, {"",}, {"",}, {"",}, {"",}, 
1.1.1.2 ! root      203:       {"",}, {"",}, {"",}, {"",}, {"",}, {"",}, {"",}, {"",}, {"",}, 
        !           204:       {"",}, {"",}, 
        !           205:       {"overload",  OVERLOAD, NORID,},
1.1       root      206:     };
                    207: 
                    208:   if (len <= MAX_WORD_LENGTH && len >= MIN_WORD_LENGTH)
                    209:     {
                    210:       register int key = hash (str, len);
                    211: 
                    212:       if (key <= MAX_HASH_VALUE && key >= 0)
                    213:         {
                    214:           register char *s = wordlist[key].name;
                    215: 
                    216:           if (*s == *str && !strcmp (str + 1, s + 1))
                    217:             return &wordlist[key];
                    218:         }
                    219:     }
                    220:   return 0;
                    221: }

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.