[Bf-blender-cvs] [e60516bdee4] functions: cleanup

Jacques Lucke noreply at git.blender.org
Wed Dec 11 14:26:47 CET 2019


Commit: e60516bdee46646162e2a797c1c2d54ea53e964e
Author: Jacques Lucke
Date:   Wed Dec 11 14:03:13 2019 +0100
Branches: functions
https://developer.blender.org/rBe60516bdee46646162e2a797c1c2d54ea53e964e

cleanup

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

M	source/blender/functions/intern/multi_functions/mixed.cc
M	source/blender/functions/intern/multi_functions/mixed.h

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

diff --git a/source/blender/functions/intern/multi_functions/mixed.cc b/source/blender/functions/intern/multi_functions/mixed.cc
index b3c68789457..c465eb7af43 100644
--- a/source/blender/functions/intern/multi_functions/mixed.cc
+++ b/source/blender/functions/intern/multi_functions/mixed.cc
@@ -37,43 +37,40 @@ using BLI::rgba_f;
 using BLI::TemporaryArray;
 using BLI::TemporaryVector;
 
-MF_AddFloats::MF_AddFloats()
+template<typename T, typename FuncT, typename EqualFuncT = std::equal_to<T>>
+void group_indices_by_same_value(ArrayRef<uint> indices,
+                                 VirtualListRef<T> values,
+                                 const FuncT &func,
+                                 EqualFuncT equal = std::equal_to<T>())
 {
-  MFSignatureBuilder signature("Add Floats");
-  signature.single_input<float>("A");
-  signature.single_input<float>("B");
-  signature.single_output<float>("Result");
-  this->set_signature(signature);
-}
+  if (indices.size() == 0) {
+    return;
+  }
+  if (values.is_single_element()) {
+    const T &value = values[indices[0]];
+    func(value, indices);
+    return;
+  }
 
-void MF_AddFloats::call(MFMask mask, MFParams params, MFContext UNUSED(context)) const
-{
-  auto a = params.readonly_single_input<float>(0, "A");
-  auto b = params.readonly_single_input<float>(1, "B");
-  auto result = params.uninitialized_single_output<float>(2, "Result");
+  Vector<T> seen_values;
 
-  for (uint i : mask.indices()) {
-    result[i] = a[i] + b[i];
-  }
-}
+  for (uint i : indices.index_iterator()) {
+    uint index = indices[i];
 
-MF_AddFloat3s::MF_AddFloat3s()
-{
-  MFSignatureBuilder signature("Add Float3s");
-  signature.single_input<float3>("A");
-  signature.single_input<float3>("B");
-  signature.single_output<float3>("Result");
-  this->set_signature(signature);
-}
+    const T &value = values[index];
+    if (seen_values.as_ref().any([&](const T &seen_value) { return equal(value, seen_value); })) {
+      continue;
+    }
+    seen_values.append(value);
 
-void MF_AddFloat3s::call(MFMask mask, MFParams params, MFContext UNUSED(context)) const
-{
-  auto a = params.readonly_single_input<float3>(0, "A");
-  auto b = params.readonly_single_input<float3>(1, "B");
-  auto result = params.uninitialized_single_output<float3>(2, "Result");
+    TemporaryVector<uint> indices_with_value;
+    for (uint j : indices.drop_front(i)) {
+      if (equal(values[j], value)) {
+        indices_with_value.append(j);
+      }
+    }
 
-  for (uint i : mask.indices()) {
-    result[i] = a[i] + b[i];
+    func(value, indices_with_value.as_ref());
   }
 }
 
@@ -176,26 +173,6 @@ void MF_SeparateVector::call(MFMask mask, MFParams params, MFContext UNUSED(cont
   }
 }
 
-MF_VectorDistance::MF_VectorDistance()
-{
-  MFSignatureBuilder signature("Vector Distance");
-  signature.single_input<float3>("A");
-  signature.single_input<float3>("A");
-  signature.single_output<float>("Distances");
-  this->set_signature(signature);
-}
-
-void MF_VectorDistance::call(MFMask mask, MFParams params, MFContext UNUSED(context)) const
-{
-  auto a = params.readonly_single_input<float3>(0, "A");
-  auto b = params.readonly_single_input<float3>(1, "B");
-  auto distances = params.uninitialized_single_output<float>(2, "Distances");
-
-  for (uint i : mask.indices()) {
-    distances[i] = float3::distance(a[i], b[i]);
-  }
-}
-
 MF_FloatArraySum::MF_FloatArraySum()
 {
   MFSignatureBuilder signature("Float Array Sum");
@@ -480,43 +457,6 @@ MF_GetImageColorOnSurface::MF_GetImageColorOnSurface()
   this->set_signature(signature);
 }
 
-template<typename T, typename FuncT, typename EqualFuncT = std::equal_to<T>>
-void group_indices_by_same_value(ArrayRef<uint> indices,
-                                 VirtualListRef<T> values,
-                                 const FuncT &func,
-                                 EqualFuncT equal = std::equal_to<T>())
-{
-  if (indices.size() == 0) {
-    return;
-  }
-  if (values.is_single_element()) {
-    const T &value = values[indices[0]];
-    func(value, indices);
-    return;
-  }
-
-  Vector<T> seen_values;
-
-  for (uint i : indices.index_iterator()) {
-    uint index = indices[i];
-
-    const T &value = values[index];
-    if (seen_values.as_ref().any([&](const T &seen_value) { return equal(value, seen_value); })) {
-      continue;
-    }
-    seen_values.append(value);
-
-    TemporaryVector<uint> indices_with_value;
-    for (uint j : indices.drop_front(i)) {
-      if (equal(values[j], value)) {
-        indices_with_value.append(j);
-      }
-    }
-
-    func(value, indices_with_value.as_ref());
-  }
-}
-
 static void get_colors_on_surface(ArrayRef<uint> indices,
                                   VirtualListRef<SurfaceHook> surface_hooks,
                                   MutableArrayRef<rgba_f> r_colors,
diff --git a/source/blender/functions/intern/multi_functions/mixed.h b/source/blender/functions/intern/multi_functions/mixed.h
index c280c5b9a70..00ac0ede096 100644
--- a/source/blender/functions/intern/multi_functions/mixed.h
+++ b/source/blender/functions/intern/multi_functions/mixed.h
@@ -8,23 +8,6 @@
 
 namespace FN {
 
-class MF_Dummy final : public MultiFunction {
-  void call(MFMask UNUSED(mask), MFParams UNUSED(params), MFContext UNUSED(context)) const override
-  {
-  }
-};
-class MF_AddFloats final : public MultiFunction {
- public:
-  MF_AddFloats();
-  void call(MFMask mask, MFParams params, MFContext context) const override;
-};
-
-class MF_AddFloat3s final : public MultiFunction {
- public:
-  MF_AddFloat3s();
-  void call(MFMask mask, MFParams params, MFContext context) const override;
-};
-
 class MF_CombineColor final : public MultiFunction {
  public:
   MF_CombineColor();
@@ -49,12 +32,6 @@ class MF_SeparateVector final : public MultiFunction {
   void call(MFMask mask, MFParams params, MFContext context) const override;
 };
 
-class MF_VectorDistance final : public MultiFunction {
- public:
-  MF_VectorDistance();
-  void call(MFMask mask, MFParams params, MFContext context) const override;
-};
-
 class MF_FloatArraySum final : public MultiFunction {
  public:
   MF_FloatArraySum();



More information about the Bf-blender-cvs mailing list