[
Date Prev][
Date Next][
Thread Prev][
Thread Next][
Date Index][
Thread Index]
[
List Home]
[cdt-patch] MI implementation of types
|
Index: ChangeLog
===================================================================
RCS file: /home/tools/org.eclipse.cdt.debug.mi.core/ChangeLog,v
retrieving revision 1.131
diff -u -r1.131 ChangeLog
--- ChangeLog 23 May 2003 05:14:07 -0000 1.131
+++ ChangeLog 23 May 2003 15:48:39 -0000
@@ -1,3 +1,10 @@
+2003-05-24 Alain Magloire
+
+ Continuing the implementation of types.
+ ICDIType is ICDIObject.
+ * src/org/eclispe/cdt/mi/core/cdi/model/type/Type.java:
+ Extends CObject
+
2003-05-23 Alain Magloire
Draft implementation of org.eclipse.cdt.debug.core.cdi.model.type/*
Index: src/org/eclipse/cdt/debug/mi/core/cdi/SourceManager.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/cdi/SourceManager.java,v
retrieving revision 1.22
diff -u -r1.22 SourceManager.java
--- src/org/eclipse/cdt/debug/mi/core/cdi/SourceManager.java 23 May 2003 05:13:53 -0000 1.22
+++ src/org/eclipse/cdt/debug/mi/core/cdi/SourceManager.java 23 May 2003 15:48:40 -0000
@@ -11,6 +11,7 @@
import org.eclipse.cdt.debug.core.cdi.ICDISourceManager;
import org.eclipse.cdt.debug.core.cdi.model.ICDIInstruction;
import org.eclipse.cdt.debug.core.cdi.model.ICDIMixedInstruction;
+import org.eclipse.cdt.debug.core.cdi.model.ICDITarget;
import org.eclipse.cdt.debug.mi.core.MIException;
import org.eclipse.cdt.debug.mi.core.MISession;
import org.eclipse.cdt.debug.mi.core.cdi.model.Instruction;
@@ -217,53 +218,53 @@
}
- public Type getType(String name) throws CDIException {
+ public Type getType(ICDITarget target, String name) throws CDIException {
String typename = name.trim();
// Check the derived types and agregate types
if (typename.endsWith("]")) {
- return new ArrayType(typename);
- } else if (typename.indexOf("*") != -1) {
- return new PointerType(typename);
- } else if (typename.indexOf("&") != -1) {
- return new ReferenceType(typename);
+ return new ArrayType(target, typename);
+ } else if (typename.endsWith("*")) {
+ return new PointerType(target, typename);
+ } else if (typename.endsWith("&")) {
+ return new ReferenceType(target, typename);
} else if (typename.endsWith(")")) {
- return new FunctionType(typename);
+ return new FunctionType(target, typename);
} else if (typename.startsWith("enum ")) {
- return new EnumType(typename);
+ return new EnumType(target, typename);
} else if (typename.startsWith("union ")) {
- return new StructType(typename);
+ return new StructType(target, typename);
} else if (typename.startsWith("struct ")) {
- return new StructType(typename);
+ return new StructType(target, typename);
} else if (typename.startsWith("class ")) {
- return new StructType(typename);
+ return new StructType(target, typename);
}
// Check the primitives.
if (typename.equals("char")) {
- return new CharType(typename);
+ return new CharType(target, typename);
} else if (typename.equals("wchar_t")) {
- return new WCharType(typename);
+ return new WCharType(target, typename);
} else if (typename.equals("short")) {
- return new ShortType(typename);
+ return new ShortType(target, typename);
} else if (typename.equals("int")) {
- return new IntType(typename);
+ return new IntType(target, typename);
} else if (typename.equals("long")) {
- return new LongType(typename);
+ return new LongType(target, typename);
} else if (typename.equals("unsigned")) {
- return new IntType(typename, true);
+ return new IntType(target, typename, true);
} else if (typename.equals("signed")) {
- return new IntType(typename);
+ return new IntType(target, typename);
} else if (typename.equals("bool")) {
- return new BoolType(typename);
+ return new BoolType(target, typename);
} else if (typename.equals("_Bool")) {
- return new BoolType(typename);
+ return new BoolType(target, typename);
} else if (typename.equals("float")) {
- return new FloatType(typename);
+ return new FloatType(target, typename);
} else if (typename.equals("double")) {
- return new DoubleType(typename);
+ return new DoubleType(target, typename);
} else if (typename.equals("void")) {
- return new VoidType(typename);
+ return new VoidType(target, typename);
}
StringTokenizer st = new StringTokenizer(typename);
@@ -289,19 +290,19 @@
boolean isImaginery = (first.equals("_Imaginary") || second.equals("_Imaginary"));
if (isChar && (isSigned || isUnsigned)) {
- return new CharType(typename, isUnsigned);
+ return new CharType(target, typename, isUnsigned);
} else if (isShort && (isSigned || isUnsigned)) {
- return new ShortType(typename, isUnsigned);
+ return new ShortType(target, typename, isUnsigned);
} else if (isInt && (isSigned || isUnsigned)) {
- return new IntType(typename, isUnsigned);
+ return new IntType(target, typename, isUnsigned);
} else if (isLong && (isInt || isSigned || isUnsigned)) {
- return new LongType(typename, isUnsigned);
+ return new LongType(target, typename, isUnsigned);
} else if (isLongLong) {
- return new LongLongType(typename);
+ return new LongLongType(target, typename);
} else if (isDouble && (isLong || isComplex || isImaginery)) {
- return new DoubleType(typename, isComplex, isImaginery, isLong);
+ return new DoubleType(target, typename, isComplex, isImaginery, isLong);
} else if (isFloat && (isComplex || isImaginery)) {
- return new FloatType(typename, isComplex, isImaginery);
+ return new FloatType(target, typename, isComplex, isImaginery);
}
} else if (count == 3) {
// ISOC allows permutation. replace short by: long or short
@@ -329,13 +330,13 @@
if (isShort && isInt && (isSigned || unSigned)) {
- return new ShortType(typename, unSigned);
+ return new ShortType(target, typename, unSigned);
} else if (isLong && isInt && (isSigned || unSigned)) {
- return new LongType(typename, unSigned);
+ return new LongType(target, typename, unSigned);
} else if (isLongLong && (isSigned || unSigned)) {
- return new LongLongType(typename, unSigned);
+ return new LongLongType(target, typename, unSigned);
} else if (isDouble && isLong && (isComplex || isImaginery)) {
- return new DoubleType(typename, isComplex, isImaginery, isLong);
+ return new DoubleType(target, typename, isComplex, isImaginery, isLong);
}
} else if (count == 4) {
// ISOC allows permutation:
@@ -355,7 +356,7 @@
|| (third.equals("long") && fourth.equals("long"));
if (isLongLong && isInt && (isSigned || unSigned)) {
- return new LongLongType(typename, unSigned);
+ return new LongLongType(target, typename, unSigned);
}
}
throw new CDIException("Unknown type");
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.32
diff -u -r1.32 VariableManager.java
--- src/org/eclipse/cdt/debug/mi/core/cdi/VariableManager.java 5 Apr 2003 02:37:48 -0000 1.32
+++ src/org/eclipse/cdt/debug/mi/core/cdi/VariableManager.java 23 May 2003 15:48:40 -0000
@@ -115,6 +115,48 @@
}
/**
+ * Check the type
+ */
+ public void checkType(String type) throws CDIException {
+ try {
+ MISession mi = ((Session)getSession()).getMISession();
+ CommandFactory factory = mi.getCommandFactory();
+ MIPType ptype = factory.createMIPType(type);
+ mi.postCommand(ptype);
+ MIPTypeInfo info = ptype.getMIPtypeInfo();
+ if (info == null) {
+ throw new CDIException("No answer");
+ }
+ } catch (MIException e) {
+ throw new MI2CDIException(e);
+ }
+ }
+
+ public String createStringEncoding(VariableObject varObj) {
+ StringBuffer buffer = new StringBuffer();
+ if (varObj.length > 0) {
+ buffer.append("*(");
+ buffer.append('(');
+ if (varObj.type != null && varObj.type.length() > 0) {
+ buffer.append('(').append(varObj.type).append(')');
+ }
+ buffer.append(varObj.getName());
+ buffer.append(')');
+ if (varObj.index != 0) {
+ buffer.append('+').append(varObj.index);
+ }
+ buffer.append(')');
+ buffer.append('@').append(varObj.length - varObj.index);
+ } else if (varObj.type != null && varObj.type.length() > 0) {
+ buffer.append('(').append(varObj.type).append(')');
+ buffer.append('(').append(varObj.getName()).append(')');
+ } else {
+ buffer.append(varObj.getName());
+ }
+ return buffer.toString();
+ }
+
+ /**
* Tell gdb to remove the underlying var-object also.
*/
void removeMIVar(MIVar miVar) throws CDIException {
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.9
diff -u -r1.9 Variable.java
--- src/org/eclipse/cdt/debug/mi/core/cdi/model/Variable.java 23 May 2003 05:13:32 -0000 1.9
+++ src/org/eclipse/cdt/debug/mi/core/cdi/model/Variable.java 23 May 2003 15:48:40 -0000
@@ -169,9 +169,11 @@
//value = new FunctionValue(this);
value = new Value(this);
} else if (t instanceof ICDIPointerType) {
+ ((ICDIPointerType)t).getComponentType();
//value = new PointerValue(this);
value = new Value(this);
} else if (t instanceof ICDIArrayType) {
+ ((ICDIArrayType)t).getComponentType();
//value = new ArrayValue(this);
value = new Value(this);
} else if (t instanceof ICDIStructType) {
@@ -287,9 +289,9 @@
SourceManager sourceMgr = (SourceManager)session.getSourceManager();
String typename = getTypeName();
try {
- type = sourceMgr.getType(typename);
+ type = sourceMgr.getType(getTarget(), typename);
} catch (CDIException e) {
- type = new IncompleteType(typename);
+ type = new IncompleteType(getTarget(), typename);
// // Try after ptype.
// String ptype = sourceMgr.getDetailTypeName(typename);
// try {
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.3
diff -u -r1.3 VariableObject.java
--- src/org/eclipse/cdt/debug/mi/core/cdi/model/VariableObject.java 7 Feb 2003 03:49:19 -0000 1.3
+++ src/org/eclipse/cdt/debug/mi/core/cdi/model/VariableObject.java 23 May 2003 15:48:40 -0000
@@ -13,6 +13,11 @@
*/
public class VariableObject extends CObject implements ICDIVariableObject {
+ // Casting info.
+ public String type;
+ public int index;
+ public int length;
+
String name;
int position;
ICDIStackFrame frame;
@@ -30,6 +35,9 @@
frame = stack;
position = pos;
stackdepth = depth;
+ type = new String();
+ index = 0;
+ length = 0;
}
public ICDITarget getTarget() {
Index: src/org/eclipse/cdt/debug/mi/core/cdi/model/type/AggregateType.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/cdi/model/type/AggregateType.java,v
retrieving revision 1.1
diff -u -r1.1 AggregateType.java
--- src/org/eclipse/cdt/debug/mi/core/cdi/model/type/AggregateType.java 23 May 2003 05:13:17 -0000 1.1
+++ src/org/eclipse/cdt/debug/mi/core/cdi/model/type/AggregateType.java 23 May 2003 15:48:40 -0000
@@ -5,13 +5,14 @@
package org.eclipse.cdt.debug.mi.core.cdi.model.type;
+import org.eclipse.cdt.debug.core.cdi.model.ICDITarget;
import org.eclipse.cdt.debug.core.cdi.model.type.ICDIAggregateType;
/**
*/
public abstract class AggregateType extends Type implements ICDIAggregateType {
- public AggregateType(String typename) {
- super(typename);
+ public AggregateType(ICDITarget target, String typename) {
+ super(target, typename);
}
}
Index: src/org/eclipse/cdt/debug/mi/core/cdi/model/type/ArrayType.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/cdi/model/type/ArrayType.java,v
retrieving revision 1.1
diff -u -r1.1 ArrayType.java
--- src/org/eclipse/cdt/debug/mi/core/cdi/model/type/ArrayType.java 23 May 2003 05:13:17 -0000 1.1
+++ src/org/eclipse/cdt/debug/mi/core/cdi/model/type/ArrayType.java 23 May 2003 15:48:40 -0000
@@ -5,32 +5,66 @@
package org.eclipse.cdt.debug.mi.core.cdi.model.type;
+import org.eclipse.cdt.debug.core.cdi.CDIException;
+import org.eclipse.cdt.debug.core.cdi.model.ICDITarget;
import org.eclipse.cdt.debug.core.cdi.model.type.ICDIArrayType;
import org.eclipse.cdt.debug.core.cdi.model.type.ICDIType;
+import org.eclipse.cdt.debug.mi.core.cdi.Session;
+import org.eclipse.cdt.debug.mi.core.cdi.SourceManager;
/**
*/
public class ArrayType extends DerivedType implements ICDIArrayType {
+ int dimension;
+
/**
* @param typename
*/
- public ArrayType(String typename) {
- super(typename);
+ public ArrayType(ICDITarget target, String typename) {
+ super(target, typename);
}
/* (non-Javadoc)
* @see org.eclipse.cdt.debug.core.cdi.model.ICDIArrayType#getComponentType()
*/
public ICDIType getComponentType() {
- return null;
+ if (derivedType == null) {
+ String orig = getTypeName();
+ String name = orig;
+ int lbracket = orig.lastIndexOf('[');
+ int rbracket = orig.lastIndexOf(']');
+ if (lbracket != -1 && rbracket != -1 && (rbracket > lbracket)) {
+ String dim = name.substring(lbracket + 1, rbracket).trim();
+ try {
+ dimension = Integer.parseInt(dim);
+ name = orig.substring(0, lbracket).trim();
+ Session session = (Session)(getTarget().getSession());
+ SourceManager sourceMgr = (SourceManager)session.getSourceManager();
+ derivedType = sourceMgr.getType(getTarget(), name);
+ } catch (CDIException e) {
+// // Try after ptype.
+// String ptype = sourceMgr.getDetailTypeName(type);
+// try {
+// type = sourceMgr.getType(ptype);
+// } catch (CDIException ex) {
+// type = new IncompleteType(typename);
+// }
+ } catch (NumberFormatException e) {
+ }
+ }
+ if (derivedType == null) {
+ derivedType = new IncompleteType(getTarget(), name);
+ }
+ }
+ return derivedType;
}
/* (non-Javadoc)
* @see org.eclipse.cdt.debug.core.cdi.model.type.ICDIArrayType#getDimension()
*/
public int getDimension() {
- return 0;
+ return dimension;
}
}
Index: src/org/eclipse/cdt/debug/mi/core/cdi/model/type/BoolType.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/cdi/model/type/BoolType.java,v
retrieving revision 1.1
diff -u -r1.1 BoolType.java
--- src/org/eclipse/cdt/debug/mi/core/cdi/model/type/BoolType.java 23 May 2003 05:13:17 -0000 1.1
+++ src/org/eclipse/cdt/debug/mi/core/cdi/model/type/BoolType.java 23 May 2003 15:48:40 -0000
@@ -5,6 +5,7 @@
package org.eclipse.cdt.debug.mi.core.cdi.model.type;
+import org.eclipse.cdt.debug.core.cdi.model.ICDITarget;
import org.eclipse.cdt.debug.core.cdi.model.type.ICDIBoolType;
/**
@@ -14,12 +15,12 @@
/**
* @param typename
*/
- public BoolType(String typename) {
- this(typename, false);
+ public BoolType(ICDITarget target, String typename) {
+ this(target, typename, false);
}
- public BoolType(String typename, boolean usigned) {
- super(typename, usigned);
+ public BoolType(ICDITarget target, String typename, boolean usigned) {
+ super(target, typename, usigned);
}
}
Index: src/org/eclipse/cdt/debug/mi/core/cdi/model/type/CharType.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/cdi/model/type/CharType.java,v
retrieving revision 1.1
diff -u -r1.1 CharType.java
--- src/org/eclipse/cdt/debug/mi/core/cdi/model/type/CharType.java 23 May 2003 05:13:17 -0000 1.1
+++ src/org/eclipse/cdt/debug/mi/core/cdi/model/type/CharType.java 23 May 2003 15:48:40 -0000
@@ -5,6 +5,7 @@
package org.eclipse.cdt.debug.mi.core.cdi.model.type;
+import org.eclipse.cdt.debug.core.cdi.model.ICDITarget;
import org.eclipse.cdt.debug.core.cdi.model.type.ICDICharType;
/**
@@ -14,11 +15,11 @@
/**
* @param typename
*/
- public CharType(String typename) {
- this(typename, false);
+ public CharType(ICDITarget target, String typename) {
+ this(target, typename, false);
}
- public CharType(String typename, boolean usigned) {
- super(typename, usigned);
+ public CharType(ICDITarget target, String typename, boolean usigned) {
+ super(target, typename, usigned);
}
}
Index: src/org/eclipse/cdt/debug/mi/core/cdi/model/type/DerivedType.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/cdi/model/type/DerivedType.java,v
retrieving revision 1.1
diff -u -r1.1 DerivedType.java
--- src/org/eclipse/cdt/debug/mi/core/cdi/model/type/DerivedType.java 23 May 2003 05:13:17 -0000 1.1
+++ src/org/eclipse/cdt/debug/mi/core/cdi/model/type/DerivedType.java 23 May 2003 15:48:40 -0000
@@ -5,6 +5,7 @@
package org.eclipse.cdt.debug.mi.core.cdi.model.type;
+import org.eclipse.cdt.debug.core.cdi.model.ICDITarget;
import org.eclipse.cdt.debug.core.cdi.model.type.ICDIDerivedType;
import org.eclipse.cdt.debug.core.cdi.model.type.ICDIType;
@@ -12,15 +13,10 @@
*/
public abstract class DerivedType extends Type implements ICDIDerivedType {
- public DerivedType(String typename) {
- super(typename);
- }
+ ICDIType derivedType;
- /* (non-Javadoc)
- * @see org.eclipse.cdt.debug.core.cdi.model.type.ICDIDerivedType#getComponentType()
- */
- public ICDIType getComponentType() {
- return null;
+ public DerivedType(ICDITarget target, String typename) {
+ super(target, typename);
}
}
Index: src/org/eclipse/cdt/debug/mi/core/cdi/model/type/DoubleType.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/cdi/model/type/DoubleType.java,v
retrieving revision 1.1
diff -u -r1.1 DoubleType.java
--- src/org/eclipse/cdt/debug/mi/core/cdi/model/type/DoubleType.java 23 May 2003 05:13:17 -0000 1.1
+++ src/org/eclipse/cdt/debug/mi/core/cdi/model/type/DoubleType.java 23 May 2003 15:48:40 -0000
@@ -5,6 +5,7 @@
package org.eclipse.cdt.debug.mi.core.cdi.model.type;
+import org.eclipse.cdt.debug.core.cdi.model.ICDITarget;
import org.eclipse.cdt.debug.core.cdi.model.type.ICDIDoubleType;
/**
@@ -14,11 +15,11 @@
/**
* @param typename
*/
- public DoubleType(String typename) {
- this(typename, false, false, false);
+ public DoubleType(ICDITarget target, String typename) {
+ this(target, typename, false, false, false);
}
- public DoubleType(String typename, boolean isComplex, boolean isImg, boolean isLong) {
- super(typename, isComplex, isImg, isLong);
+ public DoubleType(ICDITarget target, String typename, boolean isComplex, boolean isImg, boolean isLong) {
+ super(target, typename, isComplex, isImg, isLong);
}
}
Index: src/org/eclipse/cdt/debug/mi/core/cdi/model/type/EnumType.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/cdi/model/type/EnumType.java,v
retrieving revision 1.1
diff -u -r1.1 EnumType.java
--- src/org/eclipse/cdt/debug/mi/core/cdi/model/type/EnumType.java 23 May 2003 05:13:17 -0000 1.1
+++ src/org/eclipse/cdt/debug/mi/core/cdi/model/type/EnumType.java 23 May 2003 15:48:40 -0000
@@ -6,6 +6,7 @@
package org.eclipse.cdt.debug.mi.core.cdi.model.type;
+import org.eclipse.cdt.debug.core.cdi.model.ICDITarget;
import org.eclipse.cdt.debug.core.cdi.model.type.ICDIEnumType;
/**
@@ -15,11 +16,11 @@
/**
* @param typename
*/
- public EnumType(String typename) {
- this(typename, false);
+ public EnumType(ICDITarget target, String typename) {
+ this(target, typename, false);
}
- public EnumType(String typename, boolean usigned) {
- super(typename, usigned);
+ public EnumType(ICDITarget target, String typename, boolean usigned) {
+ super(target, typename, usigned);
}
}
Index: src/org/eclipse/cdt/debug/mi/core/cdi/model/type/FloatType.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/cdi/model/type/FloatType.java,v
retrieving revision 1.1
diff -u -r1.1 FloatType.java
--- src/org/eclipse/cdt/debug/mi/core/cdi/model/type/FloatType.java 23 May 2003 05:13:17 -0000 1.1
+++ src/org/eclipse/cdt/debug/mi/core/cdi/model/type/FloatType.java 23 May 2003 15:48:40 -0000
@@ -5,6 +5,7 @@
package org.eclipse.cdt.debug.mi.core.cdi.model.type;
+import org.eclipse.cdt.debug.core.cdi.model.ICDITarget;
import org.eclipse.cdt.debug.core.cdi.model.type.ICDIFloatType;
/**
@@ -14,11 +15,11 @@
/**
* @param typename
*/
- public FloatType(String typename) {
- this(typename, false, false);
+ public FloatType(ICDITarget target, String typename) {
+ this(target, typename, false, false);
}
- public FloatType(String typename, boolean isComplex, boolean isImg) {
- super(typename, isComplex, isImg, false);
+ public FloatType(ICDITarget target, String typename, boolean isComplex, boolean isImg) {
+ super(target, typename, isComplex, isImg, false);
}
}
Index: src/org/eclipse/cdt/debug/mi/core/cdi/model/type/FloatingPointType.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/cdi/model/type/FloatingPointType.java,v
retrieving revision 1.1
diff -u -r1.1 FloatingPointType.java
--- src/org/eclipse/cdt/debug/mi/core/cdi/model/type/FloatingPointType.java 23 May 2003 05:13:17 -0000 1.1
+++ src/org/eclipse/cdt/debug/mi/core/cdi/model/type/FloatingPointType.java 23 May 2003 15:48:40 -0000
@@ -5,6 +5,7 @@
package org.eclipse.cdt.debug.mi.core.cdi.model.type;
+import org.eclipse.cdt.debug.core.cdi.model.ICDITarget;
import org.eclipse.cdt.debug.core.cdi.model.type.ICDIFloatingPointType;
/**
@@ -15,8 +16,8 @@
boolean imaginary;
boolean islong;
- public FloatingPointType(String typename, boolean comp, boolean img, boolean l) {
- super(typename);
+ public FloatingPointType(ICDITarget target, String typename, boolean comp, boolean img, boolean l) {
+ super(target, typename);
complex = comp;
imaginary = img;
islong = l;
Index: src/org/eclipse/cdt/debug/mi/core/cdi/model/type/FunctionType.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/cdi/model/type/FunctionType.java,v
retrieving revision 1.1
diff -u -r1.1 FunctionType.java
--- src/org/eclipse/cdt/debug/mi/core/cdi/model/type/FunctionType.java 23 May 2003 05:13:17 -0000 1.1
+++ src/org/eclipse/cdt/debug/mi/core/cdi/model/type/FunctionType.java 23 May 2003 15:48:40 -0000
@@ -5,13 +5,51 @@
package org.eclipse.cdt.debug.mi.core.cdi.model.type;
+import org.eclipse.cdt.debug.core.cdi.CDIException;
+import org.eclipse.cdt.debug.core.cdi.model.ICDITarget;
import org.eclipse.cdt.debug.core.cdi.model.type.ICDIFunctionType;
+import org.eclipse.cdt.debug.core.cdi.model.type.ICDIType;
+import org.eclipse.cdt.debug.mi.core.cdi.Session;
+import org.eclipse.cdt.debug.mi.core.cdi.SourceManager;
/**
*/
public class FunctionType extends DerivedType implements ICDIFunctionType {
- public FunctionType(String typename) {
- super(typename);
+ public FunctionType(ICDITarget target, String typename) {
+ super(target, typename);
}
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.debug.core.cdi.model.type.ICDIDerivedType#getComponentType()
+ */
+ public ICDIType getComponentType() {
+ if (derivedType != null) {
+ String orig = getTypeName();
+ String name = orig;
+ int lparen = orig.lastIndexOf('(');
+ int rparen = orig.lastIndexOf(')');
+ if (lparen != -1 && rparen != -1 && (rparen > lparen)) {
+ String dim = name.substring(lparen + 1, rparen).trim();
+ try {
+ name = orig.substring(0, lparen).trim();
+ Session session = (Session)(getTarget().getSession());
+ SourceManager sourceMgr = (SourceManager)session.getSourceManager();
+ derivedType = sourceMgr.getType(getTarget(), name);
+ } catch (CDIException e) {
+// // Try after ptype.
+// String ptype = sourceMgr.getDetailTypeName(type);
+// try {
+// type = sourceMgr.getType(ptype);
+// } catch (CDIException ex) {
+// type = new IncompleteType(typename);
+// }
+ }
+ }
+ if (derivedType == null) {
+ derivedType = new IncompleteType(getTarget(), name);
+ }
+ }
+ return derivedType;
+ }
+
}
Index: src/org/eclipse/cdt/debug/mi/core/cdi/model/type/IncompleteType.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/cdi/model/type/IncompleteType.java,v
retrieving revision 1.1
diff -u -r1.1 IncompleteType.java
--- src/org/eclipse/cdt/debug/mi/core/cdi/model/type/IncompleteType.java 23 May 2003 05:13:17 -0000 1.1
+++ src/org/eclipse/cdt/debug/mi/core/cdi/model/type/IncompleteType.java 23 May 2003 15:48:40 -0000
@@ -5,6 +5,8 @@
package org.eclipse.cdt.debug.mi.core.cdi.model.type;
+import org.eclipse.cdt.debug.core.cdi.model.ICDITarget;
+
/**
*/
@@ -13,8 +15,8 @@
/**
* @param name
*/
- public IncompleteType(String name) {
- super(name);
+ public IncompleteType(ICDITarget target, String name) {
+ super(target, name);
}
}
Index: src/org/eclipse/cdt/debug/mi/core/cdi/model/type/IntType.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/cdi/model/type/IntType.java,v
retrieving revision 1.1
diff -u -r1.1 IntType.java
--- src/org/eclipse/cdt/debug/mi/core/cdi/model/type/IntType.java 23 May 2003 05:13:17 -0000 1.1
+++ src/org/eclipse/cdt/debug/mi/core/cdi/model/type/IntType.java 23 May 2003 15:48:40 -0000
@@ -5,6 +5,7 @@
package org.eclipse.cdt.debug.mi.core.cdi.model.type;
+import org.eclipse.cdt.debug.core.cdi.model.ICDITarget;
import org.eclipse.cdt.debug.core.cdi.model.type.ICDIIntType;
/**
@@ -14,12 +15,12 @@
/**
* @param typename
*/
- public IntType(String typename) {
- this(typename, false);
+ public IntType(ICDITarget target, String typename) {
+ this(target, typename, false);
}
- public IntType(String typename, boolean usigned) {
- super(typename, usigned);
+ public IntType(ICDITarget target, String typename, boolean usigned) {
+ super(target, typename, usigned);
}
}
Index: src/org/eclipse/cdt/debug/mi/core/cdi/model/type/IntegralType.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/cdi/model/type/IntegralType.java,v
retrieving revision 1.1
diff -u -r1.1 IntegralType.java
--- src/org/eclipse/cdt/debug/mi/core/cdi/model/type/IntegralType.java 23 May 2003 05:13:17 -0000 1.1
+++ src/org/eclipse/cdt/debug/mi/core/cdi/model/type/IntegralType.java 23 May 2003 15:48:40 -0000
@@ -5,6 +5,7 @@
package org.eclipse.cdt.debug.mi.core.cdi.model.type;
+import org.eclipse.cdt.debug.core.cdi.model.ICDITarget;
import org.eclipse.cdt.debug.core.cdi.model.type.ICDIIntegralType;
/**
@@ -13,8 +14,8 @@
boolean unSigned;
- public IntegralType(String typename, boolean usigned) {
- super(typename);
+ public IntegralType(ICDITarget target, String typename, boolean usigned) {
+ super(target, typename);
unSigned = usigned;
}
Index: src/org/eclipse/cdt/debug/mi/core/cdi/model/type/LongLongType.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/cdi/model/type/LongLongType.java,v
retrieving revision 1.1
diff -u -r1.1 LongLongType.java
--- src/org/eclipse/cdt/debug/mi/core/cdi/model/type/LongLongType.java 23 May 2003 05:13:17 -0000 1.1
+++ src/org/eclipse/cdt/debug/mi/core/cdi/model/type/LongLongType.java 23 May 2003 15:48:40 -0000
@@ -6,6 +6,7 @@
package org.eclipse.cdt.debug.mi.core.cdi.model.type;
+import org.eclipse.cdt.debug.core.cdi.model.ICDITarget;
import org.eclipse.cdt.debug.core.cdi.model.type.ICDILongLongType;
/**
@@ -15,11 +16,11 @@
/**
* @param typename
*/
- public LongLongType(String typename) {
- this(typename, false);
+ public LongLongType(ICDITarget target, String typename) {
+ this(target, typename, false);
}
- public LongLongType(String typename, boolean usigned) {
- super(typename, usigned);
+ public LongLongType(ICDITarget target, String typename, boolean usigned) {
+ super(target, typename, usigned);
}
}
Index: src/org/eclipse/cdt/debug/mi/core/cdi/model/type/LongType.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/cdi/model/type/LongType.java,v
retrieving revision 1.1
diff -u -r1.1 LongType.java
--- src/org/eclipse/cdt/debug/mi/core/cdi/model/type/LongType.java 23 May 2003 05:13:17 -0000 1.1
+++ src/org/eclipse/cdt/debug/mi/core/cdi/model/type/LongType.java 23 May 2003 15:48:40 -0000
@@ -5,6 +5,7 @@
package org.eclipse.cdt.debug.mi.core.cdi.model.type;
+import org.eclipse.cdt.debug.core.cdi.model.ICDITarget;
import org.eclipse.cdt.debug.core.cdi.model.type.ICDILongType;
/**
@@ -14,11 +15,11 @@
/**
* @param typename
*/
- public LongType(String typename) {
- this(typename, false);
+ public LongType(ICDITarget target, String typename) {
+ this(target, typename, false);
}
- public LongType(String typename, boolean usigned) {
- super(typename, usigned);
+ public LongType(ICDITarget target, String typename, boolean usigned) {
+ super(target, typename, usigned);
}
}
Index: src/org/eclipse/cdt/debug/mi/core/cdi/model/type/PointerType.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/cdi/model/type/PointerType.java,v
retrieving revision 1.1
diff -u -r1.1 PointerType.java
--- src/org/eclipse/cdt/debug/mi/core/cdi/model/type/PointerType.java 23 May 2003 05:13:17 -0000 1.1
+++ src/org/eclipse/cdt/debug/mi/core/cdi/model/type/PointerType.java 23 May 2003 15:48:40 -0000
@@ -5,13 +5,52 @@
package org.eclipse.cdt.debug.mi.core.cdi.model.type;
+import org.eclipse.cdt.debug.core.cdi.CDIException;
+import org.eclipse.cdt.debug.core.cdi.model.ICDITarget;
import org.eclipse.cdt.debug.core.cdi.model.type.ICDIPointerType;
+import org.eclipse.cdt.debug.core.cdi.model.type.ICDIType;
+import org.eclipse.cdt.debug.mi.core.cdi.Session;
+import org.eclipse.cdt.debug.mi.core.cdi.SourceManager;
/**
*/
public class PointerType extends DerivedType implements ICDIPointerType {
- public PointerType(String typename) {
- super(typename);
+ public PointerType(ICDITarget target, String typename) {
+ super(target, typename);
}
+
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.debug.core.cdi.model.type.ICDIDerivedType#getComponentType()
+ */
+ public ICDIType getComponentType() {
+ if (derivedType == null) {
+ String orig = getTypeName();
+ String name = orig;
+ int star = orig.lastIndexOf('*');
+ // remove last '*'
+ if (star != -1) {
+ name = orig.substring(0, star).trim();
+ Session session = (Session)(getTarget().getSession());
+ SourceManager sourceMgr = (SourceManager)session.getSourceManager();
+ try {
+ derivedType = sourceMgr.getType(getTarget(), name);
+ } catch (CDIException e) {
+// // Try after ptype.
+// String ptype = sourceMgr.getDetailTypeName(type);
+// try {
+// type = sourceMgr.getType(ptype);
+// } catch (CDIException ex) {
+// type = new IncompleteType(typename);
+// }
+ }
+ }
+ if (derivedType == null) {
+ derivedType = new IncompleteType(getTarget(), name);
+ }
+ }
+ return derivedType;
+ }
+
}
Index: src/org/eclipse/cdt/debug/mi/core/cdi/model/type/ReferenceType.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/cdi/model/type/ReferenceType.java,v
retrieving revision 1.1
diff -u -r1.1 ReferenceType.java
--- src/org/eclipse/cdt/debug/mi/core/cdi/model/type/ReferenceType.java 23 May 2003 05:13:17 -0000 1.1
+++ src/org/eclipse/cdt/debug/mi/core/cdi/model/type/ReferenceType.java 23 May 2003 15:48:40 -0000
@@ -5,7 +5,12 @@
package org.eclipse.cdt.debug.mi.core.cdi.model.type;
+import org.eclipse.cdt.debug.core.cdi.CDIException;
+import org.eclipse.cdt.debug.core.cdi.model.ICDITarget;
import org.eclipse.cdt.debug.core.cdi.model.type.ICDIReferenceType;
+import org.eclipse.cdt.debug.core.cdi.model.type.ICDIType;
+import org.eclipse.cdt.debug.mi.core.cdi.Session;
+import org.eclipse.cdt.debug.mi.core.cdi.SourceManager;
/**
*/
@@ -14,8 +19,40 @@
/**
* @param name
*/
- public ReferenceType(String name) {
- super(name);
+ public ReferenceType(ICDITarget target, String name) {
+ super(target, name);
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.debug.core.cdi.model.type.ICDIDerivedType#getComponentType()
+ */
+ public ICDIType getComponentType() {
+ if (derivedType == null) {
+ String orig = getTypeName();
+ String name = orig;
+ int amp = orig.lastIndexOf('&');
+ // remove last '*'
+ if (amp != -1) {
+ name = orig.substring(0, amp).trim();
+ Session session = (Session)(getTarget().getSession());
+ SourceManager sourceMgr = (SourceManager)session.getSourceManager();
+ try {
+ derivedType = sourceMgr.getType(getTarget(), name);
+ } catch (CDIException e) {
+// // Try after ptype.
+// String ptype = sourceMgr.getDetailTypeName(type);
+// try {
+// type = sourceMgr.getType(ptype);
+// } catch (CDIException ex) {
+// type = new IncompleteType(typename);
+// }
+ }
+ }
+ if (derivedType == null) {
+ derivedType = new IncompleteType(getTarget(), name);
+ }
+ }
+ return derivedType;
}
}
Index: src/org/eclipse/cdt/debug/mi/core/cdi/model/type/ShortType.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/cdi/model/type/ShortType.java,v
retrieving revision 1.1
diff -u -r1.1 ShortType.java
--- src/org/eclipse/cdt/debug/mi/core/cdi/model/type/ShortType.java 23 May 2003 05:13:17 -0000 1.1
+++ src/org/eclipse/cdt/debug/mi/core/cdi/model/type/ShortType.java 23 May 2003 15:48:40 -0000
@@ -5,6 +5,7 @@
package org.eclipse.cdt.debug.mi.core.cdi.model.type;
+import org.eclipse.cdt.debug.core.cdi.model.ICDITarget;
import org.eclipse.cdt.debug.core.cdi.model.type.ICDIShortType;
/**
@@ -14,11 +15,11 @@
/**
* @param typename
*/
- public ShortType(String typename) {
- this(typename, false);
+ public ShortType(ICDITarget target, String typename) {
+ this(target, typename, false);
}
- public ShortType(String typename, boolean usigned) {
- super(typename, usigned);
+ public ShortType(ICDITarget target, String typename, boolean usigned) {
+ super(target, typename, usigned);
}
}
Index: src/org/eclipse/cdt/debug/mi/core/cdi/model/type/StructType.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/cdi/model/type/StructType.java,v
retrieving revision 1.1
diff -u -r1.1 StructType.java
--- src/org/eclipse/cdt/debug/mi/core/cdi/model/type/StructType.java 23 May 2003 05:13:17 -0000 1.1
+++ src/org/eclipse/cdt/debug/mi/core/cdi/model/type/StructType.java 23 May 2003 15:48:40 -0000
@@ -6,6 +6,7 @@
package org.eclipse.cdt.debug.mi.core.cdi.model.type;
+import org.eclipse.cdt.debug.core.cdi.model.ICDITarget;
import org.eclipse.cdt.debug.core.cdi.model.type.ICDIStructType;
/**
@@ -15,8 +16,8 @@
/**
* @param typename
*/
- public StructType(String typename) {
- super(typename);
+ public StructType(ICDITarget target, String typename) {
+ super(target, typename);
}
Index: src/org/eclipse/cdt/debug/mi/core/cdi/model/type/Type.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/cdi/model/type/Type.java,v
retrieving revision 1.1
diff -u -r1.1 Type.java
--- src/org/eclipse/cdt/debug/mi/core/cdi/model/type/Type.java 23 May 2003 05:13:17 -0000 1.1
+++ src/org/eclipse/cdt/debug/mi/core/cdi/model/type/Type.java 23 May 2003 15:48:40 -0000
@@ -6,16 +6,19 @@
package org.eclipse.cdt.debug.mi.core.cdi.model.type;
+import org.eclipse.cdt.debug.core.cdi.model.ICDITarget;
import org.eclipse.cdt.debug.core.cdi.model.type.ICDIType;
+import org.eclipse.cdt.debug.mi.core.cdi.model.CObject;
/**
*/
-public abstract class Type implements ICDIType {
+public abstract class Type extends CObject implements ICDIType {
String typename;
String detailName;
- public Type(String name) {
+ public Type(ICDITarget target, String name) {
+ super(target);
typename = name;
}
Index: src/org/eclipse/cdt/debug/mi/core/cdi/model/type/VoidType.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/cdi/model/type/VoidType.java,v
retrieving revision 1.1
diff -u -r1.1 VoidType.java
--- src/org/eclipse/cdt/debug/mi/core/cdi/model/type/VoidType.java 23 May 2003 05:13:17 -0000 1.1
+++ src/org/eclipse/cdt/debug/mi/core/cdi/model/type/VoidType.java 23 May 2003 15:48:40 -0000
@@ -5,13 +5,14 @@
package org.eclipse.cdt.debug.mi.core.cdi.model.type;
+import org.eclipse.cdt.debug.core.cdi.model.ICDITarget;
import org.eclipse.cdt.debug.core.cdi.model.type.ICDIVoidType;
/**
*/
public class VoidType extends Type implements ICDIVoidType {
- public VoidType(String typename) {
- super(typename);
+ public VoidType(ICDITarget target, String typename) {
+ super(target, typename);
}
}
Index: src/org/eclipse/cdt/debug/mi/core/cdi/model/type/WCharType.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/cdi/model/type/WCharType.java,v
retrieving revision 1.1
diff -u -r1.1 WCharType.java
--- src/org/eclipse/cdt/debug/mi/core/cdi/model/type/WCharType.java 23 May 2003 05:13:17 -0000 1.1
+++ src/org/eclipse/cdt/debug/mi/core/cdi/model/type/WCharType.java 23 May 2003 15:48:40 -0000
@@ -7,6 +7,7 @@
package org.eclipse.cdt.debug.mi.core.cdi.model.type;
+import org.eclipse.cdt.debug.core.cdi.model.ICDITarget;
import org.eclipse.cdt.debug.core.cdi.model.type.ICDIWCharType;
/**
@@ -16,11 +17,11 @@
/**
* @param typename
*/
- public WCharType(String typename) {
- this(typename, false);
+ public WCharType(ICDITarget target, String typename) {
+ this(target, typename, false);
}
- public WCharType(String typename, boolean usigned) {
- super(typename, usigned);
+ public WCharType(ICDITarget target, String typename, boolean usigned) {
+ super(target, typename, usigned);
}
}