aboutsummaryrefslogtreecommitdiff
path: root/advent-of-code/2022/lib/htable.h
diff options
context:
space:
mode:
Diffstat (limited to 'advent-of-code/2022/lib/htable.h')
-rw-r--r--advent-of-code/2022/lib/htable.h29
1 files changed, 29 insertions, 0 deletions
diff --git a/advent-of-code/2022/lib/htable.h b/advent-of-code/2022/lib/htable.h
new file mode 100644
index 0000000..3bde74f
--- /dev/null
+++ b/advent-of-code/2022/lib/htable.h
@@ -0,0 +1,29 @@
+#ifndef HTABLE_H_
+#define HTABLE_H_
+
+#include <stdbool.h>
+#include <stdint.h>
+
+typedef struct {
+ void *buf;
+ int size;
+ int cap;
+ int taken;
+ void* begin;
+ int elemsz;
+ uint32_t (*hash)(void*);
+ bool (*eq)(void*, void*);
+} HTable;
+
+void htable_init(HTable *ht, int elemsz, int cap, uint32_t (*hash)(void*),
+ bool (*eq)(void*, void*));
+bool htable_insert(HTable *ht, void* elem);
+void htable_del(HTable *ht, void* iter);
+
+// return a iterator
+void* htable_find(HTable *ht, void* elem);
+void* htable_begin(HTable *ht);
+void* htable_next(HTable *ht, void *iter);
+
+#endif
+