authorgravatar for hello@nektro.netMeghan Denny <hello@nektro.net> 2023-02-09 19:58:36 -08:00
committergravatar for hello@nektro.netMeghan Denny <hello@nektro.net> 2023-02-09 19:58:36 -08:00
log0c8e1fee2fe74a329c6130c249e9e56c007c2864
tree9ec6610702289ba5709a59e3985758b37cf00ee2
parente4a98faf5ef42611a093b6e5d5d18705687ae66b

add indexBufferT()


1 files changed, 8 insertions(+), 0 deletions(-)

src/lib.zig+8
...@@ -376,3 +376,11 @@ pub fn readType(reader: anytype, comptime T: type, endian: std.builtin.Endian) !...@@ -376,3 +376,11 @@ pub fn readType(reader: anytype, comptime T: type, endian: std.builtin.Endian) !
376 else => |e| @compileError(@tagName(e)),376 else => |e| @compileError(@tagName(e)),
377 };377 };
378}378}
379
380pub fn indexBufferT(bytes: []const u8, comptime T: type, endian: std.builtin.Endian, idx: usize, max_len: usize) T {
381 std.debug.assert(idx < max_len);
382 var fbs = std.io.fixedBufferStream(bytes[idx * (@sizeOf(T) / @sizeOf(u8)) ..]);
383 return readType(fbs.reader(), T, endian) catch |err| switch (err) {
384 error.EndOfStream => unreachable, // assert above has been violated
385 };
386}