aboutsummaryrefslogtreecommitdiff
path: root/GateOr.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'GateOr.cpp')
-rw-r--r--GateOr.cpp23
1 files changed, 23 insertions, 0 deletions
diff --git a/GateOr.cpp b/GateOr.cpp
new file mode 100644
index 0000000..db1e04a
--- /dev/null
+++ b/GateOr.cpp
@@ -0,0 +1,23 @@
+#include "GateOr.h"
+
+GateOr GateOr::instance(GateOr::type);
+
+SignalLevel GateOr::level() {
+ if (this->inputs.size() < 1) throw CircuitException("Or-gate input size error");
+
+ SignalLevel new_level = LOW;
+ for (int i = 0; i < this->inputs.size(); i++){
+ SignalLevel l = this->inputs[i]->getLevel();
+
+ if (l == UNDEFINED) return UNDEFINED;
+ if (l == HIGH) new_level = HIGH;
+ }
+ return new_level;
+}
+
+GateOr::GateOr(const GateOr * prototype) : Node() { }
+
+GateOr * GateOr::clone() const {
+ return new GateOr(this);
+}
+