aboutsummaryrefslogtreecommitdiff
path: root/GateOr.cpp
blob: db1e04a2cf25248c84b4a7ff094bce70abfee4fb (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
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);
}