diff options
author | Nikias Bassen | 2016-11-18 03:22:25 +0100 |
---|---|---|
committer | Nikias Bassen | 2016-11-18 03:22:25 +0100 |
commit | 582c59bf7dcf37270c2fd7e99b4982ebc9bcbc74 (patch) | |
tree | 91b8c594acd89e4c53a8c00bd730446bbfc0c6cf /src/hashtable.h | |
parent | f1f2bcebc8690c9b420288aeede2e52c5bf18ccd (diff) | |
download | libplist-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.h | 7 |
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 |