| 1 | module hash |
| 2 | |
| 3 | //#flag -I @VEXEROOT/thirdparty/wyhash |
| 4 | //#include "wyhash.h" |
| 5 | fn C.wyhash(&u8, u64, u64, &u64) u64 |
| 6 | |
| 7 | fn C.wyhash64(u64, u64) u64 |
| 8 | |
| 9 | // wyhash_c returns a hash given a byte string `key`, its `len`, and a `seed`. |
| 10 | @[inline] |
| 11 | pub 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] |
| 17 | pub 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] |
| 23 | pub 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] |
| 29 | pub fn sum64(key []u8, seed u64) u64 { |
| 30 | return wyhash_c(key.data, u64(key.len), seed) |
| 31 | } |
| 32 | |