clang-format: no single-line case
[awesomized/libmemcached] / src / libhashkit / has.cc
1 /*
2 +--------------------------------------------------------------------+
3 | libmemcached - C/C++ Client Library for memcached |
4 +--------------------------------------------------------------------+
5 | Redistribution and use in source and binary forms, with or without |
6 | modification, are permitted under the terms of the BSD license. |
7 | You should have received a copy of the license in a bundled file |
8 | named LICENSE; in case you did not receive a copy you can review |
9 | the terms online at: https://opensource.org/licenses/BSD-3-Clause |
10 +--------------------------------------------------------------------+
11 | Copyright (c) 2006-2014 Brian Aker https://datadifferential.com/ |
12 | Copyright (c) 2020 Michael Wallner <mike@php.net> |
13 +--------------------------------------------------------------------+
14 */
15
16 #include "libhashkit/common.h"
17
18 bool libhashkit_has_algorithm(const hashkit_hash_algorithm_t algo) {
19 switch (algo) {
20 case HASHKIT_HASH_FNV1_64:
21 case HASHKIT_HASH_FNV1A_64:
22 #if __WORDSIZE == 64 && defined(HAVE_FNV64_HASH)
23 return true;
24 #else
25 return false;
26 #endif
27
28 case HASHKIT_HASH_HSIEH:
29 #ifdef HAVE_HSIEH_HASH
30 return true;
31 #else
32 return false;
33 #endif
34
35 case HASHKIT_HASH_MURMUR3:
36 case HASHKIT_HASH_MURMUR:
37 #ifdef HAVE_MURMUR_HASH
38 return true;
39 #else
40 return false;
41 #endif
42
43 case HASHKIT_HASH_FNV1_32:
44 case HASHKIT_HASH_FNV1A_32:
45 case HASHKIT_HASH_DEFAULT:
46 case HASHKIT_HASH_MD5:
47 case HASHKIT_HASH_CRC:
48 case HASHKIT_HASH_JENKINS:
49 case HASHKIT_HASH_CUSTOM:
50 return true;
51
52 case HASHKIT_HASH_MAX:
53 break;
54 }
55
56 return false;
57 }