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

FreeBSD Manual Pages

  
 
  

home | help
HASH(3)			     C Programmer's Manual		       HASH(3)

NAME
       hash_create,  hash_destroy,  hash_install, hash_lookup, hash_uninstall,
       hash_iter - generic hash	tables

SYNOPSIS
       #include	<publib.h>

       Hashtab *hash_create(unsigned long (*fun)(void *),
		int (*cmp)(const void *, const void *));
       void hash_destroy(Hashtab *ht);
       void *hash_install(Hashtab *ht, void *data, size_t size);
       void *hash_lookup(Hashtab *ht, void *data);
       int hash_uninstall(Hashtab *ht, void *data);
       int hash_iter(Hashtab *ht, int (*doit)(void *, void *), void *param);

DESCRIPTION
       These functions implement generic hash tables.  The table is created by
       hash_create and destroyed by  hash_destroy.   The  fun  argument	 is  a
       pointer	to  the	hashing	function, which	must convert a datum to	an un-
       signed long, which is then converted to an index	into the  hashing  ta-
       ble.   cmp  is a	qsort(3)-like comparison functions, used to compare to
       (wannabe) hash table elements.

       hash_install installs a new datum into the table.   A  pointer  to  the
       data  and the size of the data are given	as the arguments.  If the size
       is 0, only the pointer value is copied to the table.  Otherwise a  copy
       of the data is made into	dynamically allocated memory.

       hash_lookup  attempts  to find a	datum in the hash table.  A pointer to
       another datum is	given as the argument.	The comparison function	should
       compare equal (return 0)	the desired datum and this datum (but the  ar-
       gument needn't be a fully initialized datum, although that is up	to the
       writer  of  the	comparison function).  There cannot be two elements in
       the hash	table that are equal (the comparison function  returns	0  for
       them).  It is up	to the user to handle collisions.

       hash_uninstall  removes	an  element  from  a table.  The argument is a
       pointer to a datum that identifies the element.

       hash_iter goes through every element in the hash	table  and  calls  the
       doit  function for each.	 The first argument it provides	to doit	is the
       element in question, the	second is whatever was given to	 hash_iter  as
       param.	If  doit  returns  -1  or 0 for	any element in the hash	table,
       hash_iter immediately returns without going through the remaining  ele-
       ments in	the hash table.	 Any other return value	from doit is ignored.

RETURNS
       hash_create  returns  a	pointer	 to  the new hash table, or NULL if it
       fails.

       hash_install returns a pointer to an element in the table  (either  the
       installed  one,	or one that was	already	installed, if one tries	to in-
       stall the same datum twice).

       hash_uninstall returns 0	if it found the	element	in the array, or -1 if
       it didn't.

       hash_lookup return a pointer to the element it finds,  or  NULL	if  it
       doesn't find anything beautiful.

       hash_iter returns -1, 0,	or 1.  If hash_iter receives a return value of
       -1 or 0 for some	element	from doit, hash_iter immediately returns -1 or
       0, respectively.	 In all	other cases hash_iter returns 1.

SEE ALSO
       publib(3), qsort(3), bsearch(3)

AUTHOR
       Lars Wirzenius (lars.wirzenius@helsinki.fi)

Publib			     C Programmer's Manual		       HASH(3)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=hash_destroy&sektion=3&manpath=FreeBSD+Ports+14.3.quarterly>

home | help