-package era.mi.logic.components;
-
-import era.mi.logic.Simulation;
-import era.mi.logic.WireArray;
-import era.mi.logic.WireArrayObserver;
-
-public abstract class BasicComponent implements WireArrayObserver
-{
- private int processTime;
-
- /**
- *
- * @param processTime Amount of time this component takes to update its outputs. Must be more than 0, otherwise 1 is assumed.
- *
- * @author Fabian Stemmler
- */
- public BasicComponent(int processTime)
- {
- this.processTime = processTime > 0 ? processTime : 1;
- }
-
- @Override
- public void update(WireArray initiator)
- {
- Simulation.TIMELINE.addEvent((e) -> {compute();}, processTime);
- }
-
- protected abstract void compute();
-}
+package era.mi.logic.components;\r
+\r
+import era.mi.logic.Bit;\r
+import era.mi.logic.Simulation;\r
+import era.mi.logic.wires.WireArray;\r
+import era.mi.logic.wires.WireArrayObserver;\r
+\r
+/**\r
+ * A basic component that recomputes all outputs (with a delay), when it is updated.\r
+ * \r
+ * @author Fabian Stemmler\r
+ */\r
+public abstract class BasicComponent implements WireArrayObserver, Component {\r
+ private int processTime;\r
+\r
+ /**\r
+ * \r
+ * @param processTime Amount of time this component takes to update its outputs. Must be more than 0, otherwise 1 is assumed.\r
+ * \r
+ * @author Fabian Stemmler\r
+ */\r
+ public BasicComponent(int processTime) {\r
+ this.processTime = processTime > 0 ? processTime : 1;\r
+ }\r
+\r
+ @Override\r
+ public void update(WireArray initiator, Bit[] oldValues) {\r
+ Simulation.TIMELINE.addEvent((e) -> {\r
+ compute();\r
+ }, processTime);\r
+ }\r
+\r
+ protected abstract void compute();\r
+}\r