Commit: 7e2f02b019b82a7c325309e51a5d16632e96f368
Author: Jacques Lucke
Date:   Mon Apr 8 18:35:58 2019 +0200
Branches: functions
https://developer.blender.org/rB7e2f02b019b82a7c325309e51a5d16632e96f368

more generic function to find relevant sockets in a function graph

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

M       source/blender/functions/backends/llvm/fgraph_ir_generation.cpp
M       source/blender/functions/backends/tuple_call/fgraph_tuple_call.cpp
M       source/blender/functions/core/data_flow_graph.cpp
M       source/blender/functions/core/data_flow_graph.hpp

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

diff --git a/source/blender/functions/backends/llvm/fgraph_ir_generation.cpp 
b/source/blender/functions/backends/llvm/fgraph_ir_generation.cpp
index 844e47b1721..1fa20007c18 100644
--- a/source/blender/functions/backends/llvm/fgraph_ir_generation.cpp
+++ b/source/blender/functions/backends/llvm/fgraph_ir_generation.cpp
@@ -34,7 +34,7 @@ namespace FN {
                                        continue;
                                }
                        }
-                       m_required_sockets = fgraph.find_required_sockets();
+                       m_required_sockets = fgraph.find_used_sockets(false, 
true);
                }
 
                void build_ir(
diff --git a/source/blender/functions/backends/tuple_call/fgraph_tuple_call.cpp 
b/source/blender/functions/backends/tuple_call/fgraph_tuple_call.cpp
index 6675ae25ed3..d644de67b8e 100644
--- a/source/blender/functions/backends/tuple_call/fgraph_tuple_call.cpp
+++ b/source/blender/functions/backends/tuple_call/fgraph_tuple_call.cpp
@@ -87,7 +87,7 @@ namespace FN {
                          m_inputs(fgraph.inputs()),
                          m_outputs(fgraph.outputs())
                {
-                       SocketSet required_sockets = 
fgraph.find_required_sockets();
+                       SocketSet required_sockets = 
fgraph.find_used_sockets(false, true);
 
                        NodeSetVector required_nodes;
                        for (Socket socket : required_sockets) {
@@ -433,7 +433,7 @@ namespace FN {
 
                void call(Tuple &fn_in, Tuple &fn_out, ExecutionContext &ctx) 
const override
                {
-                       SocketSet required_sockets = 
m_fgraph.find_required_sockets();
+                       SocketSet required_sockets = 
m_fgraph.find_used_sockets(false, true);
                        for (Socket socket : m_fgraph.inputs()) {
                                required_sockets.add(socket);
                        }
diff --git a/source/blender/functions/core/data_flow_graph.cpp 
b/source/blender/functions/core/data_flow_graph.cpp
index 8f61f41b0bf..f6d41d94ede 100644
--- a/source/blender/functions/core/data_flow_graph.cpp
+++ b/source/blender/functions/core/data_flow_graph.cpp
@@ -54,34 +54,42 @@ namespace FN {
        }
 
 
-       SocketSet FunctionGraph::find_required_sockets() const
+       SocketSet FunctionGraph::find_used_sockets(
+               bool include_inputs,
+               bool include_outputs) const
        {
                SocketSet found;
 
                SocketSet to_be_checked;
                for (Socket socket : m_outputs) {
-                       to_be_checked.add(socket);
+                       to_be_checked.add_new(socket);
                }
 
                while (to_be_checked.size() > 0) {
                        Socket socket = to_be_checked.pop();
 
-                       if (m_inputs.contains(socket)) {
+                       if (!include_inputs && m_inputs.contains(socket)) {
                                continue;
                        }
 
                        found.add(socket);
 
                        if (socket.is_input()) {
-                               to_be_checked.add(socket.origin());
+                               to_be_checked.add_new(socket.origin());
                        }
                        else {
                                for (Socket input : socket.node()->inputs()) {
-                                       to_be_checked.add(input);
+                                       to_be_checked.add_new(input);
                                }
                        }
                }
 
+               if (!include_outputs) {
+                       for (Socket socket : m_outputs) {
+                               found.remove(socket);
+                       }
+               }
+
                return found;
        }
 
diff --git a/source/blender/functions/core/data_flow_graph.hpp 
b/source/blender/functions/core/data_flow_graph.hpp
index 40e5e39149f..304c0af0a5a 100644
--- a/source/blender/functions/core/data_flow_graph.hpp
+++ b/source/blender/functions/core/data_flow_graph.hpp
@@ -360,7 +360,9 @@ namespace FN {
                        return Signature(inputs, outputs);
                }
 
-               SocketSet find_required_sockets() const;
+               SocketSet find_used_sockets(
+                       bool include_inputs,
+                       bool include_outputs) const;
 
        private:
                SharedDataFlowGraph m_graph;

_______________________________________________
Bf-blender-cvs mailing list
Bf-blender-cvs@blender.org
https://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to