33 #endif // RINGBUFFER_H
void free_func_t(void *ptr)
prototype for a "free" function (used as ringbuffer_t member)
Definition: ringbuffer.h:9
void ringbuffer_resize(ringbuffer_t *rb, size_t new_capacity)
resize the ring buffer (assign a new capacity).
Definition: ringbuffer.c:141
size_t capacity
maximum number of elements, should correspond to *entries array size
Definition: ringbuffer.h:17
void * ringbuffer_head(ringbuffer_t *rb)
shortcut to retrieve "head" element
Definition: ringbuffer.c:180
void * ringbuffer_element(ringbuffer_t *rb, size_t index)
Retrieve the n-th entry (element pointer) from the ring buffer.
Definition: ringbuffer.c:163
size_t count
the number of elements in the buffer (0 -> empty; == capacity -> full)
Definition: ringbuffer.h:16
Ring buffer structure.
Definition: ringbuffer.h:13
void ringbuffer_push_copy(ringbuffer_t *rb, void *buffer, size_t size)
push a copy of a (temporary) memory buffer.
Definition: ringbuffer.c:112
size_t position
the current start of the list (oldest entry, "tail" pointer)
Definition: ringbuffer.h:15
void ringbuffer_init(ringbuffer_t *rb, size_t capacity, free_func_t free_func)
"constructor", prepare a ringbuffer_t before usage
Definition: ringbuffer.c:47
void ringbuffer_pop(ringbuffer_t *rb)
discard the oldest entry ("tail" element) from the buffer.
Definition: ringbuffer.c:121
void ringbuffer_push(ringbuffer_t *rb, void *element)
push an element pointer to the ring buffer (new "head" entry)
Definition: ringbuffer.c:90
void ringbuffer_done(ringbuffer_t *rb)
"destructor", free up a ringbuffer_t's resources after you're done
Definition: ringbuffer.c:60
free_func_t * free
(optional) function to release memory on element removal
Definition: ringbuffer.h:18
void * ringbuffer_tail(ringbuffer_t *rb)
shortcut to retrieve "tail" element
Definition: ringbuffer.c:175
void ringbuffer_clear(ringbuffer_t *rb)
remove (pop) all entries from the buffer, until it's empty again (count == 0)
Definition: ringbuffer.c:130
void ** entries
dynamic memory for an array of element pointers
Definition: ringbuffer.h:14