From 858ae4d03def568a03f53826c31842f24d9c49c0 Mon Sep 17 00:00:00 2001 From: Fabrice Date: Fri, 20 Mar 2026 18:08:24 +0100 Subject: init --- cheesemap.c | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) create mode 100644 cheesemap.c (limited to 'cheesemap.c') diff --git a/cheesemap.c b/cheesemap.c new file mode 100644 index 0000000..c443593 --- /dev/null +++ b/cheesemap.c @@ -0,0 +1,25 @@ +#include "cheesemap.h" + +#include + +static inline uintptr_t cm_raw_capacity(const struct cheesemap_raw* map) { + assert(map != NULL); + return map->cap_mask + 1; +} + +static inline uint8_t* cm_raw_origin(const struct cheesemap_raw* map, + uintptr_t entry_size) { + assert(map != NULL); + return map->ctrl - entry_size * cm_raw_capacity(map); +} + +void cm_raw_drop(struct cheesemap_raw* map, uintptr_t entry_size, + struct cheesemap_fns* fns) { + assert(map != NULL); + assert(fns != NULL); + + if (map->ctrl == NULL) return; + + uint8_t* origin = cm_raw_origin(map, entry_size); + fns->free(origin, fns->mem_usr); +} -- cgit v1.2.3