Buffer.h 1.0 KB

1234567891011121314151617181920212223242526272829303132333435363738
  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, u8* data, size_t n);
  11. void bufferReset(Buffer* b);
  12. [[nodiscard]] bool bufferWrite(Buffer* b, const void* p, size_t n);
  13. [[nodiscard]] bool bufferRead(Buffer* b, void* p, size_t n);
  14. #define BUFFER_READ_WRITE(Type, type) \
  15. [[nodiscard]] bool bufferWrite##Type(Buffer* b, type t); \
  16. [[nodiscard]] bool bufferRead##Type(Buffer* b, type* t)
  17. BUFFER_READ_WRITE(I8, i8);
  18. BUFFER_READ_WRITE(I16, i16);
  19. BUFFER_READ_WRITE(I32, i32);
  20. BUFFER_READ_WRITE(I64, i64);
  21. BUFFER_READ_WRITE(U8, u8);
  22. BUFFER_READ_WRITE(U16, u16);
  23. BUFFER_READ_WRITE(U32, u32);
  24. BUFFER_READ_WRITE(U64, u64);
  25. bool bufferIsEmpty(const Buffer* b);
  26. size_t bufferGetReadIndex(const Buffer* b);
  27. void bufferSetReadIndex(Buffer* b, size_t n);
  28. size_t bufferGetWriteIndex(const Buffer* b);
  29. void bufferSetWriteIndex(Buffer* b, size_t n);
  30. #endif