Timeline now passed via constructor
[Mograsim.git] / era.mi / src / era / mi / logic / components / gates / XorGate.java
index 9287f3f..a177695 100644 (file)
@@ -1,40 +1,20 @@
 package era.mi.logic.components.gates;
 
-import era.mi.logic.Util;
-import era.mi.logic.WireArray;
-import era.mi.logic.components.BasicComponent;
+import era.mi.logic.timeline.Timeline;
+import era.mi.logic.types.BitVector.BitVectorMutator;
+import era.mi.logic.wires.Wire.ReadEnd;
+import era.mi.logic.wires.Wire.ReadWriteEnd;
 
-public class XorGate extends BasicComponent
+/**
+ * Outputs 1 when the number of 1 inputs is odd.
+ * 
+ * @author Fabian Stemmler
+ */
+public class XorGate extends MultiInputGate
 {
-       private WireArray a, b, out;
-       
-       public XorGate(int processTime, WireArray a, WireArray b, WireArray out)
+       public XorGate(Timeline timeline, int processTime, ReadWriteEnd out, ReadEnd... in)
        {
-               super(processTime);
-               this.a = a;
-               a.addObserver(this);
-               this.b = b;
-               b.addObserver(this);
-               this.out = out;
+               super(timeline, processTime, BitVectorMutator::xor, out, in);
        }
 
-       protected void compute()
-       {
-               out.feedSignals(Util.xor(a.getValues(), b.getValues()));
-       }
-
-       public WireArray getA()
-       {
-               return a;
-       }
-
-       public WireArray getB()
-       {
-               return b;
-       }
-
-       public WireArray getOut()
-       {
-               return out;
-       }
 }