#ifndef KK_QUEUE_H_ #define KK_QUEUE_H_ #include /* * define the default max size * even afew will be enough as queue cmds * will be consumed right away on most * machines but we dont want unexpected * beheviour on slow machines */ #define Q_MAX_SIZE 128 #define __need_NULL #include #define Q_NULL NULL #define Q_EMPTY_IDX -1 enum { Q_DONE = 0, Q_FULL }; typedef struct { int front; int rear; void *items[Q_MAX_SIZE]; } queue; extern queue q_new(); extern bool q_is_empty(queue *q); extern bool q_is_full(queue *q); extern int q_enqueue(queue *q, void *item); extern void *q_dequeue(queue *q); extern void *q_peek(queue *q); #ifdef KK_DEBUG_ extern void q_print_type_enum(int e); extern void q_debug(queue *q); #endif // KK_DEBUG_ #endif