1 package mograsim.logic.core.components;
3 import mograsim.logic.core.timeline.Timeline;
4 import mograsim.logic.core.types.BitVector;
5 import mograsim.logic.core.wires.WireObserver;
6 import mograsim.logic.core.wires.Wire.ReadEnd;
9 * A basic component that recomputes all outputs (with a delay), when it is updated.
11 * @author Fabian Stemmler
13 public abstract class BasicComponent extends Component implements WireObserver
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(Timeline timeline, int processTime)
26 this.processTime = processTime > 0 ? processTime : 1;
30 public void update(ReadEnd initiator, BitVector oldValues)
32 timeline.addEvent(e -> compute(), processTime);
35 protected abstract void compute();