[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