1 package net.mograsim.plugin.launch;
3 import java.util.Collections;
6 import java.util.stream.Collectors;
8 import org.eclipse.core.runtime.PlatformObject;
9 import org.eclipse.debug.core.DebugException;
10 import org.eclipse.debug.core.ILaunch;
11 import org.eclipse.debug.core.model.IDebugTarget;
12 import org.eclipse.debug.core.model.IRegister;
13 import org.eclipse.debug.core.model.IRegisterGroup;
15 import net.mograsim.machine.Machine;
16 import net.mograsim.machine.Register;
17 import net.mograsim.plugin.MograsimActivator;
19 public class MachineRegisterGroup extends PlatformObject implements IRegisterGroup
21 private final MachineStackFrame stackFrame;
22 private final List<MachineRegister> registers;
24 public MachineRegisterGroup(MachineStackFrame stackFrame)
26 this.stackFrame = stackFrame;
27 Set<Register> machineRegisters = getMachine().getDefinition().getRegisters();
28 List<MachineRegister> registersModifiable = machineRegisters.stream().map(r -> new MachineRegister(this, r))
29 .collect(Collectors.toList());
30 this.registers = Collections.unmodifiableList(registersModifiable);
34 public String getModelIdentifier()
36 return MograsimActivator.PLUGIN_ID;
39 public Machine getMachine()
41 return stackFrame.getMachine();
45 public IDebugTarget getDebugTarget()
47 return stackFrame.getDebugTarget();
51 public ILaunch getLaunch()
53 return stackFrame.getLaunch();
57 public String getName() throws DebugException
59 return "pseudo register group";
63 public IRegister[] getRegisters() throws DebugException
66 return registers.toArray(IRegister[]::new);
70 public boolean hasRegisters() throws DebugException