Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
SETHTITEM(3)	      MBK HASH TABLE MANAGEMENT	FUNCTIONS	  SETHTITEM(3)

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  in-
	      ternal 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).

ASIM/LIP6			October	1, 1997			  SETHTITEM(3)

NAME | SYNOPSYS | PARAMETERS | DESCRIPTION | RETURN VALUE | EXAMPLE | ERRORS | DIAGNOSTICS | SEE ALSO

Want to link to this manual page? Use this URL:
<https://www.freebsd.org/cgi/man.cgi?query=sethtitem&sektion=3&manpath=FreeBSD+12.0-RELEASE+and+Ports>

home | help