1 package era.mi.logic.components;
3 import era.mi.logic.Simulation;
4 import era.mi.logic.types.BitVector;
5 import era.mi.logic.wires.Wire;
6 import era.mi.logic.wires.WireObserver;
9 * A basic component that recomputes all outputs (with a delay), when it is updated.
11 * @author Fabian Stemmler
13 public abstract class BasicComponent implements WireObserver, Component
15 private int processTime;
19 * @param processTime Amount of time this component takes to update its outputs. Must be more than 0, otherwise 1 is assumed.
21 * @author Fabian Stemmler
23 public BasicComponent(int processTime)
25 this.processTime = processTime > 0 ? processTime : 1;
29 public void update(Wire initiator, BitVector oldValues)
31 Simulation.TIMELINE.addEvent(e -> compute(), processTime);
34 protected abstract void compute();