1 package net.mograsim.logic.core.components;
\r
3 import java.util.ArrayList;
\r
4 import java.util.Collection;
\r
5 import java.util.List;
\r
7 import net.mograsim.logic.core.LogicObservable;
\r
8 import net.mograsim.logic.core.LogicObserver;
\r
9 import net.mograsim.logic.core.timeline.Timeline;
\r
10 import net.mograsim.logic.core.types.Bit;
\r
11 import net.mograsim.logic.core.types.BitVector;
\r
12 import net.mograsim.logic.core.wires.Wire.ReadEnd;
\r
13 import net.mograsim.logic.core.wires.Wire.ReadWriteEnd;
\r
15 public class BitDisplay extends BasicComponent implements LogicObservable
\r
17 private Collection<LogicObserver> observers;
\r
18 private final ReadEnd in;
\r
19 private BitVector displayedValue;
\r
21 public BitDisplay(Timeline timeline, ReadEnd in)
\r
24 observers = new ArrayList<>();
\r
26 in.registerObserver(this);
\r
31 protected void compute()
\r
33 displayedValue = in.getValues();
\r
37 public BitVector getDisplayedValue()
\r
39 return displayedValue;
\r
42 public boolean isDisplaying(Bit... values)
\r
44 return displayedValue.equals(BitVector.of(values));
\r
48 public List<ReadEnd> getAllInputs()
\r
54 public List<ReadWriteEnd> getAllOutputs()
\r
60 public void registerObserver(LogicObserver ob)
\r
66 public void deregisterObserver(LogicObserver ob)
\r
68 observers.remove(ob);
\r
72 public void notifyObservers()
\r
74 observers.forEach(ob -> ob.update(this));
\r