40 lines
952 B
C
40 lines
952 B
C
// vim:fileencoding=utf-8:foldmethod=marker
|
|
|
|
/**
|
|
* An implementation of the x64 128-bit variant of the MurmurHash3 algorithm
|
|
* based on https://github.com/aappleby/smhasher/blob/master/src/MurmurHash3.cpp
|
|
*/
|
|
|
|
#ifndef MURMUR3_H
|
|
#define MURMUR3_H
|
|
|
|
#include "hasher.h"
|
|
#include "../../stream/stream.h"
|
|
#include "../../../common/aliases/aliases.h"
|
|
#include "../../../common/platform/platform.h"
|
|
|
|
#ifdef WP_PLATFORM_CPP
|
|
BEGIN_C_LINKAGE
|
|
#endif // !WP_PLATFORM_CPP
|
|
|
|
#define WP_MUR3_HASHER_MAGIC wpU64Const(0x57504d4841534833)
|
|
|
|
typedef struct {
|
|
u64 magic;
|
|
u32 seed;
|
|
} WpMur3HasherData;
|
|
|
|
#ifdef WP_PLATFORM_CPP
|
|
#define wpMur3HasherData(SEED) (WpMur3HasherData{WP_MUR3_HASHER_MAGIC, SEED})
|
|
#else
|
|
#define wpMur3HasherData(SEED) ((WpMur3HasherData){ .magic = WP_MUR3_HASHER_MAGIC, .seed = SEED })
|
|
#endif
|
|
|
|
WpU128Hash wpX64Mur3Hasher128(WpU8Stream *bytes, void *hasher_io);
|
|
|
|
#ifdef WP_PLATFORM_CPP
|
|
END_C_LINKAGE
|
|
#endif // !WP_PLATFORM_CPP
|
|
|
|
#endif // !MURMUR3_H
|