stream_i.h 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. #pragma once
  2. #include <stdint.h>
  3. #include <stdbool.h>
  4. #include "stream.h"
  5. #ifdef __cplusplus
  6. extern "C" {
  7. #endif
  8. #define STREAM_CACHE_SIZE 512u
  9. typedef struct StreamVTable StreamVTable;
  10. typedef void (*StreamFreeFn)(Stream* stream);
  11. typedef bool (*StreamEOFFn)(Stream* stream);
  12. typedef void (*StreamCleanFn)(Stream* stream);
  13. typedef bool (*StreamSeekFn)(Stream* stream, int32_t offset, StreamOffset offset_type);
  14. typedef size_t (*StreamTellFn)(Stream* stream);
  15. typedef size_t (*StreamSizeFn)(Stream* stream);
  16. typedef size_t (*StreamWriteFn)(Stream* stream, const uint8_t* data, size_t size);
  17. typedef size_t (*StreamReadFn)(Stream* stream, uint8_t* data, size_t count);
  18. typedef bool (*StreamDeleteAndInsertFn)(
  19. Stream* stream,
  20. size_t delete_size,
  21. StreamWriteCB write_cb,
  22. const void* ctx);
  23. struct StreamVTable {
  24. const StreamFreeFn free;
  25. const StreamEOFFn eof;
  26. const StreamCleanFn clean;
  27. const StreamSeekFn seek;
  28. const StreamTellFn tell;
  29. const StreamSizeFn size;
  30. const StreamWriteFn write;
  31. const StreamReadFn read;
  32. const StreamDeleteAndInsertFn delete_and_insert;
  33. };
  34. struct Stream {
  35. const StreamVTable* vtable;
  36. };
  37. #ifdef __cplusplus
  38. }
  39. #endif