diff options
| author | Mistivia <i@mistivia.com> | 2024-02-16 11:07:30 +0800 |
|---|---|---|
| committer | Mistivia <i@mistivia.com> | 2024-02-16 11:07:30 +0800 |
| commit | e1a5304af2c35ff83819546953309764e24656d4 (patch) | |
| tree | 8992bf2a489e4dc7f6ff3b9661aae5a50d08cab9 /advent-of-code/2023/lib/map.c | |
| parent | a19a1b970e5dd6983be8660ef6e0f5929fb5a149 (diff) | |
refactor from c to racket
Diffstat (limited to 'advent-of-code/2023/lib/map.c')
| -rw-r--r-- | advent-of-code/2023/lib/map.c | 90 |
1 files changed, 0 insertions, 90 deletions
diff --git a/advent-of-code/2023/lib/map.c b/advent-of-code/2023/lib/map.c deleted file mode 100644 index 846033e..0000000 --- a/advent-of-code/2023/lib/map.c +++ /dev/null @@ -1,90 +0,0 @@ -#include "map.h" -#include "rb_tree.h" - -#include <string.h> - -typedef int (*rb_cmp_t)(void*, void*); - -void* new_map(cmp_t compare) { - rb_tree_t *tree = malloc(sizeof(rb_tree_t)); - rb_cmp_t cmp = (rb_cmp_t)compare; - *tree = (rb_tree_t){NULL, cmp, NULL}; - return tree; -} - -void map_set(void* self, void* key, void* value) { - node_entry_t *iter = rb_tree_find(self, &key); - if (iter == NULL) { - iter = malloc(sizeof(*iter)); - iter->key = key; - iter->value = value; - rb_tree_insert(self, iter); - } else { - iter->value = value; - } -} - -void* map_get(void* self, void* key) { - node_entry_t *iter = rb_tree_find(self, &key); - if (iter == NULL) return NULL; - return iter->value; -} - -void map_erase(void* self, void* key) { - rb_tree_remove(self, key); -} - -void* map_begin(void *self) { - return rb_tree_min(self); -} - -void* map_next(void *self, void *iter) { - return rb_tree_next(self, iter); -} - -void* map_iter_key(void* iter_) { - node_entry_t *iter = iter_; - return iter->key; -} - -void* map_iter_value(void* iter_) { - node_entry_t *iter = iter_; - return iter->value; -} - -static int dict_cmp(void **a, void** b) { - return strcmp(*a, *b); -} -void* new_dict() { - return new_map(dict_cmp); -} - -void dict_set(void* self, const char *key, void* value) { - map_set(self, (void*)key, value); -} - -void* dict_get(void* self, const char* key) { - return map_get(self, (void*)key); -} - -void dict_erase(void* self, const char* key) { - map_erase(self, (void*)key); -} - -void* dict_begin(void *self) { - return map_begin(self); -} - -void* dict_next(void *self, void *iter) { - return map_next(self, iter); -} - -const char* dict_iter_key(void* iter) { - return map_iter_key(iter); -} - -void* dict_iter_value(void* iter) { - return map_iter_value(iter); -} - - |
