From 5ec9f62e308a432491dfaa373af2b5a76d9c381e Mon Sep 17 00:00:00 2001 From: cedric Date: Wed, 15 Jun 2011 15:46:10 +0000 Subject: [PATCH] eina: +eina_hash_free_set. git-svn-id: http://svn.enlightenment.org/svn/e/trunk/eina@60354 7cbeb6ba-43b4-40fd-8cce-4c39aea84d33 --- ChangeLog | 7 ++++++- src/include/eina_hash.h | 9 +++++++++ src/lib/eina_hash.c | 9 +++++++++ 3 files changed, 24 insertions(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index db14e53..d6becc6 100644 --- a/ChangeLog +++ b/ChangeLog @@ -102,7 +102,12 @@ * Fix eina_hash_set to handle data == NULL like eina_hash_del. -2011-06-3 Vincent Torri +2011-06-03 Vincent Torri * Fix static linking with eina (iconv could potentially not be passed to the linker) + +2011-06-15 Cedric Bail + + * Add eina_hash_free_set to change the free callback during the + life of an Eina_Hash. diff --git a/src/include/eina_hash.h b/src/include/eina_hash.h index 373c6b6..6609de8 100644 --- a/src/include/eina_hash.h +++ b/src/include/eina_hash.h @@ -264,6 +264,15 @@ EAPI Eina_Hash *eina_hash_new(Eina_Key_Length key_length_cb, int buckets_power_size) EINA_MALLOC EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(2, 3); /** + * @brief Redefine the callback that clean the data of a hash + * + * @param hash The given hash table + * @param data_free_cb The function called on each value when the hash + * table is freed. @c NULL can be passed as callback. + */ +EAPI void eina_hash_free_set(Eina_Hash *hash, Eina_Free_Cb data_free_cb) EINA_ARG_NONNULL(1); + +/** * @brief Create a new hash table using the djb2 algorithm. * * @param data_free_cb The function called on each value when the hash table diff --git a/src/lib/eina_hash.c b/src/lib/eina_hash.c index bf1bcd7..9b237ff 100644 --- a/src/lib/eina_hash.c +++ b/src/lib/eina_hash.c @@ -713,6 +713,15 @@ _eina_hash_iterator_free(Eina_Iterator_Hash *it) * API * *============================================================================*/ +EAPI void +eina_hash_free_set(Eina_Hash *hash, Eina_Free_Cb data_free_cb) +{ + EINA_MAGIC_CHECK_HASH(hash); + EINA_SAFETY_ON_NULL_RETURN(hash); + + hash->data_free_cb = data_free_cb; +} + EAPI Eina_Hash * eina_hash_new(Eina_Key_Length key_length_cb, Eina_Key_Cmp key_cmp_cb, -- 2.7.4