[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 &params) 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 &params) const = 0;
-};
-
 class MultiFunction_AddFloats final : public MultiFunction {
   void signature(Signature &signature) const override
   {



More information about the Bf-blender-cvs mailing list