debugging
[IRC.git] / Robust / src / Runtime / Queue.c
1 #include "mem.h"
2 #include "Queue.h"
3 #ifdef DMALLOC
4 #include "dmalloc.h"
5 #endif
6
7 struct Queue * createQueue() {
8   return RUNMALLOC(sizeof(struct Queue));
9 }
10
11 int isEmpty(struct Queue *queue) {
12   return queue->head==NULL;
13 }
14
15 struct QueueItem * addNewItem(struct Queue * queue, void * ptr) {
16   struct QueueItem * item=RUNMALLOC(sizeof(struct QueueItem));
17   item->objectptr=ptr;
18   item->queue=queue;
19   if (queue->head==NULL) {
20     queue->head=item;
21     queue->tail=item;
22   } else {
23     item->next=queue->head;
24     queue->head->prev=item;
25     queue->head=item;
26   }
27   return item;
28 }
29
30 void removeItem(struct Queue * queue, struct QueueItem * item) {
31   struct QueueItem * prev=item->prev;
32   struct QueueItem * next=item->next;
33   if (queue->head==item)
34     queue->head=next;
35   else
36     prev->next=next;
37   if (queue->tail==item)
38     queue->tail=prev;
39   else
40     next->prev=prev;
41   RUNFREE(item);
42 }
43
44 struct QueueItem * getTail(struct Queue * queue) {
45   return queue->tail;
46 }
47
48 struct QueueItem * getNext(struct QueueItem * qi) {
49   return qi->next;
50 }