13#define QUEUE_INITIAL_CAP 16
23 queue_t *q = malloc(
sizeof(*q));
26 if (!q->
data) { free(q);
return NULL; }
41 int *grown = malloc(new_cap *
sizeof(
int));
42 if (!grown)
return false;
44 for (
size_t i = 0; i < q->
size; i++) {
58 q->
data[tail] = value;
64 if (!q || q->
size == 0)
return false;
65 if (out_value) *out_value = q->
data[q->
head];
72 if (!q || q->
size == 0)
return false;
73 if (out_value) *out_value = q->
data[q->
head];
void queue_destroy(queue_t *q)
static bool queue_grow(queue_t *q)
size_t queue_size(const queue_t *q)
bool queue_enqueue(queue_t *q, int value)
queue_t * queue_create(void)
bool queue_peek(const queue_t *q, int *out_value)
bool queue_is_empty(const queue_t *q)
bool queue_dequeue(queue_t *q, int *out_value)
#define QUEUE_INITIAL_CAP
FIFO queue of int, backed by a circular buffer.