1
0
Fork 0
mirror of https://github.com/eclipse-cdt/cdt synced 2025-07-23 17:05:26 +02:00

Remove unneeded method

This commit is contained in:
Alain Magloire 2003-08-06 19:52:27 +00:00
parent 110459666f
commit 1bc4e43764
8 changed files with 227 additions and 130 deletions

View file

@ -1,3 +1,22 @@
2003-08-06 Alain Magloire
First framework to deal with breaking the arrays in ranges.
* src/org/eclipse/cdt/debug/mi/core/cdi/model/Argument.java:
Remove unused getArgumentObject().
* src/org/eclipse/cdt/debug/mi/core/cdi/model/Register.java:
Remove unuse getRegisterObject().
* src/org/eclipse/cdt/debug/mi/core/cdi/model/Variable.java:
Move methods to VariableObject to comply with the interface.
* src/org/eclipse/cdt/debug/mi/core/cdi/model/VariableObject.java:
Implement new methods of ICDIVariableObject.java
Save the castin information.
* src/org/eclipse/cdt/debug/mi/core/cdi/model/type/ArrayValue.java:
New method getVariables(int, int).
* src/org/eclipse/cdt/debug/mi/core/cdi/VariableManager.java:
New method encodeVariable(), to get the encode specific string
for gdb casting of arrays.
2003-07-28 Mikhail Khodjaiants
Minimize the number of the "evaluate expression" requests when changing the value of the floating point types.

View file

@ -79,8 +79,6 @@ public class RegisterManager extends SessionObject implements ICDIRegisterManage
RegisterObject regObj = null;
if (regObject instanceof RegisterObject) {
regObj = (RegisterObject)regObject;
} else if (regObject instanceof Register) {
regObj = ((Register)regObject).getRegisterObject();
}
if (regObj != null) {
Register reg = getRegister(regObject);
@ -160,7 +158,7 @@ public class RegisterManager extends SessionObject implements ICDIRegisterManage
public Register getRegister(int regno) {
Register[] regs = getRegisters();
for (int i = 0; i < regs.length; i++) {
if (regs[i].getVariableObject().getPosition() == regno) {
if (regs[i].getPosition() == regno) {
return regs[i];
}
}

View file

@ -92,13 +92,17 @@ public class VariableManager extends SessionObject implements ICDIVariableManage
int depth = v.getStackDepth();
Variable[] vars = getVariables();
for (int i = 0; i < vars.length; i++) {
if (vars[i].getName().equals(name)) {
if (vars[i].getName().equals(name) &&
vars[i].casting_index == v.casting_index &&
vars[i].casting_length == v.casting_length &&
((vars[i].casting_type == null && v.casting_type == null) ||
(vars[i].casting_type != null && v.casting_type != null && vars[i].casting_type.equals(v.casting_type)))) {
ICDIStackFrame frame = vars[i].getStackFrame();
if (stack == null && frame == null) {
return vars[i];
} else if (frame != null && stack != null && frame.equals(stack)) {
if (vars[i].getVariableObject().getPosition() == position) {
if (vars[i].getVariableObject().getStackDepth() == depth) {
if (vars[i].getPosition() == position) {
if (vars[i].getStackDepth() == depth) {
return vars[i];
}
}
@ -133,23 +137,23 @@ public class VariableManager extends SessionObject implements ICDIVariableManage
}
}
public String createStringEncoding(VariableObject varObj) {
public static String encodeVariable(VariableObject varObj) {
StringBuffer buffer = new StringBuffer();
if (varObj.length > 0) {
if (varObj.casting_length > 0 || varObj.casting_index > 0) {
buffer.append("*(");
buffer.append('(');
if (varObj.type != null && varObj.type.length() > 0) {
buffer.append('(').append(varObj.type).append(')');
if (varObj.casting_type != null && varObj.casting_type.length() > 0) {
buffer.append('(').append(varObj.casting_type).append(')');
}
buffer.append(varObj.getName());
buffer.append(')');
if (varObj.index != 0) {
buffer.append('+').append(varObj.index);
if (varObj.casting_index != 0) {
buffer.append('+').append(varObj.casting_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.casting_length - varObj.casting_index);
} else if (varObj.casting_type != null && varObj.casting_type.length() > 0) {
buffer.append('(').append(varObj.casting_type).append(')');
buffer.append('(').append(varObj.getName()).append(')');
} else {
buffer.append(varObj.getName());
@ -195,8 +199,6 @@ public class VariableManager extends SessionObject implements ICDIVariableManage
ArgumentObject argObj = null;
if (a instanceof ArgumentObject) {
argObj = (ArgumentObject)a;
} else if (a instanceof Argument) {
argObj = ((Argument)a).getArgumentObject();
}
if (argObj != null) {
Variable variable = findVariable(argObj);
@ -205,7 +207,7 @@ public class VariableManager extends SessionObject implements ICDIVariableManage
argument = (Argument)variable;
}
if (argument == null) {
String name = argObj.getName();
String name = encodeVariable(argObj);
ICDIStackFrame stack = argObj.getStackFrame();
Session session = (Session)getSession();
ICDIThread currentThread = null;
@ -344,15 +346,10 @@ public class VariableManager extends SessionObject implements ICDIVariableManage
VariableObject obj = null;
if (object instanceof VariableObject) {
obj = (VariableObject)object;
} else if (object instanceof Variable) {
obj = ((Variable)object).getVariableObject();
}
if (obj != null) {
StringBuffer buffer = new StringBuffer();
buffer.append("*(");
buffer.append('(');
// Check if the type is valid.
if (type != null && type.length() > 0) {
// Check if the type is valid.
try {
MISession mi = ((Session)getSession()).getMISession();
CommandFactory factory = mi.getCommandFactory();
@ -365,20 +362,32 @@ public class VariableManager extends SessionObject implements ICDIVariableManage
} catch (MIException e) {
throw new MI2CDIException(e);
}
buffer.append('(').append(type).append(')');
}
// Should we provide a getRegisterObjectAsArray ?
StringBuffer buffer = new StringBuffer();
if (obj instanceof ICDIRegisterObject) {
buffer.append("$" + obj.getName());
} else {
buffer.append(obj.getName());
}
buffer.append(')');
if (start != 0) {
buffer.append('+').append(start);
VariableObject vo = new VariableObject(obj, buffer.toString());
// Carry the the old casting type over
buffer.setLength(0);
if (obj.casting_type != null && obj.casting_type.length() > 0) {
buffer.append("(").append(obj.casting_type).append(")");
}
buffer.append(')');
buffer.append('@').append(length - start);
return new VariableObject(obj, buffer.toString());
if (type != null && type.length() > 0) {
buffer.append(type);
}
vo.casting_type = buffer.toString();
// Carry any other info to the new VariableObject
vo.casting_index = obj.casting_index + start;
vo.casting_length = obj.casting_length + length;
return vo;
}
throw new CDIException("Unknown variable object");
}
@ -390,8 +399,6 @@ public class VariableManager extends SessionObject implements ICDIVariableManage
VariableObject obj = null;
if (object instanceof VariableObject) {
obj = (VariableObject)object;
} else if (object instanceof Variable) {
obj = ((Variable)object).getVariableObject();
}
if (obj != null) {
StringBuffer buffer = new StringBuffer();
@ -481,13 +488,10 @@ public class VariableManager extends SessionObject implements ICDIVariableManage
if (v instanceof VariableObject) {
varObj = (VariableObject)v;
}
if (v instanceof Variable) {
varObj = ((Variable)v).getVariableObject();
}
if (varObj != null) {
Variable variable = findVariable(varObj);
if (variable == null) {
String name = varObj.getName();
String name = encodeVariable(varObj);
Session session = (Session)getSession();
ICDIStackFrame stack = varObj.getStackFrame();
ICDIThread currentThread = null;

View file

@ -15,7 +15,4 @@ public class Argument extends Variable implements ICDIArgument {
super(obj, var);
}
public ArgumentObject getArgumentObject() {
return (ArgumentObject)super.getVariableObject();
}
}

View file

@ -25,13 +25,6 @@ public class Register extends Variable implements ICDIRegister {
super(obj, var);
}
public RegisterObject getRegisterObject() {
return (RegisterObject)super.getVariableObject();
}
/* (non-Javadoc)
* @see org.eclipse.cdt.debug.mi.core.cdi.model.Variable#getChildren()
*/
public ICDIVariable[] getChildren() throws CDIException {
Session session = (Session)(getTarget().getSession());
MISession mi = session.getMISession();
@ -49,7 +42,7 @@ public class Register extends Variable implements ICDIRegister {
children = new Register[vars.length];
for (int i = 0; i < vars.length; i++) {
RegisterObject regObj = new RegisterObject(getTarget(),
vars[i].getExp(), getVariableObject().getPosition());
vars[i].getExp(), getPosition());
children[i] = mgr.createRegister(regObj, vars[i]);
}
} catch (MIException e) {

View file

@ -9,8 +9,6 @@ import org.eclipse.cdt.debug.core.cdi.CDIException;
import org.eclipse.cdt.debug.core.cdi.ICDIExpressionManager;
import org.eclipse.cdt.debug.core.cdi.ICDIRegisterManager;
import org.eclipse.cdt.debug.core.cdi.ICDIVariableManager;
import org.eclipse.cdt.debug.core.cdi.model.ICDIStackFrame;
import org.eclipse.cdt.debug.core.cdi.model.ICDITarget;
import org.eclipse.cdt.debug.core.cdi.model.ICDIValue;
import org.eclipse.cdt.debug.core.cdi.model.ICDIVariable;
import org.eclipse.cdt.debug.core.cdi.model.type.ICDIArrayType;
@ -34,7 +32,6 @@ import org.eclipse.cdt.debug.mi.core.MISession;
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;
@ -42,7 +39,6 @@ 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;
import org.eclipse.cdt.debug.mi.core.cdi.model.type.LongValue;
@ -65,16 +61,17 @@ import org.eclipse.cdt.debug.mi.core.output.MIVarShowAttributesInfo;
/**
*/
public class Variable extends CObject implements ICDIVariable {
public class Variable extends VariableObject implements ICDIVariable {
MIVar miVar;
Value value;
VariableObject varObj;
ICDIVariable[] children = new ICDIVariable[0];
Type type;
String editable = null;
public Variable(VariableObject obj, MIVar v) {
super(obj.getTarget());
super(obj, obj.getName());
miVar = v;
varObj = obj;
}
@ -83,10 +80,6 @@ public class Variable extends CObject implements ICDIVariable {
return miVar;
}
public VariableObject getVariableObject() {
return varObj;
}
public Variable getChild(String name) {
for (int i = 0; i < children.length; i++) {
Variable variable = (Variable)children[i];
@ -108,6 +101,10 @@ public class Variable extends CObject implements ICDIVariable {
return getChildren(-1);
}
/**
* This can be a potentially long operation for GDB.
* allow the override of the timeout.
*/
public ICDIVariable[] getChildren(int timeout) throws CDIException {
Session session = (Session)(getTarget().getSession());
MISession mi = session.getMISession();
@ -129,8 +126,7 @@ public class Variable extends CObject implements ICDIVariable {
for (int i = 0; i < vars.length; i++) {
VariableObject varObj = new VariableObject(getTarget(),
vars[i].getExp(), getStackFrame(),
getVariableObject().getPosition(),
getVariableObject().getStackDepth());
getPosition(),getStackDepth());
children[i] = new Variable(varObj, vars[i]);
}
} catch (MIException e) {
@ -144,16 +140,13 @@ public class Variable extends CObject implements ICDIVariable {
}
/**
* @see org.eclipse.cdt.debug.core.cdi.model.ICDIVariable#getName()
*/
public String getName() {
return varObj.getName();
}
/**
* @see org.eclipse.cdt.debug.core.cdi.model.ICDIVariable#getTypeName()
* We overload the VariableObject since the gdb-varobject already knows
* the type and its probably more accurate.
*
* @see org.eclipse.cdt.debug.core.cdi.model.ICDIVariableObject#getTypeName()
*/
public String getTypeName() throws CDIException {
// We overload here not to use the whatis command.
return miVar.getType();
}
@ -260,19 +253,22 @@ public class Variable extends CObject implements ICDIVariable {
* @see org.eclipse.cdt.debug.core.cdi.model.ICDIVariable#isEditable()
*/
public boolean isEditable() throws CDIException {
MISession mi = ((Session)(getTarget().getSession())).getMISession();
CommandFactory factory = mi.getCommandFactory();
MIVarShowAttributes var = factory.createMIVarShowAttributes(miVar.getVarName());
try {
mi.postCommand(var);
MIVarShowAttributesInfo info = var.getMIVarShowAttributesInfo();
if (info == null) {
throw new CDIException("No answer");
if (editable == null) {
MISession mi = ((Session)(getTarget().getSession())).getMISession();
CommandFactory factory = mi.getCommandFactory();
MIVarShowAttributes var = factory.createMIVarShowAttributes(miVar.getVarName());
try {
mi.postCommand(var);
MIVarShowAttributesInfo info = var.getMIVarShowAttributesInfo();
if (info == null) {
throw new CDIException("No answer");
}
editable = String.valueOf(info.isEditable());
} catch (MIException e) {
throw new MI2CDIException(e);
}
return info.isEditable();
} catch (MIException e) {
throw new MI2CDIException(e);
}
return (editable == null) ? false : Boolean.getBoolean(editable);
}
/**
@ -305,37 +301,4 @@ public class Variable extends CObject implements ICDIVariable {
return super.equals(var);
}
/**
* @see org.eclipse.cdt.debug.core.cdi.model.ICDIVariable#getStackFrame()
*/
public ICDIStackFrame getStackFrame() throws CDIException {
return varObj.getStackFrame();
}
/**
* @see org.eclipse.cdt.debug.core.cdi.model.ICDIVariable#getType()
*/
public ICDIType getType() throws CDIException {
if (type == null) {
ICDITarget target = getTarget();
Session session = (Session)(target.getSession());
SourceManager sourceMgr = (SourceManager)session.getSourceManager();
String typename = getTypeName();
try {
type = sourceMgr.getType(target, typename);
} catch (CDIException e) {
// Try with ptype.
try {
String ptype = sourceMgr.getDetailTypeName(typename);
type = sourceMgr.getType(target, ptype);
} catch (CDIException ex) {
}
}
if (type == null) {
type = new IncompleteType(target, typename);
}
}
return type;
}
}

View file

@ -5,18 +5,36 @@
*/
package org.eclipse.cdt.debug.mi.core.cdi.model;
import org.eclipse.cdt.debug.core.cdi.CDIException;
import org.eclipse.cdt.debug.core.cdi.model.ICDIStackFrame;
import org.eclipse.cdt.debug.core.cdi.model.ICDITarget;
import org.eclipse.cdt.debug.core.cdi.model.ICDIVariableObject;
import org.eclipse.cdt.debug.core.cdi.model.type.ICDIType;
import org.eclipse.cdt.debug.mi.core.MIException;
import org.eclipse.cdt.debug.mi.core.MISession;
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.IncompleteType;
import org.eclipse.cdt.debug.mi.core.cdi.model.type.Type;
import org.eclipse.cdt.debug.mi.core.command.CommandFactory;
import org.eclipse.cdt.debug.mi.core.command.MIDataEvaluateExpression;
import org.eclipse.cdt.debug.mi.core.command.MIWhatis;
import org.eclipse.cdt.debug.mi.core.output.MIDataEvaluateExpressionInfo;
import org.eclipse.cdt.debug.mi.core.output.MIWhatisInfo;
/**
*/
public class VariableObject extends CObject implements ICDIVariableObject {
// Casting info.
public String type;
public int index;
public int length;
public String casting_type;
public int casting_index;
public int casting_length;
Type type = null;
String typename = null;
String sizeof = null;
String name;
int position;
@ -24,28 +42,22 @@ public class VariableObject extends CObject implements ICDIVariableObject {
int stackdepth;
public VariableObject(VariableObject obj, String n) {
this(obj.getTarget(), n, obj.getStackFrame(),
obj.getPosition(), obj.getStackDepth());
super(obj.getTarget());
name = n;
try {
frame = obj.getStackFrame();
} catch (CDIException e) {
}
position = obj.getPosition();
stackdepth = obj.getStackDepth();
}
public VariableObject(ICDITarget target, String n, ICDIStackFrame stack,
int pos, int depth) {
public VariableObject(ICDITarget target, String n, ICDIStackFrame stack, int pos, int depth) {
super(target);
name = n;
frame = stack;
position = pos;
stackdepth = depth;
type = new String();
index = 0;
length = 0;
}
public ICDITarget getTarget() {
return target;
}
public ICDIStackFrame getStackFrame() {
return frame;
}
public int getPosition() {
@ -63,4 +75,94 @@ public class VariableObject extends CObject implements ICDIVariableObject {
return name;
}
/**
* @see org.eclipse.cdt.debug.core.cdi.model.ICDIVariable#getType()
*/
public ICDIType getType() throws CDIException {
if (type == null) {
ICDITarget target = getTarget();
Session session = (Session) (target.getSession());
SourceManager sourceMgr = (SourceManager) session.getSourceManager();
String typename = getTypeName();
try {
type = sourceMgr.getType(target, typename);
} catch (CDIException e) {
// Try with ptype.
try {
String ptype = sourceMgr.getDetailTypeName(typename);
type = sourceMgr.getType(target, ptype);
} catch (CDIException ex) {
}
}
if (type == null) {
type = new IncompleteType(target, typename);
}
}
return type;
}
/* (non-Javadoc)
* @see org.eclipse.cdt.debug.core.cdi.model.ICDIVariableObject#sizeof()
*/
public int sizeof() throws CDIException {
if (sizeof == null) {
ICDITarget target = getTarget();
Session session = (Session) (target.getSession());
MISession mi = session.getMISession();
CommandFactory factory = mi.getCommandFactory();
String exp = "sizeof(" + getTypeName() + ")";
MIDataEvaluateExpression evaluate = factory.createMIDataEvaluateExpression("sizeof(" + getName());
try {
mi.postCommand(evaluate);
MIDataEvaluateExpressionInfo info = evaluate.getMIDataEvaluateExpressionInfo();
if (info == null) {
throw new CDIException("Target is not responding");
}
sizeof = info.getExpression();
} catch (MIException e) {
throw new MI2CDIException(e);
}
}
if (sizeof != null) {
try {
return Integer.parseInt(sizeof);
} catch (NumberFormatException e) {
throw new CDIException(e.getMessage());
}
}
return 0;
}
/* (non-Javadoc)
* @see org.eclipse.cdt.debug.core.cdi.model.ICDIVariableObject#getStackFrame()
*/
public ICDIStackFrame getStackFrame() throws CDIException {
return frame;
}
/* (non-Javadoc)
* @see org.eclipse.cdt.debug.core.cdi.model.ICDIVariableObject#getTypeName()
*/
public String getTypeName() throws CDIException {
if (typename == null) {
try {
ICDITarget target = getTarget();
Session session = (Session) (target.getSession());
MISession mi = session.getMISession();
CommandFactory factory = mi.getCommandFactory();
MIWhatis whatis = factory.createMIWhatis(getName());
mi.postCommand(whatis);
MIWhatisInfo info = whatis.getMIWhatisInfo();
if (info == null) {
throw new CDIException("No answer");
}
typename = info.getType();
} catch (MIException e) {
throw new MI2CDIException(e);
}
}
return typename;
}
}

View file

@ -7,8 +7,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.ICDIVariableManager;
import org.eclipse.cdt.debug.core.cdi.model.ICDITarget;
import org.eclipse.cdt.debug.core.cdi.model.ICDIVariable;
import org.eclipse.cdt.debug.core.cdi.model.ICDIVariableObject;
import org.eclipse.cdt.debug.core.cdi.model.type.ICDIArrayValue;
import org.eclipse.cdt.debug.mi.core.cdi.Session;
import org.eclipse.cdt.debug.mi.core.cdi.model.Variable;
/**
@ -38,4 +42,21 @@ public class ArrayValue extends DerivedValue implements ICDIArrayValue {
return variable.getChildren(timeout);
}
/**
*
* an Array of range[index, index + length - 1]
*/
public ICDIVariable[] getVariables(int index, int length) throws CDIException {
int children = getChildrenNumber();
//if (index >= children || index + length >= children) {
// throw new CDIException("Index out of bound");
//}
//String subarray = "*(" + variable.getName() + "+" + index + ")@" + length;
ICDITarget target = getTarget();
Session session = (Session) (target.getSession());
ICDIVariableManager mgr = session.getVariableManager();
ICDIVariableObject vo = mgr.getVariableObjectAsArray(variable, null, index, length);
return mgr.createVariable(vo).getValue().getVariables();
}
}