Annotation of 40BSD/cmd/diction/nhash.c, revision 1.1.1.1

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

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.