summaryrefslogtreecommitdiff
path: root/src/post/goom/goom_hash.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/post/goom/goom_hash.h')
-rw-r--r--src/post/goom/goom_hash.h34
1 files changed, 34 insertions, 0 deletions
diff --git a/src/post/goom/goom_hash.h b/src/post/goom/goom_hash.h
new file mode 100644
index 000000000..c869e67e4
--- /dev/null
+++ b/src/post/goom/goom_hash.h
@@ -0,0 +1,34 @@
+#ifndef _GOOM_HASH_H
+#define _GOOM_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;
+};
+
+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);
+
+#endif /* _GOOM_HASH_H */