package net.mograsim.plugin.launch;
import java.util.List;
-import java.util.Set;
import java.util.stream.Collectors;
import org.eclipse.core.runtime.PlatformObject;
import org.eclipse.debug.core.model.IRegisterGroup;
import net.mograsim.machine.Machine;
-import net.mograsim.machine.Register;
+import net.mograsim.machine.registers.Register;
import net.mograsim.plugin.MograsimActivator;
-import net.mograsim.plugin.util.NumberRespectingStringComparator;
public class MachineRegisterGroup extends PlatformObject implements IRegisterGroup
{
private final MachineStackFrame stackFrame;
+ private final String name;
private final List<MachineRegister> registers;
- public MachineRegisterGroup(MachineStackFrame stackFrame)
+ public MachineRegisterGroup(MachineStackFrame stackFrame, String name, List<Register> registers)
{
this.stackFrame = stackFrame;
- Set<Register> machineRegisters = getMachine().getDefinition().getRegisters();
- this.registers = machineRegisters.stream()
- .sorted((r1, r2) -> NumberRespectingStringComparator.CASE_SENSITIVE.compare(r1.id(), r2.id()))
- .map(r -> new MachineRegister(this, r)).collect(Collectors.toUnmodifiableList());
+ this.name = name;
+ this.registers = registers.stream().map(r -> new MachineRegister(this, r)).collect(Collectors.toUnmodifiableList());
}
@Override
@Override
public String getName() throws DebugException
{
- return "pseudo register group";
+ return name;
}
@Override
@Override
public boolean hasRegisters() throws DebugException
{
- return true;
+ return hasRegistersSafe();
+ }
+
+ public boolean hasRegistersSafe()
+ {
+ return registers.size() > 0;
}
}
\ No newline at end of file