1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95
|
/* -*- C -*- code produced by gperf version 2.1 (K&R C version) */
/* -- modified jmacd@cs.berkeley.edu */
/* Command-line: jgperf -A -C -a -r -k1,9 -N is_builtin_keyword -H is_builtin_keyword_hash */
#define MIN_WORD_LENGTH 2
#define MAX_WORD_LENGTH 19
#define MIN_HASH_VALUE 4
#define MAX_HASH_VALUE 26
/*
14 keywords
23 is the maximum key range
*/
int
is_builtin_keyword_hash (register const char *str, register int len)
{
static const unsigned char hash_table[] =
{
26, 26, 26, 26, 26, 26, 26, 26, 26, 26,
26, 26, 26, 26, 26, 26, 26, 26, 26, 26,
26, 26, 26, 26, 26, 26, 26, 26, 26, 26,
26, 26, 26, 26, 26, 26, 26, 26, 26, 26,
26, 26, 26, 26, 26, 26, 26, 26, 26, 26,
26, 26, 26, 26, 26, 26, 26, 26, 26, 26,
26, 26, 26, 26, 26, 14, 11, 26, 8, 26,
12, 26, 26, 2, 26, 26, 26, 26, 26, 26,
4, 26, 2, 3, 26, 26, 26, 26, 26, 26,
26, 26, 26, 26, 26, 26, 26, 1, 26, 26,
26, 8, 26, 26, 26, 0, 26, 26, 26, 26,
26, 26, 26, 26, 26, 26, 26, 4, 26, 26,
26, 26, 26, 26, 26, 26, 26, 26,
};
register int hval = len;
switch (hval)
{
default:
case 9:
hval += hash_table[str[8]];
case 8:
case 7:
case 6:
case 5:
case 4:
case 3:
case 2:
case 1:
hval += hash_table[str[0]];
}
return hval ;
}
const char *
is_builtin_keyword (register const char *str, register int len)
{
const char * wordlist[] =
{
"", "", "", "",
"Id",
"", "", "", "",
"Source",
"Revision",
"Project",
"Date",
"", "", "",
"ProjectDate",
"",
"Format",
"Basename",
"Author",
"ProjectAuthor",
"",
"ProjectMinorVersion",
"ProjectMajorVersion",
"ProjectHeader",
"ProjectVersion",
};
if (len <= MAX_WORD_LENGTH && len >= MIN_WORD_LENGTH)
{
register int key = is_builtin_keyword_hash (str, len);
if (key <= MAX_HASH_VALUE && key >= MIN_HASH_VALUE)
{
register const char *s = wordlist[key];
if (*s == *str && !strcmp (str + 1, s + 1))
return s;
}
}
return 0;
}
|