Skip to main content

[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;
 	}
 
 	/**



Back to the top