aboutsummaryrefslogtreecommitdiff
path: root/core/src/Model/Workflow/Workflow.hpp
diff options
context:
space:
mode:
authorrtk0c <[email protected]>2021-04-21 09:23:38 -0700
committerrtk0c <[email protected]>2021-04-21 09:23:38 -0700
commitae6364ebb08b4f6934a38e8945518f7b7c7c1875 (patch)
tree75f24a8c1ad5c3e57d5bacfcd38bbac530c8c6a0 /core/src/Model/Workflow/Workflow.hpp
parent1e09caaa2980fe901453b4b90985967a51157887 (diff)
Draft of workflow graph rebuild algorithm (working set based)
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();