diff options
Diffstat (limited to 'lib/toolbox/stream/stream_i.h')
-rw-r--r-- | lib/toolbox/stream/stream_i.h | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/lib/toolbox/stream/stream_i.h b/lib/toolbox/stream/stream_i.h new file mode 100644 index 00000000..a62e174c --- /dev/null +++ b/lib/toolbox/stream/stream_i.h @@ -0,0 +1,46 @@ +#pragma once +#include <stdint.h> +#include <stdbool.h> +#include "stream.h" + +#ifdef __cplusplus +extern "C" { +#endif + +#define STREAM_CACHE_SIZE 512 + +typedef struct StreamVTable StreamVTable; + +typedef void (*StreamFreeFn)(Stream* stream); +typedef bool (*StreamEOFFn)(Stream* stream); +typedef void (*StreamCleanFn)(Stream* stream); +typedef bool (*StreamSeekFn)(Stream* stream, int32_t offset, StreamOffset offset_type); +typedef size_t (*StreamTellFn)(Stream* stream); +typedef size_t (*StreamSizeFn)(Stream* stream); +typedef size_t (*StreamWriteFn)(Stream* stream, const uint8_t* data, size_t size); +typedef size_t (*StreamReadFn)(Stream* stream, uint8_t* data, size_t count); +typedef bool (*StreamDeleteAndInsertFn)( + Stream* stream, + size_t delete_size, + StreamWriteCB write_cb, + const void* ctx); + +struct StreamVTable { + const StreamFreeFn free; + const StreamEOFFn eof; + const StreamCleanFn clean; + const StreamSeekFn seek; + const StreamTellFn tell; + const StreamSizeFn size; + const StreamWriteFn write; + const StreamReadFn read; + const StreamDeleteAndInsertFn delete_and_insert; +}; + +struct Stream { + const StreamVTable* vtable; +}; + +#ifdef __cplusplus +} +#endif |