hash_tables.c revision 145971
1145683Sharti/*
2145683Sharti * DO NOT EDIT
3145683Sharti * $FreeBSD: head/usr.bin/make/hash_tables.c 145971 2005-05-06 18:30:06Z harti $
4145971Sharti * auto-generated from FreeBSD: src/usr.bin/make/parse.c,v 1.100 2005/04/29 15:15:28 harti Exp
5145683Sharti * DO NOT EDIT
6145683Sharti */
7145683Sharti#include <sys/types.h>
8145683Sharti
9145683Sharti#include "hash_tables.h"
10145683Sharti
11145683Sharti/*
12145683Sharti * d=2
13145683Sharti * n=38
14145683Sharti * m=18
15145683Sharti * c=2.09
16145683Sharti * maxlen=1
17145683Sharti * minklen=2
18145683Sharti * maxklen=9
19145683Sharti * minchar=97
20145683Sharti * maxchar=119
21145683Sharti * loop=0
22145683Sharti * numiter=2
23145683Sharti * seed=
24145683Sharti */
25145683Sharti
26145683Shartistatic const signed char directive_g[] = {
27145683Sharti	16, 0, -1, 14, 5, 2, 2, -1, 0, 0,
28145683Sharti	-1, -1, 16, 11, -1, 15, -1, 14, 7, -1,
29145683Sharti	8, 6, 1, -1, -1, 0, 4, 6, -1, 0,
30145683Sharti	0, 2, 0, 13, -1, 14, -1, 0,
31145683Sharti};
32145683Sharti
33145683Shartistatic const u_char directive_T0[] = {
34145683Sharti	11, 25, 14, 30, 14, 26, 23, 15, 9, 37,
35145683Sharti	27, 32, 27, 1, 17, 27, 35, 13, 8, 22,
36145683Sharti	8, 28, 7,
37145683Sharti};
38145683Sharti
39145683Shartistatic const u_char directive_T1[] = {
40145683Sharti	19, 20, 31, 17, 29, 2, 7, 12, 1, 31,
41145683Sharti	11, 18, 11, 20, 10, 2, 15, 19, 4, 10,
42145683Sharti	13, 36, 3,
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
62145683Sharti	f0 %= 38;
63145683Sharti	f1 %= 38;
64145683Sharti
65145683Sharti	return (directive_g[f0] + directive_g[f1]) % 18;
66145683Sharti}
67145683Sharti/*
68145683Sharti * d=2
69145971Sharti * n=72
70145971Sharti * m=34
71145683Sharti * c=2.09
72145683Sharti * maxlen=1
73145683Sharti * minklen=4
74145683Sharti * maxklen=12
75145683Sharti * minchar=46
76145683Sharti * maxchar=95
77145683Sharti * loop=0
78145971Sharti * numiter=4
79145683Sharti * seed=
80145683Sharti */
81145683Sharti
82145683Shartistatic const signed char keyword_g[] = {
83145971Sharti	8, 15, -1, 25, 22, 20, -1, 33, 16, -1,
84145971Sharti	21, 31, 0, 0, 0, 29, 30, 8, -1, 0,
85145971Sharti	-1, 21, -1, 0, -1, -1, -1, -1, -1, 4,
86145971Sharti	-1, -1, 25, 28, -1, 27, 11, 23, 0, 0,
87145971Sharti	24, -1, -1, 0, 3, 0, -1, 24, 0, 0,
88145971Sharti	-1, 28, 12, -1, 20, 13, -1, 5, -1, 1,
89145971Sharti	0, 0, -1, 0, 10, 19, 13, 9, -1, 2,
90145971Sharti	-1, -1,
91145683Sharti};
92145683Sharti
93145683Shartistatic const u_char keyword_T0[] = {
94145971Sharti	32, 10, 54, 61, 2, 35, 62, 50, 52, 53,
95145971Sharti	70, 7, 62, 18, 24, 30, 31, 66, 10, 61,
96145971Sharti	52, 71, 56, 56, 28, 6, 33, 67, 12, 41,
97145971Sharti	39, 45, 51, 21, 34, 53, 56, 40, 47, 52,
98145971Sharti	21, 61, 60, 12, 7, 28, 42, 38, 38, 52,
99145683Sharti};
100145683Sharti
101145683Shartistatic const u_char keyword_T1[] = {
102145971Sharti	0, 39, 65, 48, 13, 62, 46, 42, 5, 50,
103145971Sharti	69, 69, 69, 43, 2, 46, 12, 6, 11, 9,
104145971Sharti	24, 10, 25, 64, 68, 13, 57, 55, 17, 33,
105145971Sharti	1, 18, 0, 67, 10, 14, 57, 56, 0, 6,
106145971Sharti	50, 13, 3, 47, 56, 22, 37, 13, 28, 48,
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
116145683Sharti	if (len < 4 || len > 12)
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
126145971Sharti	f0 %= 72;
127145971Sharti	f1 %= 72;
128145683Sharti
129145971Sharti	return (keyword_g[f0] + keyword_g[f1]) % 34;
130145683Sharti}
131