From 0c8e1fee2fe74a329c6130c249e9e56c007c2864 Mon Sep 17 00:00:00 2001 From: Meghan Denny Date: Thu, 9 Feb 2023 19:58:36 -0800 Subject: [PATCH] add indexBufferT() --- src/lib.zig | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/lib.zig b/src/lib.zig index 6277955202d6eea8c49ef586cd88200c48366ad6..eb2f1eb8fa180ffd76e20ede29cf8e46ccd5f3ef 100644 --- a/src/lib.zig +++ b/src/lib.zig @@ -376,3 +376,11 @@ pub fn readType(reader: anytype, comptime T: type, endian: std.builtin.Endian) ! else => |e| @compileError(@tagName(e)), }; } + +pub fn indexBufferT(bytes: []const u8, comptime T: type, endian: std.builtin.Endian, idx: usize, max_len: usize) T { + std.debug.assert(idx < max_len); + var fbs = std.io.fixedBufferStream(bytes[idx * (@sizeOf(T) / @sizeOf(u8)) ..]); + return readType(fbs.reader(), T, endian) catch |err| switch (err) { + error.EndOfStream => unreachable, // assert above has been violated + }; +} -- 2.54.0