[Bf-blender-cvs] [3901ae2cb76] functions: init defaults in tuple
Jacques Lucke
noreply at git.blender.org
Mon Feb 25 10:30:54 CET 2019
Commit: 3901ae2cb76429dbef1563e5fb4d0c6308b66d60
Author: Jacques Lucke
Date: Fri Feb 22 15:42:32 2019 +0100
Branches: functions
https://developer.blender.org/rB3901ae2cb76429dbef1563e5fb4d0c6308b66d60
init defaults in tuple
===================================================================
M source/blender/blenkernel/intern/fcurve.c
M source/blender/functions/core/cpu.cpp
M source/blender/functions/core/cpu.hpp
===================================================================
diff --git a/source/blender/blenkernel/intern/fcurve.c b/source/blender/blenkernel/intern/fcurve.c
index d7ed30bf06b..bbdebf22c04 100644
--- a/source/blender/blenkernel/intern/fcurve.c
+++ b/source/blender/blenkernel/intern/fcurve.c
@@ -1623,7 +1623,7 @@ static float dvar_eval_function(ChannelDriver *UNUSED(driver), DriverVar *dvar)
FnTuple fn_in = FN_tuple_for_input(fn);
FnTuple fn_out = FN_tuple_for_output(fn);
- FN_tuple_set_int32(fn_in, 0, (int32_t)dvar);
+ FN_tuple_set_int32(fn_in, 0, (int64_t)dvar);
FnTupleCallBody callable = FN_function_get_callable(fn);
FN_function_call(callable, fn_in, fn_out);
diff --git a/source/blender/functions/core/cpu.cpp b/source/blender/functions/core/cpu.cpp
index 04b783cfcd6..6d670060662 100644
--- a/source/blender/functions/core/cpu.cpp
+++ b/source/blender/functions/core/cpu.cpp
@@ -13,6 +13,11 @@ namespace FN {
delete v;
}
+ void TupleCallBody::init_defaults(Tuple &fn_in) const
+ {
+ fn_in.init_default_all();
+ }
+
const char *CPPTypeInfo::identifier_in_composition()
{
diff --git a/source/blender/functions/core/cpu.hpp b/source/blender/functions/core/cpu.hpp
index 1c45ae638ba..ff9b283067e 100644
--- a/source/blender/functions/core/cpu.hpp
+++ b/source/blender/functions/core/cpu.hpp
@@ -18,6 +18,7 @@ namespace FN {
virtual void call(const Tuple &fn_in, Tuple &fn_out) const = 0;
virtual void dependencies(Dependencies &UNUSED(deps)) const {}
+ virtual void init_defaults(Tuple &fn_in) const;
};
class CPPTypeInfo {
@@ -28,6 +29,7 @@ namespace FN {
virtual ~CPPTypeInfo() {};
virtual uint size_of_type() const = 0;
+ virtual void construct_default(void *ptr) const = 0;
virtual void destruct_type(void *ptr) const = 0;
virtual void copy_to_initialized(void *src, void *dst) const = 0;
virtual void copy_to_uninitialized(void *src, void *dst) const = 0;
@@ -41,6 +43,11 @@ namespace FN {
return sizeof(T);
}
+ virtual void construct_default(void *ptr) const override
+ {
+ new(ptr) T();
+ }
+
virtual void destruct_type(void *ptr) const override
{
T *ptr_ = (T *)ptr;
@@ -138,6 +145,19 @@ namespace FN {
from.element_ptr(from_index), to.element_ptr(to_index));
}
+ inline void init_default(uint index) const
+ {
+ m_type_info[index]->construct_default(this->element_ptr(index));
+ m_initialized[index] = true;
+ }
+
+ inline void init_default_all() const
+ {
+ for (uint i = 0; i < m_types.size(); i++) {
+ this->init_default(i);
+ }
+ }
+
private:
inline uint element_size(uint index) const
{
More information about the Bf-blender-cvs
mailing list