00001 /* 00002 Copyright (C) 2003-2004 Douglas Thain and the University of Wisconsin 00003 Copyright (C) 2005- The University of Notre Dame 00004 This software is distributed under the GNU General Public License. 00005 See the file COPYING for details. 00006 */ 00007 00008 #ifndef HASH_TABLE_H 00009 #define HASH_TABLE_H 00010 00042 typedef unsigned (*hash_func_t) ( const char *key ); 00043 00050 struct hash_table * hash_table_create( int buckets, hash_func_t func ); 00051 00057 void hash_table_delete( struct hash_table *h ); 00058 00064 int hash_table_size ( struct hash_table *h ); 00065 00076 int hash_table_insert( struct hash_table *h, const char *key, const void *value ); 00077 00084 void * hash_table_lookup( struct hash_table *h, const char *key ); 00085 00092 void * hash_table_remove( struct hash_table *h, const char *key ); 00093 00101 void hash_table_firstkey( struct hash_table *h ); 00102 00111 int hash_table_nextkey( struct hash_table *h, char **key, void **value ); 00112 00118 unsigned hash_string( const char *s ); 00119 00120 #endif