From: Willy Tarreau Date: Wed, 24 Apr 2024 16:21:50 +0000 (+0200) Subject: MINOR: list: add a macro to detect that a list contains at most one element X-Git-Tag: v3.0-dev9~2 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=1db3a390bb5797b0d9d99e295aa68244d5419eb9;p=thirdparty%2Fhaproxy.git MINOR: list: add a macro to detect that a list contains at most one element The new LIST_ATMOST1() test verifies that the designated element is either alone or points on both sides to the same element. This is used to detect that a list has at most a single element, or that an element about to be deleted was the last one of a list. --- diff --git a/include/haproxy/list.h b/include/haproxy/list.h index 368e6d76b8..b922bc19b2 100644 --- a/include/haproxy/list.h +++ b/include/haproxy/list.h @@ -106,6 +106,13 @@ */ #define LIST_INLIST(el) ((el)->n != (el)) +/* checks if the list element has the same prev and next, i.e. it's either + * detached or alone in a list since (it points to itself or to a single other + * node). One can check that an element is strictly attached and alone by + * combining this with LIST_INLIST(). + */ +#define LIST_ATMOST1(el) ((el)->n == (el)->p) + /* atomically checks if the list element's next pointer points to anything * different from itself, implying the element should be part of a list. This * usually is similar to LIST_INLIST() except that while that one might be