mirror of
https://gitlab.isc.org/isc-projects/bind9
synced 2025-08-31 14:35:26 +00:00
Add ISC_LIST_FOREACH(_SAFE) macros
There's a recurring pattern walking the ISC_LISTs that just repeats over and over. Add two macros: * ISC_LIST_FOREACH(list, elt, link) - walk the static list * ISC_LIST_FOREACH_SAFE(list, elt, link, next) - walk the list in a manner that's safe against list member deletions
This commit is contained in:
@@ -78,4 +78,4 @@ PenaltyBreakString: 80
|
||||
PenaltyExcessCharacter: 100
|
||||
Standard: Cpp11
|
||||
ContinuationIndentWidth: 8
|
||||
ForEachMacros: [ 'cds_lfs_for_each', 'cds_lfs_for_each_safe', 'cds_list_for_each_entry_safe' ]
|
||||
ForEachMacros: [ 'cds_lfs_for_each', 'cds_lfs_for_each_safe', 'cds_list_for_each_entry_safe', 'ISC_LIST_FOREACH', 'ISC_LIST_FOREACH_SAFE' ]
|
||||
|
@@ -227,3 +227,17 @@
|
||||
INSIST(ISC_LIST_EMPTY(dest)); \
|
||||
ISC_LIST_MOVEUNSAFE(dest, src); \
|
||||
}
|
||||
|
||||
/* clang-format off */
|
||||
#define ISC_LIST_FOREACH(list, elt, link) \
|
||||
for (elt = ISC_LIST_HEAD(list); \
|
||||
elt != NULL; \
|
||||
elt = ISC_LIST_NEXT(elt, link))
|
||||
/* clang-format on */
|
||||
|
||||
/* clang-format off */
|
||||
#define ISC_LIST_FOREACH_SAFE(list, elt, link, next) \
|
||||
for (elt = ISC_LIST_HEAD(list), next = (elt != NULL) ? ISC_LIST_NEXT(elt, link) : NULL; \
|
||||
elt != NULL; \
|
||||
elt = next, next = (elt != NULL) ? ISC_LIST_NEXT(elt, link) : NULL)
|
||||
/* clang-format on */
|
||||
|
Reference in New Issue
Block a user