eina: +eina_hash_free_set.
authorcedric <cedric@7cbeb6ba-43b4-40fd-8cce-4c39aea84d33>
Wed, 15 Jun 2011 15:46:10 +0000 (15:46 +0000)
committercedric <cedric@7cbeb6ba-43b4-40fd-8cce-4c39aea84d33>
Wed, 15 Jun 2011 15:46:10 +0000 (15:46 +0000)
git-svn-id: svn+ssh://svn.enlightenment.org/var/svn/e/trunk/eina@60354 7cbeb6ba-43b4-40fd-8cce-4c39aea84d33

ChangeLog
src/include/eina_hash.h
src/lib/eina_hash.c

index db14e53..d6becc6 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
 
        * 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.
index 373c6b6..6609de8 100644 (file)
@@ -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
index bf1bcd7..9b237ff 100644 (file)
@@ -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,