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.hpp21
1 files changed, 18 insertions, 3 deletions
diff --git a/core/src/Model/Workflow/Workflow.hpp b/core/src/Model/Workflow/Workflow.hpp
index db341af..139a96e 100644
--- a/core/src/Model/Workflow/Workflow.hpp
+++ b/core/src/Model/Workflow/Workflow.hpp
@@ -113,7 +113,7 @@ public:
static const char* FormatType(Type type);
static std::unique_ptr<WorkflowNode> CreateByKind(Kind kind);
- WorkflowNode(Type type, Kind kind);
+ WorkflowNode(Kind kind);
virtual ~WorkflowNode() = default;
WorkflowNode(const WorkflowNode&) = delete;
@@ -179,10 +179,24 @@ private:
bool mDepthsDirty = true;
public:
+ /* Graph access */
+
+ const std::vector<WorkflowConnection>& GetConnections() const;
+ std::vector<WorkflowConnection>& GetConnections();
+ const std::vector<std::unique_ptr<WorkflowNode>>& GetNodes() const;
+ std::vector<std::unique_ptr<WorkflowNode>>& GetNodes();
+ const std::vector<std::unique_ptr<BaseValue>>& GetConstants() const;
+ std::vector<std::unique_ptr<BaseValue>>& GetConstants();
+
WorkflowConnection* GetConnectionById(size_t id);
WorkflowNode* GetStepById(size_t id);
BaseValue* GetConstantById(size_t id);
+ const std::vector<std::vector<size_t>>& GetDepthGroups() const;
+ bool DoesDepthNeedsUpdate() const;
+
+ /* Graph mutation */
+
void AddStep(std::unique_ptr<WorkflowNode> step);
void RemoveStep(size_t id);
@@ -192,8 +206,7 @@ public:
bool DisconnectBySource(WorkflowNode& sourceNode, int sourcePin);
bool DisconnectByDestination(WorkflowNode& destinationNode, int destinationPin);
- const std::vector<std::vector<size_t>>& GetDepthGroups() const;
- bool DoesDepthNeedsUpdate() const;
+ /* Graph rebuild */
struct GraphUpdate_Success {};
struct GraphUpdate_NoWorkToDo {};
@@ -213,6 +226,8 @@ public:
/// When `getInfo == false, the corresponding error code is returned but without/with empty payloads.
GraphUpdateResult UpdateGraph(bool getInfo = true);
+ /* Serialization */
+
enum ReadResult {
ReadSuccess,
ReadInvalidVersion,