7 struct Queue * createQueue() {
8 struct Queue * queue = (struct Queue *)RUNMALLOC(sizeof(struct Queue));
14 void freeQueue(struct Queue * q) {
18 struct QueueItem * addNewItem(struct Queue * queue, void * ptr) {
19 struct QueueItem * item=RUNMALLOC(sizeof(struct QueueItem));
22 if (queue->head==NULL) {
26 item->next=queue->head;
27 queue->head->prev=item;
34 struct QueueItem * addNewItem_I(struct Queue * queue, void * ptr) {
35 struct QueueItem * item=RUNMALLOC_I(sizeof(struct QueueItem));
38 if (queue->head==NULL) {
42 item->next=queue->head;
43 queue->head->prev=item;
50 struct QueueItem * findItem(struct Queue * queue, void *ptr) {
51 struct QueueItem * item=queue->head;
53 if (item->objectptr==ptr)
60 void removeItem(struct Queue * queue, struct QueueItem * item) {
61 struct QueueItem * prev=item->prev;
62 struct QueueItem * next=item->next;
63 if (queue->head==item)
67 if (queue->tail==item)
74 struct QueueItem * getTail(struct Queue * queue) {
78 struct QueueItem * getNextQueueItem(struct QueueItem * qi) {
82 void * getItem(struct Queue * queue) {
83 struct QueueItem * q=queue->head;
84 void * ptr=q->objectptr;