motiejus/zig

fork of https://codeberg.org/ziglang/zig
git clone https://git.jakstys.lt/motiejus/zig.git
Log | Tree | Refs | README | LICENSE

commit abc729a5f9da9f4520079507404dd5d299209cba (tree)
parent 9268972ff942f1d9db8fd0b89a8efe528d67e930
Author: christian-stephen <chrisj.stephen2@gmail.com>
Date:   Sun,  4 Oct 2020 12:44:01 -0300

Add readAllArrayListAligned to Reader which can accept an arbitrary alignment

Diffstat:
Mlib/std/fs/file.zig | 2+-
Mlib/std/io/reader.zig | 9+++++++++
2 files changed, 10 insertions(+), 1 deletion(-)

diff --git a/lib/std/fs/file.zig b/lib/std/fs/file.zig @@ -394,7 +394,7 @@ pub const File = struct { var array_list = try std.ArrayListAligned(u8, alignment).initCapacity(allocator, initial_cap); defer array_list.deinit(); - self.reader().readAllArrayList(&array_list, max_bytes) catch |err| switch (err) { + self.reader().readAllArrayListAligned(alignment, &array_list, max_bytes) catch |err| switch (err) { error.StreamTooLong => return error.FileTooBig, else => |e| return e, }; diff --git a/lib/std/io/reader.zig b/lib/std/io/reader.zig @@ -57,6 +57,15 @@ pub fn Reader( /// If the number of bytes appended would exceed `max_append_size`, `error.StreamTooLong` is returned /// and the `std.ArrayList` has exactly `max_append_size` bytes appended. pub fn readAllArrayList(self: Self, array_list: *std.ArrayList(u8), max_append_size: usize) !void { + return self.readAllArrayListAligned(null, array_list, max_append_size); + } + + pub fn readAllArrayListAligned( + self: Self, + comptime alignment: ?u29, + array_list: *std.ArrayListAligned(u8, alignment), + max_append_size: usize + ) !void { try array_list.ensureCapacity(math.min(max_append_size, 4096)); const original_len = array_list.items.len; var start_index: usize = original_len;