#pragma once #include #include #include "CircuitElement.h" #include "LogicGate.h" #include "Terminal.h" using LogicGatePtr = std::unique_ptr; class ElectronicCircuit { public: void addInputTerminal(TerminalPtr terminal); void addOutputTerminal(TerminalPtr terminal); void addWire(WirePtr wire); void addLogicGate(LogicGatePtr gate); const std::vector& getInputTerminals() const { return mInputTerminals; } const std::vector& getLogicGates() const { return mLogicGates; } private: std::vector mInputTerminals; std::vector mOutputTerminals; std::vector mWires; std::vector mLogicGates; std::vector > mElements; };