浏览代码

Add `ptr_to_bytes`

gingerBill 7 年之前
父节点
当前提交
b651466630
共有 1 个文件被更改,包括 10 次插入0 次删除
  1. 10 0
      core/mem.odin

+ 10 - 0
core/mem.odin

@@ -41,6 +41,16 @@ slice_to_bytes :: proc "contextless" (slice: $E/[]$T) -> []u8 {
 	return transmute([]u8)s;
 }
 
+ptr_to_bytes :: proc "contextless" (ptr: ^$T, len := 1) -> []u8 {
+    assert(len >= 0);
+    return transmute([]u8)raw.Slice{ptr, len*size_of(T), len*size_of(T)};
+}
+
+ptr_to_bytes :: proc "contextless" (ptr: ^$T, len, cap: int) -> []u8 {
+    assert(0 <= len && len <= cap);
+    return transmute([]u8)raw.Slice{ptr, len*size_of(T), cap*size_of(T)};
+}
+
 
 kilobytes :: inline proc "contextless" (x: int) -> int do return          (x) * 1024;
 megabytes :: inline proc "contextless" (x: int) -> int do return kilobytes(x) * 1024;