You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

34 lines
1.2 KiB

4 years ago
  1. from libc.stdint cimport uint64_t, int64_t, int32_t
  2. cdef extern from "murmurhash/MurmurHash3.h":
  3. void MurmurHash3_x86_32(void * key, uint64_t len, uint64_t seed, void* out) nogil
  4. void MurmurHash3_x86_128(void * key, int len, uint32_t seed, void* out) nogil
  5. void MurmurHash3_x64_128(void * key, int len, uint32_t seed, void* out) nogil
  6. cdef extern from "murmurhash/MurmurHash2.h":
  7. uint64_t MurmurHash64A(void * key, int length, uint32_t seed) nogil
  8. uint64_t MurmurHash64B(void * key, int length, uint32_t seed) nogil
  9. cdef uint32_t hash32(void* key, int length, uint32_t seed) nogil:
  10. cdef int32_t out
  11. MurmurHash3_x86_32(key, length, seed, &out)
  12. return out
  13. cdef uint64_t hash64(void* key, int length, uint64_t seed) nogil:
  14. return MurmurHash64A(key, length, seed)
  15. cdef uint64_t real_hash64(void* key, int length, uint64_t seed) nogil:
  16. cdef uint64_t[2] out
  17. MurmurHash3_x86_128(key, length, seed, &out)
  18. return out[1]
  19. cdef void hash128_x86(const void* key, int length, uint32_t seed, void* out) nogil:
  20. MurmurHash3_x86_128(key, length, seed, out)
  21. cdef void hash128_x64(const void* key, int length, uint32_t seed, void* out) nogil:
  22. MurmurHash3_x64_128(key, length, seed, out)