Annotation of 43BSD/contrib/icon/rt/memb.c, revision 1.1.1.1

1.1       root        1: #include "../h/rt.h"
                      2: #ifdef SETS
                      3: /*
                      4:  * memb - sets res flag to 1 if x is a member of set S,
                      5:  *  sets res flag to 0 if not.
                      6:  *  Returns pointer to the descriptor which points to
                      7:  *  the element (or which would point to it if it were
                      8:  *  there).
                      9:  */
                     10: 
                     11: struct descrip *memb(ps,x,hn,res)
                     12: int *res;                              /* pointer to integer result flag */
                     13: struct b_set *ps;
                     14: struct descrip  *x;
                     15: int hn;
                     16:    {
                     17:     register struct descrip *lp;
                     18:     register struct b_selem  *pe;
                     19:     extern int equiv();
                     20: 
                     21:    lp = &(ps->sbucks[hn % NBUCKETS]);
                     22:    /*
                     23:     * Look for x in the hash chain.
                     24:     */
                     25:    *res = 0;
                     26:    while (BLKLOC(*lp) != NULL) {
                     27:        pe = (struct b_selem *) BLKLOC(*lp);
                     28:        if ( pe->hnum > hn)             /* too far - it isn't there */
                     29:          return (lp);
                     30:        else if (( pe->hnum == hn ) && ( equiv(&pe->setmem, x )))  {
                     31:          *res = 1;
                     32:          return (lp);
                     33:          }
                     34:    /*
                     35:     * We haven't reached the right hashnumber yet or
                     36:     *  the element isn't the right one so keep looking.
                     37:     */
                     38:       lp = &(pe->sblink);
                     39:    }
                     40:    /*
                     41:     *  At end of chain - not there.
                     42:     */
                     43:    return (lp);
                     44:    }
                     45: #else SETS
                     46: char junk;   /* prevent null object file */
                     47: #endif SETS

unix.superglobalmegacorp.com

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