[Bf-blender-cvs] [992d51bbcfe] master: Cleanup: Simplify zero-initializing DNA structures in C++

Sergey Sharybin noreply at git.blender.org
Mon Apr 4 11:47:31 CEST 2022


Commit: 992d51bbcfef73bc577e3161739b1b16540dad00
Author: Sergey Sharybin
Date:   Thu Mar 31 10:06:33 2022 +0200
Branches: master
https://developer.blender.org/rB992d51bbcfef73bc577e3161739b1b16540dad00

Cleanup: Simplify zero-initializing DNA structures in C++

Avoids duplication of type which previously was specified twice in a line.

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

M	source/blender/blenkernel/intern/mesh_convert.cc
M	source/blender/blenkernel/intern/object.cc
M	source/blender/makesdna/DNA_defs.h

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

diff --git a/source/blender/blenkernel/intern/mesh_convert.cc b/source/blender/blenkernel/intern/mesh_convert.cc
index bf9525d5c90..6abaa471877 100644
--- a/source/blender/blenkernel/intern/mesh_convert.cc
+++ b/source/blender/blenkernel/intern/mesh_convert.cc
@@ -910,7 +910,7 @@ static void curve_to_mesh_eval_ensure(Object &object)
    *
    * So we create temporary copy of the object which will use same data as the original bevel, but
    * will have no modifiers. */
-  Object bevel_object = blender::dna::shallow_zero_initialize<Object>();
+  Object bevel_object = blender::dna::shallow_zero_initialize();
   if (curve.bevobj != nullptr) {
     bevel_object = blender::dna::shallow_copy(*curve.bevobj);
     BLI_listbase_clear(&bevel_object.modifiers);
@@ -919,7 +919,7 @@ static void curve_to_mesh_eval_ensure(Object &object)
   }
 
   /* Same thing for taper. */
-  Object taper_object = blender::dna::shallow_zero_initialize<Object>();
+  Object taper_object = blender::dna::shallow_zero_initialize();
   if (curve.taperobj != nullptr) {
     taper_object = blender::dna::shallow_copy(*curve.taperobj);
     BLI_listbase_clear(&taper_object.modifiers);
diff --git a/source/blender/blenkernel/intern/object.cc b/source/blender/blenkernel/intern/object.cc
index 833e6f882f1..6f1c8f09a76 100644
--- a/source/blender/blenkernel/intern/object.cc
+++ b/source/blender/blenkernel/intern/object.cc
@@ -1251,7 +1251,7 @@ IDTypeInfo IDType_ID_OB = {
 
 void BKE_object_workob_clear(Object *workob)
 {
-  *workob = blender::dna::shallow_zero_initialize<Object>();
+  *workob = blender::dna::shallow_zero_initialize();
 
   workob->scale[0] = workob->scale[1] = workob->scale[2] = 1.0f;
   workob->dscale[0] = workob->dscale[1] = workob->dscale[2] = 1.0f;
diff --git a/source/blender/makesdna/DNA_defs.h b/source/blender/makesdna/DNA_defs.h
index bbce4839506..37ccca54f0e 100644
--- a/source/blender/makesdna/DNA_defs.h
+++ b/source/blender/makesdna/DNA_defs.h
@@ -86,7 +86,7 @@ template<class T> class ShallowDataConstRef {
   const T &ref_;
 };
 
-template<class T> class ShallowZeroInitializeTag {
+class ShallowZeroInitializeTag {
 };
 
 }  // namespace blender::dna::internal
@@ -113,13 +113,11 @@ template<class T> class ShallowZeroInitializeTag {
       return *this; \
     } \
     /* Create object which memory is filled with zeros. */ \
-    class_name(const blender::dna::internal::ShallowZeroInitializeTag<class_name> /*tag*/) \
-        : class_name() \
+    class_name(const blender::dna::internal::ShallowZeroInitializeTag /*tag*/) : class_name() \
     { \
       _DNA_internal_memzero(this, sizeof(class_name)); \
     } \
-    class_name &operator=( \
-        const blender::dna::internal::ShallowZeroInitializeTag<class_name> /*tag*/) \
+    class_name &operator=(const blender::dna::internal::ShallowZeroInitializeTag /*tag*/) \
     { \
       _DNA_internal_memzero(this, sizeof(class_name)); \
       return *this; \
@@ -143,10 +141,9 @@ template<class T>
 
 /* DNA object initializer which leads to an object which underlying memory is filled with zeroes.
  */
-template<class T>
-[[nodiscard]] inline internal::ShallowZeroInitializeTag<T> shallow_zero_initialize()
+[[nodiscard]] inline internal::ShallowZeroInitializeTag shallow_zero_initialize()
 {
-  return internal::ShallowZeroInitializeTag<T>();
+  return internal::ShallowZeroInitializeTag();
 }
 
 }  // namespace blender::dna



More information about the Bf-blender-cvs mailing list