mirror of
https://github.com/eclipse-cdt/cdt
synced 2025-08-05 07:15:39 +02:00
2004-11-12 Alain Magloire
Fix for PR 78488 * mi/org/eclipse/cdt/debug/mi/core/command/MICommand.java
This commit is contained in:
parent
7b7e3de2d2
commit
78118d0486
3 changed files with 55 additions and 5 deletions
|
@ -1,3 +1,7 @@
|
||||||
|
2004-11-12 Alain Magloire
|
||||||
|
Fix for PR 78488
|
||||||
|
* mi/org/eclipse/cdt/debug/mi/core/command/MICommand.java
|
||||||
|
|
||||||
2004-11-11 Alain Magloire
|
2004-11-11 Alain Magloire
|
||||||
Fix for PR 75000, from PalmSource
|
Fix for PR 75000, from PalmSource
|
||||||
* cdi/org/eclipse/cdt/debug/core/cdi/model/Variable.java
|
* cdi/org/eclipse/cdt/debug/core/cdi/model/Variable.java
|
||||||
|
|
|
@ -18,6 +18,7 @@ import java.util.Map;
|
||||||
|
|
||||||
import org.eclipse.cdt.debug.core.cdi.CDIException;
|
import org.eclipse.cdt.debug.core.cdi.CDIException;
|
||||||
import org.eclipse.cdt.debug.core.cdi.model.ICDIExpression;
|
import org.eclipse.cdt.debug.core.cdi.model.ICDIExpression;
|
||||||
|
import org.eclipse.cdt.debug.core.cdi.model.ICDIVariable;
|
||||||
import org.eclipse.cdt.debug.mi.core.MIException;
|
import org.eclipse.cdt.debug.mi.core.MIException;
|
||||||
import org.eclipse.cdt.debug.mi.core.MISession;
|
import org.eclipse.cdt.debug.mi.core.MISession;
|
||||||
import org.eclipse.cdt.debug.mi.core.cdi.model.Expression;
|
import org.eclipse.cdt.debug.mi.core.cdi.model.Expression;
|
||||||
|
@ -108,6 +109,7 @@ public class ExpressionManager extends Manager {
|
||||||
}
|
}
|
||||||
|
|
||||||
public void update(Target target) throws CDIException {
|
public void update(Target target) throws CDIException {
|
||||||
|
// deleteAllVariables(target);
|
||||||
List eventList = new ArrayList();
|
List eventList = new ArrayList();
|
||||||
MISession mi = target.getMISession();
|
MISession mi = target.getMISession();
|
||||||
CommandFactory factory = mi.getCommandFactory();
|
CommandFactory factory = mi.getCommandFactory();
|
||||||
|
@ -192,6 +194,23 @@ public class ExpressionManager extends Manager {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Remove variable form the maintained cache list.
|
||||||
|
* @param miSession
|
||||||
|
* @param varName
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
public Variable removeVariableFromList(MISession miSession, String varName) {
|
||||||
|
Variable var = getVariable(miSession, varName);
|
||||||
|
if (var != null) {
|
||||||
|
Target target = ((Session)getSession()).getTarget(miSession);
|
||||||
|
List varList = getVariableList(target);
|
||||||
|
varList.remove(var);
|
||||||
|
return var;
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
public void deleteAllVariables(Target target) throws CDIException {
|
public void deleteAllVariables(Target target) throws CDIException {
|
||||||
List varList = getVariableList(target);
|
List varList = getVariableList(target);
|
||||||
Variable[] variables = (Variable[]) varList.toArray(new Variable[varList.size()]);
|
Variable[] variables = (Variable[]) varList.toArray(new Variable[varList.size()]);
|
||||||
|
@ -215,8 +234,21 @@ public class ExpressionManager extends Manager {
|
||||||
} catch (MIException e) {
|
} catch (MIException e) {
|
||||||
//throw new MI2CDIException(e);
|
//throw new MI2CDIException(e);
|
||||||
}
|
}
|
||||||
List varList = getVariableList(target);
|
//List varList = getVariableList(target);
|
||||||
varList.remove(variable);
|
//varList.remove(variable);
|
||||||
|
|
||||||
|
// remove any children
|
||||||
|
ICDIVariable[] children = variable.children;
|
||||||
|
if (children != null) {
|
||||||
|
for (int i = 0; i < children.length; ++i) {
|
||||||
|
if (children[0] instanceof Variable) {
|
||||||
|
Variable child = (Variable)children[i];
|
||||||
|
MIVarDeletedEvent event = new MIVarDeletedEvent(miSession, child.getMIVar().getVarName());
|
||||||
|
miSession.fireEvent(event);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
miSession.fireEvent(new MIVarDeletedEvent(miSession, variable.getMIVar().getVarName()));
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -81,12 +81,26 @@ public class MICommand extends Command {
|
||||||
StringBuffer sb = new StringBuffer();
|
StringBuffer sb = new StringBuffer();
|
||||||
if (options != null && options.length > 0) {
|
if (options != null && options.length > 0) {
|
||||||
for (int i = 0; i < options.length; i++) {
|
for (int i = 0; i < options.length; i++) {
|
||||||
|
String option = options[i];
|
||||||
|
// If the option argument contains " or \ it must be escaped
|
||||||
|
if (option.indexOf('"') != -1 || option.indexOf('\\') != -1) {
|
||||||
|
StringBuffer buf = new StringBuffer();
|
||||||
|
for (int j = 0; j < option.length(); j++) {
|
||||||
|
char c = option.charAt(j);
|
||||||
|
if (c == '"' || c == '\\') {
|
||||||
|
buf.append('\\');
|
||||||
|
}
|
||||||
|
buf.append(c);
|
||||||
|
}
|
||||||
|
option = buf.toString();
|
||||||
|
}
|
||||||
|
|
||||||
// If the option contains a space according to
|
// If the option contains a space according to
|
||||||
// GDB/MI spec we must surround it with double quotes.
|
// GDB/MI spec we must surround it with double quotes.
|
||||||
if (options[i].indexOf('\t') != -1 || options[i].indexOf(' ') != -1) {
|
if (option.indexOf('\t') != -1 || option.indexOf(' ') != -1) {
|
||||||
sb.append(' ').append('"').append(options[i]).append('"');
|
sb.append(' ').append('"').append(option).append('"');
|
||||||
} else {
|
} else {
|
||||||
sb.append(' ').append(options[i]);
|
sb.append(' ').append(option);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue