diff --git a/src/event.cpp b/src/event.cpp index b2c71a7..8838972 100644 --- a/src/event.cpp +++ b/src/event.cpp @@ -11,3 +11,4 @@ bool event::operator<(const event &e1) { } return evTime > e1.evTime; } + diff --git a/src/nandGate.cpp b/src/nandGate.cpp index e69de29..d99ab8a 100644 --- a/src/nandGate.cpp +++ b/src/nandGate.cpp @@ -0,0 +1,21 @@ +#include "nandGate.h" + +nandGate::nandGate(int d, wire * wire1, wire * wire2, wire * wire3) +{ + in1 = wire1; + in2 = wire2; + out = wire3; + delay = d; +} + +int nandGate::evaluate(int time) +{ + if (in1->getValue(time) == 0 || in2->getValue(time) == 0) { + out->setValue(1, time + delay); + return 1; + } + else if{ + out->setValue(0, time + delay); + return 0; + } +} \ No newline at end of file diff --git a/src/nandGate.h b/src/nandGate.h index f2ab0fd..1144f4c 100644 --- a/src/nandGate.h +++ b/src/nandGate.h @@ -1,10 +1,15 @@ -#ifndef AND -#define AND +#ifndef NAND +#define NAND +#include "gate.h" +#include "event.h" +#include "wire.h" -class andGate : public gate { +using namespace std; + +class nandGate : public gate { public: - andGate(wire* wire1 = nullptr, wire* wire2 = nullptr, wire* wire3 = nullptr); - int evaluate(); + nandGate(int d, wire* wire1 = nullptr, wire* wire2 = nullptr, wire* wire3 = nullptr); + int evaluate(int time); }; -#endif // !AND +#endif // !NAND