From 67042aa6a10bc2523ca0534f9ae4dbd276f6a59c Mon Sep 17 00:00:00 2001 From: Jacques Lucke Date: Tue, 7 Jul 2020 18:45:34 +0200 Subject: Functions: extend multi-function network api --- .../blender/functions/FN_multi_function_network.hh | 43 +++++++++++++++++++--- 1 file changed, 38 insertions(+), 5 deletions(-) (limited to 'source/blender/functions/FN_multi_function_network.hh') diff --git a/source/blender/functions/FN_multi_function_network.hh b/source/blender/functions/FN_multi_function_network.hh index a9d8508cdb8..413f68a8531 100644 --- a/source/blender/functions/FN_multi_function_network.hh +++ b/source/blender/functions/FN_multi_function_network.hh @@ -216,10 +216,18 @@ class MFNetwork : NonCopyable, NonMovable { void relink(MFOutputSocket &old_output, MFOutputSocket &new_output); void remove(MFNode &node); + void remove(Span nodes); - uint max_socket_id() const; + uint socket_id_amount() const; + uint node_id_amount() const; - std::string to_dot() const; + Span dummy_nodes(); + Span function_nodes(); + + MFNode *node_or_null_by_id(uint id); + const MFNode *node_or_null_by_id(uint id) const; + + std::string to_dot(Span marked_nodes = {}) const; }; /* -------------------------------------------------------------------- @@ -325,7 +333,7 @@ inline Span MFNode::outputs() const return outputs_; } -template void MFNode::foreach_origin_socket(const FuncT &func) const +template inline void MFNode::foreach_origin_socket(const FuncT &func) const { for (const MFInputSocket *socket : inputs_) { const MFOutputSocket *origin = socket->origin(); @@ -483,9 +491,34 @@ inline Span MFOutputSocket::targets() const * MFNetwork inline methods. */ -inline uint MFNetwork::max_socket_id() const +inline Span MFNetwork::dummy_nodes() +{ + return dummy_nodes_; +} + +inline Span MFNetwork::function_nodes() +{ + return function_nodes_; +} + +inline MFNode *MFNetwork::node_or_null_by_id(uint id) +{ + return node_or_null_by_id_[id]; +} + +inline const MFNode *MFNetwork::node_or_null_by_id(uint id) const +{ + return node_or_null_by_id_[id]; +} + +inline uint MFNetwork::socket_id_amount() const +{ + return socket_or_null_by_id_.size(); +} + +inline uint MFNetwork::node_id_amount() const { - return socket_or_null_by_id_.size() - 1; + return node_or_null_by_id_.size(); } } // namespace blender::fn -- cgit v1.2.3