2024 Day 1
This commit is contained in:
parent
523de55290
commit
c351b2b2c8
6 changed files with 216 additions and 1 deletions
30
2024/src/aoc.zig
Normal file
30
2024/src/aoc.zig
Normal file
|
|
@ -0,0 +1,30 @@
|
|||
const std = @import("std");
|
||||
|
||||
pub const Lines = struct {
|
||||
buf_reader: std.io.BufferedReader(4096, std.fs.File.Reader),
|
||||
line: std.ArrayList(u8),
|
||||
|
||||
pub fn init(allocator: std.mem.Allocator, file: std.fs.File) Lines {
|
||||
return .{
|
||||
.buf_reader = std.io.bufferedReader(file.reader()),
|
||||
.line = std.ArrayList(u8).init(allocator),
|
||||
};
|
||||
}
|
||||
|
||||
pub fn deinit(self: Lines) void {
|
||||
self.line.deinit();
|
||||
}
|
||||
|
||||
pub fn next(self: *Lines) !?std.ArrayList(u8) {
|
||||
const writer = self.line.writer();
|
||||
const reader = self.buf_reader.reader();
|
||||
|
||||
self.line.clearRetainingCapacity();
|
||||
if (reader.streamUntilDelimiter(writer, '\n', null)) {
|
||||
return self.line;
|
||||
} else |err| switch (err) {
|
||||
error.EndOfStream => return null,
|
||||
else => return err,
|
||||
}
|
||||
}
|
||||
};
|
||||
Loading…
Reference in a new issue