package net.mograsim.logic.core.components;\r
\r
+import java.util.ArrayList;\r
+import java.util.Collection;\r
import java.util.List;\r
\r
+import net.mograsim.logic.core.LogicObservable;\r
+import net.mograsim.logic.core.LogicObserver;\r
import net.mograsim.logic.core.timeline.Timeline;\r
import net.mograsim.logic.core.types.Bit;\r
import net.mograsim.logic.core.types.BitVector;\r
import net.mograsim.logic.core.wires.Wire.ReadEnd;\r
import net.mograsim.logic.core.wires.Wire.ReadWriteEnd;\r
\r
-public class BitDisplay extends BasicComponent\r
+public class BitDisplay extends BasicComponent implements LogicObservable\r
{\r
+ private Collection<LogicObserver> observers;\r
private final ReadEnd in;\r
private BitVector displayedValue;\r
\r
public BitDisplay(Timeline timeline, ReadEnd in)\r
{\r
super(timeline, 1);\r
+ observers = new ArrayList<>();\r
this.in = in;\r
in.registerObserver(this);\r
compute();\r
protected void compute()\r
{\r
displayedValue = in.getValues();\r
+ notifyObservers();\r
}\r
\r
public BitVector getDisplayedValue()\r
{\r
return List.of();\r
}\r
+\r
+ @Override\r
+ public void registerObserver(LogicObserver ob)\r
+ {\r
+ observers.add(ob);\r
+ }\r
+\r
+ @Override\r
+ public void deregisterObserver(LogicObserver ob)\r
+ {\r
+ observers.remove(ob);\r
+ }\r
+\r
+ @Override\r
+ public void notifyObservers()\r
+ {\r
+ observers.forEach(ob -> ob.update(this));\r
+ }\r
}\r