WireEnd functionality split into ReadEnd and ReadWriteEnd
[Mograsim.git] / era.mi / src / era / mi / logic / components / TriStateBuffer.java
index a0e7a8b..ee42056 100644 (file)
@@ -1,47 +1,50 @@
 package era.mi.logic.components;
 
-import java.util.Arrays;
-import java.util.Collections;
 import java.util.List;
 
-import era.mi.logic.Bit;
-import era.mi.logic.wires.WireArray;
-import era.mi.logic.wires.WireArray.WireArrayInput;
+import era.mi.logic.types.Bit;
+import era.mi.logic.wires.Wire.ReadEnd;
+import era.mi.logic.wires.Wire.ReadWriteEnd;
 
-public class TriStateBuffer extends BasicComponent {
-       WireArray in, enable;
-       WireArrayInput outI;
+public class TriStateBuffer extends BasicComponent
+{
+       ReadEnd in, enable;
+       ReadWriteEnd out;
 
-       public TriStateBuffer(int processTime, WireArray in, WireArray out, WireArray enable) {
+       public TriStateBuffer(int processTime, ReadEnd in, ReadWriteEnd out, ReadEnd enable)
+       {
                super(processTime);
-               if (in.length != out.length)
+               if (in.length() != out.length())
                        throw new IllegalArgumentException(
-                                       "Tri-state output must have the same amount of bits as the input. Input: " + in.length + " Output: " + out.length);
-               if (enable.length != 1)
-                       throw new IllegalArgumentException("Tri-state enable must have exactly one bit, not " + enable.length + ".");
+                                       "Tri-state output must have the same amount of bits as the input. Input: " + in.length() + " Output: " + out.length());
+               if (enable.length() != 1)
+                       throw new IllegalArgumentException("Tri-state enable must have exactly one bit, not " + enable.length() + ".");
                this.in = in;
                in.addObserver(this);
                this.enable = enable;
                enable.addObserver(this);
-               outI = out.createInput();
+               this.out = out;
        }
 
        @Override
-       protected void compute() {
+       protected void compute()
+       {
                if (enable.getValue() == Bit.ONE)
-                       outI.feedSignals(in.getValues());
+                       out.feedSignals(in.getValues());
                else
-                       outI.clearSignals();
+                       out.clearSignals();
        }
 
        @Override
-       public List<WireArray> getAllInputs() {
-               return Collections.unmodifiableList(Arrays.asList(in, enable));
+       public List<ReadEnd> getAllInputs()
+       {
+               return List.of(in, enable);
        }
 
        @Override
-       public List<WireArray> getAllOutputs() {
-               return Collections.unmodifiableList(Arrays.asList(outI.owner));
+       public List<ReadWriteEnd> getAllOutputs()
+       {
+               return List.of(out);
        }
 
 }