// From: "Douglas C. Schmidt" <schmidt@glacier.ics.uci.edu>
// Date: Sun, 25 Sep 88 16:19:35 -0700
#define queue(type) name2(type,queue)
#define list(type) name2(type,list)
#define queuedeclare(type) \
queue(type)(void) {head = 0;sz = 0;} \
int empty(void) {return(!head);} \
int size(void) {return(sz);} \
void enqueue(type new_item); \
return(head->next->item); \
#define queueimplement(type) \
type queue(type)::dequeue(void) { \
type temp = head->next->item; \
if ((temp_ptr = head->next) == head) { \
head->next = temp_ptr->next; \
void queue(type)::enqueue(type new_item) { \
list(type) *temp_node = new list(type); \
temp_node->item = new_item; \
temp_node->next = head->next; \
head->next = temp_node; \
if (Buf
.matches(RXalpha
)) {
Q_String
.enqueue(String(Buf
));
else if (Buf
.matches(RXdouble
)) {
Q_double
.enqueue(atof(Buf
));
while (!Q_String
.empty()) {
cout
<< "Size = " << Q_String
.size() << ",Item = "
<< Q_String
.front() << "\n";
void(Q_String
.dequeue());
while (!Q_double
.empty()) {
cout
<< "Size = " << Q_double
.size() << ",Item = "
<< Q_double
.front() << "\n";
void(Q_double
.dequeue());