29 lines
614 B
C
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
|