Restructured register system
[Mograsim.git] / plugins / net.mograsim.plugin.core / src / net / mograsim / plugin / launch / MachineRegisterGroup.java
1 package net.mograsim.plugin.launch;
2
3 import java.util.List;
4 import java.util.stream.Collectors;
5
6 import org.eclipse.core.runtime.PlatformObject;
7 import org.eclipse.debug.core.DebugException;
8 import org.eclipse.debug.core.ILaunch;
9 import org.eclipse.debug.core.model.IDebugTarget;
10 import org.eclipse.debug.core.model.IRegister;
11 import org.eclipse.debug.core.model.IRegisterGroup;
12
13 import net.mograsim.machine.Machine;
14 import net.mograsim.machine.registers.Register;
15 import net.mograsim.plugin.MograsimActivator;
16
17 public class MachineRegisterGroup extends PlatformObject implements IRegisterGroup
18 {
19         private final MachineStackFrame stackFrame;
20         private final String name;
21         private final List<MachineRegister> registers;
22
23         public MachineRegisterGroup(MachineStackFrame stackFrame, String name, List<Register> registers)
24         {
25                 this.stackFrame = stackFrame;
26                 this.name = name;
27                 this.registers = registers.stream().map(r -> new MachineRegister(this, r)).collect(Collectors.toUnmodifiableList());
28         }
29
30         @Override
31         public String getModelIdentifier()
32         {
33                 return MograsimActivator.PLUGIN_ID;
34         }
35
36         public Machine getMachine()
37         {
38                 return stackFrame.getMachine();
39         }
40
41         @Override
42         public IDebugTarget getDebugTarget()
43         {
44                 return stackFrame.getDebugTarget();
45         }
46
47         @Override
48         public ILaunch getLaunch()
49         {
50                 return stackFrame.getLaunch();
51         }
52
53         @Override
54         public String getName() throws DebugException
55         {
56                 return name;
57         }
58
59         @Override
60         public IRegister[] getRegisters() throws DebugException
61         {
62                 return registers.toArray(IRegister[]::new);
63         }
64
65         @Override
66         public boolean hasRegisters() throws DebugException
67         {
68                 return hasRegistersSafe();
69         }
70
71         public boolean hasRegistersSafe()
72         {
73                 return registers.size() > 0;
74         }
75 }