Exchanged all Bit[] by BitVector, tests work
[Mograsim.git] / era.mi / src / era / mi / logic / components / BasicComponent.java
1 package era.mi.logic.components;\r
2 \r
3 import era.mi.logic.Simulation;\r
4 import era.mi.logic.types.BitVector;\r
5 import era.mi.logic.wires.Wire;\r
6 import era.mi.logic.wires.WireObserver;\r
7 \r
8 /**\r
9  * A basic component that recomputes all outputs (with a delay), when it is updated.\r
10  * \r
11  * @author Fabian Stemmler\r
12  */\r
13 public abstract class BasicComponent implements WireObserver, Component\r
14 {\r
15         private int processTime;\r
16 \r
17         /**\r
18          * \r
19          * @param processTime Amount of time this component takes to update its outputs. Must be more than 0, otherwise 1 is assumed.\r
20          * \r
21          * @author Fabian Stemmler\r
22          */\r
23         public BasicComponent(int processTime)\r
24         {\r
25                 this.processTime = processTime > 0 ? processTime : 1;\r
26         }\r
27 \r
28         @Override\r
29         public void update(Wire initiator, BitVector oldValues)\r
30         {\r
31                 Simulation.TIMELINE.addEvent(e -> compute(), processTime);\r
32         }\r
33 \r
34         protected abstract void compute();\r
35 }\r