Buffer.h 750 B

1234567891011121314151617181920212223242526272829
  1. #ifndef BASIC_BUFFER_H
  2. #define BASIC_BUFFER_H
  3. #include "Types.h"
  4. typedef struct {
  5. u8* data;
  6. size_t maxIndex;
  7. size_t readIndex;
  8. size_t writeIndex;
  9. } Buffer;
  10. void bufferInit(Buffer* b);
  11. void bufferDestroy(Buffer* b);
  12. void bufferReset(Buffer* b);
  13. [[nodiscard]] bool bufferWrite(Buffer* b, const void* p, size_t n);
  14. [[nodiscard]] bool bufferRead(Buffer* b, void* p, size_t n);
  15. #define BUFFER_READ_WRITE(Type, type) \
  16. [[nodiscard]] bool bufferWrite##Type(Buffer* b, type t); \
  17. [[nodiscard]] bool bufferRead##Type(Buffer* b, type* t)
  18. BUFFER_READ_WRITE(I32, i32);
  19. BUFFER_READ_WRITE(U8, u8);
  20. [[nodiscard]] bool bufferWriteString(Buffer* b, const char* s);
  21. const char* bufferReadString(Buffer* b);
  22. #endif