+
+ @Override
+ public void setHighLevelState(String stateID, Object newState)
+ {
+ switch (stateID)
+ {
+ case "q1":
+ dff1.setHighLevelState("q", newState);
+ break;
+ case "q2":
+ dff2.setHighLevelState("q", newState);
+ break;
+ case "q3":
+ dff3.setHighLevelState("q", newState);
+ break;
+ case "q4":
+ dff4.setHighLevelState("q", newState);
+ break;
+ case "q":
+ BitVector newStateCasted = (BitVector) newState;
+ setHighLevelState("q1", newStateCasted.getBit(0));
+ setHighLevelState("q2", newStateCasted.getBit(1));
+ setHighLevelState("q3", newStateCasted.getBit(2));
+ setHighLevelState("q4", newStateCasted.getBit(3));
+ break;
+ default:
+ super.setHighLevelState(stateID, newState);
+ break;
+ }
+ }
+
+ @Override
+ public Object getHighLevelState(String stateID)
+ {
+ switch (stateID)
+ {
+ case "q1":
+ return dff1.getHighLevelState("q");
+ case "q2":
+ return dff2.getHighLevelState("q");
+ case "q3":
+ return dff3.getHighLevelState("q");
+ case "q4":
+ return dff4.getHighLevelState("q");
+ case "q":
+ Bit q1 = (Bit) getHighLevelState("q1");
+ Bit q2 = (Bit) getHighLevelState("q2");
+ Bit q3 = (Bit) getHighLevelState("q3");
+ Bit q4 = (Bit) getHighLevelState("q4");
+ return BitVector.of(q1, q2, q3, q4);
+ default:
+ return super.getHighLevelState(stateID);
+ }
+ }