From 441fda70cee914834522a59091e9771a27398b63 Mon Sep 17 00:00:00 2001 From: daniel Date: Mon, 10 Apr 2017 20:28:37 -0400 Subject: [PATCH] Add Queue as input for nand constructor --- src/gate.h | 1 + src/nandGate.cpp | 14 ++++++++------ src/nandGate.h | 4 ++-- src/notGate.h | 5 ++++- 4 files changed, 15 insertions(+), 9 deletions(-) diff --git a/src/gate.h b/src/gate.h index acb0281..557b4ee 100644 --- a/src/gate.h +++ b/src/gate.h @@ -10,6 +10,7 @@ class gate { protected: wire *in1, *in2, *out; int delay; + priority_queue *e; }; #endif // !GATE diff --git a/src/nandGate.cpp b/src/nandGate.cpp index d99ab8a..4f535ef 100644 --- a/src/nandGate.cpp +++ b/src/nandGate.cpp @@ -1,21 +1,23 @@ #include "nandGate.h" -nandGate::nandGate(int d, wire * wire1, wire * wire2, wire * wire3) +nandGate::nandGate(priority_queue *eQueue, int d, wire * wire1, wire * wire2, wire * wire3) { in1 = wire1; in2 = wire2; out = wire3; delay = d; + e = eQueue; } -int nandGate::evaluate(int time) +void nandGate::evaluate(int time) { if (in1->getValue(time) == 0 || in2->getValue(time) == 0) { - out->setValue(1, time + delay); - return 1; + if (out->getValue(time + delay) != 1) { + + out->setValue(1, time + delay); + } } - else if{ + else { out->setValue(0, time + delay); - return 0; } } \ No newline at end of file diff --git a/src/nandGate.h b/src/nandGate.h index 1144f4c..bb0c001 100644 --- a/src/nandGate.h +++ b/src/nandGate.h @@ -8,8 +8,8 @@ using namespace std; class nandGate : public gate { public: - nandGate(int d, wire* wire1 = nullptr, wire* wire2 = nullptr, wire* wire3 = nullptr); - int evaluate(int time); + nandGate(priority_queue *eQueue, int d, wire* wire1, wire* wire2, wire* wire3); + void evaluate(int time); }; #endif // !NAND diff --git a/src/notGate.h b/src/notGate.h index af06f5a..f0ad975 100644 --- a/src/notGate.h +++ b/src/notGate.h @@ -1,7 +1,10 @@ #ifndef NOT #define NOT +#include "gate.h" +#include "wire.h" +#include "event.h" -class not : public gate { +class notGate : public gate { notGate(int delay, wire* wire1 = nullptr, wire* wire2 = nullptr); int evaluate(); };