From: cedric Date: Wed, 15 Jun 2011 15:46:10 +0000 (+0000) Subject: eina: +eina_hash_free_set. X-Git-Tag: 2.0_alpha~69^2~49 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=13f67ab1d543970a8d27f0c1de7c8335ece8a1a2;p=framework%2Fuifw%2Feina.git eina: +eina_hash_free_set. git-svn-id: svn+ssh://svn.enlightenment.org/var/svn/e/trunk/eina@60354 7cbeb6ba-43b4-40fd-8cce-4c39aea84d33 --- 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,