aboutsummaryrefslogtreecommitdiff
path: root/src/mmhash.c
diff options
context:
space:
mode:
authorMistivia <i@mistivia.com>2025-07-22 15:28:30 +0800
committerMistivia <i@mistivia.com>2025-07-22 15:28:45 +0800
commit999fcf0f7655c03265c222cc67617f0f510979bf (patch)
treedd51680ffda411239e37460c834a996dc934dc63 /src/mmhash.c
parenta8764a20f355fd8fb7b03978d754d1cbd48d0a88 (diff)
change dir structure
Diffstat (limited to 'src/mmhash.c')
-rw-r--r--src/mmhash.c57
1 files changed, 0 insertions, 57 deletions
diff --git a/src/mmhash.c b/src/mmhash.c
deleted file mode 100644
index 7897b9e..0000000
--- a/src/mmhash.c
+++ /dev/null
@@ -1,57 +0,0 @@
-#include "mmhash.h"
-
-/*-----------------------------------------------------------------------------
-// MurmurHash2, 64-bit versions, by Austin Appleby
-//
-// The same caveats as 32-bit MurmurHash2 apply here - beware of alignment
-// and endian-ness issues if used across multiple platforms.
-//
-// 64-bit hash for 64-bit platforms
-*/
-
-uint64_t mmhash(const void *key, int len, uint64_t seed) {
- const uint64_t m = 0xc6a4a7935bd1e995LL;
- const int r = 47;
-
- uint64_t h = seed ^ (len * m);
-
- const uint64_t *data = (const uint64_t *)key;
- const uint64_t *end = data + (len / 8);
-
- while (data != end) {
- uint64_t k = *data++;
-
- k *= m;
- k ^= k >> r;
- k *= m;
-
- h ^= k;
- h *= m;
- }
-
- const unsigned char *data2 = (const unsigned char *)data;
-
- switch (len & 7) {
- case 7:
- h ^= ((uint64_t)data2[6]) << 48;
- case 6:
- h ^= ((uint64_t)data2[5]) << 40;
- case 5:
- h ^= ((uint64_t)data2[4]) << 32;
- case 4:
- h ^= ((uint64_t)data2[3]) << 24;
- case 3:
- h ^= ((uint64_t)data2[2]) << 16;
- case 2:
- h ^= ((uint64_t)data2[1]) << 8;
- case 1:
- h ^= ((uint64_t)data2[0]);
- h *= m;
- };
-
- h ^= h >> r;
- h *= m;
- h ^= h >> r;
-
- return h;
-}