[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