Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCampbell Barton <ideasman42@gmail.com>2020-08-19 06:36:57 +0300
committerCampbell Barton <ideasman42@gmail.com>2020-08-19 06:43:51 +0300
commit762e4cf221afa6edf6155c302e3839012b169abe (patch)
tree20fceb0b929fd174357e73e28431826b651dac1a /source/blender
parentd5b5b228e4d07ce8c7d32c40c87bebe6745663e2 (diff)
BLI_listbase: add utility macro for looping over lists with an index
Add to the 2.90 branch to avoid problems if fixes from master use it.
Diffstat (limited to 'source/blender')
-rw-r--r--source/blender/blenlib/BLI_listbase.h8
1 files changed, 8 insertions, 0 deletions
diff --git a/source/blender/blenlib/BLI_listbase.h b/source/blender/blenlib/BLI_listbase.h
index fa7cf7a1847..932b63e43f7 100644
--- a/source/blender/blenlib/BLI_listbase.h
+++ b/source/blender/blenlib/BLI_listbase.h
@@ -186,6 +186,14 @@ struct LinkData *BLI_genericNodeN(void *data);
((var != NULL) ? ((void)(var##_iter_prev = (type)(((Link *)(var))->prev)), 1) : 0); \
var = var##_iter_prev)
+/**
+ * A version of #LISTBASE_FOREACH that takes an index variable (declared outside this macro).
+ * This avoids possible accidents where using `continue` could miss incrementing the counter.
+ */
+#define LISTBASE_FOREACH_INDEX(type, var, list, index_var) \
+ for (type var = (((void)(index_var = 0)), (type)((list)->first)); var != NULL; \
+ var = (type)(((Link *)(var))->next), index_var++)
+
#ifdef __cplusplus
}
#endif