From 72daebf48e4a27de9f6633b2693ab96fb4ef1e44 Mon Sep 17 00:00:00 2001 From: Tavian Barnes Date: Fri, 30 May 2014 19:23:34 -0400 Subject: map: Use pool. --- libdimension/map.c | 34 ++++++++++++++++------------------ 1 file changed, 16 insertions(+), 18 deletions(-) (limited to 'libdimension/map.c') diff --git a/libdimension/map.c b/libdimension/map.c index 963f170..df07ec8 100644 --- a/libdimension/map.c +++ b/libdimension/map.c @@ -31,32 +31,30 @@ typedef struct dmnsn_map_entry { char object[]; } dmnsn_map_entry; +static void +dmnsn_map_cleanup(void *ptr) +{ + dmnsn_map *map = ptr; + if (map->free_fn) { + for (size_t i = 0; i < dmnsn_array_size(map->array); ++i) { + dmnsn_map_entry *entry = dmnsn_array_at(map->array, i); + map->free_fn(entry->object); + } + } + + dmnsn_delete_array(map->array); +} + dmnsn_map * -dmnsn_new_map(size_t size) +dmnsn_new_map(dmnsn_pool *pool, size_t size) { - dmnsn_map *map = DMNSN_MALLOC(dmnsn_map); + dmnsn_map *map = DMNSN_PALLOC_TIDY(pool, dmnsn_map, dmnsn_map_cleanup); map->free_fn = NULL; map->obj_size = size; map->array = dmnsn_new_array(sizeof(dmnsn_map_entry) + size); return map; } -void -dmnsn_delete_map(dmnsn_map *map) -{ - if (map) { - if (map->free_fn) { - for (size_t i = 0; i < dmnsn_array_size(map->array); ++i) { - dmnsn_map_entry *entry = dmnsn_array_at(map->array, i); - map->free_fn(entry->object); - } - } - - dmnsn_delete_array(map->array); - dmnsn_free(map); - } -} - void dmnsn_map_add_entry(dmnsn_map *map, double n, const void *obj) { -- cgit v1.2.3