diff options
Diffstat (limited to 'src/include/util_Hash.h')
-rw-r--r-- | src/include/util_Hash.h | 72 |
1 files changed, 72 insertions, 0 deletions
diff --git a/src/include/util_Hash.h b/src/include/util_Hash.h new file mode 100644 index 00000000..62e6f2cc --- /dev/null +++ b/src/include/util_Hash.h @@ -0,0 +1,72 @@ + /*@@ + @header Hash.h + @date Wed Oct 27 23:28:53 1999 + @author Tom Goodale + @desc + Header file for hash stuff. + @enddesc + @version $Header$ + @@*/ + +#ifndef _HASH_H_ +#define _HASH_H_ + +#ifdef __cplusplus +extern "C" { +#endif + +typedef struct T_HASH_ENTRY +{ + struct T_HASH_ENTRY *last; + struct T_HASH_ENTRY *next; + + unsigned int hash; + + unsigned int klen; + char *key; + + void *data; +} iHashEntry; + +typedef struct T_HASH +{ + unsigned int size; + unsigned int fill; + unsigned int keys; + + iHashEntry **array; +} uHash; + +uHash *Util_HashCreate(unsigned int initial_size); +int Util_HashDestroy(uHash *hash); + +int Util_HashStore(uHash *hash, + unsigned int klen, + char *key, + unsigned int hashval, + void *data); + +int Util_HashAdd(uHash *hash, + unsigned int klen, + char *key, + unsigned int hashval, + void *data); + +int Util_HashDelete(uHash *hash, + unsigned int klen, + char *key, + unsigned int hashval); + +void *Util_HashData(uHash *hash, + unsigned int klen, + char *key, + unsigned int hashval); + +unsigned int Util_HashHash(unsigned int klen, + char *key); + +#ifdef __cplusplus +} +#endif + +#endif /* _HASH_H_ */ |