v / vlib / hash / wyhash.c.v
31 lines · 25 sloc · 814 bytes · 09cc0c5133d075ee6dcff29286dce7eb7d4421da
Raw
1module hash
2
3//#flag -I @VEXEROOT/thirdparty/wyhash
4//#include "wyhash.h"
5fn C.wyhash(&u8, u64, u64, &u64) u64
6
7fn C.wyhash64(u64, u64) u64
8
9// wyhash_c returns a hash given a byte string `key`, its `len`, and a `seed`.
10@[inline]
11pub fn wyhash_c(key &u8, len u64, seed u64) u64 {
12 return C.wyhash(key, len, seed, &u64(voidptr(C._wyp)))
13}
14
15// wyhash64_c returns a hash given two u64 values `a` and `b`.
16@[inline]
17pub fn wyhash64_c(a u64, b u64) u64 {
18 return C.wyhash64(a, b)
19}
20
21// sum64_string returns a hash given a V string `key` and a `seed`.
22@[inline]
23pub fn sum64_string(key string, seed u64) u64 {
24 return wyhash_c(key.str, u64(key.len), seed)
25}
26
27// sum64 returns a hash given a byte array `key` and a `seed`.
28@[inline]
29pub fn sum64(key []u8, seed u64) u64 {
30 return wyhash_c(key.data, u64(key.len), seed)
31}
32