+
+ @Override
+ public void setHighLevelState(String stateID, Object newState)
+ {
+ switch (stateID)
+ {
+ case "q1":
+ dlatch1.setHighLevelState("q", newState);
+ break;
+ case "q2":
+ dlatch2.setHighLevelState("q", newState);
+ break;
+ case "q3":
+ dlatch3.setHighLevelState("q", newState);
+ break;
+ case "q4":
+ dlatch4.setHighLevelState("q", newState);
+ break;
+ case "q":
+ BitVector newStateCasted = (BitVector) newState;
+ setHighLevelState("q1", newStateCasted.getBit(3));
+ setHighLevelState("q2", newStateCasted.getBit(2));
+ setHighLevelState("q3", newStateCasted.getBit(1));
+ setHighLevelState("q4", newStateCasted.getBit(0));
+ break;
+ default:
+ super.setHighLevelState(stateID, newState);
+ break;
+ }
+ }
+
+ @Override
+ public Object getHighLevelState(String stateID)
+ {
+ switch (stateID)
+ {
+ case "q1":
+ return dlatch1.getHighLevelState("q");
+ case "q2":
+ return dlatch2.getHighLevelState("q");
+ case "q3":
+ return dlatch3.getHighLevelState("q");
+ case "q4":
+ return dlatch4.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(q4, q3, q2, q1);
+ default:
+ return super.getHighLevelState(stateID);
+ }
+ }