1
0
Fork 0
mirror of https://github.com/eclipse-cdt/cdt synced 2025-04-29 19:45:01 +02:00

new implementation of getVariable(String)

This commit is contained in:
Alain Magloire 2003-02-12 05:27:00 +00:00
parent 87abcdb98a
commit 81b9a3c53c

View file

@ -32,6 +32,7 @@ import org.eclipse.cdt.debug.mi.core.command.MIVarDelete;
import org.eclipse.cdt.debug.mi.core.command.MIVarUpdate;
import org.eclipse.cdt.debug.mi.core.event.MIEvent;
import org.eclipse.cdt.debug.mi.core.event.MIVarChangedEvent;
import org.eclipse.cdt.debug.mi.core.event.MIVarDeletedEvent;
import org.eclipse.cdt.debug.mi.core.output.MIArg;
import org.eclipse.cdt.debug.mi.core.output.MIFrame;
import org.eclipse.cdt.debug.mi.core.output.MIStackListArgumentsInfo;
@ -65,6 +66,10 @@ public class VariableManager extends SessionObject implements ICDIVariableManage
if (vars[i].getMIVar().getVarName().equals(varName)) {
return vars[i];
}
Variable v = vars[i].getChild(varName);
if (v != null) {
return v;
}
}
return null;
}
@ -96,20 +101,6 @@ public class VariableManager extends SessionObject implements ICDIVariableManage
return null;
}
/**
* Make sure an element is not added twice.
*/
void addVariable(Variable var) {
Variable[] vars = getVariables();
for (int i = 0; i < vars.length; i++) {
String name = vars[i].getMIVar().getVarName();
if (name.equals(var.getMIVar().getVarName())) {
return;
}
}
variableList.add(var);
}
/**
* Returns all the elements that are in the cache.
*/
@ -117,12 +108,6 @@ public class VariableManager extends SessionObject implements ICDIVariableManage
return (Variable[]) variableList.toArray(new Variable[0]);
}
public Variable createVariable(VariableObject v, MIVar mivar) throws CDIException {
Variable variable = new Variable(v, mivar);
addVariable(variable);
return variable;
}
/**
* Tell gdb to remove the underlying var-object also.
*/
@ -187,7 +172,7 @@ public class VariableManager extends SessionObject implements ICDIVariableManage
throw new CDIException("No answer");
}
argument = new Argument(argObj, info.getMIVar());
addVariable(argument);
variableList.add(argument);
} catch (MIException e) {
throw new MI2CDIException(e);
} finally {
@ -387,7 +372,7 @@ public class VariableManager extends SessionObject implements ICDIVariableManage
throw new CDIException("No answer");
}
variable = new Variable(varObj, info.getMIVar());
addVariable(variable);
variableList.add(variable);
} catch (MIException e) {
throw new MI2CDIException(e);
} finally {
@ -408,10 +393,10 @@ public class VariableManager extends SessionObject implements ICDIVariableManage
if (var instanceof Variable) {
// Fire a destroyEvent ?
Variable variable = (Variable)var;
MIVarChangedEvent change = new MIVarChangedEvent(0, variable.getMIVar().getVarName(), false);
MIVarDeletedEvent del = new MIVarDeletedEvent(variable.getMIVar().getVarName());
Session session = (Session)getSession();
MISession mi = session.getMISession();
mi.fireEvent(change);
mi.fireEvent(del);
}
}
@ -454,11 +439,15 @@ public class VariableManager extends SessionObject implements ICDIVariableManage
changes = info.getMIVarChanges();
} catch (MIException e) {
//throw new MI2CDIException(e);
eventList.add(new MIVarChangedEvent(0, varName, false));
eventList.add(new MIVarDeletedEvent(varName));
}
for (int j = 0 ; j < changes.length; j++) {
String n = changes[j].getVarName();
eventList.add(new MIVarChangedEvent(0, n, changes[j].isInScope()));
if (changes[j].isInScope()) {
eventList.add(new MIVarChangedEvent(n));
} else {
eventList.add(new MIVarDeletedEvent(n));
}
}
}
MIEvent[] events = (MIEvent[])eventList.toArray(new MIEvent[0]);