X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=elogind.git;a=blobdiff_plain;f=src%2Flist.h;h=2bec8c9e738f252332ca3b69b800bc21f704f461;hp=e49d953d0ac42ac6b3f688f4366b712d6a01a453;hb=133176702a03e5f6264f35c403dd7720d9e05c3f;hpb=95e26a692d0af027a5fe83e1743e307c864b4af0 diff --git a/src/list.h b/src/list.h index e49d953d0..2bec8c9e7 100644 --- a/src/list.h +++ b/src/list.h @@ -110,10 +110,19 @@ } \ } while(false) +#define LIST_JUST_US(name,item) \ + (!(item)->name##_prev && !(item)->name##_next) \ + #define LIST_FOREACH(name,i,head) \ for ((i) = (head); (i); (i) = (i)->name##_next) #define LIST_FOREACH_SAFE(name,i,n,head) \ for ((i) = (head); (i) && (((n) = (i)->name##_next), 1); (i) = (n)) +#define LIST_FOREACH_BEFORE(name,i,p) \ + for ((i) = (p)->name##_prev; (i); (i) = (i)->name##_prev) + +#define LIST_FOREACH_AFTER(name,i,p) \ + for ((i) = (p)->name##_next; (i); (i) = (i)->name##_next) + #endif