Commit: dcd4e2f76720f97b083c0451da075b2408da7128
Author: Jacques Lucke
Date:   Fri Mar 8 14:06:16 2019 +0100
Branches: functions
https://developer.blender.org/rBdcd4e2f76720f97b083c0451da075b2408da7128

more specific tuple access functions

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

M       source/blender/functions/backends/tuple_call/tuple.hpp

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

diff --git a/source/blender/functions/backends/tuple_call/tuple.hpp 
b/source/blender/functions/backends/tuple_call/tuple.hpp
index 98df36ffb43..28f17191b4b 100644
--- a/source/blender/functions/backends/tuple_call/tuple.hpp
+++ b/source/blender/functions/backends/tuple_call/tuple.hpp
@@ -98,7 +98,7 @@ namespace FN {
                }
 
                template<typename T>
-               inline void set(uint index, const T &value)
+               inline void copy_in(uint index, const T &value)
                {
                        BLI_assert(index < m_meta->element_amount());
                        BLI_assert(sizeof(T) == m_meta->element_size(index));
@@ -121,7 +121,15 @@ namespace FN {
                }
 
                template<typename T>
-               inline const T &get(uint index) const
+               inline void set(uint index, const T &value)
+               {
+                       static_assert(std::is_trivial<T>::value,
+                               "this method can be used with trivial types 
only");
+                       this->copy_in<T>(index, value);
+               }
+
+               template<typename T>
+               inline T copy_out(uint index) const
                {
                        BLI_assert(index < m_meta->element_amount());
                        BLI_assert(sizeof(T) == m_meta->element_size(index));
@@ -130,6 +138,14 @@ namespace FN {
                        return *(T *)this->element_ptr(index);
                }
 
+               template<typename T>
+               inline T get(uint index) const
+               {
+                       static_assert(std::is_trivial<T>::value,
+                               "this method can be used with trivial types 
only");
+                       return this->copy_out<T>(index);
+               }
+
                static inline void copy_element(
                        const Tuple &from, uint from_index,
                        Tuple &to, uint to_index)

_______________________________________________
Bf-blender-cvs mailing list
[email protected]
https://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to