52 lines
864 B
C++
52 lines
864 B
C++
#pragma once
|
|
|
|
#include "Memory.h"
|
|
#include "Vector.h"
|
|
|
|
#include "CircuitElement.h"
|
|
#include "LogicGate.h"
|
|
#include "Terminal.h"
|
|
|
|
using LogicGatePtr = Ptr<LogicGate>;
|
|
|
|
class ElectronicCircuit
|
|
{
|
|
public:
|
|
void addInputTerminal(TerminalPtr terminal);
|
|
|
|
void addOutputTerminal(TerminalPtr terminal);
|
|
|
|
void addWire(WirePtr wire);
|
|
|
|
void addLogicGate(LogicGatePtr gate);
|
|
|
|
const Vector<Terminal*>& getInputTerminals() const
|
|
{
|
|
return mInputTerminals;
|
|
}
|
|
|
|
const Vector<Terminal*>& getOutputTerminals() const
|
|
{
|
|
return mOutputTerminals;
|
|
}
|
|
|
|
const Vector<LogicGate*>& getLogicGates() const
|
|
{
|
|
return mLogicGates;
|
|
}
|
|
|
|
const Vector<Wire*>& getWires() const
|
|
{
|
|
return mWires;
|
|
}
|
|
|
|
private:
|
|
Vector<Terminal*> mInputTerminals;
|
|
Vector<Terminal*> mOutputTerminals;
|
|
|
|
Vector<Wire*> mWires;
|
|
|
|
Vector<LogicGate*> mLogicGates;
|
|
|
|
Vector<Ptr<CircuitElement> > mElements;
|
|
};
|