Timeline now passed via constructor
[Mograsim.git] / era.mi / src / era / mi / logic / components / BasicComponent.java
index 2956fe0..47a3057 100644 (file)
@@ -1,16 +1,16 @@
 package era.mi.logic.components;
 
-import era.mi.logic.Bit;
-import era.mi.logic.Simulation;
-import era.mi.logic.wires.WireArray;
-import era.mi.logic.wires.WireArrayObserver;
+import era.mi.logic.timeline.Timeline;
+import era.mi.logic.types.BitVector;
+import era.mi.logic.wires.Wire.ReadEnd;
+import era.mi.logic.wires.WireObserver;
 
 /**
  * A basic component that recomputes all outputs (with a delay), when it is updated.
  * 
  * @author Fabian Stemmler
  */
-public abstract class BasicComponent implements WireArrayObserver, Component
+public abstract class BasicComponent extends Component implements WireObserver
 {
        private int processTime;
 
@@ -20,15 +20,16 @@ public abstract class BasicComponent implements WireArrayObserver, Component
         * 
         * @author Fabian Stemmler
         */
-       public BasicComponent(int processTime)
+       public BasicComponent(Timeline timeline, int processTime)
        {
+               super(timeline);
                this.processTime = processTime > 0 ? processTime : 1;
        }
 
        @Override
-       public void update(WireArray initiator, Bit[] oldValues)
+       public void update(ReadEnd initiator, BitVector oldValues)
        {
-               Simulation.TIMELINE.addEvent(e -> compute(), processTime);
+               timeline.addEvent(e -> compute(), processTime);
        }
 
        protected abstract void compute();