libtar_hash_t *libtar_hash_new(int num, int (*hashfunc)()); void libtar_hash_free(libtar_hash_t *h, void (*freefunc)()); int libtar_hash_next(libtar_hash_t *h, libtar_hashptr_t *hp); int libtar_hash_prev(libtar_hash_t *h, libtar_hashptr_t *hp); int libtar_hash_search(libtar_hash_t *h, libtar_hashptr_t *hp,void *data, int (*matchfunc)()); int libtar_hash_getkey(libtar_hash_t *h, libtar_hashptr_t *hp,void *data, int (*matchfunc)()); int libtar_hash_add(libtar_hash_t *h, void *data); int libtar_hash_del(libtar_hash_t *h, libtar_hashptr_t *hp);

DESCRIPTION

The libtar_hash_new() function creates a new hash with num
buckets and using hash function pointed to by hashfunc. If
hashfunc is NULL, a default hash function designed for
7-bit ASCII strings is used.

The libtar_hash_free() function deallocates all memory associated
with the hash structure h. If freefunc is not NULL,
it is called to free memory associated with each node in the hash.

The libtar_hash_next() and libtar_hash_prev() functions are
used to iterate through the hash. The libtar_hashptr_t structure
has two fields: bucket, which indicates the current bucket in the
hash, and node, which is a pointer to the current node in the current
bucket. To start at the beginning or end of the hash, the caller should
initialize hp.bucket to -1 and hp.node to NULL.

The libtar_hash_search() function searches iteratively through the
hash h until it finds a node whose contents match data using
the matching function matchfunc. Searching begins at the location
pointed to by hp.

The libtar_hash_getkey() function uses the hash function associated
with h to determine which bucket data should be in, and searches
only that bucket for a matching node using matchfunc. Searching
begins at the location pointed to by hp.

The libtar_hash_add() function adds data into hash h.

The libtar_hash_del() function removes the node referenced by
hp.

RETURN VALUE

The libtar_hash_new() function returns a pointer to the new hash
structure, or NULL on error.

The libtar_hash_next() and libtar_hash_prev() functions
return 1 when valid data is returned, and 0 at the end of the hash.

The libtar_hash_getkey() and libtar_hash_search() functions
return 1 when a match is found, or 0 otherwise.

The libtar_hash_add() function returns 0 on success, or -1 on
error (and sets errno).

The libtar_hash_del() function returns 0 on success, or -1 on
error (and sets errno).