* File name: ir/adt/pdeq.h
* Purpose: Declarations for pdeq.
* Author: Christian von Roques
- * Modified by:
+ * Modified by: Michael Beck
* Created: 1999 by getting from fiasco
* CVS-ID: $Id$
* Copyright: (c) 1995, 1996 Christian von Roques
void _pdeq_vrfy(pdeq *dq);
#endif
+/**
+ * The pdeq is often used as a wait queue. A helper
+ * type to support this.
+ */
+typedef pdeq waitq;
+
+/**
+ * Creates a new pointer wait queue (fifo).
+ *
+ * @return A new queue.
+ */
+#define new_waitq() new_pdeq()
+
+/**
+ * Delete a wait queue (fifo)
+ *
+ * @param wq The wait queue.
+ */
+#define del_waitq(wq) del_pdeq(wq)
+
+/**
+ * Retrieve a pointer from the wait queue (fifo).
+ *
+ * @param wq The wait queue.
+ *
+ * @return The pointer element.
+ *
+ * @remark This function will fail if the queue is empty.
+ */
+#define waitq_get(wq) pdeq_getl(wq)
+
+/**
+ * Add a pointer to the wait queue (fifo).
+ *
+ * @param wq The wait queue
+ * @param x The pointer element to be added
+ *
+ * @return The wait queue.
+ */
+#define waitq_put(wq, x) pdeq_putr((wq), (x))
+
+/**
+ * Checks if a wait queue is empty.
+ *
+ * @param wq The wait queue.
+ *
+ * @return non-zero if the queue is empty.
+ */
+#define waitq_empty(wq) pdeq_empty(wq)
+
+/**
+ * The pdeq can be used as a stack. A helper
+ * type to support this.
+ */
+typedef pdeq stack;
+
+/**
+ * Creates a new pointer stack (lifo).
+ *
+ * @return A new stack.
+ */
+#define new_stack() new_pdeq()
+
+/**
+ * Pop a pointer from the stack (lifo).
+ *
+ * @param st The stack.
+ *
+ * @return The pointer element.
+ *
+ * @remark This function will fail if the stack is empty.
+ */
+#define stack_pop(st) pdeq_getr(st)
+
+/**
+ * Push a pointer to the stack (lifo).
+ *
+ * @param st The stack.
+ * @param x The pointer element to be added
+ *
+ * @return The stack.
+ */
+#define stack_push(st, x) pdeq_putr((st), (x))
+
+/**
+ * Checks if a stack is empty.
+ *
+ * @param st The stack.
+ *
+ * @return non-zero if the stack is empty.
+ */
+#define stack_empty(st) pdeq_empty(wq)
+
#endif /* _PDEQ_H_ */