-package era.mi.logic.components.gates;
-
-import era.mi.logic.Util;
-import era.mi.logic.WireArray;
-import era.mi.logic.components.BasicComponent;
-
-public class XorGate extends BasicComponent
-{
- private WireArray a, b, out;
-
- public XorGate(int processTime, WireArray a, WireArray b, WireArray out)
- {
- super(processTime);
- this.a = a;
- a.addObserver(this);
- this.b = b;
- b.addObserver(this);
- this.out = out;
- }
-
- 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;
- }
-}
+package era.mi.logic.components.gates;\r
+\r
+import era.mi.logic.timeline.Timeline;\r
+import era.mi.logic.types.BitVector.BitVectorMutator;\r
+import era.mi.logic.wires.Wire.ReadEnd;\r
+import era.mi.logic.wires.Wire.ReadWriteEnd;\r
+\r
+/**\r
+ * Outputs 1 when the number of 1 inputs is odd.\r
+ * \r
+ * @author Fabian Stemmler\r
+ */\r
+public class XorGate extends MultiInputGate\r
+{\r
+ public XorGate(Timeline timeline, int processTime, ReadWriteEnd out, ReadEnd... in)\r
+ {\r
+ super(timeline, processTime, BitVectorMutator::xor, out, in);\r
+ }\r
+\r
+}\r