From 42037af8fab5788fc02bbcf69b4e42189b69b98e 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 | 3 +++ 4 files changed, 14 insertions(+), 8 deletions(-) diff --git a/src/gate.h b/src/gate.h index 1c40065..e48e16f 100644 --- a/src/gate.h +++ b/src/gate.h @@ -11,6 +11,7 @@ class gate { wire *in1, *in2, *out; priority_queue *e; 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 3ebd4c9..b60333c 100644 --- a/src/notGate.h +++ b/src/notGate.h @@ -1,5 +1,8 @@ #ifndef NOT #define NOT +#include "gate.h" +#include "wire.h" +#include "event.h" class not : public gate { notGate(priority_queue *eQueue, int d, wire* wire1, wire* wire2);