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')
-rw-r--r--plugins/org.eclipse.tm.tcf.debug.ui/src/org/eclipse/tm/internal/tcf/debug/ui/model/IWatchInExpressions.java2
-rw-r--r--plugins/org.eclipse.tm.tcf.debug.ui/src/org/eclipse/tm/internal/tcf/debug/ui/model/TCFNodeExpression.java12
-rw-r--r--plugins/org.eclipse.tm.tcf.debug.ui/src/org/eclipse/tm/internal/tcf/debug/ui/model/TCFNodeRegister.java38
3 files changed, 44 insertions, 8 deletions
diff --git a/plugins/org.eclipse.tm.tcf.debug.ui/src/org/eclipse/tm/internal/tcf/debug/ui/model/IWatchInExpressions.java b/plugins/org.eclipse.tm.tcf.debug.ui/src/org/eclipse/tm/internal/tcf/debug/ui/model/IWatchInExpressions.java
index a512c749f..9fee2ceb9 100644
--- a/plugins/org.eclipse.tm.tcf.debug.ui/src/org/eclipse/tm/internal/tcf/debug/ui/model/IWatchInExpressions.java
+++ b/plugins/org.eclipse.tm.tcf.debug.ui/src/org/eclipse/tm/internal/tcf/debug/ui/model/IWatchInExpressions.java
@@ -14,7 +14,5 @@ import org.eclipse.tm.tcf.util.TCFDataCache;
public interface IWatchInExpressions {
- String getScript();
-
TCFDataCache<String> getExpressionText();
}
diff --git a/plugins/org.eclipse.tm.tcf.debug.ui/src/org/eclipse/tm/internal/tcf/debug/ui/model/TCFNodeExpression.java b/plugins/org.eclipse.tm.tcf.debug.ui/src/org/eclipse/tm/internal/tcf/debug/ui/model/TCFNodeExpression.java
index 1d85b6b14..fa3d0dd98 100644
--- a/plugins/org.eclipse.tm.tcf.debug.ui/src/org/eclipse/tm/internal/tcf/debug/ui/model/TCFNodeExpression.java
+++ b/plugins/org.eclipse.tm.tcf.debug.ui/src/org/eclipse/tm/internal/tcf/debug/ui/model/TCFNodeExpression.java
@@ -674,6 +674,14 @@ public class TCFNodeExpression extends TCFNode implements IElementEditor, ICastT
return type;
}
+ /**
+ * Get human readable expression script,
+ * including type cast, and using variable names instead of IDs.
+ */
+ public TCFDataCache<String> getExpressionText() {
+ return expression_text;
+ }
+
private Boolean usePrevValue(Runnable done) {
// Check if view should show old value.
// Old value is shown if context is running or
@@ -1576,8 +1584,4 @@ public class TCFNodeExpression extends TCFNode implements IElementEditor, ICastT
}
return super.getAdapter(adapter);
}
-
- public TCFDataCache<String> getExpressionText() {
- return expression_text;
- }
}
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