aboutsummaryrefslogtreecommitdiff
path: root/core/src/Model/Workflow/Workflow.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'core/src/Model/Workflow/Workflow.hpp')
-rw-r--r--core/src/Model/Workflow/Workflow.hpp12
1 files changed, 12 insertions, 0 deletions
diff --git a/core/src/Model/Workflow/Workflow.hpp b/core/src/Model/Workflow/Workflow.hpp
index a7b2c31..bfed722 100644
--- a/core/src/Model/Workflow/Workflow.hpp
+++ b/core/src/Model/Workflow/Workflow.hpp
@@ -99,6 +99,7 @@ protected:
std::vector<OutputPin> mOutputs;
Type mType;
Kind mKind;
+ int mDepth;
public:
WorkflowNode(Type type, Kind kind);
@@ -144,6 +145,7 @@ private:
std::vector<WorkflowConnection> mConnections;
std::vector<std::unique_ptr<WorkflowNode>> mNodes;
std::vector<std::unique_ptr<BaseValue>> mConstants;
+ bool mDepthsDirty = true;
public:
WorkflowConnection* GetConnectionById(size_t id);
@@ -157,6 +159,16 @@ public:
bool DisconnectBySource(WorkflowNode& sourceNode, int sourcePin);
bool DisconnectByDestination(WorkflowNode& destinationNode, int destinationPin);
+ void RemoveConnection(size_t id);
+
+ bool DoesDepthNeedsUpdate() const;
+
+ enum GraphUpdateResult {
+ Success,
+ CyclicReference,
+ };
+ GraphUpdateResult UpdateGraph();
+
private:
std::pair<WorkflowConnection&, size_t> AllocWorkflowConnection();
std::pair<std::unique_ptr<WorkflowNode>&, size_t> AllocWorkflowStep();