From dfad8a8016426d7fe198dc32973b01a1e075142e Mon Sep 17 00:00:00 2001 From: dec05eba Date: Sun, 12 Jul 2020 21:32:44 +0200 Subject: Starting on conversion to c. Program exec, buffers.. --- buffer.h | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) create mode 100644 buffer.h (limited to 'buffer.h') diff --git a/buffer.h b/buffer.h new file mode 100644 index 0000000..a8c1940 --- /dev/null +++ b/buffer.h @@ -0,0 +1,30 @@ +#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 { + void *data; + size_t size; + size_t capacity; +} Buffer; + +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); + +#endif -- cgit v1.2.3