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

Avoids duplication of type which previously was specified twice in a line.
This commit is contained in:
Sergey Sharybin 2022-03-31 10:06:33 +02:00
parent e5688f67aa
commit 992d51bbcf
3 changed files with 8 additions and 11 deletions

View File

@ -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);

View File

@ -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;

View File

@ -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