[Bf-blender-cvs] [40bac586dc0] functions: improve naming

Jacques Lucke noreply at git.blender.org
Sat Jan 18 20:17:53 CET 2020


Commit: 40bac586dc099110e1e8f2b452af1a81a4a8d32e
Author: Jacques Lucke
Date:   Sat Jan 18 17:54:54 2020 +0100
Branches: functions
https://developer.blender.org/rB40bac586dc099110e1e8f2b452af1a81a4a8d32e

improve naming

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

M	source/blender/functions/FN_multi_function_network.h
M	source/blender/functions/intern/multi_function_network.cc
M	source/blender/functions/intern/multi_function_network_optimization.cc
M	source/blender/functions/intern/node_tree_multi_function_network/generate.cc

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

diff --git a/source/blender/functions/FN_multi_function_network.h b/source/blender/functions/FN_multi_function_network.h
index 8285c72f259..535b25de322 100644
--- a/source/blender/functions/FN_multi_function_network.h
+++ b/source/blender/functions/FN_multi_function_network.h
@@ -162,9 +162,9 @@ class MFNetworkBuilder : BLI::NonCopyable, BLI::NonMovable {
   void remove_node(MFBuilderNode &node);
   void remove_nodes(ArrayRef<MFBuilderNode *> nodes);
 
-  Vector<MFBuilderNode *> find_nodes_whose_inputs_do_not_depend_on_these_nodes(
-      ArrayRef<MFBuilderNode *> nodes);
-  Vector<MFBuilderNode *> find_nodes_none_of_these_nodes_depends_on(
+  Array<bool> find_nodes_to_the_right_of__inclusive__mask(ArrayRef<MFBuilderNode *> nodes);
+  Array<bool> find_nodes_to_the_left_of__inclusive__mask(ArrayRef<MFBuilderNode *> nodes);
+  Vector<MFBuilderNode *> find_nodes_not_to_the_left_of__exclusive__vector(
       ArrayRef<MFBuilderNode *> nodes);
 
   uint current_index_of(MFBuilderFunctionNode &node) const
diff --git a/source/blender/functions/intern/multi_function_network.cc b/source/blender/functions/intern/multi_function_network.cc
index 7087161763f..f5bd1aceb7f 100644
--- a/source/blender/functions/intern/multi_function_network.cc
+++ b/source/blender/functions/intern/multi_function_network.cc
@@ -218,67 +218,71 @@ static bool set_tag_and_check_if_modified(bool &tag, bool new_value)
   }
 }
 
-Vector<MFBuilderNode *> MFNetworkBuilder::find_nodes_whose_inputs_do_not_depend_on_these_nodes(
+Array<bool> MFNetworkBuilder::find_nodes_to_the_right_of__inclusive__mask(
     ArrayRef<MFBuilderNode *> nodes)
 {
-  Array<bool> depends_on_nodes_tag(this->node_id_amount(), false);
+  Array<bool> is_to_the_right(this->node_id_amount(), false);
 
   for (MFBuilderNode *node : nodes) {
-    depends_on_nodes_tag[node->id()] = true;
+    is_to_the_right[node->id()] = true;
   }
 
   Stack<MFBuilderNode *> nodes_to_check = nodes;
   while (!nodes_to_check.is_empty()) {
     MFBuilderNode &node = *nodes_to_check.pop();
 
-    if (depends_on_nodes_tag[node.id()]) {
+    if (is_to_the_right[node.id()]) {
       node.foreach_target_node([&](MFBuilderNode &other_node) {
-        if (set_tag_and_check_if_modified(depends_on_nodes_tag[other_node.id()], true)) {
+        if (set_tag_and_check_if_modified(is_to_the_right[other_node.id()], true)) {
           nodes_to_check.push(&other_node);
         }
       });
     }
   }
 
-  Vector<MFBuilderNode *> result;
-  for (uint id : m_node_or_null_by_id.index_range()) {
-    MFBuilderNode *node = m_node_or_null_by_id[id];
-    if (node != nullptr && !depends_on_nodes_tag[id]) {
-      result.append(node);
-    }
-  }
-  return result;
+  return is_to_the_right;
 }
 
-Vector<MFBuilderNode *> MFNetworkBuilder::find_nodes_none_of_these_nodes_depends_on(
+Array<bool> MFNetworkBuilder::find_nodes_to_the_left_of__inclusive__mask(
     ArrayRef<MFBuilderNode *> nodes)
 {
-  Array<bool> is_dependency_tag(this->node_id_amount(), false);
+  Array<bool> is_to_the_left(this->node_id_amount(), false);
 
   for (MFBuilderNode *node : nodes) {
-    is_dependency_tag[node->id()] = true;
+    is_to_the_left[node->id()] = true;
   }
 
   Stack<MFBuilderNode *> nodes_to_check = nodes;
   while (!nodes_to_check.is_empty()) {
     MFBuilderNode &node = *nodes_to_check.pop();
 
-    if (is_dependency_tag[node.id()]) {
+    if (is_to_the_left[node.id()]) {
       node.foreach_origin_node([&](MFBuilderNode &other_node) {
-        if (set_tag_and_check_if_modified(is_dependency_tag[other_node.id()], true)) {
+        if (set_tag_and_check_if_modified(is_to_the_left[other_node.id()], true)) {
           nodes_to_check.push(&other_node);
         }
       });
     }
   }
 
+  return is_to_the_left;
+}
+
+Vector<MFBuilderNode *> MFNetworkBuilder::find_nodes_not_to_the_left_of__exclusive__vector(
+    ArrayRef<MFBuilderNode *> nodes)
+{
+  Array<bool> is_to_the_left = this->find_nodes_to_the_left_of__inclusive__mask(nodes);
+
   Vector<MFBuilderNode *> result;
-  for (uint id : m_node_or_null_by_id.index_range()) {
-    MFBuilderNode *node = m_node_or_null_by_id[id];
-    if (node != nullptr && !is_dependency_tag[id]) {
-      result.append(node);
+  for (uint id : is_to_the_left.index_range()) {
+    if (this->node_id_is_valid(id)) {
+      if (!is_to_the_left[id]) {
+        MFBuilderNode &node = this->node_by_id(id);
+        result.append(&node);
+      }
     }
   }
+
   return result;
 }
 
diff --git a/source/blender/functions/intern/multi_function_network_optimization.cc b/source/blender/functions/intern/multi_function_network_optimization.cc
index 06e19951baf..70e1de464d3 100644
--- a/source/blender/functions/intern/multi_function_network_optimization.cc
+++ b/source/blender/functions/intern/multi_function_network_optimization.cc
@@ -11,7 +11,7 @@ using BLI::Stack;
 void optimize_network__remove_unused_nodes(MFNetworkBuilder &network_builder)
 {
   ArrayRef<MFBuilderNode *> dummy_nodes = network_builder.dummy_nodes();
-  Vector<MFBuilderNode *> nodes = network_builder.find_nodes_none_of_these_nodes_depends_on(
+  Vector<MFBuilderNode *> nodes = network_builder.find_nodes_not_to_the_left_of__exclusive__vector(
       dummy_nodes);
   network_builder.remove_nodes(nodes);
 }
diff --git a/source/blender/functions/intern/node_tree_multi_function_network/generate.cc b/source/blender/functions/intern/node_tree_multi_function_network/generate.cc
index 87271a381f2..6baae08a65b 100644
--- a/source/blender/functions/intern/node_tree_multi_function_network/generate.cc
+++ b/source/blender/functions/intern/node_tree_multi_function_network/generate.cc
@@ -211,8 +211,6 @@ static std::unique_ptr<FunctionTreeMFNetwork> build(
     MFNetworkBuilder &network_builder,
     Map<const FSocket *, MFBuilderSocket *> &dummy_socket_mapping)
 {
-  // network_builder->to_dot__clipboard();
-
   auto network = BLI::make_unique<MFNetwork>(network_builder);
 
   IndexToRefMap<const MFSocket> dummy_socket_by_fsocket_id(function_tree.socket_count());
@@ -274,7 +272,7 @@ std::unique_ptr<FunctionTreeMFNetwork> generate_node_tree_multi_function_network
 
   optimize_network__constant_folding(network_builder, resources);
   optimize_network__remove_unused_nodes(network_builder);
-  // network_builder.to_dot__clipboard();
+  network_builder.to_dot__clipboard();
   auto function_tree_network = build(function_tree, network_builder, dummy_socket_mapping);
   return function_tree_network;
 }



More information about the Bf-blender-cvs mailing list