parent
e8af372fd4
commit
4bf6c8924b
|
|
@ -24,11 +24,6 @@ set(CC_UTILS_SOURCES
|
||||||
${CMAKE_CURRENT_LIST_DIR}/xxtea/xxtea.h
|
${CMAKE_CURRENT_LIST_DIR}/xxtea/xxtea.h
|
||||||
)
|
)
|
||||||
|
|
||||||
set(CC_MURMURHASH2_SOURCES
|
|
||||||
${CMAKE_CURRENT_LIST_DIR}/MurmurHash2/MurmurHash2.cpp
|
|
||||||
${CMAKE_CURRENT_LIST_DIR}/MurmurHash2/MurmurHash2.h
|
|
||||||
)
|
|
||||||
|
|
||||||
set(CC_EXTERNAL_SOURCES
|
set(CC_EXTERNAL_SOURCES
|
||||||
|
|
||||||
${CMAKE_CURRENT_LIST_DIR}/tommyds/tommy.c
|
${CMAKE_CURRENT_LIST_DIR}/tommyds/tommy.c
|
||||||
|
|
@ -40,7 +35,6 @@ if(NOT USE_MODULES)
|
||||||
${CC_UNZIP_SOURCES}
|
${CC_UNZIP_SOURCES}
|
||||||
${CC_TINYDIR_SOURCES}
|
${CC_TINYDIR_SOURCES}
|
||||||
${CC_UTILS_SOURCES}
|
${CC_UTILS_SOURCES}
|
||||||
${CC_MURMURHASH2_SOURCES}
|
|
||||||
)
|
)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,71 +0,0 @@
|
||||||
//-----------------------------------------------------------------------------
|
|
||||||
// MurmurHash2, by Austin Appleby
|
|
||||||
|
|
||||||
// Note - This code makes a few assumptions about how your machine behaves -
|
|
||||||
|
|
||||||
// 1. We can read a 4-byte value from any address without crashing
|
|
||||||
// 2. sizeof(int) == 4
|
|
||||||
|
|
||||||
// And it has a few limitations -
|
|
||||||
|
|
||||||
// 1. It will not work incrementally.
|
|
||||||
// 2. It will not produce the same results on little-endian and big-endian
|
|
||||||
// machines.
|
|
||||||
|
|
||||||
#include "MurmurHash2.h"
|
|
||||||
|
|
||||||
namespace murmurhash2 {
|
|
||||||
|
|
||||||
unsigned int MurmurHash2 ( const void * key, int len, unsigned int seed )
|
|
||||||
{
|
|
||||||
// 'm' and 'r' are mixing constants generated offline.
|
|
||||||
// They're not really 'magic', they just happen to work well.
|
|
||||||
|
|
||||||
const unsigned int m = 0x5bd1e995;
|
|
||||||
const int r = 24;
|
|
||||||
|
|
||||||
// Initialize the hash to a 'random' value
|
|
||||||
|
|
||||||
unsigned int h = seed ^ len;
|
|
||||||
|
|
||||||
// Mix 4 bytes at a time into the hash
|
|
||||||
|
|
||||||
const unsigned char * data = (const unsigned char *)key;
|
|
||||||
|
|
||||||
while(len >= 4)
|
|
||||||
{
|
|
||||||
unsigned int k = *(unsigned int *)data;
|
|
||||||
|
|
||||||
k *= m;
|
|
||||||
k ^= k >> r;
|
|
||||||
k *= m;
|
|
||||||
|
|
||||||
h *= m;
|
|
||||||
h ^= k;
|
|
||||||
|
|
||||||
data += 4;
|
|
||||||
len -= 4;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Handle the last few bytes of the input array
|
|
||||||
|
|
||||||
switch(len)
|
|
||||||
{
|
|
||||||
case 3: h ^= data[2] << 16;
|
|
||||||
case 2: h ^= data[1] << 8;
|
|
||||||
case 1: h ^= data[0];
|
|
||||||
h *= m;
|
|
||||||
};
|
|
||||||
|
|
||||||
// Do a few final mixes of the hash to ensure the last few
|
|
||||||
// bytes are well-incorporated.
|
|
||||||
|
|
||||||
h ^= h >> 13;
|
|
||||||
h *= m;
|
|
||||||
h ^= h >> 15;
|
|
||||||
|
|
||||||
return h;
|
|
||||||
}
|
|
||||||
|
|
||||||
} // namespace murmurhash2 {
|
|
||||||
|
|
||||||
|
|
@ -1,7 +0,0 @@
|
||||||
#pragma once
|
|
||||||
|
|
||||||
namespace murmurhash2 {
|
|
||||||
|
|
||||||
unsigned int MurmurHash2( const void * key, int len, unsigned int seed );
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
@ -116,7 +116,4 @@ glslang (Built using https://github.com/YunHsiao/glslang/tree/build)
|
||||||
android: 11.5.0 (commit: 1978c76)
|
android: 11.5.0 (commit: 1978c76)
|
||||||
mac: 11.5.0 (commit: 1978c76)
|
mac: 11.5.0 (commit: 1978c76)
|
||||||
ios: 11.5.0 (commit: 1978c76)
|
ios: 11.5.0 (commit: 1978c76)
|
||||||
|
|
||||||
MurmurHash2
|
|
||||||
all-platforms: (no version informantion): https://sites.google.com/site/murmurhash
|
|
||||||
|
|
||||||
Loading…
Reference in New Issue