[Bf-blender-cvs] [dd8be48466b] temp-geometry-nodes-fields-prototype: cleanup after merge
Jacques Lucke
noreply at git.blender.org
Mon Aug 2 13:07:44 CEST 2021
Commit: dd8be48466bd0ecd359b8f5ef9eab17f84a6ef7c
Author: Jacques Lucke
Date: Mon Aug 2 13:07:31 2021 +0200
Branches: temp-geometry-nodes-fields-prototype
https://developer.blender.org/rBdd8be48466bd0ecd359b8f5ef9eab17f84a6ef7c
cleanup after merge
===================================================================
M source/blender/blenkernel/BKE_field.hh
M source/blender/functions/FN_cpp_type.hh
M source/blender/functions/FN_cpp_type_make.hh
===================================================================
diff --git a/source/blender/blenkernel/BKE_field.hh b/source/blender/blenkernel/BKE_field.hh
index 065bc50f13d..6ba166b111c 100644
--- a/source/blender/blenkernel/BKE_field.hh
+++ b/source/blender/blenkernel/BKE_field.hh
@@ -476,19 +476,27 @@ template<typename T> class FieldRef : public FieldRefBase {
}
};
+template<typename T> struct FieldRefCPPTypeParam {
+};
+
class FieldRefCPPType : public CPPType {
private:
+ const CPPType &field_type_;
FieldPtr (*get_field_)(const void *field_ref);
void (*construct_)(void *dst, FieldPtr field);
- const CPPType &field_type_;
public:
- FieldRefCPPType(fn::CPPTypeMembers members,
- FieldPtr (*get_field)(const void *field_ref),
- void (*construct)(void *dst, FieldPtr field),
- const CPPType &field_type)
- : CPPType(members), get_field_(get_field), construct_(construct), field_type_(field_type)
+ template<typename T>
+ FieldRefCPPType(FieldRefCPPTypeParam<FieldRef<T>> /* unused */, StringRef debug_name)
+ : CPPType(fn::CPPTypeParam<FieldRef<T>, CPPTypeFlags::BasicType>(), debug_name),
+ field_type_(CPPType::get<T>())
{
+ get_field_ = [](const void *field_ref) {
+ return ((const blender::bke::FieldRef<T> *)field_ref)->field();
+ };
+ construct_ = [](void *dst, blender::bke::FieldPtr field) {
+ new (dst) blender::bke::FieldRef<T>(std::move(field));
+ };
}
const CPPType &field_type() const
@@ -515,14 +523,7 @@ class FieldRefCPPType : public CPPType {
blender::fn::CPPType::get_impl<blender::bke::FieldRef<FIELD_TYPE>>() \
{ \
static blender::bke::FieldRefCPPType cpp_type{ \
- blender::fn::create_cpp_type_members<blender::bke::FieldRef<FIELD_TYPE>, \
- CPPTypeFlags::BasicType>(#DEBUG_NAME), \
- [](const void *field_ref) { \
- return ((const blender::bke::FieldRef<FIELD_TYPE> *)field_ref)->field(); \
- }, \
- [](void *dst, blender::bke::FieldPtr field) { \
- new (dst) blender::bke::FieldRef<FIELD_TYPE>(std::move(field)); \
- }, \
- blender::fn::CPPType::get<FIELD_TYPE>()}; \
+ blender::bke::FieldRefCPPTypeParam<blender::bke::FieldRef<FIELD_TYPE>>(), \
+ STRINGIFY(DEBUG_NAME)}; \
return cpp_type; \
}
diff --git a/source/blender/functions/FN_cpp_type.hh b/source/blender/functions/FN_cpp_type.hh
index 3bc2d1b884f..7277bf99c12 100644
--- a/source/blender/functions/FN_cpp_type.hh
+++ b/source/blender/functions/FN_cpp_type.hh
@@ -138,8 +138,6 @@ class CPPType : NonCopyable, NonMovable {
template<typename T, CPPTypeFlags Flags> CPPType(CPPTypeParam<T, Flags>, StringRef debug_name);
virtual ~CPPType() = default;
- virtual ~CPPType() = default;
-
/**
* Two types only compare equal when their pointer is equal. No two instances of CPPType for the
* same C++ type should be created.
diff --git a/source/blender/functions/FN_cpp_type_make.hh b/source/blender/functions/FN_cpp_type_make.hh
index 06c0fa3c1d9..088f6b469f4 100644
--- a/source/blender/functions/FN_cpp_type_make.hh
+++ b/source/blender/functions/FN_cpp_type_make.hh
@@ -253,15 +253,6 @@ CPPType::CPPType(CPPTypeParam<T, Flags> /* unused */, StringRef debug_name)
move_construct_ && move_assign_ && destruct_);
}
-class StandardCPPType : public CPPType {
- public:
- template<typename T, CPPTypeFlags flags>
- StandardCPPType(std::string debug_name)
- : CPPType(create_cpp_type_members<T, flags>(std::move(debug_name)))
- {
- }
-};
-
} // namespace blender::fn
#define MAKE_CPP_TYPE(IDENTIFIER, TYPE_NAME, FLAGS) \
More information about the Bf-blender-cvs
mailing list