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=9380f362f1e1c7f1acf7f59640514b843fceca1f;hb=6210e7fc31e14159627144f7409eadd3ce0d72b9;hpb=03467c88fba6caeffce2a57a31ee2344e3d3ba31 diff --git a/src/list.h b/src/list.h index 9380f362f..2bec8c9e7 100644 --- a/src/list.h +++ b/src/list.h @@ -77,7 +77,7 @@ do { \ t *_item = (item); \ assert(_item); \ - while ((_item->name##_prev) \ + while (_item->name##_prev) \ _item = _item->name##_prev; \ (head) = _item; \ } while (false) @@ -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