1145683Sharti/*
2145683Sharti * DO NOT EDIT
3145683Sharti * $FreeBSD$
4177102Sobrien * auto-generated from FreeBSD: src/usr.bin/make/parse.c,v 1.114 2008/03/12 14:50:58 obrien Exp
5145683Sharti * DO NOT EDIT
6145683Sharti */
7145683Sharti#include <sys/types.h>
8145683Sharti
9145683Sharti#include "hash_tables.h"
10145683Sharti
11145683Sharti/*
12145683Sharti * d=2
13150595Sphk * n=40
14150595Sphk * m=19
15145683Sharti * c=2.09
16145683Sharti * maxlen=1
17145683Sharti * minklen=2
18145683Sharti * maxklen=9
19145683Sharti * minchar=97
20145683Sharti * maxchar=119
21145683Sharti * loop=0
22150595Sphk * numiter=1
23145683Sharti * seed=
24145683Sharti */
25145683Sharti
26145683Shartistatic const signed char directive_g[] = {
27150595Sphk	8, 0, 0, 5, 6, -1, 17, 15, 10, 6,
28150595Sphk	-1, -1, 10, 0, 0, -1, 18, 2, 3, 0,
29150595Sphk	7, -1, -1, -1, 0, 14, -1, -1, 11, 16,
30150595Sphk	-1, -1, 0, -1, 0, 0, 17, 0, -1, 1,
31145683Sharti};
32145683Sharti
33145683Shartistatic const u_char directive_T0[] = {
34150595Sphk	26, 14, 19, 35, 10, 34, 18, 27, 1, 17,
35150595Sphk	22, 37, 12, 12, 36, 21, 0, 6, 1, 25,
36150595Sphk	9, 4, 19,
37145683Sharti};
38145683Sharti
39145683Shartistatic const u_char directive_T1[] = {
40150595Sphk	25, 22, 19, 0, 2, 18, 33, 18, 30, 4,
41150595Sphk	30, 9, 21, 19, 16, 12, 35, 34, 4, 19,
42150595Sphk	9, 33, 16,
43145683Sharti};
44145683Sharti
45145683Sharti
46145683Shartiint
47145683Shartidirective_hash(const u_char *key, size_t len)
48145683Sharti{
49145683Sharti	unsigned f0, f1;
50145683Sharti	const u_char *kp = key;
51145683Sharti
52145683Sharti	if (len < 2 || len > 9)
53145683Sharti		return -1;
54145683Sharti
55145683Sharti	for (f0=f1=0; kp < key + len; ++kp) {
56145683Sharti		if (*kp < 97 || *kp > 119)
57145683Sharti			return -1;
58145683Sharti		f0 += directive_T0[-97 + *kp];
59145683Sharti		f1 += directive_T1[-97 + *kp];
60145683Sharti	}
61145683Sharti
62150595Sphk	f0 %= 40;
63150595Sphk	f1 %= 40;
64145683Sharti
65150595Sphk	return (directive_g[f0] + directive_g[f1]) % 19;
66145683Sharti}
67145683Sharti/*
68145683Sharti * d=2
69177102Sobrien * n=74
70177102Sobrien * m=35
71145683Sharti * c=2.09
72145683Sharti * maxlen=1
73145683Sharti * minklen=4
74177102Sobrien * maxklen=13
75145683Sharti * minchar=46
76145683Sharti * maxchar=95
77145683Sharti * loop=0
78145971Sharti * numiter=4
79145683Sharti * seed=
80145683Sharti */
81145683Sharti
82145683Shartistatic const signed char keyword_g[] = {
83177102Sobrien	12, 18, 7, 25, 30, 5, -1, -1, -1, 7,
84177102Sobrien	-1, 0, 33, 0, 4, -1, -1, 13, 29, 0,
85177102Sobrien	-1, 28, -1, 28, -1, 0, -1, 27, 4, 34,
86177102Sobrien	-1, -1, -1, 30, 13, 10, -1, -1, 0, 10,
87177102Sobrien	24, -1, -1, -1, 0, 6, 0, 0, -1, 23,
88177102Sobrien	-1, -1, -1, 0, -1, 23, -1, -1, 19, 4,
89177102Sobrien	-1, 31, 12, 16, -1, 20, 22, 9, 0, -1,
90177102Sobrien	-1, 9, 4, 0,
91145683Sharti};
92145683Sharti
93145683Shartistatic const u_char keyword_T0[] = {
94177102Sobrien	34, 28, 50, 61, 14, 57, 48, 60, 20, 67,
95177102Sobrien	60, 63, 0, 24, 28, 2, 49, 64, 18, 23,
96177102Sobrien	36, 33, 40, 14, 38, 42, 71, 49, 2, 53,
97177102Sobrien	53, 37, 7, 29, 24, 21, 12, 50, 59, 10,
98177102Sobrien	43, 23, 0, 44, 47, 6, 46, 22, 48, 64,
99145683Sharti};
100145683Sharti
101145683Shartistatic const u_char keyword_T1[] = {
102177102Sobrien	18, 67, 39, 60, 7, 70, 2, 26, 31, 18,
103177102Sobrien	73, 47, 61, 17, 38, 50, 22, 52, 13, 55,
104177102Sobrien	56, 32, 63, 4, 64, 55, 49, 21, 47, 67,
105177102Sobrien	33, 66, 60, 73, 30, 68, 69, 32, 72, 4,
106177102Sobrien	28, 49, 51, 15, 66, 68, 43, 67, 46, 56,
107145683Sharti};
108145683Sharti
109145683Sharti
110145683Shartiint
111145683Shartikeyword_hash(const u_char *key, size_t len)
112145683Sharti{
113145683Sharti	unsigned f0, f1;
114145683Sharti	const u_char *kp = key;
115145683Sharti
116177102Sobrien	if (len < 4 || len > 13)
117145683Sharti		return -1;
118145683Sharti
119145683Sharti	for (f0=f1=0; *kp; ++kp) {
120145683Sharti		if (*kp < 46 || *kp > 95)
121145683Sharti			return -1;
122145683Sharti		f0 += keyword_T0[-46 + *kp];
123145683Sharti		f1 += keyword_T1[-46 + *kp];
124145683Sharti	}
125145683Sharti
126177102Sobrien	f0 %= 74;
127177102Sobrien	f1 %= 74;
128145683Sharti
129177102Sobrien	return (keyword_g[f0] + keyword_g[f1]) % 35;
130145683Sharti}
131