From 83909ad3889884e223dcab09fddc3c77410ac15c Mon Sep 17 00:00:00 2001 From: Michael Beck Date: Mon, 29 May 2006 13:33:26 +0000 Subject: [PATCH] Add macros to use a pdeq as a stack [r7813] --- ir/adt/pdeq.h | 43 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) diff --git a/ir/adt/pdeq.h b/ir/adt/pdeq.h index e2107bc1c..d15c4584a 100644 --- a/ir/adt/pdeq.h +++ b/ir/adt/pdeq.h @@ -212,4 +212,47 @@ typedef pdeq waitq; */ #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_ */ -- 2.20.1