| char rcsid_queue[] = "$Id$"; |
| |
| #include "b.h" |
| #include <stdio.h> |
| |
| Queue globalQ; |
| |
| Queue |
| newQ() |
| { |
| Queue q; |
| |
| q = (Queue) zalloc(sizeof(struct queue)); |
| assert(q); |
| q->head = 0; |
| q->tail = 0; |
| |
| return q; |
| } |
| |
| void |
| addQ(q, ts) Queue q; Item_Set ts; |
| { |
| List qe; |
| |
| assert(q); |
| assert(ts); |
| |
| qe = newList(ts, 0); |
| if (q->head) { |
| assert(q->tail); |
| q->tail->next = qe; |
| q->tail = qe; |
| } else { |
| q->head = q->tail = qe; |
| } |
| } |
| |
| Item_Set |
| popQ(q) Queue q; |
| { |
| List qe; |
| Item_Set ts; |
| |
| assert(q); |
| |
| if (q->head) { |
| qe = q->head; |
| q->head = q->head->next; |
| ts = (Item_Set) qe->x; |
| zfree(qe); |
| return ts; |
| } else { |
| return 0; |
| } |
| } |
| |
| void |
| dumpQ(q) Queue q; |
| { |
| printf("Begin Queue\n"); |
| foreachList((ListFn)dumpItem_Set, q->head); |
| printf("End Queue\n"); |
| } |