diff options
author | rtk0c <[email protected]> | 2021-04-21 09:23:38 -0700 |
---|---|---|
committer | rtk0c <[email protected]> | 2021-04-21 09:23:38 -0700 |
commit | ae6364ebb08b4f6934a38e8945518f7b7c7c1875 (patch) | |
tree | 75f24a8c1ad5c3e57d5bacfcd38bbac530c8c6a0 /core/src/Model/Workflow/Workflow.hpp | |
parent | 1e09caaa2980fe901453b4b90985967a51157887 (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.hpp | 12 |
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(); |