From ea0b02d9b95fd445f94ff96d94fae78332aa701c Mon Sep 17 00:00:00 2001 From: gingerBill Date: Thu, 14 Apr 2022 16:42:24 +0100 Subject: [PATCH] Add Buffer contentsAsSlice and contentsAsType --- vendor/darwin/Metal/MetalClasses.odin | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/vendor/darwin/Metal/MetalClasses.odin b/vendor/darwin/Metal/MetalClasses.odin index f91d5f112..38a7267b9 100644 --- a/vendor/darwin/Metal/MetalClasses.odin +++ b/vendor/darwin/Metal/MetalClasses.odin @@ -5495,6 +5495,17 @@ Buffer_contents :: #force_inline proc(self: ^Buffer) -> []byte { Buffer_contentsPointer :: #force_inline proc(self: ^Buffer) -> rawptr { return msgSend(rawptr, self, "contents") } +@(objc_type=Buffer, objc_name="contentsAsSlice") +Buffer_contentsAsSlice :: #force_inline proc(self: ^Buffer, $T: typeid/[]$E) -> T { + contents := msgSend([^]byte, self, "contents") + length := Buffer_length(self) + return mem.slice_data_cast(T, contents[:length]) +} +@(objc_type=Buffer, objc_name="contentsAsType") +Buffer_contentsAsType :: #force_inline proc(self: ^Buffer, $T: typeid, offset: uintptr = 0) -> ^T { + ptr := msgSend(rawptr, self, "contents") + return (^T)(uintptr(ptr) + offset) +} @(objc_type=Buffer, objc_name="didModifyRange") Buffer_didModifyRange :: #force_inline proc(self: ^Buffer, range: NS.Range) { msgSend(nil, self, "didModifyRange:", range)