Added read_any/write_any.

This commit is contained in:
Christoffer Lerno
2023-08-07 19:48:52 +02:00
parent 91bb31856b
commit 68aadc958f
2 changed files with 36 additions and 0 deletions

View File

@@ -102,6 +102,16 @@ fn usz! File.read(self, char[] buffer)
return os::native_fread(self.file, buffer);
}
/**
* @param ref "the object to read into."
* @require ref.ptr != null
* @ensure return == ref.type.sizeof
*/
fn usz! File.read_any(self, any ref)
{
return self.read(((char*)ref.ptr)[:ref.type.sizeof]);
}
/**
* @param [out] buffer
* @require self.file `File must be initialized`
@@ -111,6 +121,16 @@ fn usz! File.write(self, char[] buffer)
return os::native_fwrite(self.file, buffer);
}
/**
* @param ref "the object to write."
* @require ref.ptr != null
* @ensure return == ref.type.sizeof
*/
fn usz! File.write_any(self, any ref)
{
return self.write(((char*)ref.ptr)[:ref.type.sizeof]);
}
/**
* @require self.file `File must be initialized`
*/

View File

@@ -77,6 +77,22 @@ fn usz! Stream.available(self) @inline
return IoError.NOT_SEEKABLE?;
}
fn usz! Stream.read_any(self, any ref)
{
return self.read(((char*)ref.ptr)[:ref.type.sizeof]);
}
/**
* @param ref "the object to write."
* @require ref.ptr != null
* @ensure return == ref.type.sizeof
*/
fn usz! Stream.write_any(self, any ref)
{
return self.write(((char*)ref.ptr)[:ref.type.sizeof]);
}
fn usz! Stream.read(self, char[] buffer)
{
if (ReadStreamFn func = self.fns.read_fn) return func(self, buffer);