/* lp_queue.h
 * Neil Moore <neil@cs.uky.edu>
 * 27 May 1999
 *
 * Part of liblp.  See COPYRIGHT for copyright information.
 */
#ifndef _LP_QUEUE_H_INCLUDED
#define _LP_QUEUE_H_INCLUDED

#include <lp_lists.h>
#include <lp.h>

struct lp_aqueue {
	struct lp_alist *head;
	struct lp_alist *tail;
};

struct lp_aqueue *lp_aq_new(void);
void lp_aq_free(struct lp_aqueue *aq);

void lp_aq_enqueue(struct lp_aqueue *aq, struct lp_atom *a);
struct lp_atom *lp_aq_dequeue(struct lp_aqueue *aq);
struct lp_atom *lp_aq_head(const struct lp_aqueue *aq);

int lp_aq_size(const struct lp_aqueue *aq);
int lp_aq_empty(const struct lp_aqueue *aq);

#endif /* _LP_QUEUE_H_INCLUDED */
