diff options
Diffstat (limited to 'Node.cpp')
-rw-r--r-- | Node.cpp | 16 |
1 files changed, 15 insertions, 1 deletions
@@ -17,8 +17,22 @@ void Node::setOutput(Net * net){ this->output = net; } +void Node::sim() { + size_t input_size = this->inputs.size(); + if (this->min_inputs >= 0 && input_size < min_inputs) + throw CircuitException("Too few inputs"); + if (this->max_inputs >= 0 && input_size > max_inputs) + throw CircuitException("Too many inputs"); + + SignalLevel new_out = this->level(); + + if (new_out == UNDEFINED) return; + if (this->output->getLevel() == new_out) return; + + this->output->setLevel(new_out); +} + void Node::update(){ - std::cout << "updated" << std::endl; this->sim(); } |