Kawe Mazidjatari b3a68ed095 Add EABase, EAThread and DirtySDK to R5sdk
DirtySDK (EA's Dirty Sockets library) will be used for the LiveAPI implementation, and depends on: EABase, EAThread.
2024-04-05 18:29:03 +02:00

80 lines
2.4 KiB
C

/*H********************************************************************************/
/*!
\File murmurhash3.h
\Description
An implementation of MurmurHash3, based heavily on the x64 128bit output
implementation. MurmurHash3 is a public domain hashing algorithm written
by Austin Appleby, ref http://code.google.com/p/smhasher/wiki/MurmurHash3.
MurmurHash3 is not cryptographically secure, however it has excellent
collision resistance and is orders of magnitude faster than the fastest
secure cryptographic hash.
\Copyright
Copyright (c) 2014 Electronic Arts
\Version 03/07/2014 (jbrookes) First Version
*/
/********************************************************************************H*/
#ifndef _murmurhash3_h
#define _murmurhash3_h
/*!
\Moduledef MurmurHash3 MurmurHash3
\Modulemember Util
*/
//@{
/*** Include files ****************************************************************/
#include "DirtySDK/platform.h"
/*** Defines **********************************************************************/
#define MURMURHASH_HASHSIZE (16)
/*** Macros ***********************************************************************/
/*** Type Definitions *************************************************************/
typedef struct MurmurHash3T
{
uint64_t aState[2]; //!< hash state
int32_t iCount; //!< total byte count
uint8_t aData[16]; //!< partial data block
} MurmurHash3T;
/*** Variables ********************************************************************/
/*** Functions ********************************************************************/
#ifdef __cplusplus
extern "C" {
#endif
// init the MurmurHash3 context
DIRTYCODE_API void MurmurHash3Init(MurmurHash3T *pContext);
// init the MurmurHash3 context, with hash size
DIRTYCODE_API void MurmurHash3Init2(MurmurHash3T *pContext, int32_t iHashSize);
// add data to the MurmurHash3 context (hash the data)
DIRTYCODE_API void MurmurHash3Update(MurmurHash3T *pContext, const void *pBuffer, int32_t iLength);
// convert MurmurHash3 state into final output form
DIRTYCODE_API void MurmurHash3Final(MurmurHash3T *pContext, void *pBuffer, int32_t iLength);
// hash the data, all-in-one version
DIRTYCODE_API void MurmurHash3(void *_pOutput, int32_t iOutLen, const void *_pInput, int32_t iInpLen, const void *pKey, int32_t iKeyLen);
#ifdef __cplusplus
}
#endif
//@}
#endif // _murmurhash3_h