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.timeline.TimelineEventHandler;
11 import net.mograsim.logic.core.types.Bit;
12 import net.mograsim.logic.core.types.BitVector;
13 import net.mograsim.logic.core.wires.CoreWire.ReadEnd;
14 import net.mograsim.logic.core.wires.CoreWire.ReadWriteEnd;
16 public class CoreBitDisplay extends BasicCoreComponent implements LogicObservable
18 private Collection<LogicObserver> observers;
19 private final ReadEnd in;
20 private BitVector displayedValue;
22 public CoreBitDisplay(Timeline timeline, ReadEnd in)
25 observers = new ArrayList<>();
27 in.registerObserver(this);
32 protected TimelineEventHandler compute()
34 BitVector newValues = in.getValues();
37 displayedValue = newValues;
42 public BitVector getDisplayedValue()
44 return displayedValue;
47 public boolean isDisplaying(Bit... values)
49 return displayedValue.equals(BitVector.of(values));
53 public List<ReadEnd> getAllInputs()
59 public List<ReadWriteEnd> getAllOutputs()
65 public void registerObserver(LogicObserver ob)
71 public void deregisterObserver(LogicObserver ob)
77 public void notifyObservers()
79 observers.forEach(ob -> ob.update(this));