Adding walk list which permits you to delete entries.

This commit is contained in:
Pavel Machek 1998-07-09 19:35:23 +00:00
parent 962ba482fd
commit aea2dcabdc

View file

@ -20,8 +20,14 @@ typedef struct list { /* In fact two overlayed nodes */
#define NODE (node *) #define NODE (node *)
#define HEAD(list) ((void *)((list).head)) #define HEAD(list) ((void *)((list).head))
#define TAIL(list) ((void *)((list).tail)) #define TAIL(list) ((void *)((list).tail))
#define WALK_LIST(n,list) for((n)=HEAD(list);(NODE (n))->next; \ #define WALK_LIST(n,list) for((NODE (n))=HEAD(list);(NODE (n))->next; \
n=(void *)((NODE (n))->next)) n=(void *)((NODE (n))->next))
#define WALK_LIST_DELSAFE(n,ne,list) \
if ( ((NODE n) = HEAD(list)) ) \
for( (NODE ne) = (NODE n)->next; \
ne; \
(NODE ne) = (NODE (n=ne))->next )
#define EMPTY_LIST(list) (!(list).head->next) #define EMPTY_LIST(list) (!(list).head->next)
void add_tail(list *, node *); void add_tail(list *, node *);