.TH @LISTHASH_PREFIX@_hash_new 3 "Jan 2000" "University of Illinois" "C Library Calls" \" @configure_input@ .SH 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 .SH SYNOPSIS .B #include <@LISTHASH_PREFIX@.h> .P .BI "@LISTHASH_PREFIX@_hash_t *@LISTHASH_PREFIX@_hash_new(int " num ", int (*" hashfunc ")());" .br .BI "void @LISTHASH_PREFIX@_hash_free(@LISTHASH_PREFIX@_hash_t *" h ", void (*" freefunc ")());" .br .BI "int @LISTHASH_PREFIX@_hash_next(@LISTHASH_PREFIX@_hash_t *" h ", @LISTHASH_PREFIX@_hashptr_t *" hp ");" .br .BI "int @LISTHASH_PREFIX@_hash_prev(@LISTHASH_PREFIX@_hash_t *" h ", @LISTHASH_PREFIX@_hashptr_t *" hp ");" .br .BI "int @LISTHASH_PREFIX@_hash_search(@LISTHASH_PREFIX@_hash_t *" h ", @LISTHASH_PREFIX@_hashptr_t *" hp "," .BI "void *" data ", int (*" matchfunc ")());" .br .BI "int @LISTHASH_PREFIX@_hash_getkey(@LISTHASH_PREFIX@_hash_t *" h ", @LISTHASH_PREFIX@_hashptr_t *" hp "," .BI "void *" data ", int (*" matchfunc ")());" .br .BI "int @LISTHASH_PREFIX@_hash_add(@LISTHASH_PREFIX@_hash_t *" h ", void *" data ");" .br .BI "int @LISTHASH_PREFIX@_hash_del(@LISTHASH_PREFIX@_hash_t *" h ", @LISTHASH_PREFIX@_hashptr_t *" hp ");" .SH DESCRIPTION The \fB@LISTHASH_PREFIX@_hash_new\fP() function creates a new hash with \fInum\fP buckets and using hash function pointed to by \fIhashfunc\fP. If \fIhashfunc\fP is \fINULL\fP, a default hash function designed for 7-bit ASCII strings is used. The \fB@LISTHASH_PREFIX@_hash_free\fP() function deallocates all memory associated with the hash structure \fIh\fP. If \fIfreefunc\fP is not \fINULL\fP, it is called to free memory associated with each node in the hash. The \fB@LISTHASH_PREFIX@_hash_next\fP() and \fB@LISTHASH_PREFIX@_hash_prev\fP() functions are used to iterate through the hash. The \fI@LISTHASH_PREFIX@_hashptr_t\fP structure has two fields: \fIbucket\fP, which indicates the current bucket in the hash, and \fInode\fP, 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 \fIhp.bucket\fP to -1 and \fIhp.node\fP to \fINULL\fP. The \fB@LISTHASH_PREFIX@_hash_search\fP() function searches iteratively through the hash \fIh\fP until it finds a node whose contents match \fIdata\fP using the matching function \fImatchfunc\fP. Searching begins at the location pointed to by \fIhp\fP. The \fB@LISTHASH_PREFIX@_hash_getkey\fP() function uses the hash function associated with \fIh\fP to determine which bucket \fIdata\fP should be in, and searches only that bucket for a matching node using \fImatchfunc\fP. Searching begins at the location pointed to by \fIhp\fP. The \fB@LISTHASH_PREFIX@_hash_add\fP() function adds \fIdata\fP into hash \fIh\fP. The \fB@LISTHASH_PREFIX@_hash_del\fP() function removes the node referenced by \fIhp\fP. .SH RETURN VALUE The \fB@LISTHASH_PREFIX@_hash_new\fP() function returns a pointer to the new hash structure, or \fINULL\fP on error. The \fB@LISTHASH_PREFIX@_hash_next\fP() and \fB@LISTHASH_PREFIX@_hash_prev\fP() functions return 1 when valid data is returned, and 0 at the end of the hash. The \fB@LISTHASH_PREFIX@_hash_getkey\fP() and \fB@LISTHASH_PREFIX@_hash_search\fP() functions return 1 when a match is found, or 0 otherwise. The \fB@LISTHASH_PREFIX@_hash_add\fP() function returns 0 on success, or -1 on error (and sets \fIerrno\fP). The \fB@LISTHASH_PREFIX@_hash_del\fP() function returns 0 on success, or -1 on error (and sets \fIerrno\fP). .SH SEE ALSO .BR @LISTHASH_PREFIX@_list_new (3)