00001 00002 #ifndef __QUEUE_H__ 00003 #define __QUEUE_H__ 00004 00008 typedef struct { 00009 struct queue_node *head; 00010 struct queue_node *tail; 00011 unsigned int size; 00012 } queue_t; 00013 00014 void queue_init(queue_t *q); 00015 void queue_destroy(queue_t *q); 00016 00017 void *queue_dequeue(queue_t *q); 00018 void *queue_at(queue_t *q, int pos); 00019 void *queue_remove_at(queue_t *q, int pos); 00020 void queue_enqueue(queue_t *q, void *item); 00021 unsigned int queue_size(queue_t *q); 00022 00023 void queue_iterate(queue_t *q, void (*iter_func)(void *, void *), void *arg); 00024 00025 #endif