Browse Source

Add `mem.simple_compare_values`

gingerBill 5 years ago
parent
commit
474d79dcf1
1 changed files with 6 additions and 0 deletions
  1. 6 0
      core/mem/mem.odin

+ 6 - 0
core/mem/mem.odin

@@ -1,6 +1,7 @@
 package mem
 
 import "core:runtime"
+import "core:intrinsics"
 
 set :: proc(data: rawptr, value: byte, len: int) -> rawptr {
 	return runtime.memset(data, i32(value), len);
@@ -70,6 +71,11 @@ compare_byte_ptrs :: proc(a, b: ^byte, n: int) -> int #no_bounds_check {
 	return 0;
 }
 
+simple_compare_values :: proc(a, b: $T) -> int where intrinsics.type_is_simple_compare(T) {
+	a, b := a, b;
+	return compare_byte_ptrs((^byte)(&a), (^byte)(&b), size_of(T));
+}
+
 compare_ptrs :: inline proc(a, b: rawptr, n: int) -> int {
 	return compare_byte_ptrs((^byte)(a), (^byte)(b), n);
 }