#ifndef AOC_2021_QUEUE_H #define AOC_2021_QUEUE_H #include #include typedef enum { QUEUE_OK, QUEUE_FULL = -1, QUEUE_EMPTY = -1, QUEUE_DATA_INVALID = -1, } 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 init(queue_t * queue, void * data, size_t max_data_size, size_t element_size); queue_ret_t push(queue_t * queue, void * element); queue_ret_t pop(queue_t * queue, void * store_to); #endif //AOC_2021_QUEUE_H