[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