typedef struct _queue_element
{
  void                  *content;
  struct _queue_element *next;
} queue_element;

typedef struct
{
  queue_element *head, *tail;
  unsigned       nb_values;
} queue;

queue   *queue_new(void);
void     queue_free(queue *);
int      queue_send(queue *, void *);
void    *queue_receive(queue *);
void    *queue_front(queue *);
unsigned queue_size(queue *);
int      queue_is_empty(queue *);
