/* Steven Andrews, 4/16/95 */ /* Modified substantially 1/15/02 */ /* See documentation called queue doc */ /* Copyright 2003 by Steven Andrews. Permission is granted for non-commercial use of and modifications to the code. */ #ifndef __queue_h #define __queue_h typedef struct qstruct{ void **x; void **k; int (*keycmp)(void *,void *); int n; int f; int b; } *queue; #define qfrontkey(q) ((q)->b==(q)->f?0:(q)->k[(q)->f]) queue qalloc(int n,int (*keycmp)(void *,void *)); int qexpand(queue q,int addspace); void qfree(queue q,int freek,int freex); void qnull(queue q); int enqueue(void *k,void *x,queue q); int qpush(void *k,void *x,queue q); int qinsert(void *k,void *x,queue q); void *qfront(queue q,void **kptr); void *qpop(queue q,void **kptr); int qlength(queue q); int qmaxlength(queue q); int qnext(int i,void **kptr,void **xptr,queue q); #endif