7 struct Queue * createQueue() {
8 return RUNMALLOC(sizeof(struct Queue));
11 void freeQueue(struct Queue * q) {
15 int isEmpty(struct Queue *queue) {
16 return queue->head==NULL;
19 struct QueueItem * addNewItem(struct Queue * queue, void * ptr) {
20 struct QueueItem * item=RUNMALLOC(sizeof(struct QueueItem));
23 if (queue->head==NULL) {
27 item->next=queue->head;
28 queue->head->prev=item;
34 struct QueueItem * findItem(struct Queue * queue, void *ptr) {
35 struct QueueItem * item=queue->head;
37 if (item->objectptr==ptr)
44 void removeItem(struct Queue * queue, struct QueueItem * item) {
45 struct QueueItem * prev=item->prev;
46 struct QueueItem * next=item->next;
47 if (queue->head==item)
51 if (queue->tail==item)
58 struct QueueItem * getTail(struct Queue * queue) {
62 struct QueueItem * getNext(struct QueueItem * qi) {