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
path: root/source
diff options
context:
space:
mode:
authorSergey Sharybin <sergey@blender.org>2022-03-25 12:57:13 +0300
committerSergey Sharybin <sergey@blender.org>2022-03-25 12:57:13 +0300
commit484af996aa75750c8b419a25b68c9eb8d7efcf19 (patch)
tree4e82ec9dead85650ddfae3718a369ea8cd9d54c0 /source
parent8c44793228750537c08ea7b19fc18df0138f9501 (diff)
Revert "Implement C++ methods for DNA structures"
This reverts commit 8c44793228750537c08ea7b19fc18df0138f9501. Apparently, this generated a lot of warnings in GCC. Didn't find a quick solution and is it not something I want to be trading between (more quiet Clang in an expense of less quiet GCC). Will re-iterate on the patch are re-commit it.
Diffstat (limited to 'source')
-rw-r--r--source/blender/blenkernel/intern/mesh_convert.cc6
-rw-r--r--source/blender/blenkernel/intern/object.cc2
-rw-r--r--source/blender/depsgraph/intern/depsgraph_query_iter.cc2
-rw-r--r--source/blender/editors/object/object_transform.cc4
-rw-r--r--source/blender/io/wavefront_obj/exporter/obj_export_mesh.cc2
-rw-r--r--source/blender/makesdna/DNA_defs.h81
-rw-r--r--source/blender/makesdna/DNA_object_types.h2
-rw-r--r--source/blender/makesdna/intern/dna_utils.c12
-rw-r--r--source/blender/makesdna/intern/makesdna.c12
9 files changed, 7 insertions, 116 deletions
diff --git a/source/blender/blenkernel/intern/mesh_convert.cc b/source/blender/blenkernel/intern/mesh_convert.cc
index 1be2d06ce61..40c6fbcf67e 100644
--- a/source/blender/blenkernel/intern/mesh_convert.cc
+++ b/source/blender/blenkernel/intern/mesh_convert.cc
@@ -910,8 +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;
- memset(&bevel_object, 0, sizeof(bevel_object));
+ Object bevel_object = {{nullptr}};
if (curve.bevobj != nullptr) {
memcpy(&bevel_object, curve.bevobj, sizeof(bevel_object));
BLI_listbase_clear(&bevel_object.modifiers);
@@ -920,8 +919,7 @@ static void curve_to_mesh_eval_ensure(Object &object)
}
/* Same thing for taper. */
- Object taper_object;
- memset(&taper_object, 0, sizeof(taper_object));
+ Object taper_object = {{nullptr}};
if (curve.taperobj != nullptr) {
memcpy(&taper_object, curve.taperobj, sizeof(taper_object));
BLI_listbase_clear(&taper_object.modifiers);
diff --git a/source/blender/blenkernel/intern/object.cc b/source/blender/blenkernel/intern/object.cc
index 6d1eac5af49..1e3b5d77fa7 100644
--- a/source/blender/blenkernel/intern/object.cc
+++ b/source/blender/blenkernel/intern/object.cc
@@ -3946,7 +3946,7 @@ bool BKE_object_minmax_dupli(Depsgraph *depsgraph,
/* pass */
}
else {
- Object temp_ob = blender::dna::shallow_copy(*dob->ob);
+ Object temp_ob = *dob->ob;
/* Do not modify the original boundbox. */
temp_ob.runtime.bb = nullptr;
BKE_object_replace_data_on_shallow_copy(&temp_ob, dob->ob_data);
diff --git a/source/blender/depsgraph/intern/depsgraph_query_iter.cc b/source/blender/depsgraph/intern/depsgraph_query_iter.cc
index d5566e4be98..5788e8efa07 100644
--- a/source/blender/depsgraph/intern/depsgraph_query_iter.cc
+++ b/source/blender/depsgraph/intern/depsgraph_query_iter.cc
@@ -167,7 +167,7 @@ bool deg_iterator_duplis_step(DEGObjectIterData *data)
/* Temporary object to evaluate. */
Object *dupli_parent = data->dupli_parent;
Object *temp_dupli_object = &data->temp_dupli_object;
- *temp_dupli_object = blender::dna::shallow_copy(*dob->ob);
+ *temp_dupli_object = *dob->ob;
temp_dupli_object->base_flag = dupli_parent->base_flag | BASE_FROM_DUPLI;
temp_dupli_object->base_local_view_bits = dupli_parent->base_local_view_bits;
temp_dupli_object->runtime.local_collections_bits =
diff --git a/source/blender/editors/object/object_transform.cc b/source/blender/editors/object/object_transform.cc
index afd2c048379..24425b5a991 100644
--- a/source/blender/editors/object/object_transform.cc
+++ b/source/blender/editors/object/object_transform.cc
@@ -1695,13 +1695,13 @@ static void object_apply_rotation(Object *ob, const float rmat[3][3])
static void object_apply_location(Object *ob, const float loc[3])
{
/* quick but weak */
- Object ob_prev = blender::dna::shallow_copy(*ob);
+ Object ob_prev = *ob;
float mat[4][4];
copy_m4_m4(mat, ob->obmat);
copy_v3_v3(mat[3], loc);
BKE_object_apply_mat4(ob, mat, true, true);
copy_v3_v3(mat[3], ob->loc);
- *ob = blender::dna::shallow_copy(ob_prev);
+ *ob = ob_prev;
copy_v3_v3(ob->loc, mat[3]);
}
diff --git a/source/blender/io/wavefront_obj/exporter/obj_export_mesh.cc b/source/blender/io/wavefront_obj/exporter/obj_export_mesh.cc
index 8c9b04a5ac3..aa63e65b1e8 100644
--- a/source/blender/io/wavefront_obj/exporter/obj_export_mesh.cc
+++ b/source/blender/io/wavefront_obj/exporter/obj_export_mesh.cc
@@ -33,7 +33,7 @@ OBJMesh::OBJMesh(Depsgraph *depsgraph, const OBJExportParams &export_params, Obj
{
/* We need to copy the object because it may be in temporary space. */
Object *obj_eval = DEG_get_evaluated_object(depsgraph, mesh_object);
- export_object_eval_ = dna::shallow_copy(*obj_eval);
+ export_object_eval_ = *obj_eval;
export_mesh_eval_ = export_params.apply_modifiers ?
BKE_object_get_evaluated_mesh(&export_object_eval_) :
BKE_object_get_pre_modified_mesh(&export_object_eval_);
diff --git a/source/blender/makesdna/DNA_defs.h b/source/blender/makesdna/DNA_defs.h
index 283eacf1a16..b4230209dd5 100644
--- a/source/blender/makesdna/DNA_defs.h
+++ b/source/blender/makesdna/DNA_defs.h
@@ -46,84 +46,3 @@
/* non-id name variables should use this length */
#define MAX_NAME 64
-
-/* #DNA_DEFINE_CXX_METHODS is used to define C++ methods which are needed for proper/safe resource
- * management, making unsafe (from an ownership perspective: i.e. pointers which sometimes needs to
- * be set to nullptr on copy, sometimes needs to be dupalloc-ed) operations explicit, and taking
- * care of compiler specific warnings when dealing with members marked with DNA_DEPRECATED.
- *
- * The `class_name` argument is to match the structure name the macro is used from.
- *
- * Typical usage example:
- *
- * typedef struct Object {
- * DNA_DEFINE_CXX_METHODS(Object)
- * } Object;
- */
-#ifndef __cplusplus
-# define DNA_DEFINE_CXX_METHODS(class_name)
-#else
-
-/* Forward-declared here since there is no simple header file to be pulled for this functionality.
- * Avoids pulling `string.h` from this header to get access to #memcpy. */
-extern "C" void _DNA_internal_memcpy(void *dst, const void *src, size_t size);
-
-namespace blender::dna::internal {
-
-template<class T> class ShallowDataConstRef {
- public:
- constexpr explicit ShallowDataConstRef(const T &ref) : ref_(ref)
- {
- }
-
- inline const T *get_pointer() const
- {
- return &ref_;
- }
-
- private:
- const T &ref_;
-};
-
-} // namespace blender::dna::internal
-
-# define DNA_DEFINE_CXX_METHODS(class_name) \
- class_name() = default; \
- ~class_name() = default; \
- /* Delete copy and assignment, which are not safe for resource ownership. */ \
- class_name(const class_name &other) = delete; \
- class_name(class_name &&other) noexcept = delete; \
- class_name &operator=(const class_name &other) = delete; \
- class_name &operator=(class_name &&other) = delete; \
- /* Support for shallow copy. */ \
- class_name(const blender::dna::internal::ShallowDataConstRef<class_name> ref) \
- { \
- _DNA_internal_memcpy(this, ref.get_pointer(), sizeof(class_name)); \
- } \
- class_name &operator=(const blender::dna::internal::ShallowDataConstRef<class_name> ref) \
- { \
- if (this != ref.get_pointer()) { \
- _DNA_internal_memcpy(this, ref.get_pointer(), sizeof(class_name)); \
- } \
- return *this; \
- }
-
-namespace blender::dna {
-
-/* Creates shallow copy of the given object.
- * The entire object is copied as-is using memory copy.
- *
- * Typical usage:
- * Object temp_object = blender::dna::shallow_copy(*input_object);
- *
- * From the implementation detail go via copy constructor/assign operator defined in the structure.
- */
-template<class T>
-[[nodiscard]] inline internal::ShallowDataConstRef<T> shallow_copy(const T &other)
-{
- return internal::ShallowDataConstRef(other);
-}
-
-} // namespace blender::dna
-
-#endif
diff --git a/source/blender/makesdna/DNA_object_types.h b/source/blender/makesdna/DNA_object_types.h
index c3708e25ee7..9e0bf7dcc5a 100644
--- a/source/blender/makesdna/DNA_object_types.h
+++ b/source/blender/makesdna/DNA_object_types.h
@@ -233,8 +233,6 @@ enum eObjectLineArt_Flags {
};
typedef struct Object {
- DNA_DEFINE_CXX_METHODS(Object)
-
ID id;
/** Animation data (must be immediately after id for utilities to use it). */
struct AnimData *adt;
diff --git a/source/blender/makesdna/intern/dna_utils.c b/source/blender/makesdna/intern/dna_utils.c
index 560b91b925e..8c86ef69ebd 100644
--- a/source/blender/makesdna/intern/dna_utils.c
+++ b/source/blender/makesdna/intern/dna_utils.c
@@ -308,15 +308,3 @@ const char *DNA_struct_rename_legacy_hack_alias_from_static(const char *name)
}
/** \} */
-
-/* -------------------------------------------------------------------- */
-/** \name Internal helpers for C++
- * \{ */
-
-void _DNA_internal_memcpy(void *dst, const void *src, size_t size);
-void _DNA_internal_memcpy(void *dst, const void *src, const size_t size)
-{
- memcpy(dst, src, size);
-}
-
-/** \} */
diff --git a/source/blender/makesdna/intern/makesdna.c b/source/blender/makesdna/intern/makesdna.c
index 12ec7262906..0d2f265a9b5 100644
--- a/source/blender/makesdna/intern/makesdna.c
+++ b/source/blender/makesdna/intern/makesdna.c
@@ -620,7 +620,6 @@ static int preprocess_include(char *maindata, const int maindata_len)
int newlen = 0;
comment = 0;
a = maindata_len;
- bool skip_until_closing_brace = false;
while (a--) {
if (cp[0] == '/' && cp[1] == '*') {
@@ -647,17 +646,6 @@ static int preprocess_include(char *maindata, const int maindata_len)
a -= 13;
cp += 13;
}
- else if (match_identifier(cp, "DNA_DEFINE_CXX_METHODS")) {
- /* single values are skipped already, so decrement 1 less */
- a -= 21;
- cp += 21;
- skip_until_closing_brace = true;
- }
- else if (skip_until_closing_brace) {
- if (cp[0] == ')') {
- skip_until_closing_brace = false;
- }
- }
else {
md[0] = cp[0];
md++;