[Bf-blender-cvs] [617ab7847f2] functions: add more functions to CPPType

Jacques Lucke noreply at git.blender.org
Sat Dec 14 17:45:15 CET 2019


Commit: 617ab7847f249cffdb202fb2dfd380248fd4d201
Author: Jacques Lucke
Date:   Sat Dec 14 17:16:05 2019 +0100
Branches: functions
https://developer.blender.org/rB617ab7847f249cffdb202fb2dfd380248fd4d201

add more functions to CPPType

===================================================================

M	source/blender/functions/FN_cpp_type.h
M	source/blender/functions/intern/cpp_types.cc

===================================================================

diff --git a/source/blender/functions/FN_cpp_type.h b/source/blender/functions/FN_cpp_type.h
index 8a547219429..7c7c5f59abc 100644
--- a/source/blender/functions/FN_cpp_type.h
+++ b/source/blender/functions/FN_cpp_type.h
@@ -17,9 +17,11 @@ class CPPType {
   using DestructF = void (*)(void *ptr);
   using DestructNF = void (*)(void *ptr, uint n);
   using CopyToInitializedF = void (*)(const void *src, void *dst);
+  using CopyToInitializedNF = void (*)(const void *src, void *dst, uint n);
   using CopyToUninitializedF = void (*)(const void *src, void *dst);
   using CopyToUninitializedNF = void (*)(const void *src, void *dst, uint n);
   using RelocateToInitializedF = void (*)(void *src, void *dst);
+  using RelocateToInitializedNF = void (*)(void *src, void *dst, uint n);
   using RelocateToUninitializedF = void (*)(void *src, void *dst);
   using RelocateToUninitializedNF = void (*)(void *src, void *dst, uint n);
   using FillInitializedF = void (*)(const void *value, void *dst, uint n);
@@ -34,9 +36,11 @@ class CPPType {
           DestructF destruct,
           DestructNF destruct_n,
           CopyToInitializedF copy_to_initialized,
+          CopyToInitializedNF copy_to_initialized_n,
           CopyToUninitializedF copy_to_uninitialized,
           CopyToUninitializedNF copy_to_uninitialized_n,
           RelocateToInitializedF relocate_to_initialized,
+          RelocateToInitializedNF relocate_to_initialized_n,
           RelocateToUninitializedF relocate_to_uninitialized,
           RelocateToUninitializedNF relocate_to_uninitialized_n,
           FillInitializedF fill_initialized,
@@ -50,9 +54,11 @@ class CPPType {
         m_destruct(destruct),
         m_destruct_n(destruct_n),
         m_copy_to_initialized(copy_to_initialized),
+        m_copy_to_initialized_n(copy_to_initialized_n),
         m_copy_to_uninitialized(copy_to_uninitialized),
         m_copy_to_uninitialized_n(copy_to_uninitialized_n),
         m_relocate_to_initialized(relocate_to_initialized),
+        m_relocate_to_initialized_n(relocate_to_initialized_n),
         m_relocate_to_uninitialized(relocate_to_uninitialized),
         m_relocate_to_uninitialized_n(relocate_to_uninitialized_n),
         m_fill_initialized(fill_initialized),
@@ -135,6 +141,14 @@ class CPPType {
     m_copy_to_initialized(src, dst);
   }
 
+  void copy_to_initialized_n(const void *src, void *dst, uint n) const
+  {
+    BLI_assert(this->pointer_has_valid_alignment(src));
+    BLI_assert(this->pointer_has_valid_alignment(dst));
+
+    m_copy_to_initialized_n(src, dst, n);
+  }
+
   void copy_to_uninitialized(const void *src, void *dst) const
   {
     BLI_assert(this->pointer_has_valid_alignment(src));
@@ -159,6 +173,14 @@ class CPPType {
     m_relocate_to_initialized(src, dst);
   }
 
+  void relocate_to_initialized(void *src, void *dst, uint n) const
+  {
+    BLI_assert(this->pointer_has_valid_alignment(src));
+    BLI_assert(this->pointer_has_valid_alignment(dst));
+
+    m_relocate_to_initialized_n(src, dst, n);
+  }
+
   void relocate_to_uninitialized(void *src, void *dst) const
   {
     BLI_assert(this->pointer_has_valid_alignment(src));
@@ -222,9 +244,11 @@ class CPPType {
   DestructF m_destruct;
   DestructNF m_destruct_n;
   CopyToInitializedF m_copy_to_initialized;
+  CopyToInitializedNF m_copy_to_initialized_n;
   CopyToUninitializedF m_copy_to_uninitialized;
   CopyToUninitializedNF m_copy_to_uninitialized_n;
   RelocateToInitializedF m_relocate_to_initialized;
+  RelocateToInitializedNF m_relocate_to_initialized_n;
   RelocateToUninitializedF m_relocate_to_uninitialized;
   RelocateToUninitializedNF m_relocate_to_uninitialized_n;
   FillInitializedF m_fill_initialized;
diff --git a/source/blender/functions/intern/cpp_types.cc b/source/blender/functions/intern/cpp_types.cc
index 9daba16250c..62aafea7b67 100644
--- a/source/blender/functions/intern/cpp_types.cc
+++ b/source/blender/functions/intern/cpp_types.cc
@@ -39,6 +39,15 @@ template<typename T> void CopyToInitialized_CB(const void *src, void *dst)
 {
   *(T *)dst = *(T *)src;
 }
+template<typename T> void CopyToInitializedN_CB(const void *src, void *dst, uint n)
+{
+  const T *src_ = (const T *)src;
+  T *dst_ = (T *)dst;
+
+  for (uint i = 0; i < n; i++) {
+    dst_[i] = src_[i];
+  }
+}
 template<typename T> void CopyToUninitialized_CB(const void *src, void *dst)
 {
   BLI::uninitialized_copy_n((T *)src, 1, (T *)dst);
@@ -51,6 +60,10 @@ template<typename T> void RelocateToInitialized_CB(void *src, void *dst)
 {
   BLI::relocate((T *)src, (T *)dst);
 }
+template<typename T> void RelocateToInitializedN_CB(void *src, void *dst, uint n)
+{
+  BLI::relocate_n((T *)src, n, (T *)dst);
+}
 template<typename T> void RelocateToUninitialized_CB(void *src, void *dst)
 {
   BLI::uninitialized_relocate((T *)src, (T *)dst);
@@ -89,9 +102,11 @@ template<typename T> static std::unique_ptr<const CPPType> create_cpp_type(Strin
                                     Destruct_CB<T>,
                                     DestructN_CB<T>,
                                     CopyToInitialized_CB<T>,
+                                    CopyToInitializedN_CB<T>,
                                     CopyToUninitialized_CB<T>,
                                     CopyToUninitializedN_CB<T>,
                                     RelocateToInitialized_CB<T>,
+                                    RelocateToInitializedN_CB<T>,
                                     RelocateToUninitialized_CB<T>,
                                     RelocateToUninitializedN_CB<T>,
                                     FillInitialized_CB<T>,



More information about the Bf-blender-cvs mailing list