@@ -27,6 +27,7 @@ struct Reader[R: io.Reader](Sized, io.Reader, io.ByteReader, io.ByteScanner):
27
27
var last_rune_size : Int # size of last rune read for unread_rune; -1 means invalid
28
28
var err : Error
29
29
30
+ @always_inline
30
31
fn __init__ (
31
32
inout self ,
32
33
owned reader : R,
@@ -47,6 +48,7 @@ struct Reader[R: io.Reader](Sized, io.Reader, io.ByteReader, io.ByteScanner):
47
48
self .last_rune_size = last_rune_size
48
49
self .err = Error()
49
50
51
+ @always_inline
50
52
fn __moveinit__ (inout self , owned existing : Self):
51
53
self .buf = InlineList[UInt8, io.BUFFER_SIZE ]()
52
54
for element in existing.buf:
@@ -60,6 +62,7 @@ struct Reader[R: io.Reader](Sized, io.Reader, io.ByteReader, io.ByteScanner):
60
62
self .err = existing.err^
61
63
62
64
# size returns the size of the underlying buffer in bytes.
65
+ @always_inline
63
66
fn __len__ (self ) -> Int:
64
67
return len (self .buf)
65
68
@@ -85,6 +88,7 @@ struct Reader[R: io.Reader](Sized, io.Reader, io.ByteReader, io.ByteScanner):
85
88
""" Returns the internal buffer data as a Span[UInt8]."""
86
89
return Span[UInt8, True , __lifetime_of(self )](array = Reference(self .buf._array))
87
90
91
+ @always_inline
88
92
fn reset (inout self , buf : InlineList[UInt8, io.BUFFER_SIZE ], owned reader : R):
89
93
""" Discards any buffered data, resets all state, and switches
90
94
the buffered reader to read from r.
@@ -149,6 +153,7 @@ struct Reader[R: io.Reader](Sized, io.Reader, io.ByteReader, io.ByteScanner):
149
153
150
154
self .err = Error(io.ERR_NO_PROGRESS )
151
155
156
+ @always_inline
152
157
fn read_error (inout self ) -> Error:
153
158
if not self .err:
154
159
return Error()
@@ -284,6 +289,7 @@ struct Reader[R: io.Reader](Sized, io.Reader, io.ByteReader, io.ByteScanner):
284
289
self .last_rune_size = - 1
285
290
return bytes_read, Error()
286
291
292
+ @always_inline
287
293
fn read_byte (inout self ) -> (UInt8, Error):
288
294
""" Reads and returns a single byte from the internal buffer. If no byte is available, returns an error."""
289
295
self .last_rune_size = - 1
@@ -297,6 +303,7 @@ struct Reader[R: io.Reader](Sized, io.Reader, io.ByteReader, io.ByteScanner):
297
303
self .last_byte = int (c)
298
304
return c, Error()
299
305
306
+ @always_inline
300
307
fn unread_byte (inout self ) -> Error:
301
308
""" Unreads the last byte. Only the most recently read byte can be unread.
302
309
@@ -352,6 +359,7 @@ struct Reader[R: io.Reader](Sized, io.Reader, io.ByteReader, io.ByteScanner):
352
359
# self.last_rune_size = -1
353
360
# return nil
354
361
362
+ @always_inline
355
363
fn buffered (self ) -> Int:
356
364
""" Returns the number of bytes that can be read from the current buffer.
357
365
@@ -674,6 +682,7 @@ struct Writer[W: io.Writer, size: Int = io.BUFFER_SIZE](Sized, io.Writer, io.Byt
674
682
var writer : W
675
683
var err : Error
676
684
685
+ @always_inline
677
686
fn __init__ (
678
687
inout self ,
679
688
owned writer : W,
@@ -687,6 +696,7 @@ struct Writer[W: io.Writer, size: Int = io.BUFFER_SIZE](Sized, io.Writer, io.Byt
687
696
self .writer = writer^
688
697
self .err = Error()
689
698
699
+ @always_inline
690
700
fn __moveinit__ (inout self , owned existing : Self):
691
701
self .buf = InlineList[UInt8, size]()
692
702
for element in existing.buf:
@@ -695,6 +705,7 @@ struct Writer[W: io.Writer, size: Int = io.BUFFER_SIZE](Sized, io.Writer, io.Byt
695
705
self .writer = existing.writer^
696
706
self .err = existing.err^
697
707
708
+ @always_inline
698
709
fn __len__ (self ) -> Int:
699
710
""" Returns the size of the underlying buffer in bytes."""
700
711
return len (self .buf)
@@ -704,6 +715,7 @@ struct Writer[W: io.Writer, size: Int = io.BUFFER_SIZE](Sized, io.Writer, io.Byt
704
715
""" Returns the internal buffer data as a Span[UInt8]."""
705
716
return Span[UInt8, True , __lifetime_of(self )](array = Reference(self .buf._array))
706
717
718
+ @always_inline
707
719
fn reset (inout self , owned writer : W):
708
720
""" Discards any unflushed buffered data, clears any error, and
709
721
resets b to write its output to w.
@@ -762,10 +774,12 @@ struct Writer[W: io.Writer, size: Int = io.BUFFER_SIZE](Sized, io.Writer, io.Byt
762
774
self .bytes_written = 0
763
775
return err
764
776
777
+ @always_inline
765
778
fn available (self ) -> Int:
766
779
""" Returns how many bytes are unused in the buffer."""
767
780
return self .buf.capacity - len (self .buf)
768
781
782
+ @always_inline
769
783
fn buffered (self ) -> Int:
770
784
""" Returns the number of bytes that have been written into the current buffer.
771
785
@@ -774,7 +788,6 @@ struct Writer[W: io.Writer, size: Int = io.BUFFER_SIZE](Sized, io.Writer, io.Byt
774
788
"""
775
789
return self .bytes_written
776
790
777
- # TODO : Something broken about multiple writes
778
791
fn write (inout self , src : List[UInt8]) -> (Int, Error):
779
792
""" Writes the contents of src into the buffer.
780
793
It returns the number of bytes written.
@@ -829,6 +842,7 @@ struct Writer[W: io.Writer, size: Int = io.BUFFER_SIZE](Sized, io.Writer, io.Byt
829
842
total_bytes_written += n
830
843
return total_bytes_written, err
831
844
845
+ @always_inline
832
846
fn write_byte (inout self , src : UInt8) -> (Int, Error):
833
847
""" Writes a single byte to the internal buffer.
834
848
@@ -875,6 +889,7 @@ struct Writer[W: io.Writer, size: Int = io.BUFFER_SIZE](Sized, io.Writer, io.Byt
875
889
# self.bytes_written += size
876
890
# return size, nil
877
891
892
+ @always_inline
878
893
fn write_string (inout self , src : String) -> (Int, Error):
879
894
""" Writes a string to the internal buffer.
880
895
It returns the number of bytes written.
0 commit comments