10#ifndef TR_CIRCULAR_BUFFER_H
11#define TR_CIRCULAR_BUFFER_H
23#define TR_CIRCULAR_BUFFER(name, size) \
24 char name##_buf[size]; \
25 tr_circular_buffer_t name = \
26 { name##_buf, size, 0, 0, 0 };
28#define TR_CIRCULAR_BUFFER_INIT(name) \
29 init_buffer((tr_circular_buffer_t*)&name)
31#define TR_CIRCULAR_BUFFER_ENQUEUE(name, data, len) \
32 enqueue((tr_circular_buffer_t*)&name, (const char*)data, len)
34#define TR_CIRCULAR_BUFFER_DEQUEUE(name, data, len) \
35 dequeue((tr_circular_buffer_t*)&name, (char*)data, len)
37#define TR_CIRCULAR_BUFFER_LENGTH(name) \
38 (tr_circular_buffer_t*)&name->count
40#define TR_CIRCULAR_BUFFER_IS_EMPTY(name) \
41 is_empty((tr_circular_buffer_t*)&name)
43#define TR_CIRCULAR_BUFFER_DUMP_BUFFER(name) \
44 dump_buffer((tr_circular_buffer_t*)&name)
Definition tr_circular_buffer.h:14
uint32_t in_ptr
Definition tr_circular_buffer.h:17
uint32_t out_ptr
Definition tr_circular_buffer.h:18
uint32_t count
Definition tr_circular_buffer.h:19
uint32_t size
Definition tr_circular_buffer.h:16
char * buffer
Definition tr_circular_buffer.h:15
void dump_buffer(tr_circular_buffer_t *cb)
bool is_full(tr_circular_buffer_t *cb)
void init_buffer(tr_circular_buffer_t *cb)
bool dequeue(tr_circular_buffer_t *cb, char *data, int length)
bool is_empty(tr_circular_buffer_t *cb)
bool enqueue(tr_circular_buffer_t *cb, const char *data, int length)