from libc.stdint cimport uint32_t, uint64_t from lakesuperior.model.base cimport Buffer # Seed for computing the term hash. # # This is a 16-byte string that will be split up into two ``uint64`` # numbers to make up the ``spookyhash_128`` seeds. # # TODO This should be made configurable. DEF _TERM_HASH_SEED = \ b'\x72\x69\x76\x65\x72\x72\x75\x6e\x2c\x20\x70\x61\x73\x74\x20\x45' cdef enum: HLEN_32 = sizeof(uint32_t) HLEN_64 = sizeof(uint64_t) HLEN_128 = sizeof(uint64_t) * 2 ctypedef uint32_t Hash32 ctypedef uint64_t Hash64 ctypedef uint64_t DoubleHash64[2] ctypedef unsigned char Hash128[HLEN_128] cdef: uint32_t term_hash_seed32 uint64_t term_hash_seed64_1, term_hash_seed64_2 unsigned char TERM_HASH_SEED[16] int hash32(const Buffer *message, Hash32 *hash) except -1 int hash64(const Buffer *message, Hash64 *hash) except -1 int hash128(const Buffer *message, Hash128 *hash) except -1 TERM_HASH_SEED = _TERM_HASH_SEED