fix: some file didn't have the svn:eol-style native yet
This commit is contained in:
@@ -1,78 +1,78 @@
|
||||
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
/**
|
||||
* Contains hashing code.
|
||||
* \file IceHashing.h
|
||||
* \author Pierre Terdiman
|
||||
* \date May, 08, 1999
|
||||
*/
|
||||
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
// Include Guard
|
||||
#ifndef ICEHASHING_H
|
||||
#define ICEHASHING_H
|
||||
|
||||
#define HashSize(n) ((udword)1<<(n))
|
||||
#define HashMask(n) (HashSize(n)-1)
|
||||
|
||||
ICECORE_API udword Hash(const char* str);
|
||||
ICECORE_API udword Hash(ubyte* k, udword length, udword initval);
|
||||
|
||||
// Bob Jenkin's hash
|
||||
inline_ unsigned int Hash32Bits_0(unsigned int key)
|
||||
{
|
||||
key += (key << 12);
|
||||
key ^= (key >> 22);
|
||||
key += (key << 4);
|
||||
key ^= (key >> 9);
|
||||
key += (key << 10);
|
||||
key ^= (key >> 2);
|
||||
key += (key << 7);
|
||||
key ^= (key >> 12);
|
||||
return key;
|
||||
}
|
||||
|
||||
// Thomas Wang's hash
|
||||
inline_ int Hash32Bits_1(int key)
|
||||
{
|
||||
key += ~(key << 15);
|
||||
key ^= (key >> 10);
|
||||
key += (key << 3);
|
||||
key ^= (key >> 6);
|
||||
key += ~(key << 11);
|
||||
key ^= (key >> 16);
|
||||
return key;
|
||||
}
|
||||
|
||||
// Thomas Wang's hash
|
||||
inline_ __int64 Hash64Bits_0(__int64 key)
|
||||
{
|
||||
key += ~(key << 32);
|
||||
key ^= (key >> 22);
|
||||
key += ~(key << 13);
|
||||
key ^= (key >> 8);
|
||||
key += (key << 3);
|
||||
key ^= (key >> 15);
|
||||
key += ~(key << 27);
|
||||
key ^= (key >> 31);
|
||||
return key;
|
||||
}
|
||||
|
||||
inline_ __int64 Hash64Bits_1(__int64 key)
|
||||
{
|
||||
__int64 c1 = 0x6e5ea73858134343L;
|
||||
__int64 c2 = 0xb34e8f99a2ec9ef5L;
|
||||
key ^= ((c1 ^ key) >> 32);
|
||||
key *= c1;
|
||||
key ^= ((c2 ^ key) >> 31);
|
||||
key *= c2;
|
||||
key ^= ((c1 ^ key) >> 32);
|
||||
return key;
|
||||
}
|
||||
|
||||
inline_ udword Hash(udword id0, udword id1)
|
||||
{
|
||||
return Hash32Bits_1( (id0&0xffff)|(id1<<16) );
|
||||
}
|
||||
|
||||
#endif // ICEHASHING_H
|
||||
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
/**
|
||||
* Contains hashing code.
|
||||
* \file IceHashing.h
|
||||
* \author Pierre Terdiman
|
||||
* \date May, 08, 1999
|
||||
*/
|
||||
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
// Include Guard
|
||||
#ifndef ICEHASHING_H
|
||||
#define ICEHASHING_H
|
||||
|
||||
#define HashSize(n) ((udword)1<<(n))
|
||||
#define HashMask(n) (HashSize(n)-1)
|
||||
|
||||
ICECORE_API udword Hash(const char* str);
|
||||
ICECORE_API udword Hash(ubyte* k, udword length, udword initval);
|
||||
|
||||
// Bob Jenkin's hash
|
||||
inline_ unsigned int Hash32Bits_0(unsigned int key)
|
||||
{
|
||||
key += (key << 12);
|
||||
key ^= (key >> 22);
|
||||
key += (key << 4);
|
||||
key ^= (key >> 9);
|
||||
key += (key << 10);
|
||||
key ^= (key >> 2);
|
||||
key += (key << 7);
|
||||
key ^= (key >> 12);
|
||||
return key;
|
||||
}
|
||||
|
||||
// Thomas Wang's hash
|
||||
inline_ int Hash32Bits_1(int key)
|
||||
{
|
||||
key += ~(key << 15);
|
||||
key ^= (key >> 10);
|
||||
key += (key << 3);
|
||||
key ^= (key >> 6);
|
||||
key += ~(key << 11);
|
||||
key ^= (key >> 16);
|
||||
return key;
|
||||
}
|
||||
|
||||
// Thomas Wang's hash
|
||||
inline_ __int64 Hash64Bits_0(__int64 key)
|
||||
{
|
||||
key += ~(key << 32);
|
||||
key ^= (key >> 22);
|
||||
key += ~(key << 13);
|
||||
key ^= (key >> 8);
|
||||
key += (key << 3);
|
||||
key ^= (key >> 15);
|
||||
key += ~(key << 27);
|
||||
key ^= (key >> 31);
|
||||
return key;
|
||||
}
|
||||
|
||||
inline_ __int64 Hash64Bits_1(__int64 key)
|
||||
{
|
||||
__int64 c1 = 0x6e5ea73858134343L;
|
||||
__int64 c2 = 0xb34e8f99a2ec9ef5L;
|
||||
key ^= ((c1 ^ key) >> 32);
|
||||
key *= c1;
|
||||
key ^= ((c2 ^ key) >> 31);
|
||||
key *= c2;
|
||||
key ^= ((c1 ^ key) >> 32);
|
||||
return key;
|
||||
}
|
||||
|
||||
inline_ udword Hash(udword id0, udword id1)
|
||||
{
|
||||
return Hash32Bits_1( (id0&0xffff)|(id1<<16) );
|
||||
}
|
||||
|
||||
#endif // ICEHASHING_H
|
||||
|
||||
Reference in New Issue
Block a user