add std::io::stream::ByteBuffer; fix std::io::Path::walk (#895)

* lib/std/io/stream: add some inlines

Signed-off-by: Pierre Curto <pierre.curto@gmail.com>

* lib/std/io/stream add ByteBuffer

Signed-off-by: Pierre Curto <pierre.curto@gmail.com>

* lib/std/io/path: fix free of paths in walk

Signed-off-by: Pierre Curto <pierre.curto@gmail.com>

* lib/std/bits: remove unnecessary receiver type

Signed-off-by: Pierre Curto <pierre.curto@gmail.com>

---------

Signed-off-by: Pierre Curto <pierre.curto@gmail.com>
This commit is contained in:
Pierre Curto
2023-07-29 21:21:45 +02:00
committed by GitHub
parent 108b2244d8
commit 6808a38c9f
8 changed files with 283 additions and 116 deletions

View File

@@ -1,5 +1,4 @@
module std::io;
import std::math;
struct ByteReader
{
@@ -20,7 +19,7 @@ fn Stream ByteReader.as_stream(&self)
fn usz! ByteReader.read(&self, char[] bytes)
{
if (self.index >= self.bytes.len) return IoError.EOF?;
usz len = math::min(self.bytes.len - self.index, bytes.len);
usz len = min(self.bytes.len - self.index, bytes.len);
if (len == 0) return 0;
mem::copy(bytes.ptr, &self.bytes[self.index], len);
self.index += len;
@@ -62,9 +61,9 @@ fn usz! ByteReader.write_stream(&self, Stream writer)
return written;
}
fn usz ByteReader.available(&self)
fn usz ByteReader.available(&self) @inline
{
return math::max((isz)0, (isz)self.bytes.len - self.index);
return max(0, self.bytes.len - self.index);
}
StreamInterface bytereader_interface = {