[Bf-blender-cvs] [7588b4e4935] functions-experimental-refactor: separate declaration and implementation
Jacques Lucke
noreply at git.blender.org
Tue Oct 15 15:57:13 CEST 2019
Commit: 7588b4e4935dd1bf6a0ed07f47f56655336d54fb
Author: Jacques Lucke
Date: Fri Oct 11 12:42:09 2019 +0200
Branches: functions-experimental-refactor
https://developer.blender.org/rB7588b4e4935dd1bf6a0ed07f47f56655336d54fb
separate declaration and implementation
===================================================================
M source/blender/blenkernel/intern/BKE_multi_functions.h
M source/blender/blenkernel/intern/multi_functions.cc
===================================================================
diff --git a/source/blender/blenkernel/intern/BKE_multi_functions.h b/source/blender/blenkernel/intern/BKE_multi_functions.h
index e5b8388a817..0951501dcd4 100644
--- a/source/blender/blenkernel/intern/BKE_multi_functions.h
+++ b/source/blender/blenkernel/intern/BKE_multi_functions.h
@@ -10,6 +10,57 @@ class MultiFunction_AddFloats final : public MultiFunction {
void call(ArrayRef<uint> mask_indices, Params ¶ms) const override;
};
+class MultiFunction_VectorDistance final : public MultiFunction {
+ void signature(Signature &signature) const override;
+ void call(ArrayRef<uint> mask_indices, Params ¶ms) const override;
+};
+
+class MultiFunction_FloatArraySum final : public MultiFunction {
+ void signature(Signature &signature) const override;
+ void call(ArrayRef<uint> mask_indices, Params ¶ms) const override;
+};
+
+class MultiFunction_FloatRange final : public MultiFunction {
+ void signature(Signature &signature) const override;
+ void call(ArrayRef<uint> mask_indices, Params ¶ms) const override;
+};
+
+class MultiFunction_AppendToList final : public MultiFunction {
+ private:
+ CPPType &m_base_type;
+
+ public:
+ void signature(Signature &signature) const override;
+ void call(ArrayRef<uint> mask_indices, Params ¶ms) const override;
+};
+
+class MultiFunction_GetListElement final : public MultiFunction {
+ private:
+ CPPType &m_base_type;
+
+ public:
+ void signature(Signature &signature) const override;
+ void call(ArrayRef<uint> mask_indices, Params ¶ms) const override;
+};
+
+class MultiFunction_ListLength final : public MultiFunction {
+ private:
+ CPPType &m_base_type;
+
+ public:
+ void signature(Signature &signature) const override;
+ void call(ArrayRef<uint> mask_indices, Params ¶ms) const override;
+};
+
+class MultiFunction_CombineLists final : public MultiFunction {
+ private:
+ CPPType &m_base_type;
+
+ public:
+ void signature(Signature &signature) const override;
+ void call(ArrayRef<uint> mask_indices, Params ¶ms) const override;
+};
+
}; // namespace BKE
#endif /* __BKE_MULTI_FUNCTIONS_H__ */
diff --git a/source/blender/blenkernel/intern/multi_functions.cc b/source/blender/blenkernel/intern/multi_functions.cc
index 75ad8468eb3..20e14d28b0d 100644
--- a/source/blender/blenkernel/intern/multi_functions.cc
+++ b/source/blender/blenkernel/intern/multi_functions.cc
@@ -30,172 +30,142 @@ void MultiFunction_AddFloats::call(ArrayRef<uint> mask_indices, Params ¶ms)
}
}
-class MultiFunction_VectorDistance final : public MultiFunction {
- void signature(Signature &signature) const override
- {
- signature.readonly_single_input<float3>("A");
- signature.readonly_single_input<float3>("A");
- signature.single_output<float>("Distances");
- }
+void MultiFunction_VectorDistance::signature(Signature &signature) const
+{
+ signature.readonly_single_input<float3>("A");
+ signature.readonly_single_input<float3>("A");
+ signature.single_output<float>("Distances");
+}
- void call(ArrayRef<uint> mask_indices, Params ¶ms) const override
- {
- auto a = params.readonly_single_input<float3>(0, "A");
- auto b = params.readonly_single_input<float3>(1, "B");
- auto distances = params.single_output<float>(2, "Distances");
+void MultiFunction_VectorDistance::call(ArrayRef<uint> mask_indices, Params ¶ms) const
+{
+ auto a = params.readonly_single_input<float3>(0, "A");
+ auto b = params.readonly_single_input<float3>(1, "B");
+ auto distances = params.single_output<float>(2, "Distances");
- for (uint i : mask_indices) {
- distances[i] = float3::distance(a[i], b[i]);
- }
+ for (uint i : mask_indices) {
+ distances[i] = float3::distance(a[i], b[i]);
}
-};
+}
-class MultiFunction_FloatArraySum final : public MultiFunction {
- void signature(Signature &signature) const override
- {
- signature.readonly_vector_input<float>("Array");
- signature.single_output<float>("Sum");
- }
+void MultiFunction_FloatArraySum::signature(Signature &signature) const
+{
+ signature.readonly_vector_input<float>("Array");
+ signature.single_output<float>("Sum");
+}
- void call(ArrayRef<uint> mask_indices, Params ¶ms) const override
- {
- auto arrays = params.readonly_vector_input<float>(0, "Array");
- MutableArrayRef<float> sums = params.single_output<float>(1, "Sum");
+void MultiFunction_FloatArraySum::call(ArrayRef<uint> mask_indices, Params ¶ms) const
+{
+ auto arrays = params.readonly_vector_input<float>(0, "Array");
+ MutableArrayRef<float> sums = params.single_output<float>(1, "Sum");
- for (uint i : mask_indices) {
- float sum = 0.0f;
- for (float value : arrays[i]) {
- sum += value;
- }
- sums[i] = sum;
+ for (uint i : mask_indices) {
+ float sum = 0.0f;
+ for (float value : arrays[i]) {
+ sum += value;
}
+ sums[i] = sum;
}
-};
-
-class MultiFunction_FloatRange final : public MultiFunction {
- void signature(Signature &signature) const override
- {
- signature.readonly_single_input<float>("Start");
- signature.readonly_single_input<float>("Step");
- signature.readonly_single_input<uint>("Amount");
- signature.vector_output<float>("Range");
- }
+}
- void call(ArrayRef<uint> mask_indices, Params ¶ms) const override
- {
- auto starts = params.readonly_single_input<float>(0, "Start");
- auto steps = params.readonly_single_input<float>(1, "Step");
- auto amounts = params.readonly_single_input<uint>(2, "Amount");
- auto ranges = params.vector_output<float>(3, "Range");
-
- for (uint i : mask_indices) {
- for (uint j = 0; j < amounts[i]; j++) {
- float value = starts[i] + j * steps[i];
- ranges.append_single(i, value);
- }
- }
- }
-};
+void MultiFunction_FloatRange::signature(Signature &signature) const
+{
+ signature.readonly_single_input<float>("Start");
+ signature.readonly_single_input<float>("Step");
+ signature.readonly_single_input<uint>("Amount");
+ signature.vector_output<float>("Range");
+}
-class MultiFunction_AppendToList final : public MultiFunction {
- private:
- CPPType &m_base_type;
+void MultiFunction_FloatRange::call(ArrayRef<uint> mask_indices, Params ¶ms) const
+{
+ auto starts = params.readonly_single_input<float>(0, "Start");
+ auto steps = params.readonly_single_input<float>(1, "Step");
+ auto amounts = params.readonly_single_input<uint>(2, "Amount");
+ auto ranges = params.vector_output<float>(3, "Range");
- public:
- void signature(Signature &signature) const override
- {
- signature.mutable_vector("List", m_base_type);
- signature.readonly_single_input("Value", m_base_type);
+ for (uint i : mask_indices) {
+ for (uint j = 0; j < amounts[i]; j++) {
+ float value = starts[i] + j * steps[i];
+ ranges.append_single(i, value);
+ }
}
+}
- void call(ArrayRef<uint> mask_indices, Params ¶ms) const override
- {
- GenericVectorArray &lists = params.mutable_vector(0, "List");
- GenericArrayOrSingleRef values = params.readonly_single_input(1, "Value");
+void MultiFunction_AppendToList::signature(Signature &signature) const
+{
+ signature.mutable_vector("List", m_base_type);
+ signature.readonly_single_input("Value", m_base_type);
+}
- for (uint i : mask_indices) {
- lists.append_single__copy(i, values[i]);
- }
- }
-};
-
-class MultiFunction_GetListElement final : public MultiFunction {
- private:
- CPPType &m_base_type;
-
- public:
- void signature(Signature &signature) const override
- {
- signature.readonly_vector_input("List", m_base_type);
- signature.readonly_single_input<int>("Index");
- signature.readonly_single_input("Fallback", m_base_type);
- signature.single_output("Value", m_base_type);
- }
+void MultiFunction_AppendToList::call(ArrayRef<uint> mask_indices, Params ¶ms) const
+{
+ GenericVectorArray &lists = params.mutable_vector(0, "List");
+ GenericArrayOrSingleRef values = params.readonly_single_input(1, "Value");
- void call(ArrayRef<uint> mask_indices, Params ¶ms) const override
- {
- GenericVectorArrayOrSingleRef lists = params.readonly_vector_input(0, "List");
- ArrayOrSingleRef<int> indices = params.readonly_single_input<int>(1, "Index");
- GenericArrayOrSingleRef fallbacks = params.readonly_single_input(2, "Fallback");
-
- GenericMutableArrayRef output_values = params.single_output(3, "Value");
-
- for (uint i : mask_indices) {
- int index = indices[i];
- if (index >= 0) {
- GenericArrayRef list = lists[i];
- if (index < list.size()) {
- m_base_type.copy_to_uninitialized(list[index], output_values[i]);
- continue;
- }
- }
- m_base_type.copy_to_uninitialized(fallbacks[i], output_values[i]);
- }
+ for (uint i : mask_indices) {
+ lists.append_single__copy(i, values[i]);
}
-};
+}
-class MultiFunction_ListLength final : public MultiFunction {
- private:
- CPPType &m_base_type;
+void MultiFunction_GetListElement::signature(Signature &signature) const
+{
+ signature.readonly_vector_input("List", m_base_type);
+ signature.readonly_single_input<int>("Index");
+ signature.readonly_single_input("Fallback", m_base_type);
+ signature.single_output("Value", m_base_type);
+}
- public:
- void signature(Signature &signature) const override
- {
- signature.readonly_vector_input("List", m_base_type);
- signature.single_output<int>("Length");
- }
+void MultiFunction_GetListElement::call(ArrayRef<uint> mask_indices, Params ¶ms) const
+{
+ GenericVectorArrayOrSingleRef lists = params.readonly_vector_input(0, "List");
+ ArrayOrSingleRef<int> indices = params.readonly_single_input<int>(1, "Index");
+ GenericArrayOrSingleRef fallbacks = params.readonly_single_input(2, "Fallback");
- void call(ArrayRef<uint> mask_indices, Params ¶ms) const override
- {
- GenericVectorArrayOrSingleRef lists = params.readonly_vector_input(0, "List");
- MutableArrayRef<int> lengths = params.single_output<int>(1, "Length");
+ GenericMutableArrayRef output_values = params.single_output(3, "Value");
- for (uint i : mask_indices) {
- lengths[i] = lists[i].size();
+ for (uint i : mask_in
@@ Diff output truncated at 10240 characters. @@
More information about the Bf-blender-cvs
mailing list