@LISTHASH_PREFIX@_hash_new(3)

NAME
@LISTHASH_PREFIX@_hash_new, @LISTHASH_PREFIX@_hash_free, @LISTHASH_PREFIX@_hash_next, @LISTHASH_PREFIX@_hash_prev, @LISTHASH_PREFIX@_hash_getkey, @LISTHASH_PREFIX@_hash_search, @LISTHASH_PREFIX@_hash_add, @LISTHASH_PREFIX@_hash_del - hash table routines

SYNOPSIS
#include <@LISTHASH_PREFIX@.h>

@LISTHASH_PREFIX@_hash_t *@LISTHASH_PREFIX@_hash_new(int num, int (*hashfunc)());
void @LISTHASH_PREFIX@_hash_free(@LISTHASH_PREFIX@_hash_t *h, void (*freefunc)());
int @LISTHASH_PREFIX@_hash_next(@LISTHASH_PREFIX@_hash_t *h, @LISTHASH_PREFIX@_hashptr_t *hp);
int @LISTHASH_PREFIX@_hash_prev(@LISTHASH_PREFIX@_hash_t *h, @LISTHASH_PREFIX@_hashptr_t *hp);
int @LISTHASH_PREFIX@_hash_search(@LISTHASH_PREFIX@_hash_t *h, @LISTHASH_PREFIX@_hashptr_t *hp, void *data, int (*matchfunc)());
int @LISTHASH_PREFIX@_hash_getkey(@LISTHASH_PREFIX@_hash_t *h, @LISTHASH_PREFIX@_hashptr_t *hp, void *data, int (*matchfunc)());
int @LISTHASH_PREFIX@_hash_add(@LISTHASH_PREFIX@_hash_t *h, void *data);
int @LISTHASH_PREFIX@_hash_del(@LISTHASH_PREFIX@_hash_t *h, @LISTHASH_PREFIX@_hashptr_t *hp);

DESCRIPTION
The @LISTHASH_PREFIX@_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 @LISTHASH_PREFIX@_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 @LISTHASH_PREFIX@_hash_next() and @LISTHASH_PREFIX@_hash_prev() functions are used to iterate through the hash. The @LISTHASH_PREFIX@_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 @LISTHASH_PREFIX@_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 @LISTHASH_PREFIX@_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 @LISTHASH_PREFIX@_hash_add() function adds data into hash h. The @LISTHASH_PREFIX@_hash_del() function removes the node referenced by hp.

RETURN VALUE
The @LISTHASH_PREFIX@_hash_new() function returns a pointer to the new hash structure, or NULL on error. The @LISTHASH_PREFIX@_hash_next() and @LISTHASH_PREFIX@_hash_prev() functions return 1 when valid data is returned, and 0 at the end of the hash. The @LISTHASH_PREFIX@_hash_getkey() and @LISTHASH_PREFIX@_hash_search() functions return 1 when a match is found, or 0 otherwise. The @LISTHASH_PREFIX@_hash_add() function returns 0 on success, or -1 on error (and sets errno). The @LISTHASH_PREFIX@_hash_del() function returns 0 on success, or -1 on error (and sets errno).

SEE ALSO
@LISTHASH_PREFIX@_list_new(3)