X-Git-Url: https://mograsim.net/gitweb/?a=blobdiff_plain;f=plugins%2Fnet.mograsim.plugin.core%2Fsrc%2Fnet%2Fmograsim%2Fplugin%2Flaunch%2FMachineRegisterGroup.java;fp=plugins%2Fnet.mograsim.plugin.core%2Fsrc%2Fnet%2Fmograsim%2Fplugin%2Flaunch%2FMachineRegisterGroup.java;h=081ec41f6661bebf2f60de747549ca7e56f211d1;hb=79fe4ef5f67bdf3b7a9d8002d1759ce87b3f90be;hp=0000000000000000000000000000000000000000;hpb=c59feb481f39dc2af89475a1ea53c1b234913cb7;p=Mograsim.git diff --git a/plugins/net.mograsim.plugin.core/src/net/mograsim/plugin/launch/MachineRegisterGroup.java b/plugins/net.mograsim.plugin.core/src/net/mograsim/plugin/launch/MachineRegisterGroup.java new file mode 100644 index 00000000..081ec41f --- /dev/null +++ b/plugins/net.mograsim.plugin.core/src/net/mograsim/plugin/launch/MachineRegisterGroup.java @@ -0,0 +1,74 @@ +package net.mograsim.plugin.launch; + +import java.util.Collections; +import java.util.List; +import java.util.Set; +import java.util.stream.Collectors; + +import org.eclipse.core.runtime.PlatformObject; +import org.eclipse.debug.core.DebugException; +import org.eclipse.debug.core.ILaunch; +import org.eclipse.debug.core.model.IDebugTarget; +import org.eclipse.debug.core.model.IRegister; +import org.eclipse.debug.core.model.IRegisterGroup; + +import net.mograsim.machine.Machine; +import net.mograsim.machine.Register; +import net.mograsim.plugin.MograsimActivator; + +public class MachineRegisterGroup extends PlatformObject implements IRegisterGroup +{ + private final MachineStackFrame stackFrame; + private final List registers; + + public MachineRegisterGroup(MachineStackFrame stackFrame) + { + this.stackFrame = stackFrame; + Set machineRegisters = getMachine().getDefinition().getRegisters(); + List registersModifiable = machineRegisters.stream().map(r -> new MachineRegister(this, r)) + .collect(Collectors.toList()); + this.registers = Collections.unmodifiableList(registersModifiable); + } + + @Override + public String getModelIdentifier() + { + return MograsimActivator.PLUGIN_ID; + } + + public Machine getMachine() + { + return stackFrame.getMachine(); + } + + @Override + public IDebugTarget getDebugTarget() + { + return stackFrame.getDebugTarget(); + } + + @Override + public ILaunch getLaunch() + { + return stackFrame.getLaunch(); + } + + @Override + public String getName() throws DebugException + { + return "pseudo register group"; + } + + @Override + public IRegister[] getRegisters() throws DebugException + { + // TODO sort + return registers.toArray(IRegister[]::new); + } + + @Override + public boolean hasRegisters() throws DebugException + { + return true; + } +} \ No newline at end of file