Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJacques Lucke <jacques@blender.org>2020-06-30 19:03:02 +0300
committerJacques Lucke <jacques@blender.org>2020-06-30 19:18:48 +0300
commit67da2bd23a5496e5f2228a20e54c138c3d03d9eb (patch)
treec004c9a63600abd15b13960840f6065c976bb80b /source/blender/functions/FN_multi_function_network.hh
parentd67b7f3b5236d636d5bd35a917d13b9f06452df0 (diff)
Functions: add methods to multi-function network classes
Those are necessary to query and modify the network.
Diffstat (limited to 'source/blender/functions/FN_multi_function_network.hh')
-rw-r--r--source/blender/functions/FN_multi_function_network.hh47
1 files changed, 47 insertions, 0 deletions
diff --git a/source/blender/functions/FN_multi_function_network.hh b/source/blender/functions/FN_multi_function_network.hh
index e1d5ce8bd69..bb0c870746b 100644
--- a/source/blender/functions/FN_multi_function_network.hh
+++ b/source/blender/functions/FN_multi_function_network.hh
@@ -156,6 +156,15 @@ class MFSocket : NonCopyable, NonMovable {
MFNode &node();
const MFNode &node() const;
+
+ bool is_input() const;
+ bool is_output() const;
+
+ MFInputSocket &as_input();
+ const MFInputSocket &as_input() const;
+
+ MFOutputSocket &as_output();
+ const MFOutputSocket &as_output() const;
};
class MFInputSocket : public MFSocket {
@@ -205,6 +214,10 @@ class MFNetwork : NonCopyable, NonMovable {
MFOutputSocket &add_input(StringRef name, MFDataType data_type);
MFInputSocket &add_output(StringRef name, MFDataType data_type);
+ void relink(MFOutputSocket &old_output, MFOutputSocket &new_output);
+
+ void remove(MFNode &node);
+
uint max_socket_id() const;
std::string to_dot() const;
@@ -405,6 +418,40 @@ inline const MFNode &MFSocket::node() const
return *m_node;
}
+inline bool MFSocket::is_input() const
+{
+ return !m_is_output;
+}
+
+inline bool MFSocket::is_output() const
+{
+ return m_is_output;
+}
+
+inline MFInputSocket &MFSocket::as_input()
+{
+ BLI_assert(this->is_input());
+ return *(MFInputSocket *)this;
+}
+
+inline const MFInputSocket &MFSocket::as_input() const
+{
+ BLI_assert(this->is_input());
+ return *(const MFInputSocket *)this;
+}
+
+inline MFOutputSocket &MFSocket::as_output()
+{
+ BLI_assert(this->is_output());
+ return *(MFOutputSocket *)this;
+}
+
+inline const MFOutputSocket &MFSocket::as_output() const
+{
+ BLI_assert(this->is_output());
+ return *(const MFOutputSocket *)this;
+}
+
/* --------------------------------------------------------------------
* MFInputSocket inline methods.
*/