1
0
Fork 0
mirror of https://github.com/eclipse-cdt/cdt synced 2025-04-23 14:42:11 +02:00

2004-10-25 Alain Magloire

Remove of ICDExpressionManager in CDI
	ICDIExpression changes in the interface.
	* cdi/rg/eclipse/cdt/debug/mo/core/cdi/EventManager.java
	* cdi/rg/eclipse/cdt/debug/mo/core/cdi/ExpressionManager.java
	* cdi/rg/eclipse/cdt/debug/mo/core/cdi/Session.java
	* cdi/rg/eclipse/cdt/debug/mo/core/cdi/event/ChangedEvent.java
	* cdi/rg/eclipse/cdt/debug/mo/core/cdi/event/DestroyedEvent.java
	* cdi/rg/eclipse/cdt/debug/mo/core/cdi/model/Expression.java
	* cdi/rg/eclipse/cdt/debug/mo/core/cdi/model/Target.java
	* cdi/rg/eclipse/cdt/debug/mo/core/cdi/model/Variable.java
This commit is contained in:
Alain Magloire 2004-10-25 04:21:21 +00:00
parent 7f18452d63
commit 1c05c517d0
9 changed files with 239 additions and 208 deletions

View file

@ -1,3 +1,15 @@
2004-10-25 Alain Magloire
Remove of ICDExpressionManager in CDI
ICDIExpression changes in the interface.
* cdi/rg/eclipse/cdt/debug/mo/core/cdi/EventManager.java
* cdi/rg/eclipse/cdt/debug/mo/core/cdi/ExpressionManager.java
* cdi/rg/eclipse/cdt/debug/mo/core/cdi/Session.java
* cdi/rg/eclipse/cdt/debug/mo/core/cdi/event/ChangedEvent.java
* cdi/rg/eclipse/cdt/debug/mo/core/cdi/event/DestroyedEvent.java
* cdi/rg/eclipse/cdt/debug/mo/core/cdi/model/Expression.java
* cdi/rg/eclipse/cdt/debug/mo/core/cdi/model/Target.java
* cdi/rg/eclipse/cdt/debug/mo/core/cdi/model/Variable.java
2004-10-24 Alain Magloire
Changes in ICDITarget.evaluateExpressionToString()
* org/eclipse/cdt/debug/mi/core/cdi/model/Target.java

View file

@ -299,7 +299,7 @@ public class EventManager extends SessionObject implements ICDIEventManager, Obs
// Update the managers.
// For the Variable/Expression Managers call only the updateManager.
VariableManager varMgr = (VariableManager)session.getVariableManager();
ExpressionManager expMgr = (ExpressionManager)session.getExpressionManager();
ExpressionManager expMgr = session.getExpressionManager();
RegisterManager regMgr = (RegisterManager)session.getRegisterManager();
MemoryManager memMgr = (MemoryManager)session.getMemoryManager();
BreakpointManager bpMgr = session.getBreakpointManager();

View file

@ -11,39 +11,29 @@
package org.eclipse.cdt.debug.mi.core.cdi;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.Hashtable;
import java.util.List;
import java.util.Map;
import org.eclipse.cdt.debug.core.cdi.CDIException;
import org.eclipse.cdt.debug.core.cdi.ICDIExpressionManager;
import org.eclipse.cdt.debug.core.cdi.model.ICDIExpression;
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.ICDIThread;
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.Expression;
import org.eclipse.cdt.debug.mi.core.cdi.model.Target;
import org.eclipse.cdt.debug.mi.core.cdi.model.Variable;
import org.eclipse.cdt.debug.mi.core.cdi.model.VariableObject;
import org.eclipse.cdt.debug.mi.core.command.CommandFactory;
import org.eclipse.cdt.debug.mi.core.command.MIVarCreate;
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.MIVar;
import org.eclipse.cdt.debug.mi.core.output.MIVarChange;
import org.eclipse.cdt.debug.mi.core.output.MIVarCreateInfo;
import org.eclipse.cdt.debug.mi.core.output.MIVarUpdateInfo;
/**
*/
public class ExpressionManager extends Manager implements ICDIExpressionManager{
public class ExpressionManager extends Manager {
final static ICDIExpression[] EMPTY_EXPRESSIONS = {};
Map expMap;
@ -62,132 +52,17 @@ public class ExpressionManager extends Manager implements ICDIExpressionManager{
}
return expList;
}
/**
* Tell gdb to remove the underlying var-object also.
*/
void removeMIVar(MISession miSession, MIVar miVar) throws CDIException {
CommandFactory factory = miSession.getCommandFactory();
MIVarDelete var = factory.createMIVarDelete(miVar.getVarName());
try {
miSession.postCommand(var);
var.getMIInfo();
} catch (MIException e) {
throw new MI2CDIException(e);
}
}
/**
* When element are remove from the cache,
* The destroy event will call removeExpression.
*/
public void removeExpression(MISession miSession, String varName) throws CDIException {
Target target = ((Session)getSession()).getTarget(miSession);
List expList = (List)expMap.get(target);
if (expList != null) {
Expression[] exps = (Expression[]) expList.toArray(new Expression[expList.size()]);
for (int i = 0; i < exps.length; i++) {
if (exps[i].getMIVar().getVarName().equals(varName)) {
expList.remove(exps[i]);
removeMIVar(miSession, exps[i].getMIVar());
}
}
}
}
/**
* This should bo remove to evaluate an expression we nee a context.
*
* @deprecated
* @see org.eclipse.cdt.debug.core.cdi.ICDIExpressionManager#createExpression(String)
*/
public ICDIExpression createExpression(String name) throws CDIException {
Target target = ((Session)getSession()).getCurrentTarget();
return createExpression(target, name);
}
/**
* This should bo remove to evaluate an expression we nee a context.
*
* @deprecated
* @see org.eclipse.cdt.debug.core.cdi.ICDIExpressionManager#createExpression(String)
*/
public ICDIExpression createExpression(Target target, String name) throws CDIException {
Expression expression = null;
Session session = (Session)getSession();
Target currentTarget = session.getCurrentTarget();
session.setCurrentTarget(target);
try {
MISession mi = target.getMISession();
CommandFactory factory = mi.getCommandFactory();
MIVarCreate var = factory.createMIVarCreate(name);
mi.postCommand(var);
MIVarCreateInfo info = var.getMIVarCreateInfo();
if (info == null) {
throw new CDIException(CdiResources.getString("cdi.Common.No_answer")); //$NON-NLS-1$
}
VariableObject varObj = new VariableObject(target, name, null, 0, 0);
expression = new Expression(varObj, info.getMIVar());
List expList = getExpressionList(target);
expList.add(expression);
} catch (MIException e) {
throw new MI2CDIException(e);
} finally {
session.setCurrentTarget(currentTarget);
}
Expression expression = new Expression(target, name);
List exprList = getExpressionList(target);
exprList.add(expression);
return expression;
}
/**
* @see org.eclipse.cdt.debug.core.cdi.ICDIExpressionManager#createExpression(ICDIStackFrame, String)
*/
public ICDIExpression createExpression(ICDIStackFrame frame, String name) throws CDIException {
Expression expression = null;
Session session = (Session)getSession();
Target currentTarget = session.getCurrentTarget();
ICDIThread currentThread = currentTarget.getCurrentThread();
ICDIStackFrame currentFrame = currentThread.getCurrentStackFrame();
Target target = (Target)frame.getTarget();
session.setCurrentTarget(target);
target.setCurrentThread(frame.getThread(), false);
frame.getThread().setCurrentStackFrame(frame, false);
try {
MISession mi = target.getMISession();
CommandFactory factory = mi.getCommandFactory();
MIVarCreate var = factory.createMIVarCreate(name);
mi.postCommand(var);
MIVarCreateInfo info = var.getMIVarCreateInfo();
if (info == null) {
throw new CDIException(CdiResources.getString("cdi.Common.No_answer")); //$NON-NLS-1$
}
VariableObject varObj = new VariableObject(target, name, frame, 0, 0);
expression = new Expression(varObj, info.getMIVar());
List expList = getExpressionList(target);
expList.add(expression);
} catch (MIException e) {
throw new MI2CDIException(e);
} finally {
session.setCurrentTarget(currentTarget);
target.setCurrentThread(currentThread, false);
currentThread.setCurrentStackFrame(currentFrame, false);
}
return expression;
}
/**
* @deprecated
* @see org.eclipse.cdt.debug.core.cdi.ICDIExpressionManager#getExpressions()
*/
public ICDIExpression[] getExpressions() throws CDIException {
ICDITarget[] targets = getSession().getTargets();
List list = new ArrayList(targets.length);
for (int i = 0; i < targets.length; i++) {
if (targets[i] instanceof Target) {
ICDIExpression[] exprs = getExpressions((Target)targets[i]);
list.addAll(Arrays.asList(exprs));
}
}
return (ICDIExpression[]) list.toArray(new ICDIExpression[list.size()]);
}
public ICDIExpression[] getExpressions(Target target) throws CDIException {
List expList = (List) expMap.get(target);
if (expList != null) {
@ -195,40 +70,26 @@ public class ExpressionManager extends Manager implements ICDIExpressionManager{
}
return EMPTY_EXPRESSIONS;
}
/**
* @see org.eclipse.cdt.debug.core.cdi.ICDIExpressionManager#removeExpression(ICDIExpression)
*/
public void destroyExpression(ICDIExpression expression) throws CDIException {
if (expression instanceof Expression) {
// Fire a destroyEvent ?
Expression exp= (Expression)expression;
Target target = (Target)exp.getTarget();
MISession miSession = target.getMISession();
MIVarDeletedEvent del = new MIVarDeletedEvent(miSession, exp.getMIVar().getVarName());
miSession.fireEvent(del);
public void destroyExpressions(Target target, ICDIExpression[] expressions) throws CDIException {
List expList = getExpressionList(target);
for (int i = 0; i < expressions.length; ++i) {
if (expressions[i] instanceof Expression) {
expList.remove(expressions[i]);
((Expression)expressions[i]).deleteVariable();
}
}
}
/**
* Return the element that have the uniq varName.
* null is return if the element is not in the cache.
* @see org.eclipse.cdt.debug.core.cdi.ICDIExpressionManager#removeExpression(ICDIExpression)
*/
public Variable getExpression(MISession miSession, String varName) {
Target target = ((Session)getSession()).getTarget(miSession);
List expList = (List)expMap.get(target);
if (expList != null) {
Expression[] exps = (Expression[]) expList.toArray(new Expression[expList.size()]);
for (int i = 0; i < exps.length; i++) {
if (exps[i].getMIVar().getVarName().equals(varName)) {
return exps[i];
}
Variable v = exps[i].getChild(varName);
if (v != null) {
return v;
}
}
}
return null;
public void destroyAllExpressions(Target target) throws CDIException {
ICDIExpression[] expressions = getExpressions(target);
destroyExpressions(target, expressions);
}
public void update(Target target) throws CDIException {
@ -238,7 +99,9 @@ public class ExpressionManager extends Manager implements ICDIExpressionManager{
List expList = getExpressionList(target);
Expression[] exps = (Expression[])expList.toArray(new Expression[0]);
for (int i = 0; i < exps.length; i++) {
String varName = exps[i].getMIVar().getVarName();
Variable variable = exps[i].getVariable();
if (variable != null) {
String varName = variable.getMIVar().getVarName();
MIVarChange[] changes = noChanges;
MIVarUpdate update = factory.createMIVarUpdate(varName);
try {
@ -257,14 +120,32 @@ public class ExpressionManager extends Manager implements ICDIExpressionManager{
if (changes[j].isInScope()) {
eventList.add(new MIVarChangedEvent(mi, n));
}
// We do not implicitely delete Expressions.
//else {
// eventList.add(new MIVarDeletedEvent(n));
//}
}
}
}
MIEvent[] events = (MIEvent[])eventList.toArray(new MIEvent[0]);
mi.fireEvents(events);
}
/**
* @param miSession
* @param varName
* @return
*/
public Expression getExpression(MISession miSession, String varName) {
Session session = (Session)getSession();
Target target = session.getTarget(miSession);
List expList = getExpressionList(target);
Expression[] exps = (Expression[])expList.toArray(new Expression[0]);
for (int i = 0; i < exps.length; i++) {
Variable variable = exps[i].getVariable();
if (variable != null) {
if (variable.getMIVar().getVarName().equals(varName)) {
return exps[i];
}
}
}
return null;
}
}

View file

@ -16,7 +16,6 @@ import java.util.Properties;
import org.eclipse.cdt.debug.core.cdi.CDIException;
import org.eclipse.cdt.debug.core.cdi.ICDIConfiguration;
import org.eclipse.cdt.debug.core.cdi.ICDIEventManager;
import org.eclipse.cdt.debug.core.cdi.ICDIExpressionManager;
import org.eclipse.cdt.debug.core.cdi.ICDIMemoryManager;
import org.eclipse.cdt.debug.core.cdi.ICDIRegisterManager;
import org.eclipse.cdt.debug.core.cdi.ICDISession;
@ -137,7 +136,7 @@ public class Session implements ICDISession, ICDISessionObject {
/**
* @see org.eclipse.cdt.debug.core.cdi.ICDISession#getExpressionManager()
*/
public ICDIExpressionManager getExpressionManager() {
public ExpressionManager getExpressionManager() {
return expressionManager;
}
@ -196,7 +195,7 @@ public class Session implements ICDISession, ICDISessionObject {
*/
public void setCurrentTarget(Target target) throws CDIException {
ProcessManager pMgr = getProcessManager();
pMgr.setCurrentTarget((Target)target);
pMgr.setCurrentTarget(target);
// throw new CDIException(CdiResources.getString("cdi.Session.Unknown_target")); //$NON-NLS-1$
}

View file

@ -49,7 +49,7 @@ public class ChangedEvent implements ICDIChangedEvent {
// Try the Expression manager
if (source == null) {
ExpressionManager expMgr = (ExpressionManager)session.getExpressionManager();
ExpressionManager expMgr = session.getExpressionManager();
source = expMgr.getExpression(miSession, varName);
}

View file

@ -22,6 +22,7 @@ import org.eclipse.cdt.debug.mi.core.cdi.SharedLibraryManager;
import org.eclipse.cdt.debug.mi.core.cdi.VariableManager;
import org.eclipse.cdt.debug.mi.core.cdi.model.Breakpoint;
import org.eclipse.cdt.debug.mi.core.cdi.model.CObject;
import org.eclipse.cdt.debug.mi.core.cdi.model.Expression;
import org.eclipse.cdt.debug.mi.core.cdi.model.Target;
import org.eclipse.cdt.debug.mi.core.cdi.model.Thread;
import org.eclipse.cdt.debug.mi.core.cdi.model.Variable;
@ -56,12 +57,12 @@ public class DestroyedEvent implements ICDIDestroyedEvent {
} catch (CDIException e) {
}
} else {
ExpressionManager expMgr = (ExpressionManager)session.getExpressionManager();
variable = expMgr.getExpression(miSession, varName);
if (variable != null) {
source = variable;
ExpressionManager expMgr = session.getExpressionManager();
Expression expression = expMgr.getExpression(miSession, varName);
if (expression != null) {
source = expression;
try {
expMgr.removeExpression(miSession, variable.getMIVar().getVarName());
expression.deleteVariable();
} catch (CDIException e) {
}
} else {

View file

@ -10,14 +10,128 @@
*******************************************************************************/
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.ICDIExpression;
import org.eclipse.cdt.debug.core.cdi.model.ICDIStackFrame;
import org.eclipse.cdt.debug.core.cdi.model.ICDIThread;
import org.eclipse.cdt.debug.core.cdi.model.ICDIValue;
import org.eclipse.cdt.debug.mi.core.MIException;
import org.eclipse.cdt.debug.mi.core.MISession;
import org.eclipse.cdt.debug.mi.core.cdi.CdiResources;
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.command.CommandFactory;
import org.eclipse.cdt.debug.mi.core.command.MIVarCreate;
import org.eclipse.cdt.debug.mi.core.command.MIVarDelete;
import org.eclipse.cdt.debug.mi.core.output.MIVar;
import org.eclipse.cdt.debug.mi.core.output.MIVarCreateInfo;
/**
*/
public class Expression extends Variable implements ICDIExpression {
public class Expression extends CObject implements ICDIExpression {
public Expression(VariableObject obj, MIVar var) {
super(obj, var);
private static int ID_COUNT = 0;
private int id;
String fExpression;
Variable fVariable;
public Expression(Target target, String ex) {
super(target);
fExpression = ex;
id = ++ID_COUNT;
}
/* (non-Javadoc)
* @see org.eclipse.cdt.debug.core.cdi.model.ICDIExpression#getExpressionText()
*/
public String getExpressionText() {
return fExpression;
}
/* (non-Javadoc)
* @see org.eclipse.cdt.debug.core.cdi.model.ICDIExpression#equals(org.eclipse.cdt.debug.core.cdi.model.ICDIExpression)
*/
public boolean equals(ICDIExpression obj) {
if (obj instanceof Expression) {
Expression other = (Expression)obj;
return other.id == id;
}
return false;
}
/* (non-Javadoc)
* @see org.eclipse.cdt.debug.core.cdi.model.ICDIExpression#getValue(org.eclipse.cdt.debug.core.cdi.model.ICDIStackFrame)
*/
public ICDIValue getValue(ICDIStackFrame context) throws CDIException {
if (fVariable != null) {
Target target = (Target)getTarget();
MISession miSession = target.getMISession();
removeMIVar(miSession, fVariable.getMIVar());
}
fVariable = createVariable(context);
return fVariable.getValue();
}
public Variable getVariable() {
return fVariable;
}
protected Variable createVariable(ICDIStackFrame frame) throws CDIException {
Session session = (Session)getTarget().getSession();
Target currentTarget = session.getCurrentTarget();
ICDIThread currentThread = currentTarget.getCurrentThread();
ICDIStackFrame currentFrame = currentThread.getCurrentStackFrame();
Target target = (Target)frame.getTarget();
session.setCurrentTarget(target);
target.setCurrentThread(frame.getThread(), false);
frame.getThread().setCurrentStackFrame(frame, false);
try {
MISession mi = target.getMISession();
CommandFactory factory = mi.getCommandFactory();
MIVarCreate var = factory.createMIVarCreate(fExpression);
mi.postCommand(var);
MIVarCreateInfo info = var.getMIVarCreateInfo();
if (info == null) {
throw new CDIException(CdiResources.getString("cdi.Common.No_answer")); //$NON-NLS-1$
}
VariableObject varObj = new VariableObject(target, fExpression, frame, 0, 0);
return new Variable(varObj, info.getMIVar());
} catch (MIException e) {
throw new MI2CDIException(e);
} finally {
session.setCurrentTarget(currentTarget);
target.setCurrentThread(currentThread, false);
currentThread.setCurrentStackFrame(currentFrame, false);
}
}
/**
* Get rid of the underlying variable.
*
*/
public void deleteVariable() throws CDIException {
if (fVariable != null) {
Target target = (Target)getTarget();
MISession miSession = target.getMISession();
MIVar miVar = fVariable.getMIVar();
removeMIVar(miSession, fVariable.getMIVar());
fVariable = null;
}
}
/**
* Tell gdb to remove the underlying var-object also.
*/
public void removeMIVar(MISession miSession, MIVar miVar) throws CDIException {
CommandFactory factory = miSession.getCommandFactory();
MIVarDelete var = factory.createMIVarDelete(miVar.getVarName());
try {
miSession.postCommand(var);
var.getMIInfo();
} catch (MIException e) {
throw new MI2CDIException(e);
}
}
}

View file

@ -19,6 +19,7 @@ import org.eclipse.cdt.debug.core.cdi.ICDICondition;
import org.eclipse.cdt.debug.core.cdi.ICDILocation;
import org.eclipse.cdt.debug.core.cdi.ICDISession;
import org.eclipse.cdt.debug.core.cdi.model.ICDIBreakpoint;
import org.eclipse.cdt.debug.core.cdi.model.ICDIExpression;
import org.eclipse.cdt.debug.core.cdi.model.ICDILocationBreakpoint;
import org.eclipse.cdt.debug.core.cdi.model.ICDIRuntimeOptions;
import org.eclipse.cdt.debug.core.cdi.model.ICDISignal;
@ -31,6 +32,7 @@ import org.eclipse.cdt.debug.mi.core.MIException;
import org.eclipse.cdt.debug.mi.core.MISession;
import org.eclipse.cdt.debug.mi.core.cdi.BreakpointManager;
import org.eclipse.cdt.debug.mi.core.cdi.CdiResources;
import org.eclipse.cdt.debug.mi.core.cdi.ExpressionManager;
import org.eclipse.cdt.debug.mi.core.cdi.MI2CDIException;
import org.eclipse.cdt.debug.mi.core.cdi.RegisterManager;
import org.eclipse.cdt.debug.mi.core.cdi.Session;
@ -625,17 +627,6 @@ public class Target implements ICDITarget {
}
}
/**
* @see org.eclipse.cdt.debug.core.cdi.model.ICDITarget#evaluateExpressionToString(String)
*/
public String evaluateExpressionToString(String expressionText) throws CDIException {
Session session = (Session)getSession();
Target currentTarget = session.getCurrentTarget();
ICDIThread currentThread = currentTarget.getCurrentThread();
ICDIStackFrame currentFrame = currentThread.getCurrentStackFrame();
return evaluateExpressionToString(currentFrame, expressionText);
}
public String evaluateExpressionToString(ICDIStackFrame frame, String expressionText) throws CDIException {
Session session = (Session)getSession();
Target currentTarget = session.getCurrentTarget();
@ -783,4 +774,36 @@ public class Target implements ICDITarget {
public ICDIRuntimeOptions getRuntimeOptions() {
return new RuntimeOptions(this);
}
/* (non-Javadoc)
* @see org.eclipse.cdt.debug.core.cdi.model.ICDIExpressionManagement#createExpression(java.lang.String)
*/
public ICDIExpression createExpression(String code) throws CDIException {
ExpressionManager expMgr = ((Session)getSession()).getExpressionManager();
return expMgr.createExpression(this, code);
}
/* (non-Javadoc)
* @see org.eclipse.cdt.debug.core.cdi.model.ICDIExpressionManagement#getExpressions()
*/
public ICDIExpression[] getExpressions() throws CDIException {
ExpressionManager expMgr = ((Session)getSession()).getExpressionManager();
return expMgr.getExpressions(this);
}
/* (non-Javadoc)
* @see org.eclipse.cdt.debug.core.cdi.model.ICDIExpressionManagement#destroyExpression(org.eclipse.cdt.debug.core.cdi.model.ICDIExpression[])
*/
public void destroyExpressions(ICDIExpression[] expressions) throws CDIException {
ExpressionManager expMgr = ((Session)getSession()).getExpressionManager();
expMgr.destroyExpressions(this, expressions);
}
/* (non-Javadoc)
* @see org.eclipse.cdt.debug.core.cdi.model.ICDIExpressionManagement#destroyAllExpression()
*/
public void destroyAllExpressions() throws CDIException {
ExpressionManager expMgr = ((Session)getSession()).getExpressionManager();
expMgr.destroyAllExpressions(this);
}
}

View file

@ -37,6 +37,7 @@ import org.eclipse.cdt.debug.mi.core.cdi.ExpressionManager;
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.RegisterManager;
import org.eclipse.cdt.debug.mi.core.cdi.Session;
import org.eclipse.cdt.debug.mi.core.cdi.VariableManager;
import org.eclipse.cdt.debug.mi.core.cdi.model.type.ArrayValue;
import org.eclipse.cdt.debug.mi.core.cdi.model.type.BoolValue;
@ -320,18 +321,18 @@ public class Variable extends VariableObject implements ICDIVariable {
if (mgr.isAutoUpdate()) {
mgr.update(target);
}
} else if (this instanceof Expression) {
} else {
// If expression was on autoupdate, update all the other expression
// assigning may have side effects i.e. affecting other expressions.
ExpressionManager mgr = (ExpressionManager)target.getSession().getExpressionManager();
if (mgr.isAutoUpdate()) {
mgr.update(target);
ExpressionManager expMgr = ((Session)target.getSession()).getExpressionManager();
if (expMgr.isAutoUpdate()) {
expMgr.update(target);
}
} else {
// FIXME: Should we always call the Variable Manager ?
VariableManager mgr = (VariableManager)target.getSession().getVariableManager();
if (mgr.isAutoUpdate()) {
mgr.update(target);
VariableManager varMgr = (VariableManager)target.getSession().getVariableManager();
if (varMgr.isAutoUpdate()) {
varMgr.update(target);
}
}
}