Linux and UNIX Man Pages

Linux & Unix Commands - Search Man Pages

hash_uninstall(3pub) [debian man page]

HASH(3pub)						       C Programmer's Manual							HASH(3pub)

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 unsigned 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 argument 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 elements 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 install 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(3pub)

Check Out this Related Man Page

lsearch(3)						     Library Functions Manual							lsearch(3)

Name
       lsearch, lfind - linear search and update

Syntax
       #include <search.h>
       #include <sys/types.h>

       void *lsearch (key, base, nelp, width, compar)
       void *key;
       void *base;
       size_t *nelp;
       size_t width;
       int (*compar)( );

       void *lfind (key, base, nelp, width, compar)
       void *key;
       void *base;
       size_t *nelp;
       size_t width;
       int (*compar)( );

Description
       The  subroutine	is a linear search routine generalized from Knuth (6.1) Algorithm S.  It returns a pointer into a table indicating where a
       datum may be found.  If the datum does not occur, it is added at the end of the table.  The key points to the datum to be sought in the ta-
       ble.   The  base  points to the first element in the table.  The nelp points to an integer containing the current number of elements in the
       table.  The width is the size of an element in bytes.  The integer is incremented if the datum is added to the table.  The  compar  is  the
       name  of  the comparison function which the user must supply (strcmp, for example).  It is called with two arguments that point to the ele-
       ments being compared.  The function must return zero if the elements are equal and non-zero otherwise.

       The subroutine is the same as lsearch except that if the datum is not found, it is not added to the table.   Instead,  a  NULL  pointer	is
       returned.  The pointers to the key and the element at the base of the table should be of type pointer-to-element, and cast to type pointer-
       to-character.

       The comparison function need not compare every byte, so arbitrary data may be contained in the elements in addition  to	the  values  being
       compared.

       Although declared as type pointer-to-character, the value returned should be cast into type pointer-to-element.

Restrictions
       Undefined results can occur if there is not enough room in the table to add a new item.

Return Values
       If the searched for datum is found, both and return a pointer to it.  Otherwise, returns NULL and returns a pointer to the newly added ele-
       ment.

See Also
       bsearch(3), hsearch(3), tsearch(3)

																	lsearch(3)
Man Page