[Bf-blender-cvs] [cad83fee9ff] functions-experimental-refactor: move multi function to separate header
Jacques Lucke
noreply at git.blender.org
Tue Oct 15 15:57:06 CEST 2019
Commit: cad83fee9ffd2b47c0d9276a42c921f3b56bf233
Author: Jacques Lucke
Date: Fri Oct 11 12:25:41 2019 +0200
Branches: functions-experimental-refactor
https://developer.blender.org/rBcad83fee9ffd2b47c0d9276a42c921f3b56bf233
move multi function to separate header
===================================================================
A source/blender/blenkernel/BKE_multi_function.h
M source/blender/blenkernel/intern/node_functions.cc
===================================================================
diff --git a/source/blender/blenkernel/BKE_multi_function.h b/source/blender/blenkernel/BKE_multi_function.h
new file mode 100644
index 00000000000..7717d1f6b12
--- /dev/null
+++ b/source/blender/blenkernel/BKE_multi_function.h
@@ -0,0 +1,54 @@
+#ifndef __BKE_MULTI_FUNCTION_H__
+#define __BKE_MULTI_FUNCTION_H__
+
+#include "BKE_generic_array_ref.h"
+#include "BKE_generic_vector_array.h"
+
+namespace BKE {
+
+class MultiFunction {
+ public:
+ class Signature {
+ public:
+ template<typename T> void readonly_single_input(StringRef name);
+ void readonly_single_input(StringRef name, CPPType &type);
+
+ template<typename T> void single_output(StringRef name);
+ void single_output(StringRef name, CPPType &base_type);
+
+ template<typename T> void readonly_vector_input(StringRef name);
+ void readonly_vector_input(StringRef name, CPPType &base_type);
+
+ template<typename T> void vector_output(StringRef name);
+ void vector_output(StringRef name, CPPType &base_type);
+
+ void mutable_vector(StringRef name, CPPType &base_type);
+ };
+
+ class Params {
+ public:
+ template<typename T> ArrayOrSingleRef<T> readonly_single_input(uint index, StringRef name);
+ GenericArrayOrSingleRef readonly_single_input(uint index, StringRef name);
+
+ template<typename T> MutableArrayRef<T> single_output(uint index, StringRef name);
+ GenericMutableArrayRef single_output(uint index, StringRef name);
+
+ template<typename T>
+ const GenericVectorArrayOrSingleRef::TypedRef<T> readonly_vector_input(uint index,
+ StringRef name);
+ GenericVectorArrayOrSingleRef readonly_vector_input(uint index, StringRef name);
+
+ template<typename T>
+ GenericVectorArray::MutableTypedRef<T> vector_output(uint index, StringRef name);
+ GenericVectorArray &vector_output(uint index, StringRef name);
+
+ GenericVectorArray &mutable_vector(uint index, StringRef name);
+ };
+
+ virtual void signature(Signature &signature) const = 0;
+ virtual void call(ArrayRef<uint> mask_indices, Params ¶ms) const = 0;
+};
+
+}; // namespace BKE
+
+#endif /* __BKE_MULTI_FUNCTION_H__ */
diff --git a/source/blender/blenkernel/intern/node_functions.cc b/source/blender/blenkernel/intern/node_functions.cc
index 872e83c34d9..7ed8c3fba48 100644
--- a/source/blender/blenkernel/intern/node_functions.cc
+++ b/source/blender/blenkernel/intern/node_functions.cc
@@ -1,6 +1,7 @@
#include "BKE_node_functions.h"
#include "BKE_generic_array_ref.h"
#include "BKE_generic_vector_array.h"
+#include "BKE_multi_function.h"
#include "BLI_math_cxx.h"
#include "BLI_lazy_init_cxx.h"
@@ -12,53 +13,6 @@ namespace BKE {
using BLI::ArrayOrSingleRef;
using BLI::float3;
-class MultiFunction {
- public:
- class Signature {
- private:
- MultiFunction &m_function;
-
- Signature(MultiFunction &function) : m_function(function)
- {
- }
-
- friend MultiFunction;
-
- public:
- template<typename T> void readonly_single_input(StringRef name);
- void readonly_single_input(StringRef name, CPPType &type);
- template<typename T> void single_output(StringRef name);
- void single_output(StringRef name, CPPType &base_type);
- template<typename T> void readonly_vector_input(StringRef name);
- void readonly_vector_input(StringRef name, CPPType &base_type);
- template<typename T> void vector_output(StringRef name);
- void mutable_vector(StringRef name, CPPType &base_type);
- };
-
- class Params {
- public:
- template<typename T> ArrayOrSingleRef<T> readonly_single_input(uint index, StringRef name);
- GenericArrayOrSingleRef readonly_single_input(uint index, StringRef name);
-
- template<typename T> MutableArrayRef<T> single_output(uint index, StringRef name);
- GenericMutableArrayRef single_output(uint index, StringRef name);
-
- template<typename T>
- const GenericVectorArrayOrSingleRef::TypedRef<T> readonly_vector_input(uint index,
- StringRef name);
- GenericVectorArrayOrSingleRef readonly_vector_input(uint index, StringRef name);
-
- template<typename T>
- GenericVectorArray::MutableTypedRef<T> vector_output(uint index, StringRef name);
- GenericVectorArray &vector_output(uint index, StringRef name);
-
- GenericVectorArray &mutable_vector(uint index, StringRef name);
- };
-
- virtual void signature(Signature &signature) const = 0;
- virtual void call(ArrayRef<uint> mask_indices, Params ¶ms) const = 0;
-};
-
class MultiFunction_AddFloats final : public MultiFunction {
void signature(Signature &signature) const override
{
More information about the Bf-blender-cvs
mailing list