Renamed mograsim to net.mograsim
[Mograsim.git] / era.mi / src / net / mograsim / logic / core / components / gates / NotGate.java
1 package net.mograsim.logic.core.components.gates;\r
2 \r
3 import java.util.List;\r
4 \r
5 import net.mograsim.logic.core.components.BasicComponent;\r
6 import net.mograsim.logic.core.timeline.Timeline;\r
7 import net.mograsim.logic.core.wires.Wire.ReadEnd;\r
8 import net.mograsim.logic.core.wires.Wire.ReadWriteEnd;\r
9 \r
10 public class NotGate extends BasicComponent\r
11 {\r
12         private ReadEnd in;\r
13         private ReadWriteEnd out;\r
14 \r
15         public NotGate(Timeline timeline, int processTime, ReadEnd in, ReadWriteEnd out)\r
16         {\r
17                 super(timeline, processTime);\r
18                 this.in = in;\r
19                 in.addObserver(this);\r
20                 this.out = out;\r
21         }\r
22 \r
23         @Override\r
24         protected void compute()\r
25         {\r
26                 out.feedSignals(in.getValues().not());\r
27         }\r
28 \r
29         public ReadEnd getIn()\r
30         {\r
31                 return in;\r
32         }\r
33 \r
34         public ReadEnd getOut()\r
35         {\r
36                 return out;\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(out);\r
49         }\r
50 }\r