#include "cvector.h"
#include "cstring.h"

typedef struct Queue {
  Vector *v;
} Queue;

Queue *new_Queue() {
  Queue *s;
  s = (Queue *) malloc(sizeof(Queue));
  s->v = new_Vector(-1);
  return s;
}

void Queue_enqueue(Queue *s, void *item) {
  Vector_append(s->v,item);
}

void *Queue_dequeue(Queue *s) {
  void *item;
  item = Vector_getitem(s->v, 0);
  Vector_delitem(s->v, 0);
  return item;
}

int main() {
  Queue *s;
  int i;
  s = new_Queue();

  Queue_enqueue(s,new_String("Hello"));
  Queue_enqueue(s,new_String("Panic"));
  Queue_enqueue(s,new_String("Argh!!"));
  
  for (i = 0; i < 3; i++) {
    String *t;
    t = (String *) Queue_dequeue(s);
    printf("%s\n", String_cstr(t));
  }
}
