tiny updates to stream reader
authorBrendan Hansen <brendan.f.hansen@gmail.com>
Tue, 6 Apr 2021 04:39:44 +0000 (23:39 -0500)
committerBrendan Hansen <brendan.f.hansen@gmail.com>
Tue, 6 Apr 2021 04:39:44 +0000 (23:39 -0500)
core/io/reader.onyx
tests/aoc-2020/day24.onyx
tests/string_stream_test.onyx

index 347511aa915e07aab18b8b6912c2d9a327b44295..8ab638a03b8af14fb7379d2faeb27d543ffbf3b4 100644 (file)
@@ -53,7 +53,7 @@ read_u64 :: (use reader: ^Reader) -> u64 {
     return n;
 }
 
-read_line :: (use reader: ^Reader, allocator := context.allocator) -> str {
+read_line :: (use reader: ^Reader, consume_newline := true, allocator := context.allocator) -> str {
     _, curr_pos := stream_tell(stream);
 
     count := 0;
@@ -65,6 +65,8 @@ read_line :: (use reader: ^Reader, allocator := context.allocator) -> str {
         if err != Error.None do break;
     }
 
+    if consume_newline do count += 1;
+
     stream_seek(stream, curr_pos, SeekFrom.Start);
 
     out := str.{
index 57c4b38abf6dc4abb124d240f5f2a1d9b5fe0611..099d34141149da0f69f52cbd1f4f76963e9bd0d9 100644 (file)
@@ -1,7 +1,6 @@
 #load "core/std"
 
 use package core
-use package core.string.reader as reader
 
 Vec2 :: struct {
        x: i32 = 0;
@@ -30,13 +29,14 @@ Cell :: struct {
 main :: (args: [] cstr) {
        contents := #file_contents "./tests/aoc-2020/input/day24.txt";
 
-       file := reader.make(contents);
+    file_stream := io.string_stream_make(contents);
+       file := io.reader_make(^file_stream);
 
        grid := map.make(Vec2, Cell, .{}, 1021); // `true` is black
        defer map.free(^grid);
 
-       while !reader.empty(^file) {
-               line := reader.read_line(^file);        
+       while !io.stream_end_of_file(^file_stream) {
+               line := io.read_line(^file);
 
                loc := Vec2.{ 0, 0 };
                s := 0;
index 8fe127b2f09081f03b0aaaacda1e52494e6fd6e0..b18e0d3574552048cd27ef88e6afa685218d9344 100644 (file)
@@ -13,7 +13,7 @@ main :: proc (args: [] cstr) {
         println(word);
     }
 
-    println(io.read_line(^sreader, context.temp_allocator));
+    println(io.read_line(^sreader, consume_newline=false, allocator=context.temp_allocator));
 
     a := io.read_u32(^sreader);
     b := io.read_u32(^sreader);