blob: 7253d883709a10623c2fdb24cac987d26c409bd1 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
|
#ifndef TSL_BUFFER_H
#define TSL_BUFFER_H
#include <stddef.h>
/*
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;
} TslBuffer;
void tsl_buffer_init(TslBuffer *self);
void tsl_buffer_deinit(TslBuffer *self);
int tsl_buffer_append(TslBuffer *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* tsl_buffer_pop(TslBuffer *self, size_t size);
void* tsl_buffer_begin(TslBuffer *self);
void* tsl_buffer_end(TslBuffer *self);
void tsl_buffer_move(TslBuffer *dst, TslBuffer *src);
#endif /* TSL_BUFFER_H */
|