1 package era.mi.logic.components;
3 import era.mi.logic.Bit;
4 import era.mi.logic.Simulation;
5 import era.mi.logic.wires.WireArray;
6 import era.mi.logic.wires.WireArrayObserver;
8 public abstract class BasicComponent implements WireArrayObserver, Component
10 private int processTime;
14 * @param processTime Amount of time this component takes to update its outputs. Must be more than 0, otherwise 1 is assumed.
16 * @author Fabian Stemmler
18 public BasicComponent(int processTime)
20 this.processTime = processTime > 0 ? processTime : 1;
24 public void update(WireArray initiator, Bit[] oldValues)
26 Simulation.TIMELINE.addEvent((e) -> {compute();}, processTime);
29 protected abstract void compute();