Commit: f92bc17cb3e84d915134e483ef3bbf341335bf7b
Author: Jacques Lucke
Date:   Mon Apr 8 18:57:01 2019 +0200
Branches: functions
https://developer.blender.org/rBf92bc17cb3e84d915134e483ef3bbf341335bf7b

utility to count the number of times an output socket is used

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

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

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

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 d644de67b8e..7d5d5bcd902 100644
--- a/source/blender/functions/backends/tuple_call/fgraph_tuple_call.cpp
+++ b/source/blender/functions/backends/tuple_call/fgraph_tuple_call.cpp
@@ -341,6 +341,25 @@ namespace FN {
                }
        };
 
+       static SmallMap<Socket, uint> 
UNUSED_FUNCTION(get_max_usage_amounts)(SocketSet used_sockets)
+       {
+               SmallMap<Socket, uint> usage_counts;
+
+               for (Socket socket : used_sockets) {
+                       if (socket.is_input()) {
+                               continue;
+                       }
+                       uint amount = 0;
+                       for (Socket target : socket.targets()) {
+                               if (used_sockets.contains(target)) {
+                                       amount++;
+                               }
+                       }
+                       usage_counts.add_new(socket, amount);
+               }
+               return usage_counts;
+       }
+
        class ExecuteGraph : public TupleCallBody {
        private:
                SharedDataFlowGraph m_graph;
diff --git a/source/blender/functions/core/data_flow_graph.hpp 
b/source/blender/functions/core/data_flow_graph.hpp
index 304c0af0a5a..96f28c176ba 100644
--- a/source/blender/functions/core/data_flow_graph.hpp
+++ b/source/blender/functions/core/data_flow_graph.hpp
@@ -40,6 +40,7 @@ namespace FN {
                std::string name() const;
 
                friend bool operator==(const Socket &a, const Socket &b);
+               friend std::ostream &operator<<(std::ostream &stream, Socket 
socket);
 
                inline Socket origin() const;
                inline SocketSet targets() const;
@@ -419,6 +420,14 @@ namespace FN {
                        a.m_index == b.m_index);
        }
 
+       inline std::ostream &operator<<(std::ostream &stream, Socket socket)
+       {
+               stream << "<" << socket.node()->function()->name();
+               stream << ", " << ((socket.is_input()) ? "Input" : "Output");
+               stream << ":" << socket.index() << ">";
+               return stream;
+       }
+
        Socket Socket::origin() const
        {
                return this->graph()->m_links.get_origin(*this);

_______________________________________________
Bf-blender-cvs mailing list
[email protected]
https://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to