libcute 0.1
Loading...
Searching...
No Matches
stream.h
Go to the documentation of this file.
1#pragma once
2#include "io/error.h"
3#include "io/file.h"
4
5#ifdef __cplusplus
6extern "C" {
7#endif
8
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);
17
19typedef struct {
20 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;
27} cu_Stream;
28
29static inline cu_Io_Error_Optional cu_Stream_read(
30 cu_Stream *stream, cu_Slice buffer) {
31 return stream->readFn(stream->self, buffer);
32}
33
34static inline cu_Io_Error_Optional cu_Stream_write(
35 cu_Stream *stream, cu_Slice data) {
36 return stream->writeFn(stream->self, data);
37}
38
39static inline cu_Io_Error_Optional cu_Stream_flush(cu_Stream *stream) {
40 return stream->flushFn(stream->self);
41}
42
43static inline void cu_Stream_close(cu_Stream *stream) {
44 stream->closeFn(stream->self);
45}
46
47static inline cu_Io_Error_Optional cu_Stream_seek(
48 cu_Stream *stream, cu_File_SeekTo to) {
49 return stream->seekFn(stream->self, to);
50}
51
52static inline cu_IoSize_Result cu_Stream_tell(cu_Stream *stream) {
53 return stream->tellFn(stream->self);
54}
55
56#ifdef __cplusplus
57}
58#endif
Definition file.h:36
Definition nostd.h:27
Definition stream.h:19