WireEnd functionality split into ReadEnd and ReadWriteEnd
[Mograsim.git] / era.mi / src / era / mi / logic / components / BitDisplay.java
1 package era.mi.logic.components;\r
2 \r
3 import java.util.List;\r
4 \r
5 import era.mi.logic.types.Bit;\r
6 import era.mi.logic.types.BitVector;\r
7 import era.mi.logic.wires.Wire.ReadEnd;\r
8 import era.mi.logic.wires.Wire.ReadWriteEnd;\r
9 \r
10 public class BitDisplay extends BasicComponent\r
11 {\r
12         private final ReadEnd in;\r
13         private BitVector displayedValue;\r
14 \r
15         public BitDisplay(ReadEnd in)\r
16         {\r
17                 super(1);\r
18                 this.in = in;\r
19                 in.addObserver(this);\r
20                 compute();\r
21         }\r
22 \r
23         @Override\r
24         protected void compute()\r
25         {\r
26                 displayedValue = in.getValues();\r
27         }\r
28 \r
29         public BitVector getDisplayedValue()\r
30         {\r
31                 return displayedValue;\r
32         }\r
33 \r
34         public boolean isDisplaying(Bit... values)\r
35         {\r
36                 return displayedValue.equals(BitVector.of(values));\r
37         }\r
38 \r
39         @Override\r
40         public List<ReadEnd> getAllInputs()\r
41         {\r
42                 return List.of(in);\r
43         }\r
44 \r
45         @Override\r
46         public List<ReadWriteEnd> getAllOutputs()\r
47         {\r
48                 return List.of();\r
49         }\r
50 }\r