private int selected = -1;
/**
- * Output {@link Wire}s and in must be of uniform length
+ * Output {@link Wire}s and in must be of uniform width
*
- * @param in Must be of uniform length with all outputs.
+ * @param in Must be of uniform width with all outputs.
* @param select Indexes the output array to which the input is mapped. Must have enough bits to index all outputs.
* @param outputs One of these outputs receives the input signal, depending on the select bits
*/
public Demux(Timeline timeline, int processTime, ReadEnd in, ReadEnd select, ReadWriteEnd... outputs)
{
super(timeline, processTime);
- outputSize = in.length();
+ outputSize = in.width();
this.in = in;
this.outputs = outputs;
for (int i = 0; i < this.outputs.length; i++)
{
- if (outputs[i].length() != outputSize)
- throw new IllegalArgumentException("All DEMUX wire arrays must be of uniform length!");
+ if (outputs[i].width() != outputSize)
+ throw new IllegalArgumentException("All DEMUX wire arrays must be of uniform width!");
this.outputs[i] = outputs[i];
}
this.select = select;
select.registerObserver(this);
- int maxInputs = 1 << select.length();
+ int maxInputs = 1 << select.width();
if (this.outputs.length > maxInputs)
throw new IllegalArgumentException("There are more outputs (" + this.outputs.length + ") to the DEMUX than supported by "
- + select.length() + " select bits (" + maxInputs + ").");
+ + select.width() + " select bits (" + maxInputs + ").");
in.registerObserver(this);
}