aboutsummaryrefslogtreecommitdiff
path: root/core/bytes/buffer.odin
diff options
context:
space:
mode:
authorgingerBill <gingerBill@users.noreply.github.com>2026-02-17 14:34:28 +0000
committergingerBill <gingerBill@users.noreply.github.com>2026-02-17 14:34:28 +0000
commit966b76c4cba2d121ccf65d1a69e4bcbdbc23855c (patch)
tree200984718dde2e1828b86924ae24ddc47d2583d4 /core/bytes/buffer.odin
parenta7ed7ccd0c392cfbb6cb2e486fc7c75b16791902 (diff)
Add `write_slice`/`read_slice` utility procedures to `core:bytes`, `core:io`, and `core:os`
Diffstat (limited to 'core/bytes/buffer.odin')
-rw-r--r--core/bytes/buffer.odin11
1 files changed, 11 insertions, 0 deletions
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