mirror of
https://github.com/eclipse-cdt/cdt
synced 2025-04-23 14:42:11 +02:00
2004-08-14 Alain Magloire
Fix for 71992. * src/org/eclipse/cdt/debug/mi/core/GDBTypeParser.java
This commit is contained in:
parent
ad9112a59b
commit
8c89e95337
2 changed files with 69 additions and 27 deletions
|
@ -1,3 +1,8 @@
|
|||
2004-08-14 Alain Magloire
|
||||
|
||||
Fix for 71992.
|
||||
* src/org/eclipse/cdt/debug/mi/core/GDBTypeParser.java
|
||||
|
||||
2004-08-05 Alain Magloire
|
||||
|
||||
Tentative Fix for PR 69991
|
||||
|
|
|
@ -95,6 +95,42 @@ public class GDBTypeParser {
|
|||
return getGDBType();
|
||||
}
|
||||
|
||||
public static String unParse (GDBType gdbType) {
|
||||
|
||||
StringBuffer sb = new StringBuffer();
|
||||
// Fetch the datatype.
|
||||
while (gdbType != null) {
|
||||
GDBDerivedType derived = null;
|
||||
int type = gdbType.getType();
|
||||
if (gdbType instanceof GDBDerivedType) {
|
||||
derived = (GDBDerivedType)gdbType;
|
||||
gdbType = derived.getChild();
|
||||
if (type == GDBType.FUNCTION) {
|
||||
sb.append("()");
|
||||
} else if (type == GDBType.ARRAY) {
|
||||
sb.append('[').append(derived.getDimension()).append(']');
|
||||
} else if (type == GDBType.POINTER) {
|
||||
int childType = (gdbType != null) ? gdbType.getType() : GDBType.GENERIC;
|
||||
if (childType == GDBType.POINTER || childType == GDBType.REFERENCE) {
|
||||
sb.append('*');
|
||||
} else if (childType == GDBType.GENERIC) {
|
||||
sb.insert(0, '*');
|
||||
} else {
|
||||
sb.insert(0, "(*").append(")");
|
||||
}
|
||||
} else if (type == GDBType.REFERENCE) {
|
||||
sb.insert(0, "(&").append(")");
|
||||
}
|
||||
} else {
|
||||
sb.insert(0, ' ');
|
||||
sb.insert(0, gdbType.nameType);
|
||||
gdbType = null;
|
||||
}
|
||||
}
|
||||
return sb.toString();
|
||||
|
||||
}
|
||||
|
||||
public class GDBType {
|
||||
public final static int GENERIC = 0;
|
||||
public final static int POINTER = 1;
|
||||
|
@ -113,13 +149,13 @@ public class GDBTypeParser {
|
|||
this("", t); //$NON-NLS-1$
|
||||
}
|
||||
|
||||
GDBType(String n, int t) {
|
||||
public GDBType(String n, int t) {
|
||||
nameType = n;
|
||||
type = t;
|
||||
}
|
||||
|
||||
public String toString() {
|
||||
return nameType;
|
||||
return unParse(this);
|
||||
}
|
||||
|
||||
public String verbose() {
|
||||
|
@ -130,6 +166,9 @@ public class GDBTypeParser {
|
|||
return type;
|
||||
}
|
||||
|
||||
public String getTypeName() {
|
||||
return nameType;
|
||||
}
|
||||
}
|
||||
|
||||
public class GDBDerivedType extends GDBType {
|
||||
|
@ -162,31 +201,6 @@ public class GDBTypeParser {
|
|||
return child != null;
|
||||
}
|
||||
|
||||
public String toString() {
|
||||
StringBuffer sb = new StringBuffer();
|
||||
String childTypeName = (hasChild() ? child.toString() : ""); //$NON-NLS-1$
|
||||
sb.append(childTypeName);
|
||||
switch (getType()) {
|
||||
case FUNCTION :
|
||||
sb.append("()"); //$NON-NLS-1$
|
||||
//sb.append(" function returning " + (hasChild() ? child.toString() : ""));
|
||||
break;
|
||||
case ARRAY :
|
||||
sb.append("[" + dimension + "]"); //$NON-NLS-1$ //$NON-NLS-2$
|
||||
//sb.append(" array[" + dimension + "]" + " of " + (hasChild() ? child.toString() : ""));
|
||||
break;
|
||||
case REFERENCE :
|
||||
sb.append("&"); //$NON-NLS-1$
|
||||
//sb.append(" reference to " + (hasChild() ? child.toString() : ""));
|
||||
break;
|
||||
case POINTER :
|
||||
sb.append("*"); //$NON-NLS-1$
|
||||
//sb.append(" pointer to " + (hasChild() ? child.toString() : ""));
|
||||
break;
|
||||
}
|
||||
return sb.toString();
|
||||
}
|
||||
|
||||
public String verbose() {
|
||||
StringBuffer sb = new StringBuffer();
|
||||
switch (getType()) {
|
||||
|
@ -398,53 +412,76 @@ public class GDBTypeParser {
|
|||
|
||||
System.out.println("struct link { int i; int j; struct link * next;} *"); //$NON-NLS-1$
|
||||
parser.parse("struct link { int i; int j; struct link * next} *"); //$NON-NLS-1$
|
||||
System.out.println(GDBTypeParser.unParse(parser.getGDBType()));
|
||||
System.out.println(parser.getGDBType().verbose());
|
||||
System.out.println();
|
||||
|
||||
System.out.println("char **argv"); //$NON-NLS-1$
|
||||
parser.parse("char **argv"); //$NON-NLS-1$
|
||||
System.out.println(GDBTypeParser.unParse(parser.getGDBType()));
|
||||
//System.out.println(parser.getGDBType().toString());
|
||||
System.out.println(parser.getGDBType().verbose());
|
||||
System.out.println();
|
||||
|
||||
System.out.println("int (*daytab)[13]"); //$NON-NLS-1$
|
||||
parser.parse("int (*daytab)[13]"); //$NON-NLS-1$
|
||||
System.out.println(GDBTypeParser.unParse(parser.getGDBType()));
|
||||
//System.out.println(parser.getGDBType().toString());
|
||||
System.out.println(parser.getGDBType().verbose());
|
||||
System.out.println();
|
||||
|
||||
System.out.println("int *daytab[13]"); //$NON-NLS-1$
|
||||
parser.parse("int *daytab[13]"); //$NON-NLS-1$
|
||||
System.out.println(GDBTypeParser.unParse(parser.getGDBType()));
|
||||
//System.out.println(parser.getGDBType().toString());
|
||||
System.out.println(parser.getGDBType().verbose());
|
||||
System.out.println();
|
||||
|
||||
System.out.println("void *comp()"); //$NON-NLS-1$
|
||||
parser.parse("void *comp()"); //$NON-NLS-1$
|
||||
System.out.println(GDBTypeParser.unParse(parser.getGDBType()));
|
||||
//System.out.println(parser.getGDBType().toString());
|
||||
System.out.println(parser.getGDBType().verbose());
|
||||
System.out.println();
|
||||
|
||||
System.out.println("void (*comp)()"); //$NON-NLS-1$
|
||||
parser.parse("void (*comp)()"); //$NON-NLS-1$
|
||||
System.out.println(GDBTypeParser.unParse(parser.getGDBType()));
|
||||
//System.out.println(parser.getGDBType().toString());
|
||||
System.out.println(parser.getGDBType().verbose());
|
||||
System.out.println();
|
||||
|
||||
System.out.println("int (*func[15])()"); //$NON-NLS-1$
|
||||
parser.parse("int (*func[15])()"); //$NON-NLS-1$
|
||||
System.out.println(GDBTypeParser.unParse(parser.getGDBType()));
|
||||
//System.out.println(parser.getGDBType().toString());
|
||||
System.out.println(parser.getGDBType().verbose());
|
||||
System.out.println();
|
||||
|
||||
System.out.println("char (*(*x())[])()"); //$NON-NLS-1$
|
||||
parser.parse("char (*(*x())[])()"); //$NON-NLS-1$
|
||||
System.out.println(GDBTypeParser.unParse(parser.getGDBType()));
|
||||
//System.out.println(parser.getGDBType().toString());
|
||||
System.out.println(parser.getGDBType().verbose());
|
||||
System.out.println();
|
||||
|
||||
System.out.println("char (*(*x[3])())[5]"); //$NON-NLS-1$
|
||||
parser.parse("char (*(*x[3])())[5]"); //$NON-NLS-1$
|
||||
System.out.println(GDBTypeParser.unParse(parser.getGDBType()));
|
||||
System.out.println(parser.getGDBType().verbose());
|
||||
System.out.println();
|
||||
|
||||
System.out.println("char *[5]"); //$NON-NLS-1$
|
||||
parser.parse("char *[5]"); //$NON-NLS-1$
|
||||
System.out.println(GDBTypeParser.unParse(parser.getGDBType()));
|
||||
//System.out.println(parser.getGDBType().toString());
|
||||
System.out.println(parser.getGDBType().verbose());
|
||||
System.out.println();
|
||||
|
||||
System.out.println("int [2][3]"); //$NON-NLS-1$
|
||||
parser.parse("int [2][3]"); //$NON-NLS-1$
|
||||
System.out.println(GDBTypeParser.unParse(parser.getGDBType()));
|
||||
System.out.println(parser.getGDBType().verbose());
|
||||
System.out.println();
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue