- case HASHKIT_HASH_DEFAULT:
- self->base_hash.function= hashkit_one_at_a_time;
- break;
- case HASHKIT_HASH_MD5:
- self->base_hash.function= hashkit_md5;
- break;
- case HASHKIT_HASH_CRC:
- self->base_hash.function= hashkit_crc32;
- break;
- case HASHKIT_HASH_FNV1_64:
- self->base_hash.function= hashkit_fnv1_64;
- break;
- case HASHKIT_HASH_FNV1A_64:
- self->base_hash.function= hashkit_fnv1a_64;
- break;
- case HASHKIT_HASH_FNV1_32:
- self->base_hash.function= hashkit_fnv1_32;
- break;
- case HASHKIT_HASH_FNV1A_32:
- self->base_hash.function= hashkit_fnv1a_32;
- break;
- case HASHKIT_HASH_HSIEH:
-#ifdef HAVE_HSIEH_HASH
- self->base_hash.function= hashkit_hsieh;
- break;
-#else
- return HASHKIT_FAILURE;
-#endif
- case HASHKIT_HASH_MURMUR:
- self->base_hash.function= hashkit_murmur;
- break;
- case HASHKIT_HASH_JENKINS:
- self->base_hash.function= hashkit_jenkins;
- break;
- case HASHKIT_HASH_CUSTOM:
- case HASHKIT_HASH_MAX:
- default:
- return HASHKIT_FAILURE;
- break;
- }
-
- self->base_hash.context= NULL;
-
- return HASHKIT_SUCCESS;
-}
-
-hashkit_return_t hashkit_set_base_function_custom(hashkit_st *self, hashkit_hash_fn function, void *context)
-{
- if (function)
- {
- self->base_hash.function= function;
- self->base_hash.context= context;
-
- return HASHKIT_SUCCESS;
- }
-
- return HASHKIT_FAILURE;
-}
-
-hashkit_hash_algorithm_t hashkit_get_base_function(const hashkit_st *self)
-{
- if (self->base_hash.function == hashkit_one_at_a_time)
- {
- return HASHKIT_HASH_DEFAULT;
- }
- else if (self->base_hash.function == hashkit_md5)
- {
- return HASHKIT_HASH_MD5;
- }
- else if (self->base_hash.function == hashkit_crc32)
- {
- return HASHKIT_HASH_CRC;
- }
- else if (self->base_hash.function == hashkit_fnv1_64)
- {
- return HASHKIT_HASH_FNV1_64;
- }
- else if (self->base_hash.function == hashkit_fnv1a_64)
- {
- return HASHKIT_HASH_FNV1A_64;
- }
- else if (self->base_hash.function == hashkit_fnv1_32)
- {
- return HASHKIT_HASH_FNV1_32;
- }
- else if (self->base_hash.function == hashkit_fnv1a_32)
- {
- return HASHKIT_HASH_FNV1A_32;
- }
-#ifdef HAVE_HSIEH_HASH
- else if (self->base_hash.function == hashkit_hsieh)
- {
- return HASHKIT_HASH_HSIEH;
- }
-#endif
- else if (self->base_hash.function == hashkit_murmur)
- {
- return HASHKIT_HASH_MURMUR;
- }
- else if (self->base_hash.function == hashkit_jenkins)
- {
- return HASHKIT_HASH_JENKINS;
- }
-
- return HASHKIT_HASH_CUSTOM;
-}
-
-uint32_t libhashkit_generate_value(const char *key, size_t key_length, hashkit_hash_algorithm_t hash_algorithm)
-{
- switch (hash_algorithm)
- {
- case HASHKIT_HASH_DEFAULT:
- return libhashkit_one_at_a_time(key, key_length);
- case HASHKIT_HASH_MD5:
- return libhashkit_md5(key, key_length);
- case HASHKIT_HASH_CRC:
- return libhashkit_crc32(key, key_length);
- case HASHKIT_HASH_FNV1_64:
- return libhashkit_fnv1_64(key, key_length);
- case HASHKIT_HASH_FNV1A_64:
- return libhashkit_fnv1a_64(key, key_length);
- case HASHKIT_HASH_FNV1_32:
- return libhashkit_fnv1_32(key, key_length);
- case HASHKIT_HASH_FNV1A_32:
- return libhashkit_fnv1a_32(key, key_length);
- case HASHKIT_HASH_HSIEH:
-#ifdef HAVE_HSIEH_HASH
- return libhashkit_hsieh(key, key_length);
-#else
- return 1;
-#endif
- case HASHKIT_HASH_MURMUR:
- return libhashkit_murmur(key, key_length);
- case HASHKIT_HASH_JENKINS:
- return libhashkit_jenkins(key, key_length);
- case HASHKIT_HASH_CUSTOM:
- case HASHKIT_HASH_MAX:
- default:
-#ifdef HAVE_DEBUG
- fprintf(stderr, "hashkit_hash_t was extended but libhashkit_generate_value was not updated\n");
- fflush(stderr);
- assert(0);
-#endif
- break;