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 @@
2 * hashtable.h 2 * hashtable.h
3 * header file for really simple hash table implementation 3 * header file for really simple hash table implementation
4 * 4 *
5 * Copyright (c) 2011 Nikias Bassen, All Rights Reserved. 5 * Copyright (c) 2011-2016 Nikias Bassen, All Rights Reserved.
6 * 6 *
7 * This library is free software; you can redistribute it and/or 7 * This library is free software; you can redistribute it and/or
8 * modify it under the terms of the GNU Lesser General Public 8 * modify it under the terms of the GNU Lesser General Public
@@ -30,18 +30,21 @@ typedef struct hashentry_t {
30 30
31typedef unsigned int(*hash_func_t)(const void* key); 31typedef unsigned int(*hash_func_t)(const void* key);
32typedef int (*compare_func_t)(const void *a, const void *b); 32typedef int (*compare_func_t)(const void *a, const void *b);
33typedef void (*free_func_t)(void *ptr);
33 34
34typedef struct hashtable_t { 35typedef struct hashtable_t {
35 hashentry_t *entries[4096]; 36 hashentry_t *entries[4096];
36 size_t count; 37 size_t count;
37 hash_func_t hash_func; 38 hash_func_t hash_func;
38 compare_func_t compare_func; 39 compare_func_t compare_func;
40 free_func_t free_func;
39} hashtable_t; 41} hashtable_t;
40 42
41hashtable_t* hash_table_new(hash_func_t hash_func, compare_func_t compare_func); 43hashtable_t* hash_table_new(hash_func_t hash_func, compare_func_t compare_func, free_func_t free_func);
42void hash_table_destroy(hashtable_t *ht); 44void hash_table_destroy(hashtable_t *ht);
43 45
44void hash_table_insert(hashtable_t* ht, void *key, void *value); 46void hash_table_insert(hashtable_t* ht, void *key, void *value);
45void* hash_table_lookup(hashtable_t* ht, void *key); 47void* hash_table_lookup(hashtable_t* ht, void *key);
48void hash_table_remove(hashtable_t* ht, void *key);
46 49
47#endif 50#endif