xref: /original-bsd/usr.bin/diction/style2/ehash.c (revision f0fd5f8a)
1 #ifndef lint
2 static char ehash_sccsid[] = "@(#)ehash.c	4.2	(Berkeley)	82/11/06";
3 #endif not lint
4 
5 #
6 struct hnode {
7 	char *aakey;
8 	struct dict *aadata;
9 };
10 struct dict {
11 	char *entry;
12 	char val;
13 };
14 char able();
15 struct dict able_d[];
16 char ace();
17 struct dict ace_d[];
18 char age();
19 struct dict age_d[];
20 char ance();
21 struct dict ance_d[];
22 char ant();
23 struct dict ant_d[];
24 char cal();
25 struct dict cal_d[];
26 char cle();
27 struct dict cle_d[];
28 char ee();
29 struct dict ee_d[];
30 char ence();
31 struct dict ence_d[];
32 char ess();
33 struct dict ess_d[];
34 char est();
35 struct dict est_d[];
36 char ful();
37 struct dict ful_d[];
38 char ible();
39 struct dict ible_d[];
40 char ic();
41 struct dict ic_d[];
42 char ice();
43 struct dict ice_d[];
44 char ion();
45 struct dict ion_d[];
46 char ional();
47 struct dict ional_d[];
48 char is();
49 struct dict is_d[];
50 char ish();
51 struct dict ish_d[];
52 char ist();
53 struct dict ist_d[];
54 char ite();
55 struct dict ite_d[];
56 char ive();
57 struct dict ive_d[];
58 char ize();
59 struct dict ize_d[];
60 char lar();
61 struct dict lar_d[];
62 char less();
63 struct dict less_d[];
64 char man();
65 struct dict man_d[];
66 char ment();
67 struct dict ment_d[];
68 char ness();
69 struct dict ness_d[];
70 char ous();
71 struct dict ous_d[];
72 char ship();
73 struct dict ship_d[];
74 char ss();
75 struct dict ss_d[];
76 char ure();
77 struct dict ure_d[];
78 char us();
79 struct dict us_d[];
80 char ing();
81 struct dict ing_d[];
82 char ed();
83 struct dict ed_d[];
84 struct fandd {
85 	char (*fun)();
86 	struct dict *yd;
87 } arr[] = {
88 able,	able_d,
89 ace,	ace_d,
90 age,	age_d,
91 ance,	ance_d,
92 ant,	ant_d,
93 cal,	cal_d,
94 cle,	cle_d,
95 ee,	ee_d,
96 ence,	ence_d,
97 ess,	ess_d,
98 est,	est_d,
99 ful,	ful_d,
100 ible,	ible_d,
101 ic,	ic_d,
102 ice,	ice_d,
103 ion,	ion_d,
104 ional,	ional_d,
105 is,	is_d,
106 ish,	ish_d,
107 ist,	ist_d,
108 ite,	ite_d,
109 ive,	ive_d,
110 ize,	ize_d,
111 lar,	lar_d,
112 less,	less_d,
113 man,	man_d,
114 ment,	ment_d,
115 ness,	ness_d,
116 ous,	ous_d,
117 ship,	ship_d,
118 ss,	ss_d,
119 ure,	ure_d,
120 us,	us_d,
121 ing,	ing_d,
122 ed,	ed_d,
123 0,	0
124 };
125 egetd(){
126 	struct dict *pp;
127 	struct fandd *ptr;
128 	ptr = arr;
129 	while(ptr->fun != 0){
130 		pp = ptr->yd;
131 		while(pp->entry != 0){
132 			(*ptr->fun)(pp->entry,0,pp);
133 			pp++;
134 		}
135 		ptr++;
136 	}
137 }
138 char
139 aahash(s,ex,aatsize,aapr1,aapr2,tbl,data)
140 char *s;
141 struct hnode tbl[];
142 struct dict *data;
143 {
144 	char *cp;
145 	int i, key, c, p1, p2;
146 	cp = s;
147 	key =0;
148 	while (c = *cp++)
149 		key = key + (key<<5) + c;
150 	key &= 077777;
151 	p1 = key%aapr1;
152 	p2 = key%aapr2;
153 	if (p2==0) p2=17;
154 	for(i=0; i<aatsize; i++)
155 	{
156 		if (tbl[p1].aakey==0)
157 		{ /* new item */
158 			if (ex ==0)
159 			{
160 				tbl[p1].aakey = s;
161 				tbl[p1].aadata= data;
162 				return(tbl[p1].aadata->val);
163 			}
164 			else
165 				return(0);
166 		}
167 		else
168 			if(strcmp(tbl[p1].aakey, s)== 0)
169 			{
170 				return(tbl[p1].aadata->val);
171 			}
172 		p1 = (p1+p2)%aatsize;
173 	}
174 	fprintf(stderr, "hash table full\n");
175 	exit();
176 }
177 struct hnode aa1root[43];
178 #define aa1tsize 43
179 #define aa1p1 37
180 #define aa1p2 41
181 char
182 able(a0,a1,ptr)
183 	char *a0;
184 	struct dict *ptr;
185 {
186 	return(aahash(a0,a1,aa1tsize,aa1p1,aa1p2,aa1root,ptr));
187 }
188 struct hnode aa2root[11];
189 #define aa2tsize 11
190 #define aa2p1 5
191 #define aa2p2 7
192 char
193 ace(a0,a1,ptr)
194 	char *a0;
195 	struct dict *ptr;
196 {
197 	return(aahash(a0,a1,aa2tsize,aa2p1,aa2p2,aa2root,ptr));
198 }
199 struct hnode aa3root[61];
200 #define aa3tsize 61
201 #define aa3p1 53
202 #define aa3p2 59
203 char
204 age(a0,a1,ptr)
205 	char *a0;
206 	struct dict *ptr;
207 {
208 	return(aahash(a0,a1,aa3tsize,aa3p1,aa3p2,aa3root,ptr));
209 }
210 struct hnode aa4root[37];
211 #define aa4tsize 37
212 #define aa4p1 29
213 #define aa4p2 31
214 char
215 ance(a0,a1,ptr)
216 	char *a0;
217 	struct dict *ptr;
218 {
219 	return(aahash(a0,a1,aa4tsize,aa4p1,aa4p2,aa4root,ptr));
220 }
221 struct hnode aa5root[31];
222 #define aa5tsize 31
223 #define aa5p1 23
224 #define aa5p2 29
225 char
226 ant(a0,a1,ptr)
227 	char *a0;
228 	struct dict *ptr;
229 {
230 	return(aahash(a0,a1,aa5tsize,aa5p1,aa5p2,aa5root,ptr));
231 }
232 struct hnode aa7root[19];
233 #define aa7tsize 19
234 #define aa7p1 13
235 #define aa7p2 17
236 char
237 cal(a0,a1,ptr)
238 	char *a0;
239 	struct dict *ptr;
240 {
241 	return(aahash(a0,a1,aa7tsize,aa7p1,aa7p2,aa7root,ptr));
242 }
243 struct hnode aa8root[13];
244 #define aa8tsize 13
245 #define aa8p1 7
246 #define aa8p2 11
247 char
248 cle(a0,a1,ptr)
249 	char *a0;
250 	struct dict *ptr;
251 {
252 	return(aahash(a0,a1,aa8tsize,aa8p1,aa8p2,aa8root,ptr));
253 }
254 struct hnode aa10root[31];
255 #define aa10tsize 31
256 #define aa10p1 23
257 #define aa10p2 29
258 char
259 ee(a0,a1,ptr)
260 	char *a0;
261 	struct dict *ptr;
262 {
263 	return(aahash(a0,a1,aa10tsize,aa10p1,aa10p2,aa10root,ptr));
264 }
265 struct hnode aa11root[31];
266 #define aa11tsize 31
267 #define aa11p1 23
268 #define aa11p2 29
269 char
270 ence(a0,a1,ptr)
271 	char *a0;
272 	struct dict *ptr;
273 {
274 	return(aahash(a0,a1,aa11tsize,aa11p1,aa11p2,aa11root,ptr));
275 }
276 struct hnode aa13root[47];
277 #define aa13tsize 47
278 #define aa13p1 41
279 #define aa13p2 43
280 char
281 ess(a0,a1,ptr)
282 	char *a0;
283 	struct dict *ptr;
284 {
285 	return(aahash(a0,a1,aa13tsize,aa13p1,aa13p2,aa13root,ptr));
286 }
287 struct hnode aa14root[67];
288 #define aa14tsize 67
289 #define aa14p1 59
290 #define aa14p2 61
291 char
292 est(a0,a1,ptr)
293 	char *a0;
294 	struct dict *ptr;
295 {
296 	return(aahash(a0,a1,aa14tsize,aa14p1,aa14p2,aa14root,ptr));
297 }
298 struct hnode aa15root[43];
299 #define aa15tsize 43
300 #define aa15p1 37
301 #define aa15p2 41
302 char
303 ful(a0,a1,ptr)
304 	char *a0;
305 	struct dict *ptr;
306 {
307 	return(aahash(a0,a1,aa15tsize,aa15p1,aa15p2,aa15root,ptr));
308 }
309 struct hnode aa18root[19];
310 #define aa18tsize 19
311 #define aa18p1 13
312 #define aa18p2 17
313 char
314 ible(a0,a1,ptr)
315 	char *a0;
316 	struct dict *ptr;
317 {
318 	return(aahash(a0,a1,aa18tsize,aa18p1,aa18p2,aa18root,ptr));
319 }
320 struct hnode aa19root[151];
321 #define aa19tsize 151
322 #define aa19p1 139
323 #define aa19p2 149
324 char
325 ic(a0,a1,ptr)
326 	char *a0;
327 	struct dict *ptr;
328 {
329 	return(aahash(a0,a1,aa19tsize,aa19p1,aa19p2,aa19root,ptr));
330 }
331 struct hnode aa20root[11];
332 #define aa20tsize 11
333 #define aa20p1 5
334 #define aa20p2 7
335 char
336 ice(a0,a1,ptr)
337 	char *a0;
338 	struct dict *ptr;
339 {
340 	return(aahash(a0,a1,aa20tsize,aa20p1,aa20p2,aa20root,ptr));
341 }
342 struct hnode aa21root[89];
343 #define aa21tsize 89
344 #define aa21p1 79
345 #define aa21p2 83
346 char
347 ion(a0,a1,ptr)
348 	char *a0;
349 	struct dict *ptr;
350 {
351 	return(aahash(a0,a1,aa21tsize,aa21p1,aa21p2,aa21root,ptr));
352 }
353 struct hnode aa22root[13];
354 #define aa22tsize 13
355 #define aa22p1 7
356 #define aa22p2 11
357 char
358 ional(a0,a1,ptr)
359 	char *a0;
360 	struct dict *ptr;
361 {
362 	return(aahash(a0,a1,aa22tsize,aa22p1,aa22p2,aa22root,ptr));
363 }
364 struct hnode aa23root[11];
365 #define aa23tsize 11
366 #define aa23p1 5
367 #define aa23p2 7
368 char
369 is(a0,a1,ptr)
370 	char *a0;
371 	struct dict *ptr;
372 {
373 	return(aahash(a0,a1,aa23tsize,aa23p1,aa23p2,aa23root,ptr));
374 }
375 struct hnode aa24root[71];
376 #define aa24tsize 71
377 #define aa24p1 61
378 #define aa24p2 67
379 char
380 ish(a0,a1,ptr)
381 	char *a0;
382 	struct dict *ptr;
383 {
384 	return(aahash(a0,a1,aa24tsize,aa24p1,aa24p2,aa24root,ptr));
385 }
386 struct hnode aa25root[151];
387 #define aa25tsize 151
388 #define aa25p1 139
389 #define aa25p2 149
390 char
391 ist(a0,a1,ptr)
392 	char *a0;
393 	struct dict *ptr;
394 {
395 	return(aahash(a0,a1,aa25tsize,aa25p1,aa25p2,aa25root,ptr));
396 }
397 struct hnode aa26root[79];
398 #define aa26tsize 79
399 #define aa26p1 71
400 #define aa26p2 73
401 char
402 ite(a0,a1,ptr)
403 	char *a0;
404 	struct dict *ptr;
405 {
406 	return(aahash(a0,a1,aa26tsize,aa26p1,aa26p2,aa26root,ptr));
407 }
408 struct hnode aa28root[151];
409 #define aa28tsize 151
410 #define aa28p1 139
411 #define aa28p2 149
412 char
413 ive(a0,a1,ptr)
414 	char *a0;
415 	struct dict *ptr;
416 {
417 	return(aahash(a0,a1,aa28tsize,aa28p1,aa28p2,aa28root,ptr));
418 }
419 struct hnode aa29root[11];
420 #define aa29tsize 11
421 #define aa29p1 5
422 #define aa29p2 7
423 char
424 ize(a0,a1,ptr)
425 	char *a0;
426 	struct dict *ptr;
427 {
428 	return(aahash(a0,a1,aa29tsize,aa29p1,aa29p2,aa29root,ptr));
429 }
430 struct hnode aa30root[37];
431 #define aa30tsize 37
432 #define aa30p1 29
433 #define aa30p2 31
434 char
435 lar(a0,a1,ptr)
436 	char *a0;
437 	struct dict *ptr;
438 {
439 	return(aahash(a0,a1,aa30tsize,aa30p1,aa30p2,aa30root,ptr));
440 }
441 struct hnode aa31root[11];
442 #define aa31tsize 11
443 #define aa31p1 5
444 #define aa31p2 7
445 char
446 less(a0,a1,ptr)
447 	char *a0;
448 	struct dict *ptr;
449 {
450 	return(aahash(a0,a1,aa31tsize,aa31p1,aa31p2,aa31root,ptr));
451 }
452 struct hnode aa33root[11];
453 #define aa33tsize 11
454 #define aa33p1 5
455 #define aa33p2 7
456 char
457 man(a0,a1,ptr)
458 	char *a0;
459 	struct dict *ptr;
460 {
461 	return(aahash(a0,a1,aa33tsize,aa33p1,aa33p2,aa33root,ptr));
462 }
463 struct hnode aa34root[37];
464 #define aa34tsize 37
465 #define aa34p1 29
466 #define aa34p2 31
467 char
468 ment(a0,a1,ptr)
469 	char *a0;
470 	struct dict *ptr;
471 {
472 	return(aahash(a0,a1,aa34tsize,aa34p1,aa34p2,aa34root,ptr));
473 }
474 struct hnode aa35root[11];
475 #define aa35tsize 11
476 #define aa35p1 5
477 #define aa35p2 7
478 char
479 ness(a0,a1,ptr)
480 	char *a0;
481 	struct dict *ptr;
482 {
483 	return(aahash(a0,a1,aa35tsize,aa35p1,aa35p2,aa35root,ptr));
484 }
485 struct hnode aa37root[11];
486 #define aa37tsize 11
487 #define aa37p1 5
488 #define aa37p2 7
489 char
490 ous(a0,a1,ptr)
491 	char *a0;
492 	struct dict *ptr;
493 {
494 	return(aahash(a0,a1,aa37tsize,aa37p1,aa37p2,aa37root,ptr));
495 }
496 struct hnode aa39root[11];
497 #define aa39tsize 11
498 #define aa39p1 5
499 #define aa39p2 7
500 char
501 ship(a0,a1,ptr)
502 	char *a0;
503 	struct dict *ptr;
504 {
505 	return(aahash(a0,a1,aa39tsize,aa39p1,aa39p2,aa39root,ptr));
506 }
507 struct hnode aa40root[61];
508 #define aa40tsize 61
509 #define aa40p1 53
510 #define aa40p2 59
511 char
512 ss(a0,a1,ptr)
513 	char *a0;
514 	struct dict *ptr;
515 {
516 	return(aahash(a0,a1,aa40tsize,aa40p1,aa40p2,aa40root,ptr));
517 }
518 struct hnode aa42root[89];
519 #define aa42tsize 89
520 #define aa42p1 79
521 #define aa42p2 83
522 char
523 ure(a0,a1,ptr)
524 	char *a0;
525 	struct dict *ptr;
526 {
527 	return(aahash(a0,a1,aa42tsize,aa42p1,aa42p2,aa42root,ptr));
528 }
529 struct hnode aa43root[19];
530 #define aa43tsize 19
531 #define aa43p1 13
532 #define aa43p2 17
533 char
534 us(a0,a1,ptr)
535 	char *a0;
536 	struct dict *ptr;
537 {
538 	return(aahash(a0,a1,aa43tsize,aa43p1,aa43p2,aa43root,ptr));
539 }
540 struct hnode aa44root[23];
541 #define aa44tsize 23
542 #define aa44p1 17
543 #define aa44p2 19
544 char
545 ing(a0,a1,ptr)
546 	char *a0;
547 	struct dict *ptr;
548 {
549 	return(aahash(a0,a1,aa44tsize,aa44p1,aa44p2,aa44root,ptr));
550 }
551 struct hnode aa45root[47];
552 #define aa45tsize 47
553 #define aa45p1 41
554 #define aa45p2 43
555 char
556 ed(a0,a1,ptr)
557 	char *a0;
558 	struct dict *ptr;
559 {
560 	return(aahash(a0,a1,aa45tsize,aa45p1,aa45p2,aa45root,ptr));
561 }
562