projects
/
Mograsim.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
WireArray(Input) is now Wire(End); all in-/outputs are now WireEnds
[Mograsim.git]
/
era.mi
/
src
/
era
/
mi
/
logic
/
components
/
gates
/
MultiInputGate.java
diff --git
a/era.mi/src/era/mi/logic/components/gates/MultiInputGate.java
b/era.mi/src/era/mi/logic/components/gates/MultiInputGate.java
index
b85939e
..
7a6d438
100644
(file)
--- a/
era.mi/src/era/mi/logic/components/gates/MultiInputGate.java
+++ b/
era.mi/src/era/mi/logic/components/gates/MultiInputGate.java
@@
-6,56
+6,52
@@
import java.util.List;
import era.mi.logic.Bit;
import era.mi.logic.components.BasicComponent;
import era.mi.logic.Bit;
import era.mi.logic.components.BasicComponent;
-import era.mi.logic.wires.WireArray;
-import era.mi.logic.wires.WireArray.WireArrayInput;
+import era.mi.logic.wires.Wire.WireEnd;
public abstract class MultiInputGate extends BasicComponent
{
public abstract class MultiInputGate extends BasicComponent
{
- protected WireArray[] in;
- protected WireArray out;
- protected WireArrayInput outI;
+ protected WireEnd[] in;
+ protected WireEnd out;
protected final int length;
protected Operation op;
protected final int length;
protected Operation op;
-
- protected MultiInputGate(int processTime, Operation op, Wire
Array out, WireArray
... in)
+
+ protected MultiInputGate(int processTime, Operation op, Wire
End out, WireEnd
... in)
{
super(processTime);
this.op = op;
{
super(processTime);
this.op = op;
- length = out.length;
+ length = out.length
()
;
this.in = in.clone();
this.in = in.clone();
- if(in.length < 1)
+ if
(in.length < 1)
throw new IllegalArgumentException(String.format("Cannot create gate with %d wires.", in.length));
throw new IllegalArgumentException(String.format("Cannot create gate with %d wires.", in.length));
- for
(WireArray
w : in)
+ for
(WireEnd
w : in)
{
{
- if
(w.length
!= length)
+ if
(w.length()
!= length)
throw new IllegalArgumentException("All wires connected to the gate must be of uniform length.");
w.addObserver(this);
}
this.out = out;
throw new IllegalArgumentException("All wires connected to the gate must be of uniform length.");
w.addObserver(this);
}
this.out = out;
- outI = out.createInput();
}
}
-
@Override
@Override
- public List<Wire
Array
> getAllInputs()
+ public List<Wire
End
> getAllInputs()
{
return Collections.unmodifiableList(Arrays.asList(in));
}
@Override
{
return Collections.unmodifiableList(Arrays.asList(in));
}
@Override
- public List<Wire
Array
> getAllOutputs()
+ public List<Wire
End
> getAllOutputs()
{
return Collections.unmodifiableList(Arrays.asList(out));
}
{
return Collections.unmodifiableList(Arrays.asList(out));
}
-
+
protected void compute()
{
Bit[] result = in[0].getValues();
protected void compute()
{
Bit[] result = in[0].getValues();
- for(int i = 1; i < in.length; i++)
+ for
(int i = 1; i < in.length; i++)
result = op.execute(result, in[i].getValues());
result = op.execute(result, in[i].getValues());
- out
I
.feedSignals(result);
+ out.feedSignals(result);
}
}
-
+
protected interface Operation
{
public Bit[] execute(Bit[] a, Bit[] b);
protected interface Operation
{
public Bit[] execute(Bit[] a, Bit[] b);