From 2c687e77cd9ae3fd01010d7b36c8d0082bb76315 Mon Sep 17 00:00:00 2001 From: Franklin Wei Date: Sat, 20 Feb 2016 20:37:06 -0500 Subject: implements aliases and other assorted features/enhancements --- src/multimap.c | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) (limited to 'src/multimap.c') diff --git a/src/multimap.c b/src/multimap.c index d609d0f..b958db0 100644 --- a/src/multimap.c +++ b/src/multimap.c @@ -203,11 +203,17 @@ size_t multimap_delete(void *ptr, const void *key, const void *val) next = iter->next; if(!map->compare_val(val, iter->val)) { + if(map->free_data) + map->free_data(iter->val); + if(map->free_key) + map->free_key((void*)iter->key); + if(last) last->next = iter->next; else node->list = iter->next; free(iter); + ++deleted; --node->n_pairs; --map->total_pairs; @@ -250,9 +256,9 @@ size_t multimap_delete_all(void *ptr, const void *key) return 0; } -const struct multimap_list *multimap_iterate(void *ptr, void **save, size_t *n_pairs) +const struct multimap_list *multimap_iterate(const void *ptr, void **save, size_t *n_pairs) { - struct multimap_t *map = ptr; + const struct multimap_t *map = ptr; CHECK_SENTINEL(map); struct multimap_node *node; -- cgit v1.1