[
Date Prev][
Date Next][
Thread Prev][
Thread Next][
Date Index][
Thread Index]
[
List Home]
[cdt-patch] GDB/MI Casting work
|
Index: ChangeLog
===================================================================
RCS file: /home/tools/org.eclipse.cdt.debug.mi.core/ChangeLog,v
retrieving revision 1.167
diff -u -r1.167 ChangeLog
--- ChangeLog 21 Aug 2003 14:53:51 -0000 1.167
+++ ChangeLog 22 Aug 2003 17:07:50 -0000
@@ -1,3 +1,13 @@
+2003-08-22 Alain Magloire
+
+ For casting array we use the "@" format, hide it in
+ the name. But show it the qualifiedName() since the
+ expression is use to evaluate.
+
+ * src/org/eclipse/cdt/debug/mi/core/cdi/model/Variable.java
+ * src/org/eclipse/cdt/debug/mi/core/cdi/model/VariableObject.java
+ * src/org/eclipse/cdt/debug/mi/core/cdi/VariableManager.java
+
2003-08-21 Alain Magloire
GDB varobj for the arrays children name only returns
Index: src/org/eclipse/cdt/debug/mi/core/cdi/VariableManager.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/cdi/VariableManager.java,v
retrieving revision 1.40
diff -u -r1.40 VariableManager.java
--- src/org/eclipse/cdt/debug/mi/core/cdi/VariableManager.java 13 Aug 2003 21:16:18 -0000 1.40
+++ src/org/eclipse/cdt/debug/mi/core/cdi/VariableManager.java 22 Aug 2003 17:07:50 -0000
@@ -304,12 +304,13 @@
VariableObject vo =
new VariableObject(
obj.getTarget(),
- obj.getQualifiedName(),
+ obj.getName(),
+ obj.getFullName(),
obj.getStackFrame(),
obj.getPosition(),
obj.getStackDepth());
- vo.setCastingArrayStart(start);
- vo.setCastingArrayEnd(length);
+ vo.setCastingArrayStart(obj.getCastingArrayStart() + start);
+ vo.setCastingArrayEnd(obj.getCastingArrayEnd() + length);
return vo;
}
throw new CDIException("Unknown variable object");
@@ -329,10 +330,15 @@
VariableObject vo =
new VariableObject(
obj.getTarget(),
- obj.getQualifiedName(),
+ obj.getName(),
+ obj.getFullName(),
obj.getStackFrame(),
obj.getPosition(),
obj.getStackDepth());
+ String casting = obj.getCastingType();
+ if (casting != null && casting.length() > 0) {
+ type = "(" + type + ")" + "(" + casting + " )";
+ }
vo.setCastingType(type);
return vo;
}
Index: src/org/eclipse/cdt/debug/mi/core/cdi/model/Variable.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/cdi/model/Variable.java,v
retrieving revision 1.20
diff -u -r1.20 Variable.java
--- src/org/eclipse/cdt/debug/mi/core/cdi/model/Variable.java 21 Aug 2003 14:53:41 -0000 1.20
+++ src/org/eclipse/cdt/debug/mi/core/cdi/model/Variable.java 22 Aug 2003 17:07:50 -0000
@@ -164,18 +164,18 @@
MIVar[] vars = info.getMIVars();
children = new Variable[vars.length];
for (int i = 0; i < vars.length; i++) {
- String qName = getQualifiedName();
+ String fn= getFullName();
String childName = vars[i].getExp();
String childTypename = null;
boolean childFake = false;
ICDIType t = getType();
if (t instanceof ICDIArrayType) {
- qName = "(" + getQualifiedName() + ")[" + i + "]";
+ fn = "(" + fn + ")[" + i + "]";
// For Array gdb varobj only return the index, override here.
int index = castingIndex + i;
childName = getName() + "[" + index + "]";
} else if (t instanceof ICDIPointerType) {
- qName = "*(" + getQualifiedName() + ")";
+ fn = "*(" + fn + ")";
} else if (t instanceof ICDIStructType) {
if (isCPPLanguage()) {
// For C++ in GDB the children of the
@@ -199,13 +199,13 @@
childFake = true;
childTypename = getTypeName();
} else {
- qName = "(" + getQualifiedName() + ")." + vars[i].getExp();
+ fn = "(" + fn + ")." + vars[i].getExp();
}
} else { // If not C++ language
- qName = "(" + getQualifiedName() + ")." + vars[i].getExp();
+ fn = "(" + fn + ")." + vars[i].getExp();
}
}
- Variable v = new Variable(getTarget(), childName, qName, getStackFrame(), getPosition(), getStackDepth(), vars[i]);
+ Variable v = new Variable(getTarget(), childName, fn, getStackFrame(), getPosition(), getStackDepth(), vars[i]);
if (childTypename != null) {
// Hack to reset the typename to a known value
v.typename = childTypename;
Index: src/org/eclipse/cdt/debug/mi/core/cdi/model/VariableObject.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/cdi/model/VariableObject.java,v
retrieving revision 1.11
diff -u -r1.11 VariableObject.java
--- src/org/eclipse/cdt/debug/mi/core/cdi/model/VariableObject.java 20 Aug 2003 01:22:21 -0000 1.11
+++ src/org/eclipse/cdt/debug/mi/core/cdi/model/VariableObject.java 22 Aug 2003 17:07:50 -0000
@@ -44,6 +44,7 @@
int stackdepth;
String qualifiedName = null;
+ String fullName = null;
Type type = null;
String typename = null;
String sizeof = null;
@@ -70,10 +71,10 @@
this(target, n, null, stack, pos, depth);
}
- public VariableObject(ICDITarget target, String n, String q, ICDIStackFrame stack, int pos, int depth) {
+ public VariableObject(ICDITarget target, String n, String fn, ICDIStackFrame stack, int pos, int depth) {
super(target);
name = n;
- qualifiedName = q;
+ fullName = fn;
frame = stack;
position = pos;
stackdepth = depth;
@@ -115,22 +116,31 @@
* @return
*/
public String encodeVariable() {
- StringBuffer buffer = new StringBuffer();
+ String fn = getFullName();
if (castingLength > 0 || castingIndex > 0) {
+ StringBuffer buffer = new StringBuffer();
buffer.append("*(");
- buffer.append('(').append(getName()).append(')');
+ buffer.append('(').append(fn).append(')');
if (castingIndex != 0) {
buffer.append('+').append(castingIndex);
}
buffer.append(')');
buffer.append('@').append(castingLength);
+ fn = buffer.toString();
} else if (castingType != null && castingType.length() > 0) {
+ StringBuffer buffer = new StringBuffer();
buffer.append("((").append(castingType).append(')');
- buffer.append(getName()).append(')');
- } else {
- buffer.append(getName());
+ buffer.append(fn).append(')');
+ fn = buffer.toString();
}
- return buffer.toString();
+ return fn;
+ }
+
+ public String getFullName() {
+ if (fullName == null) {
+ fullName = getName();
+ }
+ return fullName;
}
/**