diff options
| author | Franklin Wei <git@fwei.tk> | 2016-02-20 20:37:06 -0500 |
|---|---|---|
| committer | Franklin Wei <git@fwei.tk> | 2016-02-28 16:30:21 -0500 |
| commit | 2c687e77cd9ae3fd01010d7b36c8d0082bb76315 (patch) | |
| tree | b8cd58cea075a3c94cb2f1417e6eaea27865b827 /src/multimap.c | |
| parent | 02de31c48c021742c6245b711790f6d853866c36 (diff) | |
| download | netcosm-2c687e77cd9ae3fd01010d7b36c8d0082bb76315.zip netcosm-2c687e77cd9ae3fd01010d7b36c8d0082bb76315.tar.gz netcosm-2c687e77cd9ae3fd01010d7b36c8d0082bb76315.tar.bz2 netcosm-2c687e77cd9ae3fd01010d7b36c8d0082bb76315.tar.xz | |
implements aliases and other assorted features/enhancements
Diffstat (limited to 'src/multimap.c')
| -rw-r--r-- | src/multimap.c | 10 |
1 files changed, 8 insertions, 2 deletions
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; |