[Bf-blender-cvs] [25c1f9cd089] temp-cpp-type-cleanup: reduce duplication in CPPType
Jacques Lucke
noreply at git.blender.org
Sun Jun 27 17:07:04 CEST 2021
Commit: 25c1f9cd08925565ed4441252570959da6c59542
Author: Jacques Lucke
Date: Sun Jun 27 14:01:38 2021 +0200
Branches: temp-cpp-type-cleanup
https://developer.blender.org/rB25c1f9cd08925565ed4441252570959da6c59542
reduce duplication in CPPType
===================================================================
M source/blender/functions/FN_cpp_type.hh
M source/blender/functions/FN_cpp_type_make.hh
M source/blender/functions/intern/multi_function_network_optimization.cc
===================================================================
diff --git a/source/blender/functions/FN_cpp_type.hh b/source/blender/functions/FN_cpp_type.hh
index 14eab2704e9..0c1d349bb4f 100644
--- a/source/blender/functions/FN_cpp_type.hh
+++ b/source/blender/functions/FN_cpp_type.hh
@@ -73,177 +73,67 @@
namespace blender::fn {
-class CPPType : NonCopyable, NonMovable {
- public:
- using ConstructDefaultF = void (*)(void *ptr);
- using ConstructDefaultNF = void (*)(void *ptr, int64_t n);
- using ConstructDefaultIndicesF = void (*)(void *ptr, IndexMask mask);
-
- using DestructF = void (*)(void *ptr);
- using DestructNF = void (*)(void *ptr, int64_t n);
- using DestructIndicesF = void (*)(void *ptr, IndexMask mask);
-
- using CopyToInitializedF = void (*)(const void *src, void *dst);
- using CopyToInitializedNF = void (*)(const void *src, void *dst, int64_t n);
- using CopyToInitializedIndicesF = void (*)(const void *src, void *dst, IndexMask mask);
-
- using CopyToUninitializedF = void (*)(const void *src, void *dst);
- using CopyToUninitializedNF = void (*)(const void *src, void *dst, int64_t n);
- using CopyToUninitializedIndicesF = void (*)(const void *src, void *dst, IndexMask mask);
-
- using MoveToInitializedF = void (*)(void *src, void *dst);
- using MoveToInitializedNF = void (*)(void *src, void *dst, int64_t n);
- using MoveToInitializedIndicesF = void (*)(void *src, void *dst, IndexMask mask);
-
- using MoveToUninitializedF = void (*)(void *src, void *dst);
- using MoveToUninitializedNF = void (*)(void *src, void *dst, int64_t n);
- using MoveToUninitializedIndicesF = void (*)(void *src, void *dst, IndexMask mask);
+struct CPPTypeMembers {
+ int64_t size = 0;
+ int64_t alignment = 0;
+ uintptr_t alignment_mask = 0;
+ bool is_trivially_destructible = 0;
- using RelocateToInitializedF = void (*)(void *src, void *dst);
- using RelocateToInitializedNF = void (*)(void *src, void *dst, int64_t n);
- using RelocateToInitializedIndicesF = void (*)(void *src, void *dst, IndexMask mask);
-
- using RelocateToUninitializedF = void (*)(void *src, void *dst);
- using RelocateToUninitializedNF = void (*)(void *src, void *dst, int64_t n);
- using RelocateToUninitializedIndicesF = void (*)(void *src, void *dst, IndexMask mask);
-
- using FillInitializedF = void (*)(const void *value, void *dst, int64_t n);
- using FillInitializedIndicesF = void (*)(const void *value, void *dst, IndexMask mask);
-
- using FillUninitializedF = void (*)(const void *value, void *dst, int64_t n);
- using FillUninitializedIndicesF = void (*)(const void *value, void *dst, IndexMask mask);
-
- using DebugPrintF = void (*)(const void *value, std::stringstream &ss);
- using IsEqualF = bool (*)(const void *a, const void *b);
- using HashF = uint64_t (*)(const void *value);
-
- private:
- int64_t size_;
- int64_t alignment_;
- uintptr_t alignment_mask_;
- bool is_trivially_destructible_;
+ void (*construct_default)(void *ptr) = nullptr;
+ void (*construct_default_n)(void *ptr, int64_t n) = nullptr;
+ void (*construct_default_indices)(void *ptr, IndexMask mask) = nullptr;
- ConstructDefaultF construct_default_;
- ConstructDefaultNF construct_default_n_;
- ConstructDefaultIndicesF construct_default_indices_;
+ void (*destruct)(void *ptr) = nullptr;
+ void (*destruct_n)(void *ptr, int64_t n) = nullptr;
+ void (*destruct_indices)(void *ptr, IndexMask mask) = nullptr;
- DestructF destruct_;
- DestructNF destruct_n_;
- DestructIndicesF destruct_indices_;
+ void (*copy_to_initialized)(const void *src, void *dst) = nullptr;
+ void (*copy_to_initialized_n)(const void *src, void *dst, int64_t n) = nullptr;
+ void (*copy_to_initialized_indices)(const void *src, void *dst, IndexMask mask) = nullptr;
- CopyToInitializedF copy_to_initialized_;
- CopyToInitializedNF copy_to_initialized_n_;
- CopyToInitializedIndicesF copy_to_initialized_indices_;
+ void (*copy_to_uninitialized)(const void *src, void *dst) = nullptr;
+ void (*copy_to_uninitialized_n)(const void *src, void *dst, int64_t n) = nullptr;
+ void (*copy_to_uninitialized_indices)(const void *src, void *dst, IndexMask mask) = nullptr;
- CopyToUninitializedF copy_to_uninitialized_;
- CopyToUninitializedNF copy_to_uninitialized_n_;
- CopyToUninitializedIndicesF copy_to_uninitialized_indices_;
+ void (*move_to_initialized)(void *src, void *dst) = nullptr;
+ void (*move_to_initialized_n)(void *src, void *dst, int64_t n) = nullptr;
+ void (*move_to_initialized_indices)(void *src, void *dst, IndexMask mask) = nullptr;
- MoveToInitializedF move_to_initialized_;
- MoveToInitializedNF move_to_initialized_n_;
- MoveToInitializedIndicesF move_to_initialized_indices_;
+ void (*move_to_uninitialized)(void *src, void *dst) = nullptr;
+ void (*move_to_uninitialized_n)(void *src, void *dst, int64_t n) = nullptr;
+ void (*move_to_uninitialized_indices)(void *src, void *dst, IndexMask mask) = nullptr;
- MoveToUninitializedF move_to_uninitialized_;
- MoveToUninitializedNF move_to_uninitialized_n_;
- MoveToUninitializedIndicesF move_to_uninitialized_indices_;
+ void (*relocate_to_initialized)(void *src, void *dst) = nullptr;
+ void (*relocate_to_initialized_n)(void *src, void *dst, int64_t n) = nullptr;
+ void (*relocate_to_initialized_indices)(void *src, void *dst, IndexMask mask) = nullptr;
- RelocateToInitializedF relocate_to_initialized_;
- RelocateToInitializedNF relocate_to_initialized_n_;
- RelocateToInitializedIndicesF relocate_to_initialized_indices_;
+ void (*relocate_to_uninitialized)(void *src, void *dst) = nullptr;
+ void (*relocate_to_uninitialized_n)(void *src, void *dst, int64_t n) = nullptr;
+ void (*relocate_to_uninitialized_indices)(void *src, void *dst, IndexMask mask) = nullptr;
- RelocateToUninitializedF relocate_to_uninitialized_;
- RelocateToUninitializedNF relocate_to_uninitialized_n_;
- RelocateToUninitializedIndicesF relocate_to_uninitialized_indices_;
+ void (*fill_initialized)(const void *value, void *dst, int64_t n) = nullptr;
+ void (*fill_initialized_indices)(const void *value, void *dst, IndexMask mask) = nullptr;
- FillInitializedF fill_initialized_;
- FillInitializedIndicesF fill_initialized_indices_;
+ void (*fill_uninitialized)(const void *value, void *dst, int64_t n) = nullptr;
+ void (*fill_uninitialized_indices)(const void *value, void *dst, IndexMask mask) = nullptr;
- FillUninitializedF fill_uninitialized_;
- FillUninitializedIndicesF fill_uninitialized_indices_;
+ void (*debug_print)(const void *value, std::stringstream &ss) = nullptr;
+ bool (*is_equal)(const void *a, const void *b) = nullptr;
+ uint64_t (*hash)(const void *value) = nullptr;
- DebugPrintF debug_print_;
- IsEqualF is_equal_;
- HashF hash_;
+ const void *default_value = nullptr;
+ std::string name;
+};
- const void *default_value_;
- std::string name_;
+class CPPType : NonCopyable, NonMovable {
+ private:
+ CPPTypeMembers m_;
public:
- CPPType(std::string name,
- int64_t size,
- int64_t alignment,
- bool is_trivially_destructible,
- ConstructDefaultF construct_default,
- ConstructDefaultNF construct_default_n,
- ConstructDefaultIndicesF construct_default_indices,
- DestructF destruct,
- DestructNF destruct_n,
- DestructIndicesF destruct_indices,
- CopyToInitializedF copy_to_initialized,
- CopyToInitializedNF copy_to_initialized_n,
- CopyToInitializedIndicesF copy_to_initialized_indices,
- CopyToUninitializedF copy_to_uninitialized,
- CopyToUninitializedNF copy_to_uninitialized_n,
- CopyToUninitializedIndicesF copy_to_uninitialized_indices,
- MoveToInitializedF move_to_initialized,
- MoveToInitializedNF move_to_initialized_n,
- MoveToInitializedIndicesF move_to_initialized_indices,
- MoveToUninitializedF move_to_uninitialized,
- MoveToUninitializedNF move_to_uninitialized_n,
- MoveToUninitializedIndicesF move_to_uninitialized_indices,
- RelocateToInitializedF relocate_to_initialized,
- RelocateToInitializedNF relocate_to_initialized_n,
- RelocateToInitializedIndicesF relocate_to_initialized_indices,
- RelocateToUninitializedF relocate_to_uninitialized,
- RelocateToUninitializedNF relocate_to_uninitialized_n,
- RelocateToUninitializedIndicesF relocate_to_uninitialized_indices,
- FillInitializedF fill_initialized,
- FillInitializedIndicesF fill_initialized_indices,
- FillUninitializedF fill_uninitialized,
- FillUninitializedIndicesF fill_uninitialized_indices,
- DebugPrintF debug_print,
- IsEqualF is_equal,
- HashF hash,
- const void *default_value)
- : size_(size),
- alignment_(alignment),
- is_trivially_destructible_(is_trivially_destructible),
- construct_default_(construct_default),
- construct_default_n_(construct_default_n),
- construct_default_indices_(construct_default_indices),
- destruct_(destruct),
- destruct_n_(destruct_n),
- destruct_indices_(destruct_indices),
- copy_to_initialized_(copy_to_initialized),
- copy_to_initialized_n_(copy_to_initialized_n),
- copy_to_initialized_indices_(copy_to_initialized_indices),
- copy_to_uninitialized_(copy_to_uninitialized),
- copy_to_uninitialized_n_(copy_to_uninitialized_n),
- copy_to_uninitialized_indices_(copy_to_uninitialized_indices),
- move_to_initialized_(move_to_initialized),
- move_to_initialized_n_(move_to_initialized_n),
- move_to_initialized_indices_(move_to_initialized_indices),
- move_to_uninitialized_(move_to_uninitialized),
- move_to_uninitialized_n_(move_to_uninitialized_n),
- move_to_uninitialized_indices_(move_to_uninitialized_indices),
- relocate_to_initialized_(relocate_to_initialized),
- relocate_to_initialized_n_(relocate_to_initialized_n),
- relocate_to_initialized_indices_(relocate_to_initialized_indices),
- relocate_to_uninitialized_(relocate_to_uninitialized),
- relocate_to_uninitialized_n_(relocate_to_uniniti
@@ Diff output truncated at 10240 characters. @@
More information about the Bf-blender-cvs
mailing list