| #ifndef _GOOMSL_HASH_H |
| #define _GOOMSL_HASH_H |
| |
| typedef struct GOOM_HASH_ENTRY GoomHashEntry; |
| typedef struct GOOM_HASH GoomHash; |
| |
| typedef union { |
| void *ptr; |
| int i; |
| float f; |
| } HashValue; |
| |
| struct GOOM_HASH_ENTRY { |
| char *key; |
| HashValue value; |
| GoomHashEntry *lower; |
| GoomHashEntry *upper; |
| }; |
| |
| struct GOOM_HASH { |
| GoomHashEntry *root; |
| int number_of_puts; |
| }; |
| |
| GoomHash *goom_hash_new(); |
| void goom_hash_free(GoomHash *gh); |
| |
| void goom_hash_put(GoomHash *gh, const char *key, HashValue value); |
| HashValue *goom_hash_get(GoomHash *gh, const char *key); |
| |
| void goom_hash_put_int (GoomHash *_this, const char *key, int i); |
| void goom_hash_put_float(GoomHash *_this, const char *key, float f); |
| void goom_hash_put_ptr (GoomHash *_this, const char *key, void *ptr); |
| |
| typedef void (*GH_Func)(GoomHash *caller, const char *key, HashValue *value); |
| |
| void goom_hash_for_each(GoomHash *_this, GH_Func func); |
| int goom_hash_number_of_puts(GoomHash *_this); |
| |
| #endif /* _GOOM_HASH_H */ |