Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/org.eclipse.tm.tcf.debug.ui/src/org/eclipse/tm/internal/tcf/debug/ui/model/TCFNodeRegister.java')
-rw-r--r--plugins/org.eclipse.tm.tcf.debug.ui/src/org/eclipse/tm/internal/tcf/debug/ui/model/TCFNodeRegister.java38
1 files changed, 36 insertions, 2 deletions
diff --git a/plugins/org.eclipse.tm.tcf.debug.ui/src/org/eclipse/tm/internal/tcf/debug/ui/model/TCFNodeRegister.java b/plugins/org.eclipse.tm.tcf.debug.ui/src/org/eclipse/tm/internal/tcf/debug/ui/model/TCFNodeRegister.java
index 864646268..57ae61eb3 100644
--- a/plugins/org.eclipse.tm.tcf.debug.ui/src/org/eclipse/tm/internal/tcf/debug/ui/model/TCFNodeRegister.java
+++ b/plugins/org.eclipse.tm.tcf.debug.ui/src/org/eclipse/tm/internal/tcf/debug/ui/model/TCFNodeRegister.java
@@ -34,11 +34,11 @@ import org.eclipse.tm.tcf.util.TCFDataCache;
import org.eclipse.tm.tcf.util.TCFTask;
-//TODO: hierarchical registers
-public class TCFNodeRegister extends TCFNode implements IElementEditor {
+public class TCFNodeRegister extends TCFNode implements IElementEditor, IWatchInExpressions {
private final TCFChildrenRegisters children;
private final TCFData<IRegisters.RegistersContext> context;
+ private final TCFData<String> expression_text;
private final TCFData<byte[]> value;
private final boolean is_stack_frame_register;
@@ -69,6 +69,35 @@ public class TCFNodeRegister extends TCFNode implements IElementEditor {
return false;
}
};
+ expression_text = new TCFData<String>(channel) {
+ @Override
+ protected boolean startDataRetrieval() {
+ String nm = null;
+ Throwable err = null;
+ TCFNodeRegister n = TCFNodeRegister.this;
+ for (;;) {
+ if (!n.context.validate(this)) return false;
+ IRegisters.RegistersContext ctx = n.context.getData();
+ if (ctx == null) {
+ err = n.context.getError();
+ nm = null;
+ break;
+ }
+ String s = ctx.getName();
+ if (s == null) break;
+ nm = nm == null ? s : s + '.' + nm;
+ if (n.parent instanceof TCFNodeRegister) {
+ n = (TCFNodeRegister)n.parent;
+ }
+ else {
+ break;
+ }
+ }
+ if (nm != null) nm = "$" + nm;
+ set(null, err, nm);
+ return true;
+ }
+ };
value = new TCFData<byte[]>(channel) {
@Override
protected boolean startDataRetrieval() {
@@ -113,6 +142,10 @@ public class TCFNodeRegister extends TCFNode implements IElementEditor {
return children;
}
+ public TCFDataCache<String> getExpressionText() {
+ return expression_text;
+ }
+
void setIndex(int index) {
this.index = index;
}
@@ -430,6 +463,7 @@ public class TCFNodeRegister extends TCFNode implements IElementEditor {
void onRegistersChanged() {
children.onRegistersChanged();
+ expression_text.reset();
context.reset();
value.reset();
// No need to post delta: parent posted CONTENT

Back to the top