#ifndef AOC_2021_QUEUE_H #define AOC_2021_QUEUE_H #include #include 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