- String am2901CellSuffix;
- if (r instanceof QRegister)
- am2901CellSuffix = "qreg.q";
- else if (r instanceof NumberedRegister)
- am2901CellSuffix = "regs.c" + ((NumberedRegister) r).getIndexAsBitstring() + ".q";
- else
- throw new IllegalArgumentException("Not a register of an Am2900Machine: " + r);
- for (int i = 0; i < 16; i += 4)
- {
- String hlsID = String.format("am2901_%d-%d.%s", (i + 3), i, am2901CellSuffix);
- am2900.setHighLevelState(hlsID, value.subVector(i, i + 4));
- }
+ castAm2900Register(r).write(am2900, value);
+ }
+
+ @Override
+ public void addRegisterListener(Register r, Consumer<BitVector> listener)
+ {
+ castAm2900Register(r).addListener(am2900, listener);
+ }
+
+ @Override
+ public void removeRegisterListener(Register r, Consumer<BitVector> listener)
+ {
+ castAm2900Register(r).removeListener(am2900, listener);
+ }
+
+ private static Am2900Register castAm2900Register(Register r)
+ {
+ if (r instanceof Am2900Register)
+ return (Am2900Register) r;
+ throw new IllegalArgumentException("Not a register of an Am2900Machine: " + r);