diff --git a/include/Circuit.hpp b/include/Circuit.hpp index b63a01e..273af9e 100644 --- a/include/Circuit.hpp +++ b/include/Circuit.hpp @@ -14,6 +14,7 @@ #include #include +#include #include "./specialComponents/Input.hpp" namespace nts diff --git a/src/Circuit.cpp b/src/Circuit.cpp index 5179f07..b7e878d 100644 --- a/src/Circuit.cpp +++ b/src/Circuit.cpp @@ -8,6 +8,7 @@ #include "../include/Circuit.hpp" #include "../include/specialComponents/Input.hpp" #include "../include/IComponent.hpp" +#include nts::Circuit::Circuit() : _factory(nts::Factory()), _tick(0) @@ -53,42 +54,47 @@ void nts::Circuit::displayComponentState(const std::string& name, nts::Tristate void nts::Circuit::displayInputs() const { + std::cout << "input(s):" << std::endl; + std::map sortedInputs; + for (const auto &component : _components) { - //check if it is true/false or if it is an actual input/clock if (isTrueFalseComponent(*component.second)) continue; - if (component.first == "true" || component.first == "false" || component.first == "undefined") continue; auto clock = dynamic_cast(component.second.get()); if (clock != nullptr) { - displayComponentState(clock->getName(), clock->getState()); + sortedInputs[clock->getName()] = clock->getState(); continue; } auto input = dynamic_cast(component.second.get()); if (input != nullptr) { - displayComponentState(input->getName(), input->getState()); + sortedInputs[input->getName()] = input->getState(); + continue; } auto trueComponent = dynamic_cast(component.second.get()); if (trueComponent != nullptr) { - displayComponentState(trueComponent->getName(), trueComponent->getState()); + sortedInputs[trueComponent->getName()] = trueComponent->getState(); + continue; } auto falseComponent = dynamic_cast(component.second.get()); if (falseComponent != nullptr) { - displayComponentState(falseComponent->getName(), falseComponent->getState()); + sortedInputs[falseComponent->getName()] = falseComponent->getState(); } } + for (const auto &[name, state] : sortedInputs) { + displayComponentState(name, state); + } } void nts::Circuit::display() const { std::cout << "tick: " << _tick << std::endl; - std::cout << "input(s):" << std::endl; displayInputs(); std::cout << "output(s):" << std::endl; for (const auto &output : _outputs) {