60
60
for (ASSIGN_CONTAINER(ITER, (LIST)->next, MEMBER); \
61
61
&(ITER)->MEMBER != (LIST); \
62
62
ASSIGN_CONTAINER(ITER, (ITER)->MEMBER.next, MEMBER))
63
#define LIST_FOR_EACH_CONTINUE(ITER, MEMBER, LIST) \
64
for (ASSIGN_CONTAINER(ITER, (ITER)->MEMBER.next, MEMBER); \
65
&(ITER)->MEMBER != (LIST); \
66
ASSIGN_CONTAINER(ITER, (ITER)->MEMBER.next, MEMBER))
63
67
#define LIST_FOR_EACH_REVERSE(ITER, MEMBER, LIST) \
64
68
for (ASSIGN_CONTAINER(ITER, (LIST)->prev, MEMBER); \
65
69
&(ITER)->MEMBER != (LIST); \
66
70
ASSIGN_CONTAINER(ITER, (ITER)->MEMBER.prev, MEMBER))
67
#define LIST_FOR_EACH_SAFE(ITER, NEXT, MEMBER, LIST) \
68
for (ASSIGN_CONTAINER(ITER, (LIST)->next, MEMBER); \
69
(&(ITER)->MEMBER != (LIST) \
70
? ASSIGN_CONTAINER(NEXT, (ITER)->MEMBER.next, MEMBER) \
71
#define LIST_FOR_EACH_REVERSE_CONTINUE(ITER, MEMBER, LIST) \
72
for (ASSIGN_CONTAINER(ITER, (ITER)->MEMBER.prev, MEMBER); \
73
&(ITER)->MEMBER != (LIST); \
74
ASSIGN_CONTAINER(ITER, (ITER)->MEMBER.prev, MEMBER))
75
#define LIST_FOR_EACH_SAFE(ITER, NEXT, MEMBER, LIST) \
76
for (ASSIGN_CONTAINER(ITER, (LIST)->next, MEMBER); \
77
(&(ITER)->MEMBER != (LIST) \
78
? ASSIGN_CONTAINER(NEXT, (ITER)->MEMBER.next, MEMBER), 1 \
74
82
#endif /* list.h */