1 type HashState @c = struct 2 value : MutPtr<u64> 3 4 let fnv_offset "FNV_OFFSET" : u64 5 6 object Kd = 7 def hash<T> @decl (x : T) (state : HashState) 8 9 def hash_of<T> (x : T) = 10 let mut value = fnv_offset 11 let state = HashState value@mut_ptr 12 hash x state 13 value 14 15 fun hash "kd_hash_ptr" (ptr : Ptr) state 16 fun hash<T> (ptr : Ptr<T>) state = Kd.hash ptr.as<Ptr> state 17 fun hash<T> (ptr : MutPtr<T>) state = Kd.hash ptr.as<Ptr> state 18 fun hash "kd_hash_u32" (x : u32) state 19 fun hash "kd_hash_i32" (x : i32) state 20 fun hash "kd_hash_char" (c : Char) state 21 22 fun hash (x : bool) state = 23 let i : i32 = if x then 1 else 0 24 Kd.hash i state 25