Maki
Formally verfied low-code orchestration
Toggle main menu visibility
Loading...
Searching...
No Matches
data_flow_model.h
1
#pragma once
2
3
#include <QString>
4
#include <QVariant>
5
#include <optional>
6
#include <unordered_map>
7
#include <vector>
8
9
#include "typing/type_reference.h"
10
11
namespace
maki
12
{
13
14
using
NodeId = QString;
15
using
DataId = QString;
16
23
struct
DataPort
24
{
25
NodeId nodeId;
26
27
QString eventName;
28
QString argumentName;
29
30
bool
operator==(
const
DataPort
& other)
const
31
{
32
return
nodeId == other.nodeId && eventName == other.eventName && argumentName == other.argumentName;
33
}
34
};
35
39
enum class
DataSourceKind
40
{
41
Capability,
42
MissionParameter
43
};
44
52
struct
MissionValue
53
{
54
QVariant value;
55
bool
hasValue =
false
;
56
};
57
71
struct
DataEntry
72
{
73
DataId id;
74
QString name;
75
koda::types::TypeReference type;
76
DataSourceKind
sourceKind = DataSourceKind::Capability;
77
78
std::optional<DataPort> producer;
79
std::vector<DataPort> consumers;
80
std::optional<MissionValue> missionValue;
81
};
82
83
class
DataFlowModel
84
{
85
public
:
86
DataFlowModel() =
default
;
87
88
static
DataFlowModel& instance();
89
void
clear();
90
91
DataId createEntry(
const
QString& name,
const
koda::types::TypeReference& type);
92
DataId createMissionParameter(
const
QString& name,
const
koda::types::TypeReference& type);
93
bool
removeEntry(
const
DataId&
id
);
94
95
DataEntry
* get(
const
DataId&
id
);
96
const
DataEntry
* get(
const
DataId&
id
)
const
;
97
const
std::unordered_map<DataId, DataEntry>& entries()
const
;
98
99
bool
setProducer(
const
DataId&
id
,
const
DataPort
& producer);
100
bool
addConsumer(
const
DataId&
id
,
const
DataPort
& consumer);
101
bool
removeProducer(
const
DataId&
id
);
102
bool
removeConsumer(
const
DataId&
id
,
const
DataPort
& consumer);
103
void
removeNode(
const
NodeId& nodeId);
104
105
std::optional<DataId> entryProducedBy(
const
DataPort
& producer)
const
;
106
std::optional<DataId> entryConsumedBy(
const
DataPort
& consumer)
const
;
107
std::vector<DataId> entriesProducedBy(
const
NodeId& nodeId)
const
;
108
std::vector<DataId> entriesConsumedBy(
const
NodeId& nodeId)
const
;
109
110
bool
setMissionValue(
const
DataId&
id
,
const
QVariant& value);
111
bool
clearMissionValue(
const
DataId&
id
);
112
std::vector<DataId> missionParameters()
const
;
113
114
bool
hasProducer(
const
DataPort
& port)
const
;
115
bool
hasConsumer(
const
DataPort
& port)
const
;
116
bool
isUnused(
const
DataId&
id
)
const
;
117
118
private
:
119
DataId generateId()
const
;
120
121
private
:
122
std::unordered_map<DataId, DataEntry> mEntries;
123
};
124
125
}
// namespace maki
maki
Contains UI helper widgets and layout grouping utilities used by MAKI.
Definition
generator.h:10
maki::DataSourceKind
DataSourceKind
Definition
data_flow_model.h:40
maki::DataEntry
Definition
data_flow_model.h:72
maki::DataPort
Definition
data_flow_model.h:24
maki::MissionValue
Definition
data_flow_model.h:53
Generated for
MAKI
· © 2026 with
Doxygen
1.9.8
GitHub
Research