[Bf-blender-cvs] [a5790756e0c] functions: extract methods
Jacques Lucke
noreply at git.blender.org
Fri Dec 6 13:02:25 CET 2019
Commit: a5790756e0ce5f64d72bf91a9cc3bef0f7160a94
Author: Jacques Lucke
Date: Fri Dec 6 12:50:54 2019 +0100
Branches: functions
https://developer.blender.org/rBa5790756e0ce5f64d72bf91a9cc3bef0f7160a94
extract methods
===================================================================
M source/blender/functions/intern/multi_functions/network.cc
M source/blender/functions/intern/multi_functions/network.h
===================================================================
diff --git a/source/blender/functions/intern/multi_functions/network.cc b/source/blender/functions/intern/multi_functions/network.cc
index a0e8f5bfc97..6aaed67317f 100644
--- a/source/blender/functions/intern/multi_functions/network.cc
+++ b/source/blender/functions/intern/multi_functions/network.cc
@@ -56,56 +56,70 @@ BLI_NOINLINE void MF_EvaluateNetwork::copy_inputs_to_storage(MFParams params,
switch (socket.data_type().category()) {
case MFDataType::Single: {
GenericVirtualListRef input_list = params.readonly_single_input(input_index);
- for (const MFInputSocket *target : socket.targets()) {
- const MFNode &target_node = target->node();
- if (target_node.is_function()) {
- MFParamType param_type = target->param_type();
-
- if (param_type.is_single_input()) {
- storage.set_virtual_list_for_input(*target, input_list);
- }
- else if (param_type.is_mutable_single()) {
- GenericMutableArrayRef array = storage.allocate_copy(input_list);
- storage.set_array_ref_for_input(*target, array);
- }
- else {
- BLI_assert(false);
- }
- }
- else {
- storage.set_virtual_list_for_input(*target, input_list);
- }
- }
+ this->copy_inputs_to_storage__single(input_list, socket.targets(), storage);
break;
}
case MFDataType::Vector: {
GenericVirtualListListRef input_list_list = params.readonly_vector_input(input_index);
- for (const MFInputSocket *target : socket.targets()) {
- const MFNode &target_node = target->node();
- if (target_node.is_function()) {
- MFParamType param_type = target->param_type();
-
- if (param_type.is_vector_input()) {
- storage.set_virtual_list_list_for_input(*target, input_list_list);
- }
- else if (param_type.is_mutable_vector()) {
- GenericVectorArray &vector_array = storage.allocate_copy(input_list_list);
- storage.set_vector_array_for_input(*target, vector_array);
- }
- else {
- BLI_assert(false);
- }
- }
- else {
- storage.set_virtual_list_list_for_input(*target, input_list_list);
- }
- }
+ this->copy_inputs_to_storage__vector(input_list_list, socket.targets(), storage);
break;
}
}
}
}
+BLI_NOINLINE void MF_EvaluateNetwork::copy_inputs_to_storage__single(
+ GenericVirtualListRef input_list,
+ ArrayRef<const MFInputSocket *> targets,
+ Storage &storage) const
+{
+ for (const MFInputSocket *target : targets) {
+ const MFNode &target_node = target->node();
+ if (target_node.is_dummy()) {
+ storage.set_virtual_list_for_input(*target, input_list);
+ }
+ else {
+ MFParamType param_type = target->param_type();
+ if (param_type.is_single_input()) {
+ storage.set_virtual_list_for_input(*target, input_list);
+ }
+ else if (param_type.is_mutable_single()) {
+ GenericMutableArrayRef array = storage.allocate_copy(input_list);
+ storage.set_array_ref_for_input(*target, array);
+ }
+ else {
+ BLI_assert(false);
+ }
+ }
+ }
+}
+
+BLI_NOINLINE void MF_EvaluateNetwork::copy_inputs_to_storage__vector(
+ GenericVirtualListListRef input_list_list,
+ ArrayRef<const MFInputSocket *> targets,
+ Storage &storage) const
+{
+ for (const MFInputSocket *target : targets) {
+ const MFNode &target_node = target->node();
+ if (target_node.is_dummy()) {
+ storage.set_virtual_list_list_for_input(*target, input_list_list);
+ }
+ else {
+ MFParamType param_type = target->param_type();
+ if (param_type.is_vector_input()) {
+ storage.set_virtual_list_list_for_input(*target, input_list_list);
+ }
+ else if (param_type.is_mutable_vector()) {
+ GenericVectorArray &vector_array = storage.allocate_copy(input_list_list);
+ storage.set_vector_array_for_input(*target, vector_array);
+ }
+ else {
+ BLI_assert(false);
+ }
+ }
+ }
+}
+
BLI_NOINLINE void MF_EvaluateNetwork::evaluate_network_to_compute_outputs(
MFContext &global_context, Storage &storage) const
{
diff --git a/source/blender/functions/intern/multi_functions/network.h b/source/blender/functions/intern/multi_functions/network.h
index 490ace50558..974a14f2c54 100644
--- a/source/blender/functions/intern/multi_functions/network.h
+++ b/source/blender/functions/intern/multi_functions/network.h
@@ -143,6 +143,12 @@ class MF_EvaluateNetwork final : public MultiFunction {
private:
void copy_inputs_to_storage(MFParams params, Storage &storage) const;
+ void copy_inputs_to_storage__single(GenericVirtualListRef input_list,
+ ArrayRef<const MFInputSocket *> targets,
+ Storage &storage) const;
+ void copy_inputs_to_storage__vector(GenericVirtualListListRef input_list_list,
+ ArrayRef<const MFInputSocket *> targets,
+ Storage &storage) const;
void evaluate_network_to_compute_outputs(MFContext &global_context, Storage &storage) const;
More information about the Bf-blender-cvs
mailing list