11typedef cu_Io_Error_Optional (*cu_Stream_ReadFn)(
void *self,
cu_Slice buffer);
12typedef cu_Io_Error_Optional (*cu_Stream_WriteFn)(
void *self,
cu_Slice data);
13typedef cu_Io_Error_Optional (*cu_Stream_FlushFn)(
void *self);
14typedef void (*cu_Stream_CloseFn)(
void *self);
15typedef cu_Io_Error_Optional (*cu_Stream_SeekFn)(
void *self,
cu_File_SeekTo to);
16typedef cu_IoSize_Result (*cu_Stream_TellFn)(
void *self);
21 cu_Stream_ReadFn readFn;
22 cu_Stream_WriteFn writeFn;
23 cu_Stream_FlushFn flushFn;
24 cu_Stream_CloseFn closeFn;
25 cu_Stream_SeekFn seekFn;
26 cu_Stream_TellFn tellFn;
29static inline cu_Io_Error_Optional cu_Stream_read(
31 return stream->readFn(stream->self, buffer);
34static inline cu_Io_Error_Optional cu_Stream_write(
36 return stream->writeFn(stream->self, data);
39static inline cu_Io_Error_Optional cu_Stream_flush(
cu_Stream *stream) {
40 return stream->flushFn(stream->self);
43static inline void cu_Stream_close(
cu_Stream *stream) {
44 stream->closeFn(stream->self);
47static inline cu_Io_Error_Optional cu_Stream_seek(
49 return stream->seekFn(stream->self, to);
52static inline cu_IoSize_Result cu_Stream_tell(
cu_Stream *stream) {
53 return stream->tellFn(stream->self);