X-Git-Url: https://git.dogcows.com/gitweb?p=chaz%2Fyoink;a=blobdiff_plain;f=src%2FMoof%2FHash.cc;fp=src%2FMoof%2FHash.cc;h=0000000000000000000000000000000000000000;hp=357b5318a3edb02fb2382fc3689b0f78b84bf1e9;hb=0b8dbc2d02c7f78d273ad9cfdf05c927c648ffd1;hpb=6c47a7028f7c72fabc40f417aa41111c28de8a84 diff --git a/src/Moof/Hash.cc b/src/Moof/Hash.cc deleted file mode 100644 index 357b531..0000000 --- a/src/Moof/Hash.cc +++ /dev/null @@ -1,88 +0,0 @@ - -/*] Copyright (c) 2009-2010, Charles McGarvey [************************** -**] All rights reserved. -* -* vi:ts=4 sw=4 tw=75 -* -* Distributable under the terms and conditions of the 2-clause BSD license; -* see the file COPYING for a complete text of the license. -* -**************************************************************************/ - -#include "Hash.hh" - - -namespace Mf { - - -// MurmurHash2, by Austin Appleby -// http://murmurhash.googlepages.com/ - -// This function is in the public domain. - -// 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. - -unsigned getHash::operator()(const void* key, int len, - unsigned int seed) const -{ - // '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 Mf -