summaryrefslogtreecommitdiffstats
path: root/src/hashtable.h
diff options
context:
space:
mode:
authorGravatar Nikias Bassen2016-11-18 03:22:25 +0100
committerGravatar Nikias Bassen2016-11-18 03:22:25 +0100
commit582c59bf7dcf37270c2fd7e99b4982ebc9bcbc74 (patch)
tree91b8c594acd89e4c53a8c00bd730446bbfc0c6cf /src/hashtable.h
parentf1f2bcebc8690c9b420288aeede2e52c5bf18ccd (diff)
downloadlibplist-582c59bf7dcf37270c2fd7e99b4982ebc9bcbc74.tar.gz
libplist-582c59bf7dcf37270c2fd7e99b4982ebc9bcbc74.tar.bz2
Improve plist_dict_set_item performance for large dictionaries with hash table
Diffstat (limited to 'src/hashtable.h')
-rw-r--r--src/hashtable.h7
1 files changed, 5 insertions, 2 deletions
diff --git a/src/hashtable.h b/src/hashtable.h
index 60a40ab..42d7b93 100644
--- a/src/hashtable.h
+++ b/src/hashtable.h
@@ -2,7 +2,7 @@
* hashtable.h
* header file for really simple hash table implementation
*
- * Copyright (c) 2011 Nikias Bassen, All Rights Reserved.
+ * Copyright (c) 2011-2016 Nikias Bassen, All Rights Reserved.
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
@@ -30,18 +30,21 @@ typedef struct hashentry_t {
typedef unsigned int(*hash_func_t)(const void* key);
typedef int (*compare_func_t)(const void *a, const void *b);
+typedef void (*free_func_t)(void *ptr);
typedef struct hashtable_t {
hashentry_t *entries[4096];
size_t count;
hash_func_t hash_func;
compare_func_t compare_func;
+ free_func_t free_func;
} hashtable_t;
-hashtable_t* hash_table_new(hash_func_t hash_func, compare_func_t compare_func);
+hashtable_t* hash_table_new(hash_func_t hash_func, compare_func_t compare_func, free_func_t free_func);
void hash_table_destroy(hashtable_t *ht);
void hash_table_insert(hashtable_t* ht, void *key, void *value);
void* hash_table_lookup(hashtable_t* ht, void *key);
+void hash_table_remove(hashtable_t* ht, void *key);
#endif