[Bf-blender-cvs] [413c399ab89] master: Cleanup: Move view layer array utils from macros to functions

Hans Goudey noreply at git.blender.org
Wed Aug 17 03:25:22 CEST 2022


Commit: 413c399ab8900ee193e474edc597ca00f4176cc0
Author: Hans Goudey
Date:   Tue Aug 16 21:25:14 2022 -0400
Branches: master
https://developer.blender.org/rB413c399ab8900ee193e474edc597ca00f4176cc0

Cleanup: Move view layer array utils from macros to functions

These macros don't compile in C++ because of taking an address of a
temporary and use of designated initializers. Besides that, using
functions can improve debugging and type safety.

Differentil Revision: https://developer.blender.org/D15693

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

M	source/blender/blenkernel/BKE_layer.h
M	source/blender/blenkernel/intern/layer_utils.c
M	source/blender/editors/armature/armature_select.c
M	source/blender/editors/object/object_edit.c
M	source/blender/editors/transform/transform_convert.c

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

diff --git a/source/blender/blenkernel/BKE_layer.h b/source/blender/blenkernel/BKE_layer.h
index 9a6c3cf2b5f..d2cfb788ca2 100644
--- a/source/blender/blenkernel/BKE_layer.h
+++ b/source/blender/blenkernel/BKE_layer.h
@@ -10,6 +10,7 @@
 
 #include "DNA_layer_types.h"
 #include "DNA_listBase.h"
+#include "DNA_object_enums.h"
 
 #ifdef __cplusplus
 extern "C" {
@@ -520,46 +521,28 @@ struct Object **BKE_view_layer_array_from_objects_in_mode_params(
     uint *len,
     const struct ObjectsInModeParams *params);
 
-#define BKE_view_layer_array_from_objects_in_mode(view_layer, v3d, r_len, ...) \
-  BKE_view_layer_array_from_objects_in_mode_params( \
-      view_layer, v3d, r_len, &(const struct ObjectsInModeParams)__VA_ARGS__)
-
-#define BKE_view_layer_array_from_bases_in_mode(view_layer, v3d, r_len, ...) \
-  BKE_view_layer_array_from_bases_in_mode_params( \
-      view_layer, v3d, r_len, &(const struct ObjectsInModeParams)__VA_ARGS__)
-
 bool BKE_view_layer_filter_edit_mesh_has_uvs(const struct Object *ob, void *user_data);
 bool BKE_view_layer_filter_edit_mesh_has_edges(const struct Object *ob, void *user_data);
 
-/* Utility macros that wrap common args (add more as needed). */
-
-#define BKE_view_layer_array_from_objects_in_edit_mode(view_layer, v3d, r_len) \
-  BKE_view_layer_array_from_objects_in_mode(view_layer, v3d, r_len, {.object_mode = OB_MODE_EDIT})
-
-#define BKE_view_layer_array_from_bases_in_edit_mode(view_layer, v3d, r_len) \
-  BKE_view_layer_array_from_bases_in_mode(view_layer, v3d, r_len, {.object_mode = OB_MODE_EDIT})
-
-#define BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, v3d, r_len) \
-  BKE_view_layer_array_from_objects_in_mode( \
-      view_layer, v3d, r_len, {.object_mode = OB_MODE_EDIT, .no_dup_data = true})
-
-#define BKE_view_layer_array_from_bases_in_edit_mode_unique_data(view_layer, v3d, r_len) \
-  BKE_view_layer_array_from_bases_in_mode( \
-      view_layer, v3d, r_len, {.object_mode = OB_MODE_EDIT, .no_dup_data = true})
-
-#define BKE_view_layer_array_from_objects_in_edit_mode_unique_data_with_uvs( \
-    view_layer, v3d, r_len) \
-  BKE_view_layer_array_from_objects_in_mode( \
-      view_layer, \
-      v3d, \
-      r_len, \
-      {.object_mode = OB_MODE_EDIT, \
-       .no_dup_data = true, \
-       .filter_fn = BKE_view_layer_filter_edit_mesh_has_uvs})
-
-#define BKE_view_layer_array_from_objects_in_mode_unique_data(view_layer, v3d, r_len, mode) \
-  BKE_view_layer_array_from_objects_in_mode( \
-      view_layer, v3d, r_len, {.object_mode = mode, .no_dup_data = true})
+/* Utility functions that wrap common arguments (add more as needed). */
+
+struct Object **BKE_view_layer_array_from_objects_in_edit_mode(struct ViewLayer *view_layer,
+                                                               const struct View3D *v3d,
+                                                               uint *r_len);
+struct Base **BKE_view_layer_array_from_bases_in_edit_mode(struct ViewLayer *view_layer,
+                                                           const struct View3D *v3d,
+                                                           uint *r_len);
+struct Object **BKE_view_layer_array_from_objects_in_edit_mode_unique_data(
+    struct ViewLayer *view_layer, const struct View3D *v3d, uint *r_len);
+
+struct Base **BKE_view_layer_array_from_bases_in_edit_mode_unique_data(
+    struct ViewLayer *view_layer, const struct View3D *v3d, uint *r_len);
+struct Object **BKE_view_layer_array_from_objects_in_edit_mode_unique_data_with_uvs(
+    struct ViewLayer *view_layer, const struct View3D *v3d, uint *r_len);
+struct Object **BKE_view_layer_array_from_objects_in_mode_unique_data(struct ViewLayer *view_layer,
+                                                                      const struct View3D *v3d,
+                                                                      uint *r_len,
+                                                                      eObjectMode mode);
 
 struct ViewLayerAOV *BKE_view_layer_add_aov(struct ViewLayer *view_layer);
 void BKE_view_layer_remove_aov(struct ViewLayer *view_layer, struct ViewLayerAOV *aov);
diff --git a/source/blender/blenkernel/intern/layer_utils.c b/source/blender/blenkernel/intern/layer_utils.c
index 0903c2a2cac..13e0a0bcf84 100644
--- a/source/blender/blenkernel/intern/layer_utils.c
+++ b/source/blender/blenkernel/intern/layer_utils.c
@@ -149,6 +149,65 @@ Object **BKE_view_layer_array_from_objects_in_mode_params(ViewLayer *view_layer,
   return (Object **)base_array;
 }
 
+struct Object **BKE_view_layer_array_from_objects_in_edit_mode(ViewLayer *view_layer,
+                                                               const View3D *v3d,
+                                                               uint *r_len)
+{
+  struct ObjectsInModeParams params = {0};
+  params.object_mode = OB_MODE_EDIT;
+  return BKE_view_layer_array_from_objects_in_mode_params(view_layer, v3d, r_len, &params);
+}
+
+struct Base **BKE_view_layer_array_from_bases_in_edit_mode(ViewLayer *view_layer,
+                                                           const View3D *v3d,
+                                                           uint *r_len)
+{
+  struct ObjectsInModeParams params = {0};
+  params.object_mode = OB_MODE_EDIT;
+  return BKE_view_layer_array_from_bases_in_mode_params(view_layer, v3d, r_len, &params);
+}
+
+struct Object **BKE_view_layer_array_from_objects_in_edit_mode_unique_data(ViewLayer *view_layer,
+                                                                           const View3D *v3d,
+                                                                           uint *r_len)
+{
+  struct ObjectsInModeParams params = {0};
+  params.object_mode = OB_MODE_EDIT;
+  params.no_dup_data = true;
+  return BKE_view_layer_array_from_objects_in_mode_params(view_layer, v3d, r_len, &params);
+}
+
+struct Base **BKE_view_layer_array_from_bases_in_edit_mode_unique_data(ViewLayer *view_layer,
+                                                                       const View3D *v3d,
+                                                                       uint *r_len)
+{
+  struct ObjectsInModeParams params = {0};
+  params.object_mode = OB_MODE_EDIT;
+  params.no_dup_data = true;
+  return BKE_view_layer_array_from_bases_in_mode_params(view_layer, v3d, r_len, &params);
+}
+
+struct Object **BKE_view_layer_array_from_objects_in_edit_mode_unique_data_with_uvs(
+    ViewLayer *view_layer, const View3D *v3d, uint *r_len)
+{
+  struct ObjectsInModeParams params = {0};
+  params.object_mode = OB_MODE_EDIT;
+  params.no_dup_data = true;
+  params.filter_fn = BKE_view_layer_filter_edit_mesh_has_uvs;
+  return BKE_view_layer_array_from_objects_in_mode_params(view_layer, v3d, r_len, &params);
+}
+
+struct Object **BKE_view_layer_array_from_objects_in_mode_unique_data(ViewLayer *view_layer,
+                                                                      const View3D *v3d,
+                                                                      uint *r_len,
+                                                                      const eObjectMode mode)
+{
+  struct ObjectsInModeParams params = {0};
+  params.object_mode = mode;
+  params.no_dup_data = true;
+  return BKE_view_layer_array_from_objects_in_mode_params(view_layer, v3d, r_len, &params);
+}
+
 /** \} */
 
 /* -------------------------------------------------------------------- */
diff --git a/source/blender/editors/armature/armature_select.c b/source/blender/editors/armature/armature_select.c
index ae15bc39ec8..479a2245b30 100644
--- a/source/blender/editors/armature/armature_select.c
+++ b/source/blender/editors/armature/armature_select.c
@@ -339,12 +339,7 @@ static void *ed_armature_pick_bone_impl(
     Base **bases;
 
     if (vc.obedit != NULL) {
-      bases = BKE_view_layer_array_from_bases_in_mode(vc.view_layer,
-                                                      vc.v3d,
-                                                      &bases_len,
-                                                      {
-                                                          .object_mode = OB_MODE_EDIT,
-                                                      });
+      bases = BKE_view_layer_array_from_bases_in_edit_mode(vc.view_layer, vc.v3d, &bases_len);
     }
     else {
       bases = BKE_object_pose_base_array_get(vc.view_layer, vc.v3d, &bases_len);
diff --git a/source/blender/editors/object/object_edit.c b/source/blender/editors/object/object_edit.c
index 4896ddb5258..f36181ad96d 100644
--- a/source/blender/editors/object/object_edit.c
+++ b/source/blender/editors/object/object_edit.c
@@ -194,13 +194,13 @@ Object **ED_object_array_in_mode_or_selected(bContext *C,
     /* When in a mode that supports multiple active objects, use "objects in mode"
      * instead of the object's selection. */
     if (use_objects_in_mode) {
-      objects = BKE_view_layer_array_from_objects_in_mode(view_layer,
-                                                          v3d,
-                                                          r_objects_len,
-                                                          {.object_mode = ob_active->mode,
-                                                           .no_dup_data = true,
-                                                           .filter_fn = filter_fn,
-                                                           .filter_userdata = filter_user_data});
+      struct ObjectsInModeParams params = {0};
+      params.object_mode = ob_active->mode;
+      params.no_dup_data = true;
+      params.filter_fn = filter_fn;
+      params.filter_userdata = filter_user_data;
+      objects = BKE_view_layer_array_from_objects_in_mode_params(
+          view_layer, v3d, r_objects_len, &params);
     }
     else {
       objects = BKE_view_layer_array_selected_objects(
diff --git a/source/blender/editors/transform/transform_convert.c b/source/blender/editors/transform/transform_convert.c
index d1c2af75274..0815e9b3f62 100644
--- a/source/blender/editors/transform/transform_convert.c
+++ b/source/blender/editors/transform/transform_convert.c
@@ -940,15 +940,12 @@ static void init_TransDataContainers(TransInf

@@ Diff output truncated at 10240 characters. @@



More information about the Bf-blender-cvs mailing list