From ae0520e57267dbd866fc8cd25f66f4e6af2ac118 Mon Sep 17 00:00:00 2001 From: dec05eba Date: Mon, 13 Jul 2020 15:59:30 +0200 Subject: Move c files into src directory --- src/buffer.h | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) create mode 100644 src/buffer.h (limited to 'src/buffer.h') diff --git a/src/buffer.h b/src/buffer.h new file mode 100644 index 0000000..a50cd85 --- /dev/null +++ b/src/buffer.h @@ -0,0 +1,33 @@ +#ifndef BUFFER_H +#define BUFFER_H + +#include + +/* + TODO: Optimize small size buffers by using data and size members (16 bytes on x86) + instead of heap allocation +*/ + +typedef struct Buffer Buffer; +struct Buffer { + void *data; + size_t size; + size_t capacity; +}; + +void buffer_init(Buffer *self); +void buffer_deinit(Buffer *self); + +void buffer_append(Buffer *self, const void *data, size_t size); +/* + This function changes the size of the buffer without changing the capacity + and returns the value at the back of the buffer, which is valid until @tsl_buffer_append or + @tsl_buffer_deinit is called. + The buffer size has to be larger or equal to @size. +*/ +void* buffer_pop(Buffer *self, size_t size); +void* buffer_begin(Buffer *self); +void* buffer_end(Buffer *self); +size_t buffer_get_size(Buffer *self, size_t type_size); + +#endif -- cgit v1.2.3