- System.arraycopy(newHighLevelStateCasted.getBits(), 0, lastState, 1, 4);
- return lastState;
- default:
- return super.setHighLevelState(lastState, stateID, newHighLevelState);
+ System.arraycopy(newHighLevelStateCasted.getBits(), 0, QC, 1, 4);
+ return QC;
+ }
+ if (stateID.length() == 2 && stateID.charAt(0) == 'q')
+ {
+ char secondChar = stateID.charAt(1);
+ if (secondChar >= '1' && secondChar <= '4')
+ {
+ Bit newHighLevelStateCasted;
+ if (newHighLevelState instanceof Bit)
+ newHighLevelStateCasted = (Bit) newHighLevelState;
+ else
+ {
+ BitVector vector = (BitVector) newHighLevelState;
+ if (vector.length() != 1)
+ throw new IllegalArgumentException("Expected BitVector of length 1, not " + vector.length());
+ newHighLevelStateCasted = vector.getMSBit(0);
+ }
+ QC[secondChar - '0'] = newHighLevelStateCasted;
+ return QC;
+ }