Commit | Line | Data |
---|---|---|
2958d0fe | 1 | #ifndef lint |
280efb10 | 2 | static char sccsid[] = "@(#)nhash.c 4.2 (Berkeley) 82/11/06"; |
2958d0fe RH |
3 | #endif not lint |
4 | ||
5 | struct dict { | |
6 | char *entry; | |
7 | char val; | |
8 | }; | |
9 | extern struct dict ary_d[], cy_d[], ery_d[], fy_d[],gy_d[]; | |
10 | extern struct dict ity_d[],ly_d[],ory_d[],ry_d[],ty_d[]; | |
11 | extern struct dict dict[]; | |
12 | char aahash(); | |
13 | char lookup(); | |
14 | char ary(); | |
15 | char cy(); | |
16 | char ery(); | |
17 | char fy(); | |
18 | char gy(); | |
19 | char ity(); | |
20 | char ly(); | |
21 | char ory(); | |
22 | char ry(); | |
23 | char ty(); | |
24 | ||
25 | struct hnode { | |
26 | char *aakey; | |
27 | struct dict *aadata; | |
28 | }; | |
29 | char | |
30 | aahash(s,ex,aatsize,aapr1,aapr2,tbl,data) | |
31 | char *s; | |
32 | struct hnode tbl[]; | |
33 | struct dict *data; | |
34 | { | |
35 | char *cp; | |
36 | int ii, key, c, p1, p2; | |
37 | cp = s; | |
38 | key =0; | |
39 | while (c = *cp++) | |
40 | key = key + (key<<5) + c; | |
41 | key &= 077777; | |
42 | p1 = key%aapr1; | |
43 | p2 = key%aapr2; | |
44 | if (p2==0) p2=17; | |
45 | for(ii=0; ii<aatsize; ii++) | |
46 | { | |
47 | if (tbl[p1].aakey==0) | |
48 | { /* new item */ | |
49 | if (ex ==0) | |
50 | { | |
51 | tbl[p1].aakey = s; | |
52 | tbl[p1].aadata= data; | |
53 | return(tbl[p1].aadata->val); | |
54 | } | |
55 | else | |
56 | return(0); | |
57 | } | |
58 | else | |
59 | if(strcmp(tbl[p1].aakey, s)== 0) | |
60 | { | |
61 | return(tbl[p1].aadata->val); | |
62 | } | |
63 | p1 = (p1+p2)%aatsize; | |
64 | } | |
65 | fprintf(stderr, "hash table full\n"); | |
66 | exit(); | |
67 | } | |
68 | getd(){ | |
69 | struct dict *ptr; | |
70 | ptr = dict; | |
71 | while(ptr->entry != 0){ | |
72 | lookup(ptr->entry,0,ptr); | |
73 | ptr++; | |
74 | } | |
75 | } | |
76 | ||
77 | struct hnode aa1root[463]; | |
78 | #define aa1tsize 463 | |
79 | #define aa1p1 457 | |
80 | #define aa1p2 461 | |
81 | char | |
82 | lookup(a0,a1,ptr) | |
83 | char *a0; | |
84 | struct dict *ptr; | |
85 | { | |
86 | return(aahash(a0,a1,aa1tsize,aa1p1,aa1p2,aa1root,ptr)); | |
87 | } | |
88 | struct hnode aa6root[113]; | |
89 | #define aa6tsize 113 | |
90 | #define aa6p1 107 | |
91 | #define aa6p2 109 | |
92 | char | |
93 | ary(a0,a1,ptr) | |
94 | char *a0; | |
95 | struct dict *ptr; | |
96 | { | |
97 | return(aahash(a0,a1,aa6tsize,aa6p1,aa6p2,aa6root,ptr)); | |
98 | } | |
99 | struct hnode aa9root[13]; | |
100 | #define aa9tsize 13 | |
101 | #define aa9p1 7 | |
102 | #define aa9p2 1 | |
103 | char | |
104 | cy(a0,a1,ptr) | |
105 | char *a0; | |
106 | struct dict *ptr; | |
107 | { | |
108 | return(aahash(a0,a1,aa9tsize,aa9p1,aa9p2,aa9root,ptr)); | |
109 | } | |
110 | struct hnode aa12root[59]; | |
111 | #define aa12tsize 59 | |
112 | #define aa12p1 47 | |
113 | #define aa12p2 43 | |
114 | char | |
115 | ery(a0,a1,ptr) | |
116 | char *a0; | |
117 | struct dict *ptr; | |
118 | { | |
119 | return(aahash(a0,a1,aa12tsize,aa12p1,aa12p2,aa12root,ptr)); | |
120 | } | |
121 | struct hnode aa16root[23]; | |
122 | #define aa16tsize 23 | |
123 | #define aa16p1 17 | |
124 | #define aa16p2 19 | |
125 | char | |
126 | fy(a0,a1,ptr) | |
127 | char *a0; | |
128 | struct dict *ptr; | |
129 | { | |
130 | return(aahash(a0,a1,aa16tsize,aa16p1,aa16p2,aa16root,ptr)); | |
131 | } | |
132 | struct hnode aa17root[29]; | |
133 | #define aa17tsize 29 | |
134 | #define aa17p1 19 | |
135 | #define aa17p2 23 | |
136 | char | |
137 | gy(a0,a1,ptr) | |
138 | char *a0; | |
139 | struct dict *ptr; | |
140 | { | |
141 | return(aahash(a0,a1,aa17tsize,aa17p1,aa17p2,aa17root,ptr)); | |
142 | } | |
143 | struct hnode aa27root[11]; | |
144 | #define aa27tsize 11 | |
145 | #define aa27p1 5 | |
146 | #define aa27p2 7 | |
147 | char | |
148 | ity(a0,a1,ptr) | |
149 | char *a0; | |
150 | struct dict *ptr; | |
151 | { | |
152 | return(aahash(a0,a1,aa27tsize,aa27p1,aa27p2,aa27root,ptr)); | |
153 | } | |
154 | struct hnode aa32root[281]; | |
155 | #define aa32tsize 281 | |
156 | #define aa32p1 271 | |
157 | #define aa32p2 277 | |
158 | char | |
159 | ly(a0,a1,ptr) | |
160 | char *a0; | |
161 | struct dict *ptr; | |
162 | { | |
163 | return(aahash(a0,a1,aa32tsize,aa32p1,aa32p2,aa32root,ptr)); | |
164 | } | |
165 | struct hnode aa36root[59]; | |
166 | #define aa36tsize 59 | |
167 | #define aa36p1 47 | |
168 | #define aa36p2 43 | |
169 | char | |
170 | ory(a0,a1,ptr) | |
171 | char *a0; | |
172 | struct dict *ptr; | |
173 | { | |
174 | return(aahash(a0,a1,aa36tsize,aa36p1,aa36p2,aa36root,ptr)); | |
175 | } | |
176 | struct hnode aa38root[59]; | |
177 | #define aa38tsize 59 | |
178 | #define aa38p1 47 | |
179 | #define aa38p2 53 | |
180 | char | |
181 | ry(a0,a1,ptr) | |
182 | char *a0; | |
183 | struct dict *ptr; | |
184 | { | |
185 | return(aahash(a0,a1,aa38tsize,aa38p1,aa38p2,aa38root,ptr)); | |
186 | } | |
187 | struct hnode aa41root[127]; | |
188 | #define aa41tsize 127 | |
189 | #define aa41p1 109 | |
190 | #define aa41p2 113 | |
191 | char | |
192 | ty(a0,a1,ptr) | |
193 | char *a0; | |
194 | struct dict *ptr; | |
195 | { | |
196 | return(aahash(a0,a1,aa41tsize,aa41p1,aa41p2,aa41root,ptr)); | |
197 | } | |
198 | struct fandd { | |
199 | char (*fun)(); | |
200 | struct dict *yd; | |
201 | } arr[] = { | |
202 | ary, ary_d, | |
203 | cy, cy_d, | |
204 | ery, ery_d, | |
205 | fy, fy_d, | |
206 | gy, gy_d, | |
207 | ity, ity_d, | |
208 | ly, ly_d, | |
209 | ory, ory_d, | |
210 | ry, ry_d, | |
211 | ty, ty_d, | |
212 | 0, 0 | |
213 | }; | |
214 | ||
215 | ygetd(){ | |
216 | struct fandd *ptr; | |
217 | struct dict *pp; | |
218 | ptr=arr; | |
219 | while(ptr->fun != 0){ | |
220 | pp = ptr->yd; | |
221 | while(pp->entry != 0){ | |
222 | (*ptr->fun)(pp->entry,0,pp); | |
223 | pp++; | |
224 | } | |
225 | ptr++; | |
226 | } | |
227 | } |