From 966b76c4cba2d121ccf65d1a69e4bcbdbc23855c Mon Sep 17 00:00:00 2001 From: gingerBill Date: Tue, 17 Feb 2026 14:34:28 +0000 Subject: Add `write_slice`/`read_slice` utility procedures to `core:bytes`, `core:io`, and `core:os` --- core/bytes/buffer.odin | 11 +++++++++++ 1 file changed, 11 insertions(+) (limited to 'core/bytes/buffer.odin') diff --git a/core/bytes/buffer.odin b/core/bytes/buffer.odin index dd4b378c0..5fd3145b7 100644 --- a/core/bytes/buffer.odin +++ b/core/bytes/buffer.odin @@ -176,6 +176,11 @@ buffer_write_ptr :: proc(b: ^Buffer, ptr: rawptr, size: int, loc := #caller_loca return buffer_write(b, ([^]byte)(ptr)[:size], loc=loc) } +buffer_write_slice :: proc(b: ^Buffer, slice: $S/[]$T, loc := #caller_location) -> (n: int, err: io.Error) { + size := len(slice)*size_of(T) + return buffer_write(b, ([^]byte)(raw_data(slice))[:size], loc=loc) +} + buffer_write_string :: proc(b: ^Buffer, s: string, loc := #caller_location) -> (n: int, err: io.Error) { b.last_read = .Invalid m, ok := _buffer_try_grow(b, len(s), loc=loc) @@ -248,6 +253,12 @@ buffer_read_ptr :: proc(b: ^Buffer, ptr: rawptr, size: int) -> (n: int, err: io. return buffer_read(b, ([^]byte)(ptr)[:size]) } +buffer_read_slice :: proc(b: ^Buffer, slice: $S/[]$T) -> (n: int, err: io.Error) { + size := len(slice)*size_of(T) + return buffer_read(b, ([^]byte)(raw_data(slice))[:size]) +} + + buffer_read_at :: proc(b: ^Buffer, p: []byte, offset: int) -> (n: int, err: io.Error) { if len(p) == 0 { return 0, nil -- cgit v1.2.3