blob: 695e7a5f5e91ae8e920bbf707ac136a61bfa7941 [file] [log] [blame]
/*
* (c) Copyright QNX Software Systems Ltd. 2002.
* All Rights Reserved.
*/
package org.eclipse.cdt.debug.mi.core.cdi.event;
import org.eclipse.cdt.debug.core.cdi.event.ICDIChangedEvent;
import org.eclipse.cdt.debug.core.cdi.model.ICDIBreakpoint;
import org.eclipse.cdt.debug.core.cdi.model.ICDIObject;
import org.eclipse.cdt.debug.core.cdi.model.ICDISharedLibrary;
import org.eclipse.cdt.debug.core.cdi.model.ICDISignal;
import org.eclipse.cdt.debug.mi.core.cdi.BreakpointManager;
import org.eclipse.cdt.debug.mi.core.cdi.ExpressionManager;
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.SharedLibraryManager;
import org.eclipse.cdt.debug.mi.core.cdi.SignalManager;
import org.eclipse.cdt.debug.mi.core.cdi.VariableManager;
import org.eclipse.cdt.debug.mi.core.cdi.model.CObject;
import org.eclipse.cdt.debug.mi.core.event.MIBreakpointChangedEvent;
import org.eclipse.cdt.debug.mi.core.event.MIRegisterChangedEvent;
import org.eclipse.cdt.debug.mi.core.event.MISharedLibChangedEvent;
import org.eclipse.cdt.debug.mi.core.event.MISignalChangedEvent;
import org.eclipse.cdt.debug.mi.core.event.MIVarChangedEvent;
/**
*/
public class ChangedEvent implements ICDIChangedEvent {
Session session;
ICDIObject source;
public ChangedEvent(Session s, MIVarChangedEvent var) {
session = s;
// Try the Variable manager.
VariableManager mgr = (VariableManager)session.getVariableManager();
String varName = var.getVarName();
source = mgr.getVariable(varName);
// Try the Expression manager
if (source == null) {
ExpressionManager expMgr = (ExpressionManager)session.getExpressionManager();
source = expMgr.getExpression(varName);
}
// Try the Register manager
if (source == null) {
RegisterManager regMgr = (RegisterManager)session.getRegisterManager();
source = regMgr.getRegister(varName);
}
// Fall back
if (source == null) {
source = new CObject(session.getCurrentTarget());
}
}
public ChangedEvent(Session s, MIRegisterChangedEvent var) {
session = s;
RegisterManager mgr = (RegisterManager)session.getRegisterManager();
int regno = var.getNumber();
source = mgr.getRegister(regno);
if (source == null) {
source = new CObject(session.getCurrentTarget());
}
}
public ChangedEvent(Session s, MIBreakpointChangedEvent bpoint) {
session = s;
BreakpointManager mgr = (BreakpointManager)session.getBreakpointManager();
int number = bpoint.getNumber();
ICDIBreakpoint breakpoint = mgr.getBreakpoint(number);
if (breakpoint != null) {
source = breakpoint;
} else {
source = new CObject(session.getCurrentTarget());
}
}
public ChangedEvent(Session s, MISharedLibChangedEvent slib) {
session = s;
SharedLibraryManager mgr = (SharedLibraryManager)session.getSharedLibraryManager();
String name = slib.getName();
ICDISharedLibrary lib = mgr.getSharedLibrary(name);
if (lib != null) {
source = lib;
} else {
source = new CObject(session.getCurrentTarget());
}
}
public ChangedEvent(Session s, MISignalChangedEvent sig) {
session = s;
SignalManager mgr = (SignalManager)session.getSignalManager();
String name = sig.getName();
ICDISignal signal = mgr.getSignal(name);
if (signal != null) {
source = signal;
} else {
source = new CObject(session.getCurrentTarget());
}
}
public ChangedEvent(Session s, ICDIObject src) {
session = s;
source = src;
}
/**
* @see org.eclipse.cdt.debug.core.cdi.event.ICDIEvent#getSource()
*/
public ICDIObject getSource() {
return source;
}
}