3 * $DragonFly: src/usr.bin/make/hash_tables.c,v 1.1 2005/04/29 23:11:49 okumoto Exp $
4 * auto-generated from /usr/home/okumoto/Work/make/dfly-src/make/parse.c
9 #include "hash_tables.h"
26 static const signed char directive_g
[] = {
27 8, 0, 0, 5, 6, -1, 17, 15, 10, 6,
28 -1, -1, 0, 0, 2, -1, 16, 2, 3, 0,
29 7, -1, -1, -1, 0, 14, -1, -1, 11, 7,
30 -1, -1, 0, -1, 0, 0, 17, 0, -1, 1,
33 static const u_char directive_T0
[] = {
34 26, 14, 19, 35, 10, 34, 18, 27, 1, 17,
35 22, 37, 12, 12, 36, 21, 0, 6, 1, 25,
39 static const u_char directive_T1
[] = {
40 25, 22, 19, 0, 2, 18, 33, 18, 30, 4,
41 30, 9, 21, 19, 16, 12, 35, 34, 4, 19,
47 directive_hash(const u_char
*key
, size_t len
)
50 const u_char
*kp
= key
;
52 if (len
< 2 || len
> 9)
55 for (f0
=f1
=0; kp
< key
+ len
; ++kp
) {
56 if (*kp
< 97 || *kp
> 119)
58 f0
+= directive_T0
[-97 + *kp
];
59 f1
+= directive_T1
[-97 + *kp
];
65 return (directive_g
[f0
] + directive_g
[f1
]) % 19;
82 static const signed char keyword_g
[] = {
83 8, 15, -1, 25, 22, 20, -1, 33, 16, -1,
84 21, 31, 0, 0, 0, 29, 30, 8, -1, 0,
85 -1, 21, -1, 0, -1, -1, -1, -1, -1, 4,
86 -1, -1, 25, 28, -1, 27, 11, 23, 0, 0,
87 24, -1, -1, 0, 3, 0, -1, 24, 0, 0,
88 -1, 28, 12, -1, 20, 13, -1, 5, -1, 1,
89 0, 0, -1, 0, 10, 19, 13, 9, -1, 2,
93 static const u_char keyword_T0
[] = {
94 32, 10, 54, 61, 2, 35, 62, 50, 52, 53,
95 70, 7, 62, 18, 24, 30, 31, 66, 10, 61,
96 52, 71, 56, 56, 28, 6, 33, 67, 12, 41,
97 39, 45, 51, 21, 34, 53, 56, 40, 47, 52,
98 21, 61, 60, 12, 7, 28, 42, 38, 38, 52,
101 static const u_char keyword_T1
[] = {
102 0, 39, 65, 48, 13, 62, 46, 42, 5, 50,
103 69, 69, 69, 43, 2, 46, 12, 6, 11, 9,
104 24, 10, 25, 64, 68, 13, 57, 55, 17, 33,
105 1, 18, 0, 67, 10, 14, 57, 56, 0, 6,
106 50, 13, 3, 47, 56, 22, 37, 13, 28, 48,
111 keyword_hash(const u_char
*key
, size_t len
)
114 const u_char
*kp
= key
;
116 if (len
< 4 || len
> 12)
119 for (f0
=f1
=0; *kp
; ++kp
) {
120 if (*kp
< 46 || *kp
> 95)
122 f0
+= keyword_T0
[-46 + *kp
];
123 f1
+= keyword_T1
[-46 + *kp
];
129 return (keyword_g
[f0
] + keyword_g
[f1
]) % 34;