Restructured register system
[Mograsim.git] / plugins / net.mograsim.plugin.core / src / net / mograsim / plugin / launch / MachineRegisterGroup.java
index 081ec41..fdf90ad 100644 (file)
@@ -1,8 +1,6 @@
 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;
@@ -13,21 +11,20 @@ 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.machine.registers.Register;
 import net.mograsim.plugin.MograsimActivator;
 
 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();
-               List<MachineRegister> registersModifiable = machineRegisters.stream().map(r -> new MachineRegister(this, r))
-                               .collect(Collectors.toList());
-               this.registers = Collections.unmodifiableList(registersModifiable);
+               this.name = name;
+               this.registers = registers.stream().map(r -> new MachineRegister(this, r)).collect(Collectors.toUnmodifiableList());
        }
 
        @Override
@@ -56,19 +53,23 @@ public class MachineRegisterGroup extends PlatformObject implements IRegisterGro
        @Override
        public String getName() throws DebugException
        {
-               return "pseudo register group";
+               return name;
        }
 
        @Override
        public IRegister[] getRegisters() throws DebugException
        {
-               // TODO sort
                return registers.toArray(IRegister[]::new);
        }
 
        @Override
        public boolean hasRegisters() throws DebugException
        {
-               return true;
+               return hasRegistersSafe();
+       }
+
+       public boolean hasRegistersSafe()
+       {
+               return registers.size() > 0;
        }
 }
\ No newline at end of file