2020-12-15 10:11:17 +03:00
|
|
|
module hash
|
|
|
|
|
2021-04-19 19:01:47 +03:00
|
|
|
//#flag -I @VEXEROOT/thirdparty/wyhash
|
2020-12-15 10:11:17 +03:00
|
|
|
//#include "wyhash.h"
|
2022-04-15 18:25:45 +03:00
|
|
|
fn C.wyhash(&u8, u64, u64, &u64) u64
|
2021-05-08 14:36:52 +03:00
|
|
|
|
2020-12-27 16:18:46 +03:00
|
|
|
fn C.wyhash64(u64, u64) u64
|
2020-12-15 10:11:17 +03:00
|
|
|
|
2023-01-15 23:37:09 +03:00
|
|
|
// wyhash_c returns a hash given a byte string `key`, its `len`, and a `seed`.
|
2020-12-15 10:11:17 +03:00
|
|
|
[inline]
|
2022-04-15 18:25:45 +03:00
|
|
|
pub fn wyhash_c(key &u8, len u64, seed u64) u64 {
|
2021-04-05 10:02:47 +03:00
|
|
|
return C.wyhash(key, len, seed, &u64(C._wyp))
|
2020-12-15 10:11:17 +03:00
|
|
|
}
|
|
|
|
|
2023-01-15 23:37:09 +03:00
|
|
|
// wyhash64_c returns a hash given two u64 values `a` and `b`.
|
2020-12-27 16:18:46 +03:00
|
|
|
[inline]
|
|
|
|
pub fn wyhash64_c(a u64, b u64) u64 {
|
|
|
|
return C.wyhash64(a, b)
|
|
|
|
}
|
2021-08-15 18:09:51 +03:00
|
|
|
|
2023-01-15 23:37:09 +03:00
|
|
|
// sum64_string returns a hash given a V string `key` and a `seed`.
|
2021-08-15 18:09:51 +03:00
|
|
|
[inline]
|
|
|
|
pub fn sum64_string(key string, seed u64) u64 {
|
|
|
|
return wyhash_c(key.str, u64(key.len), seed)
|
|
|
|
}
|
|
|
|
|
2023-01-15 23:37:09 +03:00
|
|
|
// sum64 returns a hash given a byte array `key` and a `seed`.
|
2021-08-15 18:09:51 +03:00
|
|
|
[inline]
|
2022-04-15 15:35:35 +03:00
|
|
|
pub fn sum64(key []u8, seed u64) u64 {
|
2022-04-15 14:58:56 +03:00
|
|
|
return wyhash_c(&u8(key.data), u64(key.len), seed)
|
2021-08-15 18:09:51 +03:00
|
|
|
}
|