Updated component and bus generation logic + bugfixes

This commit is contained in:
Borna Rajković committed 2022-05-31 01:05:08 +02:00
1 parent 86b8861533
commit f93a2afa63
14 files changed
+208 -68

No files matched your search

+7 -3
View File
@@ -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
View File
@@ -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();
+23 -7
View File
@@ -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) {