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