Commit: ffa8e7579916609b4ddd4dda031cf2a3a7eaefb1
Author: Hans Goudey
Date:   Tue Aug 18 21:38:18 2020 -0400
Branches: master
https://developer.blender.org/rBffa8e7579916609b4ddd4dda031cf2a3a7eaefb1

BLI Listbase: Add iterator macro that increments an index

===================================================================

M       .clang-format
M       source/blender/blenlib/BLI_listbase.h

===================================================================

diff --git a/.clang-format b/.clang-format
index cb5cdab496f..4db1b664fdb 100644
--- a/.clang-format
+++ b/.clang-format
@@ -238,6 +238,7 @@ ForEachMacros:
   - LISTBASE_FOREACH_BACKWARD
   - LISTBASE_FOREACH_MUTABLE
   - LISTBASE_FOREACH_BACKWARD_MUTABLE
+  - LISTBASE_FOREACH_INDEX
   - MAN_ITER_AXES_BEGIN
   - NODE_INSTANCE_HASH_ITER
   - NODE_SOCKET_TYPES_BEGIN
diff --git a/source/blender/blenlib/BLI_listbase.h 
b/source/blender/blenlib/BLI_listbase.h
index fa7cf7a1847..aff80a2bd86 100644
--- a/source/blender/blenlib/BLI_listbase.h
+++ b/source/blender/blenlib/BLI_listbase.h
@@ -171,6 +171,15 @@ struct LinkData *BLI_genericNodeN(void *data);
 #define LISTBASE_FOREACH(type, var, list) \
   for (type var = (type)((list)->first); var != NULL; var = (type)(((Link 
*)(var))->next))
 
+/**
+ * A version of #LISTBASE_FOREACH that supports incrementing an index variable 
at every step.
+ * Including this in the macro helps prevent mistakes where "continue" 
mistakenly skips the
+ * incrementation.
+ */
+#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++)
+
 #define LISTBASE_FOREACH_BACKWARD(type, var, list) \
   for (type var = (type)((list)->last); var != NULL; var = (type)(((Link 
*)(var))->prev))

_______________________________________________
Bf-blender-cvs mailing list
[email protected]
https://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to