summaryrefslogtreecommitdiffstats
path: root/include/ck_queue.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/ck_queue.h')
-rw-r--r--include/ck_queue.h15
1 files changed, 15 insertions, 0 deletions
diff --git a/include/ck_queue.h b/include/ck_queue.h
index fd38d8a..3472b0e 100644
--- a/include/ck_queue.h
+++ b/include/ck_queue.h
@@ -153,6 +153,11 @@ struct { \
(var); \
(var) = CK_SLIST_NEXT((var), field))
+#define CK_SLIST_FOREACH_FROM(var, head, field) \
+ for ((var) = ((var) != NULL ? (var) : CK_SLIST_FIRST((head))); \
+ (var); \
+ (var) = CK_SLIST_NEXT((var), field))
+
#define CK_SLIST_FOREACH_SAFE(var, head, field, tvar) \
for ((var) = CK_SLIST_FIRST(head); \
(var) && ((tvar) = CK_SLIST_NEXT(var, field), 1); \
@@ -262,6 +267,11 @@ struct { \
(var); \
(var) = CK_STAILQ_NEXT((var), field))
+#define CK_STAILQ_FOREACH_FROM(var, head, field) \
+ for ((var) = ((var) != NULL ? (var) : CK_STAILQ_FIRST((head))); \
+ (var); \
+ (var) = CK_STAILQ_NEXT((var), field))
+
#define CK_STAILQ_FOREACH_SAFE(var, head, field, tvar) \
for ((var) = CK_STAILQ_FIRST((head)); \
(var) && ((tvar) = \
@@ -374,6 +384,11 @@ struct { \
(var); \
(var) = CK_LIST_NEXT((var), field))
+#define CK_LIST_FOREACH_FROM(var, head, field) \
+ for ((var) = ((var) != NULL ? (var) : CK_LIST_FIRST((head))); \
+ (var); \
+ (var) = CK_LIST_NEXT((var), field))
+
#define CK_LIST_FOREACH_SAFE(var, head, field, tvar) \
for ((var) = CK_LIST_FIRST((head)); \
(var) && ((tvar) = CK_LIST_NEXT((var), field), 1); \