aboutsummaryrefslogtreecommitdiff
path: root/src/hash.c
diff options
context:
space:
mode:
authorFranklin Wei <git@fwei.tk>2016-01-31 19:53:45 -0500
committerFranklin Wei <git@fwei.tk>2016-01-31 19:53:45 -0500
commit7e223238ec9d6711290b1718c44cfe8158477b71 (patch)
tree495d79d0dc26e39c9065c6ceb7d16b9a3e76561d /src/hash.c
parentc87ef9230be5e52c9fa532ee0a3eba63960fc76d (diff)
downloadnetcosm-7e223238ec9d6711290b1718c44cfe8158477b71.zip
netcosm-7e223238ec9d6711290b1718c44cfe8158477b71.tar.gz
netcosm-7e223238ec9d6711290b1718c44cfe8158477b71.tar.bz2
netcosm-7e223238ec9d6711290b1718c44cfe8158477b71.tar.xz
bump version to 0.5.0-rc1
* implements objects using reference counts rather than copying * implements both room-local and global verbs * refactors the world_* functions into a separate module * numerous other changes
Diffstat (limited to 'src/hash.c')
-rw-r--r--src/hash.c9
1 files changed, 9 insertions, 0 deletions
diff --git a/src/hash.c b/src/hash.c
index da15157..23e4bba 100644
--- a/src/hash.c
+++ b/src/hash.c
@@ -34,6 +34,7 @@ struct hash_map {
size_t table_sz;
void (*free_key)(void *key);
void (*free_data)(void *data);
+ void* (*dup_data)(void *data);
size_t n_entries;
};
@@ -279,7 +280,15 @@ void *hash_dup(void *ptr)
if(!data)
break;
ptr = NULL;
+ if(map->dup_data)
+ data = map->dup_data(data);
hash_insert(ret, key, data);
}
return ret;
}
+
+void hash_setdupdata_cb(void *ptr, void *(*cb)(void*))
+{
+ struct hash_map *map = ptr;
+ map->dup_data = cb;
+}