#include "Queue.H"

Queue::Queue()
  {
  oldest = nil;
  }

void Queue::operator<<(Poly x)
  {
  if( oldest.isEmpty() )	// empty
    {
    oldest = youngest = cons(x, nil);
    }  
  else
    {
    youngest = youngest.rawRest() = cons(x, nil);
    }
  }

int Queue::operator>>(Poly & x)
  {
  if( oldest.isEmpty() )
    {
    return 0;
    }

  x = oldest.first();
  oldest = oldest.rest();
  return 1;
  }