From: cedric Date: Fri, 19 Jun 2009 14:44:23 +0000 (+0000) Subject: * eina: Add an eina_hash_stringshare_new. X-Git-Tag: submit/2.0alpha-wayland/20121127.222009~1579 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=c83495db42b845478d1772b6b9695e7853e78a3b;p=profile%2Fivi%2Feina.git * eina: Add an eina_hash_stringshare_new. git-svn-id: http://svn.enlightenment.org/svn/e/trunk/eina@41112 7cbeb6ba-43b4-40fd-8cce-4c39aea84d33 --- diff --git a/src/include/eina_hash.h b/src/include/eina_hash.h index fed6f94..ad4bc9a 100644 --- a/src/include/eina_hash.h +++ b/src/include/eina_hash.h @@ -74,6 +74,7 @@ EAPI Eina_Hash * eina_hash_string_small_new(Eina_Free_Cb data_free_cb); EAPI Eina_Hash * eina_hash_int32_new(Eina_Free_Cb data_free_cb); EAPI Eina_Hash * eina_hash_int64_new(Eina_Free_Cb data_free_cb); EAPI Eina_Hash * eina_hash_pointer_new(Eina_Free_Cb data_free_cb); +EAPI Eina_Hash * eina_hash_stringshared_new(Eina_Free_Cb data_free_cb); EAPI Eina_Bool eina_hash_add(Eina_Hash *hash, const void *key, const void *data) EINA_ARG_NONNULL(1, 2, 3); EAPI Eina_Bool eina_hash_direct_add(Eina_Hash *hash, const void *key, const void *data) EINA_ARG_NONNULL(1, 2, 3); diff --git a/src/lib/eina_hash.c b/src/lib/eina_hash.c index 926055d..538daf1 100644 --- a/src/lib/eina_hash.c +++ b/src/lib/eina_hash.c @@ -439,6 +439,13 @@ _eina_string_key_cmp(const char *key1, __UNUSED__ int key1_length, return strcmp(key1, key2); } +static int +_eina_stringshared_key_cmp(const char *key1, __UNUSED__ int key1_length, + const char *key2, __UNUSED__ int key2_length) +{ + return key1 - key2; +} + static unsigned int _eina_int32_key_length(__UNUSED__ const uint32_t *key) { @@ -790,6 +797,16 @@ eina_hash_pointer_new(Eina_Free_Cb data_free_cb) #endif } +EAPI Eina_Hash * +eina_hash_stringshared_new(Eina_Free_Cb data_free_cb) +{ + return eina_hash_new(NULL, + EINA_KEY_CMP(_eina_stringshared_key_cmp), + EINA_KEY_HASH(eina_hash_superfast), + data_free_cb, + EINA_HASH_BUCKET_SIZE); +} + /** * Retrieves the number of buckets available in the given hash table. * @param hash The given hash table.