Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAlain Magloire2003-07-16 19:09:11 +0000
committerAlain Magloire2003-07-16 19:09:11 +0000
commit4d77a59658c763e47a593039ea93c7a5f6a1aac2 (patch)
treea89a2a36c8b7ddff1932a6a62f69cab4f1b45ce2
parent51cc929af3cfc99ccb4e73190102dfa3f793ac64 (diff)
downloadorg.eclipse.cdt-4d77a59658c763e47a593039ea93c7a5f6a1aac2.tar.gz
org.eclipse.cdt-4d77a59658c763e47a593039ea93c7a5f6a1aac2.tar.xz
org.eclipse.cdt-4d77a59658c763e47a593039ea93c7a5f6a1aac2.zip
Create ArrayValue ReferenceValue PointerValue
and StructValue.
-rw-r--r--debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/cdi/model/Value.java3
-rw-r--r--debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/cdi/model/Variable.java26
-rw-r--r--debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/cdi/model/type/AggregateValue.java19
-rw-r--r--debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/cdi/model/type/ArrayValue.java41
-rw-r--r--debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/cdi/model/type/DerivedValue.java20
-rw-r--r--debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/cdi/model/type/FunctionValue.java22
-rw-r--r--debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/cdi/model/type/PointerValue.java3
-rw-r--r--debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/cdi/model/type/ReferenceValue.java3
-rw-r--r--debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/cdi/model/type/StructValue.java22
9 files changed, 144 insertions, 15 deletions
diff --git a/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/cdi/model/Value.java b/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/cdi/model/Value.java
index fde55946959..1ccbfcbff5d 100644
--- a/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/cdi/model/Value.java
+++ b/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/cdi/model/Value.java
@@ -19,7 +19,7 @@ import org.eclipse.cdt.debug.mi.core.output.MIVarEvaluateExpressionInfo;
*/
public class Value extends CObject implements ICDIValue {
- Variable variable;
+ protected Variable variable;
public Value(Variable v) {
super(v.getTarget());
@@ -86,6 +86,7 @@ public class Value extends CObject implements ICDIValue {
*/
return (getChildrenNumber() > 0);
}
+
/**
* @see org.eclipse.cdt.debug.core.cdi.model.ICDIValue#getVariables()
*/
diff --git a/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/cdi/model/Variable.java b/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/cdi/model/Variable.java
index d88ff3eaeeb..187b326b2a7 100644
--- a/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/cdi/model/Variable.java
+++ b/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/cdi/model/Variable.java
@@ -35,11 +35,13 @@ import org.eclipse.cdt.debug.mi.core.cdi.Format;
import org.eclipse.cdt.debug.mi.core.cdi.MI2CDIException;
import org.eclipse.cdt.debug.mi.core.cdi.Session;
import org.eclipse.cdt.debug.mi.core.cdi.SourceManager;
+import org.eclipse.cdt.debug.mi.core.cdi.model.type.ArrayValue;
import org.eclipse.cdt.debug.mi.core.cdi.model.type.BoolValue;
import org.eclipse.cdt.debug.mi.core.cdi.model.type.CharValue;
import org.eclipse.cdt.debug.mi.core.cdi.model.type.DoubleValue;
import org.eclipse.cdt.debug.mi.core.cdi.model.type.EnumValue;
import org.eclipse.cdt.debug.mi.core.cdi.model.type.FloatValue;
+import org.eclipse.cdt.debug.mi.core.cdi.model.type.FunctionValue;
import org.eclipse.cdt.debug.mi.core.cdi.model.type.IncompleteType;
import org.eclipse.cdt.debug.mi.core.cdi.model.type.IntValue;
import org.eclipse.cdt.debug.mi.core.cdi.model.type.LongLongValue;
@@ -47,6 +49,7 @@ import org.eclipse.cdt.debug.mi.core.cdi.model.type.LongValue;
import org.eclipse.cdt.debug.mi.core.cdi.model.type.PointerValue;
import org.eclipse.cdt.debug.mi.core.cdi.model.type.ReferenceValue;
import org.eclipse.cdt.debug.mi.core.cdi.model.type.ShortValue;
+import org.eclipse.cdt.debug.mi.core.cdi.model.type.StructValue;
import org.eclipse.cdt.debug.mi.core.cdi.model.type.Type;
import org.eclipse.cdt.debug.mi.core.cdi.model.type.WCharValue;
import org.eclipse.cdt.debug.mi.core.command.CommandFactory;
@@ -101,13 +104,22 @@ public class Variable extends CObject implements ICDIVariable {
}
public ICDIVariable[] getChildren() throws CDIException {
+ // Use the default timeout.
+ return getChildren(-1);
+ }
+
+ public ICDIVariable[] getChildren(int timeout) throws CDIException {
Session session = (Session)(getTarget().getSession());
MISession mi = session.getMISession();
CommandFactory factory = mi.getCommandFactory();
MIVarListChildren var =
factory.createMIVarListChildren(getMIVar().getVarName());
try {
- mi.postCommand(var);
+ if (timeout >= 0) {
+ mi.postCommand(var, timeout);
+ } else {
+ mi.postCommand(var);
+ }
MIVarListChildrenInfo info = var.getMIVarListChildrenInfo();
if (info == null) {
throw new CDIException("No answer");
@@ -172,21 +184,15 @@ public class Variable extends CObject implements ICDIVariable {
} else if (t instanceof ICDIDoubleType) {
value = new DoubleValue(this);
} else if (t instanceof ICDIFunctionType) {
- //value = new FunctionValue(this);
- value = new Value(this);
+ value = new FunctionValue(this);
} else if (t instanceof ICDIPointerType) {
- //((ICDIPointerType)t).getComponentType();
value = new PointerValue(this);
- //value = new Value(this);
} else if (t instanceof ICDIReferenceType) {
value = new ReferenceValue(this);
} else if (t instanceof ICDIArrayType) {
- //((ICDIArrayType)t).getComponentType();
- //value = new ArrayValue(this);
- value = new Value(this);
+ value = new ArrayValue(this);
} else if (t instanceof ICDIStructType) {
- //value = new StructValue(this);
- value = new Value(this);
+ value = new StructValue(this);
} else {
value = new Value(this);
}
diff --git a/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/cdi/model/type/AggregateValue.java b/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/cdi/model/type/AggregateValue.java
new file mode 100644
index 00000000000..f67ff5fba62
--- /dev/null
+++ b/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/cdi/model/type/AggregateValue.java
@@ -0,0 +1,19 @@
+/*
+ *(c) Copyright QNX Software Systems Ltd. 2002.
+ * All Rights Reserved.
+ *
+ */
+package org.eclipse.cdt.debug.mi.core.cdi.model.type;
+
+import org.eclipse.cdt.debug.core.cdi.model.type.ICDIAggregateValue;
+import org.eclipse.cdt.debug.mi.core.cdi.model.Value;
+import org.eclipse.cdt.debug.mi.core.cdi.model.Variable;
+
+/**
+ */
+public abstract class AggregateValue extends Value implements ICDIAggregateValue {
+
+ public AggregateValue(Variable v) {
+ super(v);
+ }
+}
diff --git a/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/cdi/model/type/ArrayValue.java b/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/cdi/model/type/ArrayValue.java
new file mode 100644
index 00000000000..a3ae915ef8c
--- /dev/null
+++ b/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/cdi/model/type/ArrayValue.java
@@ -0,0 +1,41 @@
+/*
+ *(c) Copyright QNX Software Systems Ltd. 2002.
+ * All Rights Reserved.
+ *
+ */
+
+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.ICDIVariable;
+import org.eclipse.cdt.debug.core.cdi.model.type.ICDIArrayValue;
+import org.eclipse.cdt.debug.mi.core.cdi.model.Variable;
+
+/**
+ * Enter type comment.
+ *
+ * @since Jun 3, 2003
+ */
+public class ArrayValue extends DerivedValue implements ICDIArrayValue {
+
+ public ArrayValue(Variable v) {
+ super(v);
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.debug.core.cdi.model.ICDIValue#getVariables()
+ */
+ public ICDIVariable[] getVariables() throws CDIException {
+
+ /* GDB is appallingly slow on array fetches. As as slow as 128 entries
+ * per second on NT gdbs with slow processors. We need to set a timeout
+ * that's appropraitely scaled by number of children to give the slave
+ * GDB time to respond. In the end perhaps we want a UI for this. As it
+ * is, let's just make up a number that's 5 seconds for us plus one
+ * second for every 128 entries. */
+ int timeout = variable.getMIVar().getNumChild() * 8 + 5000;
+
+ return variable.getChildren(timeout);
+ }
+
+}
diff --git a/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/cdi/model/type/DerivedValue.java b/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/cdi/model/type/DerivedValue.java
new file mode 100644
index 00000000000..8d785b214df
--- /dev/null
+++ b/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/cdi/model/type/DerivedValue.java
@@ -0,0 +1,20 @@
+/*
+ *(c) Copyright QNX Software Systems Ltd. 2002.
+ * All Rights Reserved.
+ *
+ */
+package org.eclipse.cdt.debug.mi.core.cdi.model.type;
+
+import org.eclipse.cdt.debug.core.cdi.model.type.ICDIDerivedValue;
+import org.eclipse.cdt.debug.mi.core.cdi.model.Value;
+import org.eclipse.cdt.debug.mi.core.cdi.model.Variable;
+
+/**
+ */
+public abstract class DerivedValue extends Value implements ICDIDerivedValue {
+
+ public DerivedValue(Variable v) {
+ super(v);
+ }
+
+}
diff --git a/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/cdi/model/type/FunctionValue.java b/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/cdi/model/type/FunctionValue.java
new file mode 100644
index 00000000000..1d394339515
--- /dev/null
+++ b/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/cdi/model/type/FunctionValue.java
@@ -0,0 +1,22 @@
+/*
+ *(c) Copyright QNX Software Systems Ltd. 2002.
+ * All Rights Reserved.
+ *
+ */
+
+package org.eclipse.cdt.debug.mi.core.cdi.model.type;
+
+import org.eclipse.cdt.debug.core.cdi.model.type.ICDIFunctionValue;
+import org.eclipse.cdt.debug.mi.core.cdi.model.Variable;
+
+/**
+ * Enter type comment.
+ *
+ * @since Jun 3, 2003
+ */
+public class FunctionValue extends DerivedValue implements ICDIFunctionValue {
+
+ public FunctionValue(Variable v) {
+ super(v);
+ }
+}
diff --git a/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/cdi/model/type/PointerValue.java b/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/cdi/model/type/PointerValue.java
index 5798f126467..ef555a87297 100644
--- a/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/cdi/model/type/PointerValue.java
+++ b/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/cdi/model/type/PointerValue.java
@@ -8,7 +8,6 @@ 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.type.ICDIPointerValue;
-import org.eclipse.cdt.debug.mi.core.cdi.model.Value;
import org.eclipse.cdt.debug.mi.core.cdi.model.Variable;
/**
@@ -16,7 +15,7 @@ import org.eclipse.cdt.debug.mi.core.cdi.model.Variable;
*
* @since Jun 3, 2003
*/
-public class PointerValue extends Value implements ICDIPointerValue {
+public class PointerValue extends DerivedValue implements ICDIPointerValue {
public PointerValue(Variable v) {
super(v);
diff --git a/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/cdi/model/type/ReferenceValue.java b/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/cdi/model/type/ReferenceValue.java
index 295536bd2f7..dc075b1fbaa 100644
--- a/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/cdi/model/type/ReferenceValue.java
+++ b/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/cdi/model/type/ReferenceValue.java
@@ -8,7 +8,6 @@ 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.type.ICDIReferenceValue;
-import org.eclipse.cdt.debug.mi.core.cdi.model.Value;
import org.eclipse.cdt.debug.mi.core.cdi.model.Variable;
/**
@@ -16,7 +15,7 @@ import org.eclipse.cdt.debug.mi.core.cdi.model.Variable;
*
* @since Jun 3, 2003
*/
-public class ReferenceValue extends Value implements ICDIReferenceValue {
+public class ReferenceValue extends DerivedValue implements ICDIReferenceValue {
/**
* @param v
diff --git a/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/cdi/model/type/StructValue.java b/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/cdi/model/type/StructValue.java
new file mode 100644
index 00000000000..8b9cde9a9c9
--- /dev/null
+++ b/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/cdi/model/type/StructValue.java
@@ -0,0 +1,22 @@
+/*
+ *(c) Copyright QNX Software Systems Ltd. 2002.
+ * All Rights Reserved.
+ *
+ */
+
+package org.eclipse.cdt.debug.mi.core.cdi.model.type;
+
+import org.eclipse.cdt.debug.core.cdi.model.type.ICDIStructValue;
+import org.eclipse.cdt.debug.mi.core.cdi.model.Variable;
+
+/**
+ * Enter type comment.
+ *
+ * @since Jun 3, 2003
+ */
+public class StructValue extends AggregateValue implements ICDIStructValue {
+
+ public StructValue(Variable v) {
+ super(v);
+ }
+}

Back to the top