X-Git-Url: https://mograsim.net/gitweb/?a=blobdiff_plain;f=plugins%2Fnet.mograsim.logic.model.am2900%2Fsrc%2Fnet%2Fmograsim%2Flogic%2Fmodel%2Fam2900%2Fmachine%2FAm2900MachineDefinition.java;h=325f63fb70b22a33eae1424bb41504dc0ab54605;hb=45cdf52447cc661bdffa0573ea31ff52cc134ad5;hp=0ed024f4d2095462dbde758df4c2656716e04182;hpb=d094b43f1697af4586f135790919f866cc53a9a5;p=Mograsim.git diff --git a/plugins/net.mograsim.logic.model.am2900/src/net/mograsim/logic/model/am2900/machine/Am2900MachineDefinition.java b/plugins/net.mograsim.logic.model.am2900/src/net/mograsim/logic/model/am2900/machine/Am2900MachineDefinition.java index 0ed024f4..325f63fb 100644 --- a/plugins/net.mograsim.logic.model.am2900/src/net/mograsim/logic/model/am2900/machine/Am2900MachineDefinition.java +++ b/plugins/net.mograsim.logic.model.am2900/src/net/mograsim/logic/model/am2900/machine/Am2900MachineDefinition.java @@ -1,24 +1,36 @@ package net.mograsim.logic.model.am2900.machine; -import java.util.Objects; +import java.util.Collections; +import java.util.HashSet; import java.util.Set; +import net.mograsim.logic.model.am2900.machine.registers.NumberedRegister; +import net.mograsim.logic.model.am2900.machine.registers.QRegister; import net.mograsim.logic.model.model.LogicModelModifiable; import net.mograsim.machine.ISASchema; import net.mograsim.machine.MachineDefinition; -import net.mograsim.machine.MachineRegistry; import net.mograsim.machine.Register; +//we can't use the Singleton pattern here because a MachineDefinition needs a public parameterless constructor +//(used for detecting installed machines in plugin.core) public class Am2900MachineDefinition implements MachineDefinition { - private Am2900MainMemoryDefinition memoryDefinition = new Am2900MainMemoryDefinition(); - private Am2900MicroInstructionMemoryDefinition microInstMemoryDefinition = new Am2900MicroInstructionMemoryDefinition(); - private final static Am2900MachineDefinition instance = new Am2900MachineDefinition(); + public static final String AM2900_MACHINE_ID = "Am2900"; - public static Am2900MachineDefinition getInstance() + public static final Set allRegisters; + + static + { + Set allRegistersModifiable = new HashSet<>(); + allRegistersModifiable.add(QRegister.instance); + allRegistersModifiable.addAll(NumberedRegister.instancesCorrectOrder); + allRegisters = Collections.unmodifiableSet(allRegistersModifiable); + } + + @Override + public String getId() { - return Objects.requireNonNullElseGet((Am2900MachineDefinition) MachineRegistry.getinstalledMachines().get("Am2900"), - () -> instance); + return AM2900_MACHINE_ID; } @Override @@ -42,8 +54,7 @@ public class Am2900MachineDefinition implements MachineDefinition @Override public Set getRegisters() { - // TODO Auto-generated method stub - return null; + return allRegisters; } @Override @@ -55,12 +66,25 @@ public class Am2900MachineDefinition implements MachineDefinition @Override public Am2900MainMemoryDefinition getMainMemoryDefinition() { - return memoryDefinition; + return Am2900MainMemoryDefinition.instance; + } + + @Override + public int hashCode() + { + return 12345; + } + + @Override + public boolean equals(Object obj) + { + return obj != null && obj instanceof Am2900MachineDefinition; } @Override public Am2900MicroInstructionMemoryDefinition getMicroInstructionMemoryDefinition() { - return microInstMemoryDefinition; + return Am2900MicroInstructionMemoryDefinition.instance; } + }