aoc-2021/src/queue.h

29 lines
614 B
C

#ifndef AOC_2021_QUEUE_H
#define AOC_2021_QUEUE_H
#include <stdint.h>
#include <stddef.h>
typedef enum {
QUEUE_OK,
QUEUE_FULL = -1,
QUEUE_EMPTY = -2,
QUEUE_DATA_INVALID = -3,
} queue_ret_t;
typedef struct {
void * data;
size_t push_ndx;
size_t pop_ndx;
size_t queued_elements;
size_t max_data_size;
size_t element_size;
} queue_t;
queue_ret_t queue_init(queue_t * queue, void * data, size_t max_data_size, size_t element_size);
queue_ret_t queue_push(queue_t * queue, void * element);
queue_ret_t queue_pop(queue_t * queue, void * store_to);
#endif //AOC_2021_QUEUE_H