X-Git-Url: https://mograsim.net/gitweb/?a=blobdiff_plain;f=net.mograsim.logic.ui.am2900%2Fsrc%2Fnet%2Fmograsim%2Flogic%2Fui%2Fmodel%2Fcomponents%2Fmi%2Fnandbased%2FGUIram2.java;fp=net.mograsim.logic.ui.am2900%2Fsrc%2Fnet%2Fmograsim%2Flogic%2Fui%2Fmodel%2Fcomponents%2Fmi%2Fnandbased%2FGUIram2.java;h=7c084efbf0b914bd7b43933412653e410b69f07d;hb=574918bb58faa3c617911ed4f629f90066668364;hp=3e4d013d6dc61778cb3d37db02ab01a0ac6a3ecf;hpb=bec6c3a711448475c7b8e43dd031efe7b89aba24;p=Mograsim.git diff --git a/net.mograsim.logic.ui.am2900/src/net/mograsim/logic/ui/model/components/mi/nandbased/GUIram2.java b/net.mograsim.logic.ui.am2900/src/net/mograsim/logic/ui/model/components/mi/nandbased/GUIram2.java index 3e4d013d..7c084efb 100644 --- a/net.mograsim.logic.ui.am2900/src/net/mograsim/logic/ui/model/components/mi/nandbased/GUIram2.java +++ b/net.mograsim.logic.ui.am2900/src/net/mograsim/logic/ui/model/components/mi/nandbased/GUIram2.java @@ -49,10 +49,10 @@ public class GUIram2 extends SimpleRectangularSubmodelComponent GUIdemux2 demuxA = new GUIdemux2 (submodelModifiable); GUIdemux2 demuxB = new GUIdemux2 (submodelModifiable); GUIand41 weAndB = new GUIand41 (submodelModifiable); - cell00 = new GUIdlatch4 (submodelModifiable); - cell01 = new GUIdlatch4 (submodelModifiable); - cell10 = new GUIdlatch4 (submodelModifiable); - cell11 = new GUIdlatch4 (submodelModifiable); + cell00 = new GUIdlatch4 (submodelModifiable); + cell01 = new GUIdlatch4 (submodelModifiable); + cell10 = new GUIdlatch4 (submodelModifiable); + cell11 = new GUIdlatch4 (submodelModifiable); GUIand41 andA00 = new GUIand41 (submodelModifiable); GUIandor414 andorA01 = new GUIandor414(submodelModifiable); GUIandor414 andorA10 = new GUIandor414(submodelModifiable); @@ -277,10 +277,16 @@ public class GUIram2 extends SimpleRectangularSubmodelComponent new GUIWire(submodelModifiable, andorB11.getPin("Y3"), QB3 , new Point(180, 760), new Point(180, 890), new Point(335, 890), new Point(335, 650)); new GUIWire(submodelModifiable, andorB11.getPin("Y4"), QB4 , new Point(175, 770), new Point(175, 895), new Point(340, 895), new Point(340, 750)); //@formatter:on + + addHighLevelStateSubcomponentID("c00", cell00); + addHighLevelStateSubcomponentID("c01", cell01); + addHighLevelStateSubcomponentID("c10", cell10); + addHighLevelStateSubcomponentID("c11", cell11); + addAtomicHighLevelStateID("q"); } @Override - public void setHighLevelState(String stateID, Object newState) + public void setAtomicHighLevelState(String stateID, Object newState) { switch (stateID) { @@ -292,33 +298,13 @@ public class GUIram2 extends SimpleRectangularSubmodelComponent setHighLevelState("c11.q", newStateCasted.subVector(12, 16)); break; default: - int indexOfDot = stateID.indexOf('.'); - if (indexOfDot != -1) - switch (stateID.substring(0, indexOfDot)) - { - case "c00": - cell00.setHighLevelState(stateID.substring(indexOfDot + 1), newState); - break; - case "c01": - cell01.setHighLevelState(stateID.substring(indexOfDot + 1), newState); - break; - case "c10": - cell10.setHighLevelState(stateID.substring(indexOfDot + 1), newState); - break; - case "c11": - cell11.setHighLevelState(stateID.substring(indexOfDot + 1), newState); - break; - default: - super.setHighLevelState(stateID, newState); - break; - } - else - super.setHighLevelState(stateID, newState); + // should not happen because we tell SubmodelComponent to only allow these state IDs. + throw new IllegalStateException("Illegal atomic state ID: " + stateID); } } @Override - public Object getHighLevelState(String stateID) + public Object getAtomicHighLevelState(String stateID) { switch (stateID) { @@ -329,22 +315,8 @@ public class GUIram2 extends SimpleRectangularSubmodelComponent BitVector q11 = (BitVector) getHighLevelState("c11.q"); return q00.concat(q01).concat(q10).concat(q11); default: - int indexOfDot = stateID.indexOf('.'); - if (indexOfDot != -1) - switch (stateID.substring(0, indexOfDot)) - { - case "c00": - return cell00.getHighLevelState(stateID.substring(indexOfDot + 1)); - case "c01": - return cell01.getHighLevelState(stateID.substring(indexOfDot + 1)); - case "c10": - return cell10.getHighLevelState(stateID.substring(indexOfDot + 1)); - case "c11": - return cell11.getHighLevelState(stateID.substring(indexOfDot + 1)); - default: - return super.getHighLevelState(stateID); - } - return super.getHighLevelState(stateID); + // should not happen because we tell SubmodelComponent to only allow these state IDs. + throw new IllegalStateException("Illegal atomic state ID: " + stateID); } } } \ No newline at end of file