| 1234567891011121314151617181920212223242526272829303132333435363738 |
- #ifndef BASIC_BUFFER_H
- #define BASIC_BUFFER_H
- #include "Types.h"
- typedef struct {
- u8* data;
- size_t maxIndex;
- size_t readIndex;
- size_t writeIndex;
- } Buffer;
- void bufferInit(Buffer* b, u8* data, size_t n);
- void bufferReset(Buffer* b);
- [[nodiscard]] bool bufferWrite(Buffer* b, const void* p, size_t n);
- [[nodiscard]] bool bufferRead(Buffer* b, void* p, size_t n);
- #define BUFFER_READ_WRITE(Type, type) \
- [[nodiscard]] bool bufferWrite##Type(Buffer* b, type t); \
- [[nodiscard]] bool bufferRead##Type(Buffer* b, type* t)
- BUFFER_READ_WRITE(I8, i8);
- BUFFER_READ_WRITE(I16, i16);
- BUFFER_READ_WRITE(I32, i32);
- BUFFER_READ_WRITE(I64, i64);
- BUFFER_READ_WRITE(U8, u8);
- BUFFER_READ_WRITE(U16, u16);
- BUFFER_READ_WRITE(U32, u32);
- BUFFER_READ_WRITE(U64, u64);
- bool bufferIsEmpty(const Buffer* b);
- size_t bufferGetReadIndex(const Buffer* b);
- void bufferSetReadIndex(Buffer* b, size_t n);
- size_t bufferGetWriteIndex(const Buffer* b);
- void bufferSetWriteIndex(Buffer* b, size_t n);
- #endif
|