Updated component and bus generation logic + bugfixes
This commit is contained in:
1 parent
86b8861533
commit
f93a2afa63
14 files changed
+208
-68
No files matched your search
@@ -10,6 +10,11 @@ namespace domain {
|
||||
return name;
|
||||
}
|
||||
|
||||
std::string Bus::getInstanceName() {
|
||||
return instanceName;
|
||||
}
|
||||
|
||||
|
||||
int Wire::getWidth() {
|
||||
return width;
|
||||
}
|
||||
@@ -30,9 +35,9 @@ namespace domain {
|
||||
return type;
|
||||
}
|
||||
|
||||
Bus::Bus(std::string name, std::string tooltip, BusType type, std::pair<int, int> count, std::vector<Wire> wires,
|
||||
Bus::Bus(std::string name, std::string instanceName, std::string tooltip, BusType type, std::pair<int, int> count, std::vector<Wire> wires,
|
||||
std::optional<ui::Bus> displayBus)
|
||||
: name(name), tooltip(tooltip), type(type), count(count), wires(wires), displayBus(displayBus) {}
|
||||
: name(name), instanceName(instanceName), tooltip(tooltip), type(type), count(count), wires(wires), displayBus(displayBus) {}
|
||||
|
||||
std::string Bus::getName() {
|
||||
return name;
|
||||
@@ -57,5 +62,4 @@ namespace domain {
|
||||
std::optional<ui::Bus> Bus::getDisplayBus() {
|
||||
return displayBus;
|
||||
}
|
||||
|
||||
} // namespace domain
|
||||
+4
-1
@@ -54,6 +54,7 @@ namespace domain {
|
||||
};
|
||||
private:
|
||||
std::string name;
|
||||
std::string instanceName;
|
||||
std::string tooltip;
|
||||
BusType type;
|
||||
|
||||
@@ -62,11 +63,13 @@ namespace domain {
|
||||
std::vector<Wire> wires;
|
||||
|
||||
public:
|
||||
Bus(std::string name, std::string tooltip, BusType type, std::pair<int, int> count, std::vector<Wire> wires,
|
||||
Bus(std::string name, std::string instanceName, std::string tooltip, BusType type, std::pair<int, int> count, std::vector<Wire> wires,
|
||||
std::optional<ui::Bus> display = std::nullopt);
|
||||
|
||||
std::string getName();
|
||||
|
||||
std::string getInstanceName();
|
||||
|
||||
std::string getTooltip();
|
||||
|
||||
BusType getType();
|
||||
|
||||
@@ -167,8 +167,7 @@ namespace domain {
|
||||
}
|
||||
|
||||
for (auto &comp: node.components) {
|
||||
std::optional<Component> component;
|
||||
component = loadComponent(comp);
|
||||
auto component = loadComponent(comp);
|
||||
if (component) {
|
||||
components.push_back(*component);
|
||||
}
|
||||
@@ -196,13 +195,24 @@ namespace domain {
|
||||
}
|
||||
}
|
||||
|
||||
return Library(name, libraryInfo, header, componentDirectory, componentHeader, addressSpaces, components, buses,
|
||||
connections, messages);
|
||||
if(errors.empty()) {
|
||||
return Library(name, libraryInfo, header, componentDirectory, componentHeader, addressSpaces, components, buses,
|
||||
connections, messages);
|
||||
} else {
|
||||
return nullopt;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
std::optional<Bus> SchemaCreator::loadBus(BusNode node) {
|
||||
std::string busName = node.name.value;
|
||||
|
||||
if (!node.instanceName) {
|
||||
errors.emplace_back(node.span, "missing @instanceName");
|
||||
return nullopt;
|
||||
}
|
||||
std::string instanceName = node.instanceName->value;
|
||||
|
||||
auto count = std::make_pair<int, int>(1, 1);
|
||||
if (node.count) {
|
||||
count = std::make_pair<int, int>(node.count->first.value, node.count->second.value);
|
||||
@@ -259,7 +269,7 @@ namespace domain {
|
||||
return nullopt;
|
||||
}
|
||||
|
||||
return Bus(busName, tooltip, type, count, wires, displayBus);
|
||||
return Bus(busName, instanceName, tooltip, type, count, wires, displayBus);
|
||||
}
|
||||
|
||||
|
||||
@@ -497,7 +507,7 @@ namespace domain {
|
||||
pop();
|
||||
return nullopt;
|
||||
}
|
||||
std::string instanceName = node.instanceName->asString();
|
||||
std::string instanceName = node.instanceName->value;
|
||||
|
||||
auto count = std::make_pair<int, int>(1, 1);
|
||||
if (node.count) {
|
||||
@@ -950,7 +960,13 @@ namespace domain {
|
||||
}
|
||||
}
|
||||
|
||||
return schema;
|
||||
if(errors.empty()) {
|
||||
return schema;
|
||||
} else {
|
||||
delete schema;
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
shared_ptr<ComponentInstance> SchemaCreator::loadComponentInstance(InstanceNode instance, Library &library) {
|
||||
|
||||
Reference in new issue
Block a user