Functions: extend multi-function network api

This commit is contained in:
2020-07-07 18:45:34 +02:00
parent adfae89f96
commit 67042aa6a1
3 changed files with 57 additions and 10 deletions

View File

@@ -216,10 +216,18 @@ class MFNetwork : NonCopyable, NonMovable {
void relink(MFOutputSocket &old_output, MFOutputSocket &new_output);
void remove(MFNode &node);
void remove(Span<MFNode *> nodes);
uint max_socket_id() const;
uint socket_id_amount() const;
uint node_id_amount() const;
std::string to_dot() const;
Span<MFDummyNode *> dummy_nodes();
Span<MFFunctionNode *> 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<const MFNode *> marked_nodes = {}) const;
};
/* --------------------------------------------------------------------
@@ -325,7 +333,7 @@ inline Span<const MFOutputSocket *> MFNode::outputs() const
return outputs_;
}
template<typename FuncT> void MFNode::foreach_origin_socket(const FuncT &func) const
template<typename FuncT> 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<const MFInputSocket *> MFOutputSocket::targets() const
* MFNetwork inline methods.
*/
inline uint MFNetwork::max_socket_id() const
inline Span<MFDummyNode *> MFNetwork::dummy_nodes()
{
return socket_or_null_by_id_.size() - 1;
return dummy_nodes_;
}
inline Span<MFFunctionNode *> 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 node_or_null_by_id_.size();
}
} // namespace blender::fn