7 struct Queue * createQueue() {
8 struct Queue * queue = (struct Queue *)RUNMALLOC(sizeof(struct Queue));
14 void freeQueue(struct Queue * q) {
18 int isEmpty(struct Queue *queue) {
19 return queue->head==NULL;
22 struct QueueItem * addNewItem(struct Queue * queue, void * ptr) {
23 struct QueueItem * item=RUNMALLOC(sizeof(struct QueueItem));
26 if (queue->head==NULL) {
30 item->next=queue->head;
31 queue->head->prev=item;
38 struct QueueItem * addNewItem_I(struct Queue * queue, void * ptr) {
39 struct QueueItem * item=RUNMALLOC_I(sizeof(struct QueueItem));
42 if (queue->head==NULL) {
46 item->next=queue->head;
47 queue->head->prev=item;
54 struct QueueItem * findItem(struct Queue * queue, void *ptr) {
55 struct QueueItem * item=queue->head;
57 if (item->objectptr==ptr)
64 void removeItem(struct Queue * queue, struct QueueItem * item) {
65 struct QueueItem * prev=item->prev;
66 struct QueueItem * next=item->next;
67 if (queue->head==item)
71 if (queue->tail==item)
78 struct QueueItem * getTail(struct Queue * queue) {
82 struct QueueItem * getNext(struct QueueItem * qi) {