148246Sbostic /*- 248246Sbostic * %sccs.include.proprietary.c% 3*48789Sbostic * 4*48789Sbostic * @(#)ehash.c 4.5 (Berkeley) 04/27/91 548246Sbostic */ 648246Sbostic 79075Srrh struct hnode { 89075Srrh char *aakey; 99075Srrh struct dict *aadata; 109075Srrh }; 119075Srrh struct dict { 129075Srrh char *entry; 139075Srrh char val; 149075Srrh }; 159075Srrh char able(); 169075Srrh struct dict able_d[]; 179075Srrh char ace(); 189075Srrh struct dict ace_d[]; 199075Srrh char age(); 209075Srrh struct dict age_d[]; 219075Srrh char ance(); 229075Srrh struct dict ance_d[]; 239075Srrh char ant(); 249075Srrh struct dict ant_d[]; 259075Srrh char cal(); 269075Srrh struct dict cal_d[]; 279075Srrh char cle(); 289075Srrh struct dict cle_d[]; 299075Srrh char ee(); 309075Srrh struct dict ee_d[]; 319075Srrh char ence(); 329075Srrh struct dict ence_d[]; 339075Srrh char ess(); 349075Srrh struct dict ess_d[]; 359075Srrh char est(); 369075Srrh struct dict est_d[]; 379075Srrh char ful(); 389075Srrh struct dict ful_d[]; 399075Srrh char ible(); 409075Srrh struct dict ible_d[]; 419075Srrh char ic(); 429075Srrh struct dict ic_d[]; 439075Srrh char ice(); 449075Srrh struct dict ice_d[]; 459075Srrh char ion(); 469075Srrh struct dict ion_d[]; 479075Srrh char ional(); 489075Srrh struct dict ional_d[]; 499075Srrh char is(); 509075Srrh struct dict is_d[]; 519075Srrh char ish(); 529075Srrh struct dict ish_d[]; 539075Srrh char ist(); 549075Srrh struct dict ist_d[]; 559075Srrh char ite(); 569075Srrh struct dict ite_d[]; 579075Srrh char ive(); 589075Srrh struct dict ive_d[]; 599075Srrh char ize(); 609075Srrh struct dict ize_d[]; 619075Srrh char lar(); 629075Srrh struct dict lar_d[]; 639075Srrh char less(); 649075Srrh struct dict less_d[]; 659075Srrh char man(); 669075Srrh struct dict man_d[]; 679075Srrh char ment(); 689075Srrh struct dict ment_d[]; 699075Srrh char ness(); 709075Srrh struct dict ness_d[]; 719075Srrh char ous(); 729075Srrh struct dict ous_d[]; 739075Srrh char ship(); 749075Srrh struct dict ship_d[]; 759075Srrh char ss(); 769075Srrh struct dict ss_d[]; 779075Srrh char ure(); 789075Srrh struct dict ure_d[]; 799075Srrh char us(); 809075Srrh struct dict us_d[]; 819075Srrh char ing(); 829075Srrh struct dict ing_d[]; 839075Srrh char ed(); 849075Srrh struct dict ed_d[]; 859075Srrh struct fandd { 869075Srrh char (*fun)(); 879075Srrh struct dict *yd; 889075Srrh } arr[] = { 899075Srrh able, able_d, 909075Srrh ace, ace_d, 919075Srrh age, age_d, 929075Srrh ance, ance_d, 939075Srrh ant, ant_d, 949075Srrh cal, cal_d, 959075Srrh cle, cle_d, 969075Srrh ee, ee_d, 979075Srrh ence, ence_d, 989075Srrh ess, ess_d, 999075Srrh est, est_d, 1009075Srrh ful, ful_d, 1019075Srrh ible, ible_d, 1029075Srrh ic, ic_d, 1039075Srrh ice, ice_d, 1049075Srrh ion, ion_d, 1059075Srrh ional, ional_d, 1069075Srrh is, is_d, 1079075Srrh ish, ish_d, 1089075Srrh ist, ist_d, 1099075Srrh ite, ite_d, 1109075Srrh ive, ive_d, 1119075Srrh ize, ize_d, 1129075Srrh lar, lar_d, 1139075Srrh less, less_d, 1149075Srrh man, man_d, 1159075Srrh ment, ment_d, 1169075Srrh ness, ness_d, 1179075Srrh ous, ous_d, 1189075Srrh ship, ship_d, 1199075Srrh ss, ss_d, 1209075Srrh ure, ure_d, 1219075Srrh us, us_d, 1229075Srrh ing, ing_d, 1239075Srrh ed, ed_d, 1249075Srrh 0, 0 1259075Srrh }; 1269075Srrh egetd(){ 1279075Srrh struct dict *pp; 1289075Srrh struct fandd *ptr; 1299075Srrh ptr = arr; 1309075Srrh while(ptr->fun != 0){ 1319075Srrh pp = ptr->yd; 1329075Srrh while(pp->entry != 0){ 1339075Srrh (*ptr->fun)(pp->entry,0,pp); 1349075Srrh pp++; 1359075Srrh } 1369075Srrh ptr++; 1379075Srrh } 1389075Srrh } 1399075Srrh char 1409075Srrh aahash(s,ex,aatsize,aapr1,aapr2,tbl,data) 1419075Srrh char *s; 1429075Srrh struct hnode tbl[]; 1439075Srrh struct dict *data; 1449075Srrh { 1459075Srrh char *cp; 1469075Srrh int i, key, c, p1, p2; 1479075Srrh cp = s; 1489075Srrh key =0; 1499075Srrh while (c = *cp++) 1509075Srrh key = key + (key<<5) + c; 1519075Srrh key &= 077777; 1529075Srrh p1 = key%aapr1; 1539075Srrh p2 = key%aapr2; 1549075Srrh if (p2==0) p2=17; 1559075Srrh for(i=0; i<aatsize; i++) 1569075Srrh { 1579075Srrh if (tbl[p1].aakey==0) 1589075Srrh { /* new item */ 1599075Srrh if (ex ==0) 1609075Srrh { 1619075Srrh tbl[p1].aakey = s; 1629075Srrh tbl[p1].aadata= data; 1639075Srrh return(tbl[p1].aadata->val); 1649075Srrh } 1659075Srrh else 1669075Srrh return(0); 1679075Srrh } 1689075Srrh else 1699075Srrh if(strcmp(tbl[p1].aakey, s)== 0) 1709075Srrh { 1719075Srrh return(tbl[p1].aadata->val); 1729075Srrh } 1739075Srrh p1 = (p1+p2)%aatsize; 1749075Srrh } 1759075Srrh fprintf(stderr, "hash table full\n"); 17646230Storek exit(1); 1779075Srrh } 1789075Srrh struct hnode aa1root[43]; 1799075Srrh #define aa1tsize 43 1809075Srrh #define aa1p1 37 1819075Srrh #define aa1p2 41 1829075Srrh char 1839075Srrh able(a0,a1,ptr) 1849075Srrh char *a0; 1859075Srrh struct dict *ptr; 1869075Srrh { 1879075Srrh return(aahash(a0,a1,aa1tsize,aa1p1,aa1p2,aa1root,ptr)); 1889075Srrh } 1899075Srrh struct hnode aa2root[11]; 1909075Srrh #define aa2tsize 11 1919075Srrh #define aa2p1 5 1929075Srrh #define aa2p2 7 1939075Srrh char 1949075Srrh ace(a0,a1,ptr) 1959075Srrh char *a0; 1969075Srrh struct dict *ptr; 1979075Srrh { 1989075Srrh return(aahash(a0,a1,aa2tsize,aa2p1,aa2p2,aa2root,ptr)); 1999075Srrh } 2009075Srrh struct hnode aa3root[61]; 2019075Srrh #define aa3tsize 61 2029075Srrh #define aa3p1 53 2039075Srrh #define aa3p2 59 2049075Srrh char 2059075Srrh age(a0,a1,ptr) 2069075Srrh char *a0; 2079075Srrh struct dict *ptr; 2089075Srrh { 2099075Srrh return(aahash(a0,a1,aa3tsize,aa3p1,aa3p2,aa3root,ptr)); 2109075Srrh } 2119098Srrh struct hnode aa4root[37]; 2129098Srrh #define aa4tsize 37 2139098Srrh #define aa4p1 29 2149098Srrh #define aa4p2 31 2159075Srrh char 2169075Srrh ance(a0,a1,ptr) 2179075Srrh char *a0; 2189075Srrh struct dict *ptr; 2199075Srrh { 2209075Srrh return(aahash(a0,a1,aa4tsize,aa4p1,aa4p2,aa4root,ptr)); 2219075Srrh } 2229075Srrh struct hnode aa5root[31]; 2239075Srrh #define aa5tsize 31 2249075Srrh #define aa5p1 23 2259075Srrh #define aa5p2 29 2269075Srrh char 2279075Srrh ant(a0,a1,ptr) 2289075Srrh char *a0; 2299075Srrh struct dict *ptr; 2309075Srrh { 2319075Srrh return(aahash(a0,a1,aa5tsize,aa5p1,aa5p2,aa5root,ptr)); 2329075Srrh } 2339075Srrh struct hnode aa7root[19]; 2349075Srrh #define aa7tsize 19 2359075Srrh #define aa7p1 13 2369075Srrh #define aa7p2 17 2379075Srrh char 2389075Srrh cal(a0,a1,ptr) 2399075Srrh char *a0; 2409075Srrh struct dict *ptr; 2419075Srrh { 2429075Srrh return(aahash(a0,a1,aa7tsize,aa7p1,aa7p2,aa7root,ptr)); 2439075Srrh } 2449075Srrh struct hnode aa8root[13]; 2459075Srrh #define aa8tsize 13 2469075Srrh #define aa8p1 7 2479075Srrh #define aa8p2 11 2489075Srrh char 2499075Srrh cle(a0,a1,ptr) 2509075Srrh char *a0; 2519075Srrh struct dict *ptr; 2529075Srrh { 2539075Srrh return(aahash(a0,a1,aa8tsize,aa8p1,aa8p2,aa8root,ptr)); 2549075Srrh } 2559075Srrh struct hnode aa10root[31]; 2569075Srrh #define aa10tsize 31 2579075Srrh #define aa10p1 23 2589075Srrh #define aa10p2 29 2599075Srrh char 2609075Srrh ee(a0,a1,ptr) 2619075Srrh char *a0; 2629075Srrh struct dict *ptr; 2639075Srrh { 2649075Srrh return(aahash(a0,a1,aa10tsize,aa10p1,aa10p2,aa10root,ptr)); 2659075Srrh } 2669098Srrh struct hnode aa11root[31]; 2679098Srrh #define aa11tsize 31 2689098Srrh #define aa11p1 23 2699098Srrh #define aa11p2 29 2709075Srrh char 2719075Srrh ence(a0,a1,ptr) 2729075Srrh char *a0; 2739075Srrh struct dict *ptr; 2749075Srrh { 2759075Srrh return(aahash(a0,a1,aa11tsize,aa11p1,aa11p2,aa11root,ptr)); 2769075Srrh } 2779075Srrh struct hnode aa13root[47]; 2789075Srrh #define aa13tsize 47 2799075Srrh #define aa13p1 41 2809075Srrh #define aa13p2 43 2819075Srrh char 2829075Srrh ess(a0,a1,ptr) 2839075Srrh char *a0; 2849075Srrh struct dict *ptr; 2859075Srrh { 2869075Srrh return(aahash(a0,a1,aa13tsize,aa13p1,aa13p2,aa13root,ptr)); 2879075Srrh } 2889075Srrh struct hnode aa14root[67]; 2899075Srrh #define aa14tsize 67 2909075Srrh #define aa14p1 59 2919075Srrh #define aa14p2 61 2929075Srrh char 2939075Srrh est(a0,a1,ptr) 2949075Srrh char *a0; 2959075Srrh struct dict *ptr; 2969075Srrh { 2979075Srrh return(aahash(a0,a1,aa14tsize,aa14p1,aa14p2,aa14root,ptr)); 2989075Srrh } 2999075Srrh struct hnode aa15root[43]; 3009075Srrh #define aa15tsize 43 3019075Srrh #define aa15p1 37 3029075Srrh #define aa15p2 41 3039075Srrh char 3049075Srrh ful(a0,a1,ptr) 3059075Srrh char *a0; 3069075Srrh struct dict *ptr; 3079075Srrh { 3089075Srrh return(aahash(a0,a1,aa15tsize,aa15p1,aa15p2,aa15root,ptr)); 3099075Srrh } 3109075Srrh struct hnode aa18root[19]; 3119075Srrh #define aa18tsize 19 3129075Srrh #define aa18p1 13 3139075Srrh #define aa18p2 17 3149075Srrh char 3159075Srrh ible(a0,a1,ptr) 3169075Srrh char *a0; 3179075Srrh struct dict *ptr; 3189075Srrh { 3199075Srrh return(aahash(a0,a1,aa18tsize,aa18p1,aa18p2,aa18root,ptr)); 3209075Srrh } 3219075Srrh struct hnode aa19root[151]; 3229075Srrh #define aa19tsize 151 3239075Srrh #define aa19p1 139 3249075Srrh #define aa19p2 149 3259075Srrh char 3269075Srrh ic(a0,a1,ptr) 3279075Srrh char *a0; 3289075Srrh struct dict *ptr; 3299075Srrh { 3309075Srrh return(aahash(a0,a1,aa19tsize,aa19p1,aa19p2,aa19root,ptr)); 3319075Srrh } 3329075Srrh struct hnode aa20root[11]; 3339075Srrh #define aa20tsize 11 3349075Srrh #define aa20p1 5 3359075Srrh #define aa20p2 7 3369075Srrh char 3379075Srrh ice(a0,a1,ptr) 3389075Srrh char *a0; 3399075Srrh struct dict *ptr; 3409075Srrh { 3419075Srrh return(aahash(a0,a1,aa20tsize,aa20p1,aa20p2,aa20root,ptr)); 3429075Srrh } 3439098Srrh struct hnode aa21root[89]; 3449098Srrh #define aa21tsize 89 3459098Srrh #define aa21p1 79 3469098Srrh #define aa21p2 83 3479075Srrh char 3489075Srrh ion(a0,a1,ptr) 3499075Srrh char *a0; 3509075Srrh struct dict *ptr; 3519075Srrh { 3529075Srrh return(aahash(a0,a1,aa21tsize,aa21p1,aa21p2,aa21root,ptr)); 3539075Srrh } 3549075Srrh struct hnode aa22root[13]; 3559075Srrh #define aa22tsize 13 3569075Srrh #define aa22p1 7 3579075Srrh #define aa22p2 11 3589075Srrh char 3599075Srrh ional(a0,a1,ptr) 3609075Srrh char *a0; 3619075Srrh struct dict *ptr; 3629075Srrh { 3639075Srrh return(aahash(a0,a1,aa22tsize,aa22p1,aa22p2,aa22root,ptr)); 3649075Srrh } 3659075Srrh struct hnode aa23root[11]; 3669075Srrh #define aa23tsize 11 3679075Srrh #define aa23p1 5 3689075Srrh #define aa23p2 7 3699075Srrh char 3709075Srrh is(a0,a1,ptr) 3719075Srrh char *a0; 3729075Srrh struct dict *ptr; 3739075Srrh { 3749075Srrh return(aahash(a0,a1,aa23tsize,aa23p1,aa23p2,aa23root,ptr)); 3759075Srrh } 3769075Srrh struct hnode aa24root[71]; 3779075Srrh #define aa24tsize 71 3789075Srrh #define aa24p1 61 3799075Srrh #define aa24p2 67 3809075Srrh char 3819075Srrh ish(a0,a1,ptr) 3829075Srrh char *a0; 3839075Srrh struct dict *ptr; 3849075Srrh { 3859075Srrh return(aahash(a0,a1,aa24tsize,aa24p1,aa24p2,aa24root,ptr)); 3869075Srrh } 3879075Srrh struct hnode aa25root[151]; 3889075Srrh #define aa25tsize 151 3899075Srrh #define aa25p1 139 3909075Srrh #define aa25p2 149 3919075Srrh char 3929075Srrh ist(a0,a1,ptr) 3939075Srrh char *a0; 3949075Srrh struct dict *ptr; 3959075Srrh { 3969075Srrh return(aahash(a0,a1,aa25tsize,aa25p1,aa25p2,aa25root,ptr)); 3979075Srrh } 3989075Srrh struct hnode aa26root[79]; 3999075Srrh #define aa26tsize 79 4009075Srrh #define aa26p1 71 4019075Srrh #define aa26p2 73 4029075Srrh char 4039075Srrh ite(a0,a1,ptr) 4049075Srrh char *a0; 4059075Srrh struct dict *ptr; 4069075Srrh { 4079075Srrh return(aahash(a0,a1,aa26tsize,aa26p1,aa26p2,aa26root,ptr)); 4089075Srrh } 4099075Srrh struct hnode aa28root[151]; 4109075Srrh #define aa28tsize 151 4119075Srrh #define aa28p1 139 4129075Srrh #define aa28p2 149 4139075Srrh char 4149075Srrh ive(a0,a1,ptr) 4159075Srrh char *a0; 4169075Srrh struct dict *ptr; 4179075Srrh { 4189075Srrh return(aahash(a0,a1,aa28tsize,aa28p1,aa28p2,aa28root,ptr)); 4199075Srrh } 4209075Srrh struct hnode aa29root[11]; 4219075Srrh #define aa29tsize 11 4229075Srrh #define aa29p1 5 4239075Srrh #define aa29p2 7 4249075Srrh char 4259075Srrh ize(a0,a1,ptr) 4269075Srrh char *a0; 4279075Srrh struct dict *ptr; 4289075Srrh { 4299075Srrh return(aahash(a0,a1,aa29tsize,aa29p1,aa29p2,aa29root,ptr)); 4309075Srrh } 4319075Srrh struct hnode aa30root[37]; 4329075Srrh #define aa30tsize 37 4339075Srrh #define aa30p1 29 4349075Srrh #define aa30p2 31 4359075Srrh char 4369075Srrh lar(a0,a1,ptr) 4379075Srrh char *a0; 4389075Srrh struct dict *ptr; 4399075Srrh { 4409075Srrh return(aahash(a0,a1,aa30tsize,aa30p1,aa30p2,aa30root,ptr)); 4419075Srrh } 4429075Srrh struct hnode aa31root[11]; 4439075Srrh #define aa31tsize 11 4449075Srrh #define aa31p1 5 4459075Srrh #define aa31p2 7 4469075Srrh char 4479075Srrh less(a0,a1,ptr) 4489075Srrh char *a0; 4499075Srrh struct dict *ptr; 4509075Srrh { 4519075Srrh return(aahash(a0,a1,aa31tsize,aa31p1,aa31p2,aa31root,ptr)); 4529075Srrh } 4539075Srrh struct hnode aa33root[11]; 4549075Srrh #define aa33tsize 11 4559075Srrh #define aa33p1 5 4569075Srrh #define aa33p2 7 4579075Srrh char 4589075Srrh man(a0,a1,ptr) 4599075Srrh char *a0; 4609075Srrh struct dict *ptr; 4619075Srrh { 4629075Srrh return(aahash(a0,a1,aa33tsize,aa33p1,aa33p2,aa33root,ptr)); 4639075Srrh } 4649098Srrh struct hnode aa34root[37]; 4659098Srrh #define aa34tsize 37 4669098Srrh #define aa34p1 29 4679098Srrh #define aa34p2 31 4689075Srrh char 4699075Srrh ment(a0,a1,ptr) 4709075Srrh char *a0; 4719075Srrh struct dict *ptr; 4729075Srrh { 4739075Srrh return(aahash(a0,a1,aa34tsize,aa34p1,aa34p2,aa34root,ptr)); 4749075Srrh } 4759075Srrh struct hnode aa35root[11]; 4769075Srrh #define aa35tsize 11 4779075Srrh #define aa35p1 5 4789075Srrh #define aa35p2 7 4799075Srrh char 4809075Srrh ness(a0,a1,ptr) 4819075Srrh char *a0; 4829075Srrh struct dict *ptr; 4839075Srrh { 4849075Srrh return(aahash(a0,a1,aa35tsize,aa35p1,aa35p2,aa35root,ptr)); 4859075Srrh } 4869075Srrh struct hnode aa37root[11]; 4879075Srrh #define aa37tsize 11 4889075Srrh #define aa37p1 5 4899075Srrh #define aa37p2 7 4909075Srrh char 4919075Srrh ous(a0,a1,ptr) 4929075Srrh char *a0; 4939075Srrh struct dict *ptr; 4949075Srrh { 4959075Srrh return(aahash(a0,a1,aa37tsize,aa37p1,aa37p2,aa37root,ptr)); 4969075Srrh } 4979075Srrh struct hnode aa39root[11]; 4989075Srrh #define aa39tsize 11 4999075Srrh #define aa39p1 5 5009075Srrh #define aa39p2 7 5019075Srrh char 5029075Srrh ship(a0,a1,ptr) 5039075Srrh char *a0; 5049075Srrh struct dict *ptr; 5059075Srrh { 5069075Srrh return(aahash(a0,a1,aa39tsize,aa39p1,aa39p2,aa39root,ptr)); 5079075Srrh } 5089075Srrh struct hnode aa40root[61]; 5099075Srrh #define aa40tsize 61 5109075Srrh #define aa40p1 53 5119075Srrh #define aa40p2 59 5129075Srrh char 5139075Srrh ss(a0,a1,ptr) 5149075Srrh char *a0; 5159075Srrh struct dict *ptr; 5169075Srrh { 5179075Srrh return(aahash(a0,a1,aa40tsize,aa40p1,aa40p2,aa40root,ptr)); 5189075Srrh } 5199075Srrh struct hnode aa42root[89]; 5209075Srrh #define aa42tsize 89 5219075Srrh #define aa42p1 79 5229075Srrh #define aa42p2 83 5239075Srrh char 5249075Srrh ure(a0,a1,ptr) 5259075Srrh char *a0; 5269075Srrh struct dict *ptr; 5279075Srrh { 5289075Srrh return(aahash(a0,a1,aa42tsize,aa42p1,aa42p2,aa42root,ptr)); 5299075Srrh } 5309075Srrh struct hnode aa43root[19]; 5319075Srrh #define aa43tsize 19 5329075Srrh #define aa43p1 13 5339075Srrh #define aa43p2 17 5349075Srrh char 5359075Srrh us(a0,a1,ptr) 5369075Srrh char *a0; 5379075Srrh struct dict *ptr; 5389075Srrh { 5399075Srrh return(aahash(a0,a1,aa43tsize,aa43p1,aa43p2,aa43root,ptr)); 5409075Srrh } 5419075Srrh struct hnode aa44root[23]; 5429075Srrh #define aa44tsize 23 5439075Srrh #define aa44p1 17 5449075Srrh #define aa44p2 19 5459075Srrh char 5469075Srrh ing(a0,a1,ptr) 5479075Srrh char *a0; 5489075Srrh struct dict *ptr; 5499075Srrh { 5509075Srrh return(aahash(a0,a1,aa44tsize,aa44p1,aa44p2,aa44root,ptr)); 5519075Srrh } 5529098Srrh struct hnode aa45root[47]; 5539098Srrh #define aa45tsize 47 5549098Srrh #define aa45p1 41 5559098Srrh #define aa45p2 43 5569075Srrh char 5579075Srrh ed(a0,a1,ptr) 5589075Srrh char *a0; 5599075Srrh struct dict *ptr; 5609075Srrh { 5619075Srrh return(aahash(a0,a1,aa45tsize,aa45p1,aa45p2,aa45root,ptr)); 5629075Srrh } 563