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