aboutsummaryrefslogtreecommitdiff
path: root/advent-of-code/2023/lib/map.h
diff options
context:
space:
mode:
authorMistivia <i@mistivia.com>2024-01-27 14:02:35 +0800
committerMistivia <i@mistivia.com>2024-01-27 14:02:35 +0800
commit6580dcd9127f69aaa794472ec92bc46015dc4019 (patch)
treedc2c7e102c75180f7bd98c2f3a14f8b55f83c0f2 /advent-of-code/2023/lib/map.h
init
Diffstat (limited to 'advent-of-code/2023/lib/map.h')
-rw-r--r--advent-of-code/2023/lib/map.h33
1 files changed, 33 insertions, 0 deletions
diff --git a/advent-of-code/2023/lib/map.h b/advent-of-code/2023/lib/map.h
new file mode 100644
index 0000000..c54048c
--- /dev/null
+++ b/advent-of-code/2023/lib/map.h
@@ -0,0 +1,33 @@
+#ifndef MAP_H_
+#define MAP_H_
+
+#include "rb_tree.h"
+
+typedef struct {
+ rb_node_t node;
+ void *key;
+ void *value;
+} node_entry_t;
+typedef int (*cmp_t)(void** a, void** b);
+
+void* new_map(cmp_t compare);
+void map_set(void* self, void* key, void* value);
+void* map_get(void* self, void* key);
+void map_erase(void* self, void* key);
+
+void* map_begin(void *self);
+void* map_next(void *self, void *iter);
+void* map_iter_key(void* iter);
+void* map_iter_value(void* iter);
+
+void* new_dict();
+void dict_set(void* self, const char *key, void* value);
+void* dict_get(void* self, const char* key);
+void dict_erase(void* self, const char* key);
+
+void* dict_begin(void *self);
+void* dict_next(void *self, void *iter);
+const char* dict_iter_key(void* iter);
+void* dict_iter_value(void* iter);
+
+#endif