Add slice.to_type

This commit is contained in:
Jeroen van Rijn
2024-10-01 23:27:15 +02:00
parent af9ae4897a
commit eba7be34e7

View File

@@ -36,6 +36,17 @@ to_bytes :: proc "contextless" (s: []$T) -> []byte {
return ([^]byte)(raw_data(s))[:len(s) * size_of(T)]
}
/*
Turns a byte slice into a type.
*/
@(require_results)
to_type :: proc(buf: []u8, $T: typeid) -> (T, bool) #optional_ok {
if len(buf) < size_of(T) {
return {}, false
}
return intrinsics.unaligned_load((^T)(raw_data(buf))), true
}
/*
Turn a slice of one type, into a slice of another type.