📄 wires.cpp
字号:
#include "wires.h"
#include "strutils.h"
#include "gates.h"
int Wire::ourCount = 0;
Wire::Wire(const string& name)
: mySignal(false),
myName(name),
myNumber(ourCount)
{
ourCount++;
}
Wire::~Wire()
{
// to implement
}
bool Wire::GetSignal() const
{
return mySignal;
}
string Wire::tostring() const
{
return myName + " (wire " + ::tostring(myNumber) + ")";
}
ostream& operator << (ostream& out, const Wire& w)
{
out << w.tostring();
return out;
}
void Wire::SetSignal(bool signal)
{
if (signal != mySignal)
{ mySignal = signal;
int k;
for(k=0; k < myGates.size(); k++)
{ myGates[k]->Act( );
}
}
}
void Wire::AddGate(Gate * g)
{
myGates.push_back(g);
g->Act();
}
int Wire::Number() const
{
return myNumber;
}
void Wire::RemoveGate(Gate * g)
{
int k;
for(k=0; k < myGates.size(); k++)
{ if (myGates[k] == g)
{ myGates[k] = myGates[myGates.size() - 1];
myGates.pop_back();
return;
}
}
}
WireFactory::WireFactory()
{
}
WireFactory::~WireFactory()
{
int k;
for(k=0; k < myWires.size(); k++)
{ //delete myWires[k];
}
}
Wire * WireFactory::MakeWire(const string& name)
{
Wire * w = new Wire(name);
myWires.push_back(w);
return w;
}
Wire * WireFactory::GetWire(int num) const
{ int k;
for(k=0; k < myWires.size(); k++)
{ if (myWires[k]->Number() == num) return myWires[k];
}
return 0;
}
ConnectorIterator::ConnectorIterator(Wire * w)
: myWire(w),
myConnector(0),
myIndex(-1)
{
}
void ConnectorIterator::Init()
{
myIndex = -1;
Next(); // find first, starting after myIndex
}
bool ConnectorIterator::HasMore()
{
return myConnector != 0;
}
void ConnectorIterator::Next()
{
int k;
myConnector = 0;
for(k=myIndex+1; k < myWire->myGates.size(); k++)
{ Connector * c= dynamic_cast<Connector *> (myWire->myGates[k]);
if (c != 0)
{ myConnector = c;
myIndex = k;
break;
}
}
}
Connector * ConnectorIterator::Current()
{
return myConnector;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -