diff options
| author | 2022-08-13 13:00:37 +0200 | |
|---|---|---|
| committer | 2022-08-13 13:00:37 +0200 | |
| commit | a4ddca68662f4bc0531763357b4bc00b6c50b456 (patch) | |
| tree | 97f83407da049732ec97dd2d32ee34e0cd3c8c0f /src/type.cff | |
| parent | 5b95abb249604e7df9be1d63b1f3dc85b8f5990b (diff) | |
target
Diffstat (limited to 'src/type.cff')
| -rw-r--r-- | src/type.cff | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/src/type.cff b/src/type.cff new file mode 100644 index 0000000..bd56503 --- /dev/null +++ b/src/type.cff @@ -0,0 +1,30 @@ +import "all.hff"; + +fn hashtype(ty *const Type) u32 { + let h = FNV1A_INI; + h = fnv1a_i(h, ty.konst ? 1 : 0); + switch ty.u { + case Void; case Bool; + + case Flo; + h = fnv1a_i(h, ty.size); + h = fnv1a_i(h, ty.align); + + case Int i; + h = fnv1a_i(h, i.sgn ? 1 : 0); + h = fnv1a_i(h, ty.size); + h = fnv1a_i(h, ty.align); + + case Ptr child; + h = fnv1a_i(h, child.id); + + case Arr arr; + h = fnv1a_i(h, arr.child.id); + h = fnv1a_i(h, arr.length); + + case Slice child; + h = fnv1a_i(h, child.id); + + } + return h; +} |