[Bf-blender-cvs] [95e0ea69a2e] functions: extract customizable functions into separate file

Jacques Lucke noreply at git.blender.org
Wed Dec 11 15:28:06 CET 2019


Commit: 95e0ea69a2ebd9aed0a9fa523c1d3e441ca0e353
Author: Jacques Lucke
Date:   Wed Dec 11 14:59:14 2019 +0100
Branches: functions
https://developer.blender.org/rB95e0ea69a2ebd9aed0a9fa523c1d3e441ca0e353

extract customizable functions into separate file

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

M	source/blender/functions/CMakeLists.txt
M	source/blender/functions/FN_multi_functions.h
A	source/blender/functions/intern/multi_functions/customizable.h
M	source/blender/functions/intern/multi_functions/mixed.h

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

diff --git a/source/blender/functions/CMakeLists.txt b/source/blender/functions/CMakeLists.txt
index 13115583987..fae3e2d9d28 100644
--- a/source/blender/functions/CMakeLists.txt
+++ b/source/blender/functions/CMakeLists.txt
@@ -65,6 +65,7 @@ set(SRC
   FN_inlined_tree_multi_function_network_generation.h
   FN_inlined_tree_multi_function_network.h
 
+  intern/multi_functions/customizable.h
   intern/multi_functions/lists.h
   intern/multi_functions/mixed.h
   intern/multi_functions/network.h
diff --git a/source/blender/functions/FN_multi_functions.h b/source/blender/functions/FN_multi_functions.h
index 363aa860c4a..1cfad25dafa 100644
--- a/source/blender/functions/FN_multi_functions.h
+++ b/source/blender/functions/FN_multi_functions.h
@@ -1,6 +1,7 @@
 #ifndef __FN_MULTI_FUNCTIONS_H__
 #define __FN_MULTI_FUNCTIONS_H__
 
+#include "intern/multi_functions/customizable.h"
 #include "intern/multi_functions/lists.h"
 #include "intern/multi_functions/mixed.h"
 #include "intern/multi_functions/network.h"
diff --git a/source/blender/functions/intern/multi_functions/mixed.h b/source/blender/functions/intern/multi_functions/customizable.h
similarity index 57%
copy from source/blender/functions/intern/multi_functions/mixed.h
copy to source/blender/functions/intern/multi_functions/customizable.h
index dce1d66b30d..a1c79120fcd 100644
--- a/source/blender/functions/intern/multi_functions/mixed.h
+++ b/source/blender/functions/intern/multi_functions/customizable.h
@@ -1,71 +1,9 @@
 #pragma once
 
-#include <functional>
-
 #include "FN_multi_function.h"
 
 namespace FN {
 
-class MF_CombineColor final : public MultiFunction {
- public:
-  MF_CombineColor();
-  void call(MFMask mask, MFParams params, MFContext context) const override;
-};
-
-class MF_SeparateColor final : public MultiFunction {
- public:
-  MF_SeparateColor();
-  void call(MFMask mask, MFParams params, MFContext context) const override;
-};
-
-class MF_CombineVector final : public MultiFunction {
- public:
-  MF_CombineVector();
-  void call(MFMask mask, MFParams params, MFContext context) const override;
-};
-
-class MF_SeparateVector final : public MultiFunction {
- public:
-  MF_SeparateVector();
-  void call(MFMask mask, MFParams params, MFContext context) const override;
-};
-
-class MF_FloatArraySum final : public MultiFunction {
- public:
-  MF_FloatArraySum();
-  void call(MFMask mask, MFParams params, MFContext context) const override;
-};
-
-class MF_FloatRange final : public MultiFunction {
- public:
-  MF_FloatRange();
-  void call(MFMask mask, MFParams params, MFContext context) const override;
-};
-
-class MF_ObjectWorldLocation final : public MultiFunction {
- public:
-  MF_ObjectWorldLocation();
-  void call(MFMask mask, MFParams params, MFContext context) const override;
-};
-
-class MF_ObjectVertexPositions final : public MultiFunction {
- public:
-  MF_ObjectVertexPositions();
-  void call(MFMask mask, MFParams params, MFContext context) const override;
-};
-
-class MF_TextLength final : public MultiFunction {
- public:
-  MF_TextLength();
-  void call(MFMask mask, MFParams params, MFContext context) const override;
-};
-
-class MF_RandomFloat final : public MultiFunction {
- public:
-  MF_RandomFloat();
-  void call(MFMask mask, MFParams parms, MFContext context) const override;
-};
-
 template<typename T> class MF_ConstantValue : public MultiFunction {
  private:
   T m_value;
@@ -108,72 +46,6 @@ template<typename FromT, typename ToT> class MF_Convert : public MultiFunction {
   }
 };
 
-class MF_SimpleVectorize final : public MultiFunction {
- private:
-  const MultiFunction &m_function;
-  Vector<bool> m_input_is_vectorized;
-  Vector<uint> m_vectorized_inputs;
-  Vector<uint> m_output_indices;
-
- public:
-  MF_SimpleVectorize(const MultiFunction &function, ArrayRef<bool> input_is_vectorized);
-  void call(MFMask mask, MFParams params, MFContext context) const override;
-};
-
-class MF_ContextVertexPosition final : public MultiFunction {
- public:
-  MF_ContextVertexPosition();
-  void call(MFMask mask, MFParams params, MFContext context) const override;
-};
-
-class MF_ContextCurrentFrame final : public MultiFunction {
- public:
-  MF_ContextCurrentFrame();
-  void call(MFMask mask, MFParams params, MFContext context) const override;
-};
-
-class MF_SwitchSingle final : public MultiFunction {
- private:
-  const CPPType &m_type;
-
- public:
-  MF_SwitchSingle(const CPPType &type);
-  void call(MFMask mask, MFParams params, MFContext context) const override;
-};
-
-class MF_SwitchVector final : public MultiFunction {
- private:
-  const CPPType &m_type;
-
- public:
-  MF_SwitchVector(const CPPType &type);
-  void call(MFMask mask, MFParams params, MFContext context) const override;
-};
-
-class MF_PerlinNoise final : public MultiFunction {
- public:
-  MF_PerlinNoise();
-  void call(MFMask mask, MFParams params, MFContext context) const override;
-};
-
-class MF_MapRange final : public MultiFunction {
- private:
-  bool m_clamp;
-
- public:
-  MF_MapRange(bool clamp);
-  void call(MFMask mask, MFParams params, MFContext context) const override;
-};
-
-class MF_Clamp final : public MultiFunction {
- private:
-  bool m_sort_minmax;
-
- public:
-  MF_Clamp(bool sort_minmax);
-  void call(MFMask mask, MFParams params, MFContext context) const override;
-};
-
 template<typename InT, typename OutT> class MF_Custom_In1_Out1 final : public MultiFunction {
  private:
   using FunctionT = std::function<void(MFMask mask, VirtualListRef<InT>, MutableArrayRef<OutT>)>;
diff --git a/source/blender/functions/intern/multi_functions/mixed.h b/source/blender/functions/intern/multi_functions/mixed.h
index dce1d66b30d..c2850231190 100644
--- a/source/blender/functions/intern/multi_functions/mixed.h
+++ b/source/blender/functions/intern/multi_functions/mixed.h
@@ -66,48 +66,6 @@ class MF_RandomFloat final : public MultiFunction {
   void call(MFMask mask, MFParams parms, MFContext context) const override;
 };
 
-template<typename T> class MF_ConstantValue : public MultiFunction {
- private:
-  T m_value;
-
- public:
-  MF_ConstantValue(T value) : m_value(std::move(value))
-  {
-    MFSignatureBuilder signature("Constant " + CPP_TYPE<T>().name());
-    signature.single_output<T>("Output");
-    this->set_signature(signature);
-  }
-
-  void call(MFMask mask, MFParams params, MFContext UNUSED(context)) const override
-  {
-    MutableArrayRef<T> output = params.uninitialized_single_output<T>(0, "Output");
-
-    mask.foreach_index([&](uint i) { new (output.begin() + i) T(m_value); });
-  }
-};
-
-template<typename FromT, typename ToT> class MF_Convert : public MultiFunction {
- public:
-  MF_Convert()
-  {
-    MFSignatureBuilder signature(CPP_TYPE<FromT>().name() + " to " + CPP_TYPE<ToT>().name());
-    signature.single_input<FromT>("Input");
-    signature.single_output<ToT>("Output");
-    this->set_signature(signature);
-  }
-
-  void call(MFMask mask, MFParams params, MFContext UNUSED(context)) const override
-  {
-    VirtualListRef<FromT> inputs = params.readonly_single_input<FromT>(0, "Input");
-    MutableArrayRef<ToT> outputs = params.uninitialized_single_output<ToT>(1, "Output");
-
-    for (uint i : mask.indices()) {
-      const FromT &from_value = inputs[i];
-      new (outputs.begin() + i) ToT(from_value);
-    }
-  }
-};
-
 class MF_SimpleVectorize final : public MultiFunction {
  private:
   const MultiFunction &m_function;
@@ -174,99 +132,4 @@ class MF_Clamp final : public MultiFunction {
   void call(MFMask mask, MFParams params, MFContext context) const override;
 };
 
-template<typename InT, typename OutT> class MF_Custom_In1_Out1 final : public MultiFunction {
- private:
-  using FunctionT = std::function<void(MFMask mask, VirtualListRef<InT>, MutableArrayRef<OutT>)>;
-  FunctionT m_fn;
-
- public:
-  MF_Custom_In1_Out1(StringRef name, FunctionT fn) : m_fn(std::move(fn))
-  {
-    MFSignatureBuilder signature(name);
-    signature.single_input<InT>("Input");
-    signature.single_output<OutT>("Output");
-    this->set_signature(signature);
-  }
-
-  void call(MFMask mask, MFParams params, MFContext UNUSED(context)) const override
-  {
-    VirtualListRef<InT> inputs = params.readonly_single_input<InT>(0);
-    MutableArrayRef<OutT> outputs = params.uninitialized_single_output<OutT>(1);
-    m_fn(mask, inputs, outputs);
-  }
-};
-
-template<typename InT1, typename InT2, typename OutT>
-class MF_Custom_In2_Out1 final : public MultiFunction {
- private:
-  using FunctionT = std::function<void(
-      MFMask mask, VirtualListRef<InT1>, VirtualListRef<InT2>, MutableArrayRef<OutT>)>;
-
-  FunctionT m_fn;
-
- public:
-  MF_Custom_In2_Out1(StringRef name, FunctionT fn) : m_fn(std::move(fn))
-  {
-    MFSignatureBuilder signature(name);
-    signature.single_input<InT1>("Input 1");
-    signature.single_input<InT2>("Input 2");
-    signature.single_output<OutT>("Output");
-    this->set_signature(signature);
-  }
-
-  void call(MFMask mask, MFParams params, MFContext UNUSED(context)) const override
-  {
-    VirtualListRef<InT1> inputs1 = params.readonly_single_input<InT1>(0);
-    VirtualListRef<InT2> inputs2 = params.readonly_single_input<InT2>(1);
-    MutableArrayRef<OutT> outputs = params.uninitialized_single_output<OutT>(2);
-    m_fn(mask, inputs1, inputs2, outputs);
-  }
-};
-
-template<typename T> class MF_VariadicMath final : public MultiFunction {
- private:
-  using FunctionT =
-      std::function<void(MFMask mask, VirtualListRef<T>, VirtualListRef<T>, MutableArrayRef<T>)>;
-
-  uint m_input_amount;
-  FunctionT m_fn;
-
- public:
-  MF_VariadicMath(StringRef name, uint input_amount, FunctionT fn)
-      : m_input_amount(input_amount), m_fn(fn)
-  {
-    BLI_STATIC_ASSERT(std::is_trivial<T>::value, "");
-    BLI_assert(input_amount >= 1);
-    MFSignatureBuilder signature(name);
-    for (uint i = 0; i < m_input_amount; i++) {
-      signature.single_input<T>("Input");
-    }
-    signature.single_output<T>("Output");
-    this->set_signature(signature);
-  }
-
-  void call(MFMask mask, MFParams params, MFContext UNUSED(context)) const override
-  {
-    MutableArrayRef<T> outputs = params.uninitialized_single_output<T>(m_input_amount, "Output");
-
-    if (m_input_amou

@@ Diff output truncated at 10240 characters. @@



More information about the Bf-blender-cvs mailing list