Provided by: alliance_5.1.1-3_amd64 bug

NAME

       sethtitem - test and set an item in an hash table.

SYNOPSYS

       #include "mut.h"
       int sethtitem(table, key)
       ht ∗table;
       void ∗key;

PARAMETERS

       table               Hash table pointer

       key                 Key used by the hash coding function to set an item

DESCRIPTION

       sethtitem() adds an item in the hash table pointed to by table, whether it existed or not,
       and returns an appropriate value.  This is kind of a test and set operator.

RETURN VALUE

       If the key exists, the funtion return 1, if  it  doesn't,  the  item  is  stored  and  the
       function returns 0.

EXAMPLE

       #include <stdio.h>
       #include "mut.h"
       checksigname(p)
       lofig_list *p;
       {
       int i;
       losig_list *ptsig;
       locon_list *ptcon;
       ht *h;
       char *amatla;
          for (i = 0, ptsig = p->LOSIG; ptsig; i++, ptsig = ptsig->NEXT);
          h = addht(i << 1); /* half empty hash tables are faster! */
          for (ptcon = p->LOCON; ptcon; ptcon = ptcon->NEXT)
             addhtitem(h, ptcon->NAME, 0);
          for (ptsig = p->LOSIG; ptsig; ptsig = ptsig->NEXT) {
             if (ptsig->TYPE == INTERNAL) {
                amatla = getsigname(ptsig);
                if (!sethtitem(h, amatla, 0))
                   printf("node %s is now unique\n", amatla);
             }
          }
          delht(h);
       }

ERRORS

       "∗∗∗ mbk error ∗∗∗ sethtitem impossible : value is EMPTYHT or DELETEHT"
              The values EMPTYHT, -1,  and DELETEHT, -2, are reserved for internal use, sorry.

DIAGNOSTICS

       The value must be distinct from -1 and -2.

SEE ALSO

       mbk(1), addht(3), delht(3), addhtitem(3), gethtitem(3), delhtitem(3), viewht(3).