Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
[cdt-patch] Refactoring mi.core.cdi

Index: ChangeLog
===================================================================
RCS file: /home/tools/org.eclipse.cdt.debug.mi.core/ChangeLog,v
retrieving revision 1.54
diff -u -r1.54 ChangeLog
--- ChangeLog	8 Jan 2003 17:46:57 -0000	1.54
+++ ChangeLog	9 Jan 2003 03:43:50 -0000
@@ -1,7 +1,17 @@
 2003-01-08 Alain Magloire
 
+	Refactoring, split the org.eclipse.cdt.debug.mi.core.cdi in pacackages
+	org.eclipse.cdt.debug.mi.core.cdi
+	org.eclipse.cdt.debug.mi.core.cdi.event
+	org.eclipse.cdt.debug.mi.core.cdi.model
+	This help structure things up.
+	* src/.../mi/core/cdi/event: New files.
+	* src/.../mi/core/cdi/model: New files.
+
+2003-01-08 Alain Magloire
+
 	* src/.../mi/core/cdi/EventManager.java (update): bug fix
-	was calling DestroedEvent() incorrectly.
+	was calling DestroyedEvent() incorrectly.
 
 2003-01-08 Alain Magloire
 
Index: src/org/eclipse/cdt/debug/mi/core/cdi/Argument.java
===================================================================
RCS file: src/org/eclipse/cdt/debug/mi/core/cdi/Argument.java
diff -N src/org/eclipse/cdt/debug/mi/core/cdi/Argument.java
--- src/org/eclipse/cdt/debug/mi/core/cdi/Argument.java	26 Aug 2002 05:14:48 -0000	1.5
+++ /dev/null	1 Jan 1970 00:00:00 -0000
@@ -1,17 +0,0 @@
-/*
- * (c) Copyright QNX Software Systems Ltd. 2002.
- * All Rights Reserved.
- */
-package org.eclipse.cdt.debug.mi.core.cdi;
-
-import org.eclipse.cdt.debug.core.cdi.model.ICDIArgument;
-import org.eclipse.cdt.debug.mi.core.output.MIVar;
-
-/**
- */
-public class Argument extends Variable implements ICDIArgument {
-
-	public Argument(StackFrame frame, String name, MIVar var) {
-		super(frame, name, var);
-	}
-}
Index: src/org/eclipse/cdt/debug/mi/core/cdi/Breakpoint.java
===================================================================
RCS file: src/org/eclipse/cdt/debug/mi/core/cdi/Breakpoint.java
diff -N src/org/eclipse/cdt/debug/mi/core/cdi/Breakpoint.java
--- src/org/eclipse/cdt/debug/mi/core/cdi/Breakpoint.java	8 Jan 2003 21:33:12 -0000	1.10
+++ /dev/null	1 Jan 1970 00:00:00 -0000
@@ -1,104 +0,0 @@
-/*
- * (c) Copyright QNX Software Systems Ltd. 2002.
- * All Rights Reserved.
- */
-package org.eclipse.cdt.debug.mi.core.cdi;
-
-import org.eclipse.cdt.debug.core.cdi.CDIException;
-import org.eclipse.cdt.debug.core.cdi.ICDICondition;
-import org.eclipse.cdt.debug.core.cdi.ICDILocation;
-import org.eclipse.cdt.debug.core.cdi.model.ICDILocationBreakpoint;
-import org.eclipse.cdt.debug.mi.core.output.MIBreakpoint;
-
-/**
- */
-public class Breakpoint extends CObject implements ICDILocationBreakpoint {
-
-	ICDILocation location;
-	ICDICondition condition;
-	MIBreakpoint miBreakpoint;
-	BreakpointManager mgr;
-
-	public Breakpoint(BreakpointManager m, MIBreakpoint miBreak) {
-		super(m.getCSession().getCTarget());
-		miBreakpoint = miBreak;
-		mgr = m;
-	}
-
-	MIBreakpoint getMIBreakpoint() {
-		return miBreakpoint;
-	}
-	
-	/**
-	 * @see org.eclipse.cdt.debug.core.cdi.ICDIBreakpoint#getCondition()
-	 */
-	public ICDICondition getCondition() throws CDIException {
-		if (condition == null) {
-			condition =  new Condition(miBreakpoint.getIgnoreCount(),
-				miBreakpoint.getWhat());
-		}
-		return condition;
-	}
-
-	/**
-	 * @see org.eclipse.cdt.debug.core.cdi.ICDIBreakpoint#getThreadId()
-	 */
-	public String getThreadId() throws CDIException {
-		return miBreakpoint.getThreadId();
-	}
-
-	/**
-	 * @see org.eclipse.cdt.debug.core.cdi.ICDIBreakpoint#isEnabled()
-	 */
-	public boolean isEnabled() throws CDIException {
-		return miBreakpoint.isEnabled();
-	}
-
-	/**
-	 * @see org.eclipse.cdt.debug.core.cdi.ICDIBreakpoint#isHardware()
-	 */
-	public boolean isHardware() {
-		return miBreakpoint.isHardware();
-	}
-
-	/**
-	 * @see org.eclipse.cdt.debug.core.cdi.ICDIBreakpoint#isTemporary()
-	 */
-	public boolean isTemporary() {
-		return miBreakpoint.isTemporary();
-	}
-
-	/**
-	 * @see org.eclipse.cdt.debug.core.cdi.ICDIBreakpoint#setCondition(ICDICondition)
-	 */
-	public void setCondition(ICDICondition condition) throws CDIException {
-		if (isEnabled()) {
-			mgr.setCondition(this, condition);
-		}
-		this.condition = condition;
-	}
-
-	/**
-	 * @see org.eclipse.cdt.debug.core.cdi.ICDIBreakpoint#setEnabled(boolean)
-	 */
-	public void setEnabled(boolean enable) throws CDIException {
-		if (enable == false && isEnabled() == true) { 
-				mgr.disableBreakpoint(this);
-		} else if (enable == true && isEnabled() == false) {
-				mgr.enableBreakpoint(this);
-		}
-	}
-
-	/**
-	 * @see org.eclipse.cdt.debug.core.cdi.ICDILocationBreakpoint#getLocation()
-	 */
-	public ICDILocation getLocation() throws CDIException {
-		if (location == null) {
-			location = new Location (miBreakpoint.getFile(),
-					miBreakpoint.getFunction(),
-					miBreakpoint.getLine(),
-					miBreakpoint.getAddress());
-		}
-		return location;
-	}
-}
Index: src/org/eclipse/cdt/debug/mi/core/cdi/BreakpointHit.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/cdi/BreakpointHit.java,v
retrieving revision 1.3
diff -u -r1.3 BreakpointHit.java
--- src/org/eclipse/cdt/debug/mi/core/cdi/BreakpointHit.java	8 Jan 2003 21:33:12 -0000	1.3
+++ src/org/eclipse/cdt/debug/mi/core/cdi/BreakpointHit.java	9 Jan 2003 03:43:58 -0000
@@ -7,6 +7,7 @@
 
 import org.eclipse.cdt.debug.core.cdi.ICDIBreakpointHit;
 import org.eclipse.cdt.debug.core.cdi.model.ICDIBreakpoint;
+import org.eclipse.cdt.debug.mi.core.cdi.model.Breakpoint;
 import org.eclipse.cdt.debug.mi.core.event.MIBreakpointHitEvent;
 
 /**
Index: src/org/eclipse/cdt/debug/mi/core/cdi/BreakpointManager.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/cdi/BreakpointManager.java,v
retrieving revision 1.25
diff -u -r1.25 BreakpointManager.java
--- src/org/eclipse/cdt/debug/mi/core/cdi/BreakpointManager.java	8 Jan 2003 21:33:12 -0000	1.25
+++ src/org/eclipse/cdt/debug/mi/core/cdi/BreakpointManager.java	9 Jan 2003 03:43:57 -0000
@@ -19,6 +19,9 @@
 import org.eclipse.cdt.debug.core.cdi.model.ICDIWatchpoint;
 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.Breakpoint;
+import org.eclipse.cdt.debug.mi.core.cdi.model.CTarget;
+import org.eclipse.cdt.debug.mi.core.cdi.model.Watchpoint;
 import org.eclipse.cdt.debug.mi.core.command.CommandFactory;
 import org.eclipse.cdt.debug.mi.core.command.MIBreakAfter;
 import org.eclipse.cdt.debug.mi.core.command.MIBreakCondition;
@@ -34,8 +37,8 @@
 import org.eclipse.cdt.debug.mi.core.event.MIEvent;
 import org.eclipse.cdt.debug.mi.core.output.MIBreakInsertInfo;
 import org.eclipse.cdt.debug.mi.core.output.MIBreakListInfo;
-import org.eclipse.cdt.debug.mi.core.output.MIBreakpoint;
 import org.eclipse.cdt.debug.mi.core.output.MIBreakWatchInfo;
+import org.eclipse.cdt.debug.mi.core.output.MIBreakpoint;
 import org.eclipse.cdt.debug.mi.core.output.MIInfo;
 
 /**
@@ -121,7 +124,7 @@
 		return false;
 	}
 
-	Breakpoint getBreakpoint(int number) {
+	public Breakpoint getBreakpoint(int number) {
 		ICDIBreakpoint[] bkpts = listBreakpoints();
 		for (int i = 0; i < bkpts.length; i++) {
 			if (bkpts[i] instanceof Breakpoint) {
@@ -230,7 +233,7 @@
 		mi.fireEvents(events);
 	}
 
-	Breakpoint deleteBreakpoint (int no) {
+	public Breakpoint deleteBreakpoint (int no) {
 		Breakpoint point = null;
 		Breakpoint[] points = (Breakpoint[])delList.toArray(new Breakpoint[delList.size()]);
 		for (int i = 0; i < points.length; i++) {
Index: src/org/eclipse/cdt/debug/mi/core/cdi/CObject.java
===================================================================
RCS file: src/org/eclipse/cdt/debug/mi/core/cdi/CObject.java
diff -N src/org/eclipse/cdt/debug/mi/core/cdi/CObject.java
--- src/org/eclipse/cdt/debug/mi/core/cdi/CObject.java	5 Dec 2002 16:01:53 -0000	1.3
+++ /dev/null	1 Jan 1970 00:00:00 -0000
@@ -1,31 +0,0 @@
-/*
- * (c) Copyright QNX Software Systems Ltd. 2002.
- * All Rights Reserved.
- */
-package org.eclipse.cdt.debug.mi.core.cdi;
-
-import org.eclipse.cdt.debug.core.cdi.model.ICDIObject;
-import org.eclipse.cdt.debug.core.cdi.model.ICDITarget;
-
-/**
- */
-public class CObject implements ICDIObject {
-
-	CTarget target;
-	
-	public CObject(CTarget t) {
-		target = t;
-	}
-	
-	/**
-	 * @see org.eclipse.cdt.debug.core.cdi.model.ICDIObject#getTarget()
-	 */
-	public ICDITarget getTarget() {
-		return target;
-	}
-	
-	public CTarget getCTarget() {
-			return target;
-	}
-
-}
Index: src/org/eclipse/cdt/debug/mi/core/cdi/CSession.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/cdi/CSession.java,v
retrieving revision 1.22
diff -u -r1.22 CSession.java
--- src/org/eclipse/cdt/debug/mi/core/cdi/CSession.java	5 Dec 2002 16:01:53 -0000	1.22
+++ src/org/eclipse/cdt/debug/mi/core/cdi/CSession.java	9 Jan 2003 03:43:53 -0000
@@ -22,6 +22,7 @@
 import org.eclipse.cdt.debug.core.cdi.model.ICDITarget;
 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.CTarget;
 import org.eclipse.cdt.debug.mi.core.command.CommandFactory;
 import org.eclipse.cdt.debug.mi.core.command.MIEnvironmentDirectory;
 
Index: src/org/eclipse/cdt/debug/mi/core/cdi/CTarget.java
===================================================================
RCS file: src/org/eclipse/cdt/debug/mi/core/cdi/CTarget.java
diff -N src/org/eclipse/cdt/debug/mi/core/cdi/CTarget.java
--- src/org/eclipse/cdt/debug/mi/core/cdi/CTarget.java	5 Dec 2002 15:59:27 -0000	1.36
+++ /dev/null	1 Jan 1970 00:00:00 -0000
@@ -1,557 +0,0 @@
-/*
- *(c) Copyright QNX Software Systems Ltd. 2002.
- * All Rights Reserved.
- * 
- */
-package org.eclipse.cdt.debug.mi.core.cdi;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.eclipse.cdt.debug.core.cdi.CDIException;
-import org.eclipse.cdt.debug.core.cdi.ICDILocation;
-import org.eclipse.cdt.debug.core.cdi.ICDIRegisterObject;
-import org.eclipse.cdt.debug.core.cdi.ICDISession;
-import org.eclipse.cdt.debug.core.cdi.model.ICDIGlobalVariable;
-import org.eclipse.cdt.debug.core.cdi.model.ICDIRegister;
-import org.eclipse.cdt.debug.core.cdi.model.ICDISharedLibrary;
-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.command.CommandFactory;
-import org.eclipse.cdt.debug.mi.core.command.MIDataEvaluateExpression;
-import org.eclipse.cdt.debug.mi.core.command.MIExecContinue;
-import org.eclipse.cdt.debug.mi.core.command.MIExecFinish;
-import org.eclipse.cdt.debug.mi.core.command.MIExecNext;
-import org.eclipse.cdt.debug.mi.core.command.MIExecNextInstruction;
-import org.eclipse.cdt.debug.mi.core.command.MIExecRun;
-import org.eclipse.cdt.debug.mi.core.command.MIExecStep;
-import org.eclipse.cdt.debug.mi.core.command.MIExecStepInstruction;
-import org.eclipse.cdt.debug.mi.core.command.MIExecUntil;
-import org.eclipse.cdt.debug.mi.core.command.MIInfoThreads;
-import org.eclipse.cdt.debug.mi.core.command.MITargetDetach;
-import org.eclipse.cdt.debug.mi.core.command.MIThreadSelect;
-import org.eclipse.cdt.debug.mi.core.event.MIDetachedEvent;
-import org.eclipse.cdt.debug.mi.core.event.MIThreadExitEvent;
-import org.eclipse.cdt.debug.mi.core.output.MIDataEvaluateExpressionInfo;
-import org.eclipse.cdt.debug.mi.core.output.MIInfo;
-import org.eclipse.cdt.debug.mi.core.output.MIInfoThreadsInfo;
-import org.eclipse.cdt.debug.mi.core.output.MIThreadSelectInfo;
-
-/**
- */
-public class CTarget  implements ICDITarget {
-
-	CSession session;
-	CThread[] noThreads = new CThread[0];
-	CThread[] currentThreads;
-	int currentThreadId;
-	int lastExecutionToken;
-	
-	public CTarget(CSession s) {
-		session = s;
-		currentThreads = noThreads;
-	}
-	
-	CSession getCSession() {
-		return session;
-	}
-
-	int getLastExecutionToken() {
-		return lastExecutionToken;
-	}
-
-	/**
-	 * @see org.eclipse.cdt.debug.core.cdi.model.ICDITarget#getSession()
-	 */
-	public ICDISession getSession() {
-		return session;
-	}
-
-	/**
-	 * @see org.eclipse.cdt.debug.core.cdi.model.ICDIObject#getTarget()
-	 */
-	public ICDITarget getTarget() {
-		return this;
-	}
-	
-	/**
-	 * @see org.eclipse.cdt.debug.core.cdi.model.ICDITarget#setCurrentThread(ICDIThread)
-	 */
-	public void setCurrentThread(ICDIThread cthread) throws CDIException {
-		if (cthread instanceof CThread) {
-			setCurrentThread((CThread)cthread);
-		}
-	}
-
-	/**
-	 */
-	public void setCurrentThread(CThread cthread) throws CDIException {
-		session.setCurrentTarget(this);
-		int id = cthread.getId();
-		// No need to set thread id 0, it is a dummy thread.
-		if (id == 0) {
-			return;
-		}
-		// already the current thread?
-		if (currentThreadId != id) {
-			MISession mi = session.getMISession();
-			CommandFactory factory = mi.getCommandFactory();
-			MIThreadSelect select = factory.createMIThreadSelect(id);
-			try {
-				mi.postCommand(select);
-				MIThreadSelectInfo info = select.getMIThreadSelectInfo();
-				if (info == null) {
-					throw new CDIException("No Answer");
-				}
-				currentThreadId = info.getNewThreadId();
-			} catch (MIException e) {
-				throw new MI2CDIException(e);
-			}
-
-			// Resetting threads may change the value of
-			// some variables like Register.  Send an update
-			// To generate changeEvents.
-			RegisterManager regMgr = session.getRegisterManager();
-			regMgr.update();
-		}
-
-		// We should be allright now.
-		if (currentThreadId != id) {
-			// thread is gone.  Generate a Thread destroyed.
-			MISession mi = session.getMISession();
-			mi.fireEvent(new MIThreadExitEvent(id));
-			throw new CDIException("Thread destroyed");
-		}
-	}
-
-	/**
-	 * Called when stopping because of breakpoints etc ..
-	 */
-	void updateState(int newThreadId) {
-		CThread[] oldThreads = currentThreads;
-
-		// If we use "info threads" in getCThreads() this
-		// will be overwritten.  However if we use -stack-list-threads
-		// it does not provide to the current thread
-		currentThreadId = newThreadId;
-		// get the new Threads.
-		CThread[] newThreads = getCThreads();
-
-		currentThreads = newThreads;
-
-		// Fire destroyedEvent for old threads.
-		if (oldThreads != null && oldThreads.length > 0) {
-			List dList = new ArrayList(oldThreads.length);
-			for (int i = 0; i < oldThreads.length; i++) {
-				boolean found = false;
-				for (int j = 0; j < newThreads.length; j++) {
-					if (newThreads[j].getId() == ((CThread)oldThreads[i]).getId()) {
-						found = true;
-						break;
-					}
-				}
-				if (!found) {
-					dList.add(new Integer(oldThreads[i].getId()));
-				}
-			}
-			if (!dList.isEmpty()) {
-				MIThreadExitEvent[] events = new MIThreadExitEvent[dList.size()];
-				for (int j = 0; j < events.length; j++) {
-					int id = ((Integer)dList.get(j)).intValue();
-					events[j] = new MIThreadExitEvent(id);
-				}
-				MISession miSession = session.getMISession();
-				miSession.fireEvents(events);
-			}
-		}
-	}
-
-	/**
-	 * Do the real work of call -thread-list-ids.
-	 */
-	public CThread[] getCThreads() { //throws CDIException {
-		CThread[] cthreads = noThreads;
-		MISession mi = session.getMISession();
-		CommandFactory factory = mi.getCommandFactory();
-		MIInfoThreads tids = factory.createMIInfoThreads();
-		try {
-			// HACK/FIXME: gdb/mi thread-list-ids does not
-			// show any newly create thread, we workaround by
-			// issuing "info threads" instead.
-			//MIThreadListIds tids = factory.createMIThreadListIds();
-			//MIThreadListIdsInfo info = tids.getMIThreadListIdsInfo();
-			mi.postCommand(tids);
-			MIInfoThreadsInfo info = tids.getMIInfoThreadsInfo();
-			int [] ids;
-			if (info == null) {
-				ids = new int[0];
-			} else {
-				ids = info.getThreadIds();
-			}
-			if (ids != null && ids.length > 0) {
-				cthreads = new CThread[ids.length];
-				// Ok that means it is a multiThreaded.
-				for (int i = 0; i < ids.length; i++) {
-					cthreads[i] = new CThread(this, ids[i]);
-				}
-			} else {
-				// Provide a dummy.
-				cthreads = new CThread[]{new CThread(this, 0)};
-			}
-			currentThreadId = info.getCurrentThread();
-		} catch (MIException e) {
-			// Do not throw anything in this case.
-			//throw new CDIException(e.getMessage());
-		}
-		return cthreads;
-	}
-
-	/**
-	 * @see org.eclipse.cdt.debug.core.cdi.model.ICDITarget#getCurrentThread()
-	 */
-	public ICDIThread getCurrentThread() throws CDIException {
-		ICDIThread[] threads = getThreads();
-		for (int i = 0; i < threads.length; i++) {
-			CThread cthread = (CThread)threads[i];
-			if (cthread.getId() == currentThreadId) {
-				return cthread;
-			}
-		}
-		return null;
-	}
-
-	/**
-	 * @see org.eclipse.cdt.debug.core.cdi.model.ICDITarget#getThreads()
-	 */
-	public ICDIThread[] getThreads() throws CDIException {
-		if (currentThreads.length == 0) {
-			currentThreads = getCThreads();
-		}
-		return currentThreads;
-	}
-
-	/**
-	 * @see org.eclipse.cdt.debug.core.cdi.model.ICDITarget#restart()
-	 */
-	public void restart() throws CDIException {
-		MISession mi = session.getMISession();
-		CommandFactory factory = mi.getCommandFactory();
-		MIExecRun run = factory.createMIExecRun(new String[0]);
-		try {
-			mi.postCommand(run);
-			MIInfo info = run.getMIInfo();
-			if (info == null) {
-				throw new CDIException("No answer");
-			}
-		} catch (MIException e) {
-			throw new MI2CDIException(e);
-		}
-		lastExecutionToken = run.getToken();
-	}
-
-	/**
-	 * @see org.eclipse.cdt.debug.core.cdi.model.ICDITarget#resume()
-	 */
-	public void resume() throws CDIException {
-		MISession mi = session.getMISession();
-		if (mi.getMIInferior().isRunning()) {
-			throw new CDIException("Inferior already running");
-		} else if (mi.getMIInferior().isSuspended()) {
-			CommandFactory factory = mi.getCommandFactory();
-			MIExecContinue cont = factory.createMIExecContinue();
-			try {
-				mi.postCommand(cont);
-				MIInfo info = cont.getMIInfo();
-				if (info == null) {
-					throw new CDIException("No answer");
-				}
-			} catch (MIException e) {
-				throw new MI2CDIException(e);
-			}
-			lastExecutionToken = cont.getToken();
-		} else if (mi.getMIInferior().isTerminated()) {
-			restart();
-		} else {
-			restart();
-			//throw new CDIException("Unknow state");
-		}
-	}
-
-	/**
-	 * @see org.eclipse.cdt.debug.core.cdi.model.ICDITarget#stepInto()
-	 */
-	public void stepInto() throws CDIException {
-		MISession mi = session.getMISession();
-		CommandFactory factory = mi.getCommandFactory();
-		MIExecStep step = factory.createMIExecStep();
-		try {
-			mi.postCommand(step);
-			MIInfo info = step.getMIInfo();
-			if (info == null) {
-				throw new CDIException("No answer");
-			}
-		} catch (MIException e) {
-			throw new MI2CDIException(e);
-		}
-		lastExecutionToken = step.getToken();
-	}
-
-	/**
-	 * @see org.eclipse.cdt.debug.core.cdi.model.ICDITarget#stepIntoInstruction()
-	 */
-	public void stepIntoInstruction() throws CDIException {
-		MISession mi = session.getMISession();
-		CommandFactory factory = mi.getCommandFactory();
-		MIExecStepInstruction stepi = factory.createMIExecStepInstruction();
-		try {
-			mi.postCommand(stepi);
-			MIInfo info = stepi.getMIInfo();
-			if (info == null) {
-				throw new CDIException("No answer");
-			}
-		} catch (MIException e) {
-			throw new MI2CDIException(e);
-		}
-		lastExecutionToken = stepi.getToken();
-	}
-
-	/**
-	 * @see org.eclipse.cdt.debug.core.cdi.model.ICDITarget#stepOver()
-	 */
-	public void stepOver() throws CDIException {
-		MISession mi = session.getMISession();
-		CommandFactory factory = mi.getCommandFactory();
-		MIExecNext next = factory.createMIExecNext();
-		try {
-			mi.postCommand(next);
-			MIInfo info = next.getMIInfo();
-			if (info == null) {
-				throw new CDIException("No answer");
-			}
-		} catch (MIException e) {
-			throw new MI2CDIException(e);
-		}
-		lastExecutionToken = next.getToken();
-	}
-
-	/**
-	 * @see org.eclipse.cdt.debug.core.cdi.model.ICDITarget#stepOverInstruction()
-	 */
-	public void stepOverInstruction() throws CDIException {
-		MISession mi = session.getMISession();
-		CommandFactory factory = mi.getCommandFactory();
-		MIExecNextInstruction nexti = factory.createMIExecNextInstruction();
-		try {
-			mi.postCommand(nexti);
-			MIInfo info = nexti.getMIInfo();
-			if (info == null) {
-				throw new CDIException("No answer");
-			}
-		} catch (MIException e) {
-			throw new MI2CDIException(e);
-		}
-		lastExecutionToken = nexti.getToken();
-	}
-
-	/**
-	 * @see org.eclipse.cdt.debug.core.cdi.model.ICDITarget#stepReturn()
-	 */
-	public void stepReturn() throws CDIException {
-		MISession mi = session.getMISession();
-		CommandFactory factory = mi.getCommandFactory();
-		MIExecFinish finish = factory.createMIExecFinish();
-		try {
-			mi.postCommand(finish);
-			MIInfo info = finish.getMIInfo();
-			if (info == null) {
-				throw new CDIException("No answer");
-			}
-		} catch (MIException e) {
-			throw new MI2CDIException(e);
-		}
-		lastExecutionToken = finish.getToken();
-	}
-
-	/**
-	 * @see org.eclipse.cdt.debug.core.cdi.model.ICDITarget#suspend()
-	 */
-	public void suspend() throws CDIException {
-		// send a noop to see if we get an aswer.
-		MISession mi = session.getMISession();
-		try {
-			mi.getMIInferior().interrupt();
-		} catch (MIException e) {
-			throw new MI2CDIException(e);
-		}
-	}
-
-	/**
-	 * @see org.eclipse.cdt.debug.core.cdi.model.ICDITarget#disconnect()
-	 */
-	public void disconnect() throws CDIException {
-		MISession mi = session.getMISession();
-		CommandFactory factory = mi.getCommandFactory();
-		MITargetDetach detach = factory.createMITargetDetach();
-		try {
-			mi.postCommand(detach);
-			MIInfo info = detach.getMIInfo();
-			if (info == null) {
-				throw new CDIException("No answer");
-			}
-		} catch (MIException e) {
-			throw new MI2CDIException(e);
-		}
-		// Unfortunately -target-detach does not generate an
-		// event so we do it here.
-		MISession miSession = session.getMISession();
-		miSession.fireEvent(new MIDetachedEvent(detach.getToken()));
-		session.getMISession().getMIInferior().setDisconnected();
-	}
-
-	/**
-	 * @see org.eclipse.cdt.debug.core.cdi.model.ICDITarget#finish()
-	 */
-	public void finish() throws CDIException {
-		MISession mi = session.getMISession();
-		CommandFactory factory = mi.getCommandFactory();
-		MIExecFinish finish = factory.createMIExecFinish();
-		try {
-			mi.postCommand(finish);
-			MIInfo info = finish.getMIInfo();
-			if (info == null) {
-				throw new CDIException("No answer");
-			}
-		} catch (MIException e) {
-			throw new MI2CDIException(e);
-		}
-		lastExecutionToken = finish.getToken();
-	}
-
-	/**
-	 * @see org.eclipse.cdt.debug.core.cdi.model.ICDITarget#runUntil(ICDILocation)
-	 */
-	public void runUntil(ICDILocation location) throws CDIException {
-		MISession mi = session.getMISession();
-		CommandFactory factory = mi.getCommandFactory();
-		String loc = "";
-		if (location.getFile() != null) {
-			loc = location.getFile() + ":" + location.getLineNumber();
-		} else if (location.getFunction() != null) {
-			loc = location.getFunction();
-		} else if (location.getAddress() != 0) {
-			loc = "" + location.getAddress();
-		}
-		MIExecUntil until = factory.createMIExecUntil(loc);
-		try {
-			mi.postCommand(until);
-			MIInfo info = until.getMIInfo();
-			if (info == null) {
-				throw new CDIException("No answer");
-			}
-		} catch (MIException e) {
-			throw new MI2CDIException(e);
-		}
-		lastExecutionToken = until.getToken();
-
-	}
-
-	/**
-	 * @see org.eclipse.cdt.debug.core.cdi.model.ICDITarget#evaluateExpressionToString(String)
-	 */
-	public String evaluateExpressionToString(String expressionText)
-		throws CDIException {
-		MISession mi = session.getMISession();
-		CommandFactory factory = mi.getCommandFactory();
-		MIDataEvaluateExpression evaluate = 
-			factory.createMIDataEvaluateExpression(expressionText);
-		try {
-			mi.postCommand(evaluate);
-			MIDataEvaluateExpressionInfo info =
-				evaluate.getMIDataEvaluateExpressionInfo();
-			if (info == null) {
-				throw new CDIException("No answer");
-			}
-			return info.getExpression();
-		} catch (MIException e) {
-			throw new MI2CDIException(e);
-		}
-	}
-
-	/**
-	 * @see org.eclipse.cdt.debug.core.cdi.model.ICDITarget#terminate()
-	 */
-	public void terminate() throws CDIException {
-		session.getMISession().getMIInferior().destroy();
-	}
-
-	/**
-	 * @see org.eclipse.cdt.debug.core.cdi.model.ICDITarget#isTerminated()
-	 */
-	public boolean isTerminated() {
-		return session.getMISession().getMIInferior().isTerminated();
-	}
-
-	/**
-	 * @see org.eclipse.cdt.debug.core.cdi.model.ICDITarget#isDisconnected()
-	 */
-	public boolean isDisconnected() {
-		return !session.getMISession().getMIInferior().isConnected();
-	}
-
-	/**
-	 * @see org.eclipse.cdt.debug.core.cdi.model.ICDITarget#isSuspended()
-	 */
-	public boolean isSuspended() {
-		return session.getMISession().getMIInferior().isSuspended();
-	}
-
-	public boolean isRunning() {
-		return session.getMISession().getMIInferior().isRunning();
-	}
-	
-	/**
-	 * @see org.eclipse.cdt.debug.core.cdi.model.ICDITarget#getGlobalVariables()
-	 */
-	public ICDIGlobalVariable[] getGlobalVariables() throws CDIException {
-		return new ICDIGlobalVariable[0];
-	}
-
-	/**
-	 * @see org.eclipse.cdt.debug.core.cdi.model.ICDITarget#getRegisterObjects()
-	 */
-	public ICDIRegisterObject[] getRegisterObjects() throws CDIException {
-		RegisterManager mgr = session.getRegisterManager();
-		return mgr.getRegisterObjects();
-	}
-
-	/**
-	 * @see org.eclipse.cdt.debug.core.cdi.model.ICDIStackFrame#getRegisters(ICDIRegisterObject[])
-	*/
-	public ICDIRegister[] getRegisters(ICDIRegisterObject[] regs) throws CDIException {
-		ICDIRegister[] registers = null;
-		RegisterManager mgr = session.getRegisterManager();
-		registers = new ICDIRegister[regs.length];
-		for (int i = 0; i < registers.length; i++) {
-				registers[i] = mgr.createRegister(regs[i]);
-		}
-		return registers;
-	}
-
-
-	/**
-	 * @see org.eclipse.cdt.debug.core.cdi.model.ICDITarget#getSharedLibraries()
-	 */
-	public ICDISharedLibrary[] getSharedLibraries() throws CDIException {
-		return new ICDISharedLibrary[0];
-	}
-
-	/**
-	 * @see org.eclipse.cdt.debug.core.cdi.model.ICDITarget#getProcess()
-	 */
-	public Process getProcess() {
-		return session.getMISession().getMIInferior();
-	}
-
-}
Index: src/org/eclipse/cdt/debug/mi/core/cdi/CThread.java
===================================================================
RCS file: src/org/eclipse/cdt/debug/mi/core/cdi/CThread.java
diff -N src/org/eclipse/cdt/debug/mi/core/cdi/CThread.java
--- src/org/eclipse/cdt/debug/mi/core/cdi/CThread.java	5 Dec 2002 16:00:05 -0000	1.23
+++ /dev/null	1 Jan 1970 00:00:00 -0000
@@ -1,285 +0,0 @@
-/*
- * (c) Copyright QNX Software Systems Ltd. 2002.
- * All Rights Reserved.
- *
- */
-package org.eclipse.cdt.debug.mi.core.cdi;
-
-import org.eclipse.cdt.debug.core.cdi.CDIException;
-import org.eclipse.cdt.debug.core.cdi.ICDILocation;
-import org.eclipse.cdt.debug.core.cdi.model.ICDIStackFrame;
-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.command.CommandFactory;
-import org.eclipse.cdt.debug.mi.core.command.MIStackInfoDepth;
-import org.eclipse.cdt.debug.mi.core.command.MIStackListFrames;
-import org.eclipse.cdt.debug.mi.core.command.MIStackSelectFrame;
-import org.eclipse.cdt.debug.mi.core.output.MIFrame;
-import org.eclipse.cdt.debug.mi.core.output.MIInfo;
-import org.eclipse.cdt.debug.mi.core.output.MIStackInfoDepthInfo;
-import org.eclipse.cdt.debug.mi.core.output.MIStackListFramesInfo;
-
-/**
- */
-public class CThread extends CObject implements ICDIThread {
-
-	int id;
-	static StackFrame[] noStack = new StackFrame[0];
-	StackFrame currentFrame;
-	
-	public CThread(CTarget target, int threadId) {
-		super(target);
-		id = threadId;
-	}
-	
-	int getId() {
-		return id;
-	}
-
-	public String toString() {
-		return Integer.toString(id);
-	}
-
-	StackFrame getCurrentStackFrame() throws CDIException {
-		if (currentFrame == null) {
-			ICDIStackFrame[] frames = getStackFrames(0, 0);
-			if (frames.length > 0) {
-				currentFrame = (StackFrame)frames[0];
-			}
-		}
-		return currentFrame;
-	}
-
-	/**
-	 * @see org.eclipse.cdt.debug.core.cdi.model.ICDIThread#getStackFrames()
-	 */
-	public ICDIStackFrame[] getStackFrames() throws CDIException {
-
-		StackFrame[] stack = noStack;
-		CSession session = getCTarget().getCSession();
-
-		MISession mi = session.getMISession();
-		CommandFactory factory = mi.getCommandFactory();
-		MIStackListFrames frames = factory.createMIStackListFrames();
-		try {
-			ICDIThread oldThread = getCTarget().getCurrentThread();
-			getCTarget().setCurrentThread(this);
-			mi.postCommand(frames);
-			MIStackListFramesInfo info = frames.getMIStackListFramesInfo();
-			if (info == null) {
-				throw new CDIException("No answer");
-			}
-			MIFrame[] miFrames = info.getMIFrames();
-			stack = new StackFrame[miFrames.length];
-			for (int i = 0; i < stack.length; i++) {
-				stack[i] = new StackFrame(this, miFrames[i]);
-			}
-			getCTarget().setCurrentThread(oldThread);
-			return stack;
-		} catch (MIException e) {
-			//throw new CDIException(e.getMessage());
-			//System.out.println(e);
-		} catch (CDIException e) {
-			//throw e;
-			//System.out.println(e);
-		}
-		return stack;
-	}
-
-	/**
-	 * @see org.eclipse.cdt.debug.core.cdi.model.ICDIThread#getStackFrames()
-	 */
-	public int getStackFrameCount() throws CDIException {
-		CSession session = getCTarget().getCSession();
-		MISession mi = session.getMISession();
-		CommandFactory factory = mi.getCommandFactory();
-		MIStackInfoDepth depth = factory.createMIStackInfoDepth();
-		try {
-			ICDIThread oldThread = getCTarget().getCurrentThread();
-			getCTarget().setCurrentThread(this);
-			mi.postCommand(depth);
-			MIStackInfoDepthInfo info = depth.getMIStackInfoDepthInfo();
-			if (info == null) {
-				throw new CDIException("No answer");
-			}
-			getCTarget().setCurrentThread(oldThread);
-			return info.getDepth();
-		} catch (MIException e) {
-			throw new MI2CDIException(e);
-			//System.out.println(e);
-		}
-	}
-
-	/**
-	 * @see org.eclipse.cdt.debug.core.cdi.model.ICDIThread#getStackFrames()
-	 */
-	public ICDIStackFrame[] getStackFrames(int low, int high) throws CDIException {
-		StackFrame[] stack = noStack;
-		CSession session = getCTarget().getCSession();
-
-		MISession mi = session.getMISession();
-		CommandFactory factory = mi.getCommandFactory();
-		MIStackListFrames frames = factory.createMIStackListFrames(low, high);
-		try {
-			ICDIThread oldThread = getCTarget().getCurrentThread();
-			getCTarget().setCurrentThread(this);
-			mi.postCommand(frames);
-			MIStackListFramesInfo info = frames.getMIStackListFramesInfo();
-			if (info == null) {
-				throw new CDIException("No answer");
-			}
-			MIFrame[] miFrames = info.getMIFrames();
-			stack = new StackFrame[miFrames.length];
-			for (int i = 0; i < stack.length; i++) {
-				stack[i] = new StackFrame(this, miFrames[i]);
-			}
-			getCTarget().setCurrentThread(oldThread);
-			return stack;
-		} catch (MIException e) {
-			//throw new CDIException(e.getMessage());
-			//System.out.println(e);
-		} catch (CDIException e) {
-			//throw e;
-			//System.out.println(e);
-		}
-		return stack;
-	}
-
-	/**
-	 * @see org.eclipse.cdt.debug.core.cdi.model.ICDIThread#setCurrentStackFrame(ICDIStackFrame)
-	 */
-	public void setCurrentStackFrame(ICDIStackFrame stackframe) throws CDIException {
-		if (stackframe instanceof  StackFrame) {
-			setCurrentStackFrame((StackFrame)stackframe);
-		}
-	}
-
-	public void setCurrentStackFrame(StackFrame stackframe) throws CDIException {
-		CSession session = getCTarget().getCSession();
-		MISession mi = session.getMISession();
-		CommandFactory factory = mi.getCommandFactory();
-		int frameNum = 0;
-		if (stackframe != null) {
-			frameNum = stackframe.getLevel();
-		}
-		
-		// Check to see if we are already at this level
-		StackFrame current = getCurrentStackFrame();
-		if (current != null && current.getLevel() == frameNum) {
-			// noop
-			return;
-		}
-		
-		MIStackSelectFrame frame = factory.createMIStackSelectFrame(frameNum);
-		try {
-			// Set ourself as the current thread first.
-			getCTarget().setCurrentThread(this);
-			mi.postCommand(frame);
-			MIInfo info = frame.getMIInfo();
-			if (info == null) {
-				throw new CDIException("No answer");
-			}
-			currentFrame = stackframe;
-
-			// Resetting threads may change the value of
-			// some variables like Register.  Send an update
-			// To generate changeEvents.
-			RegisterManager regMgr = session.getRegisterManager();
-			regMgr.update();
-
-		} catch (MIException e) {
-			throw new MI2CDIException(e);
-		}
-	}
-
-	/**
-	 * @see org.eclipse.cdt.debug.core.cdi.model.ICDIThread#isSuspended()
-	 */
-	public boolean isSuspended() {
-		return getTarget().isSuspended();
-	}
-
-	/**
-	 * @see org.eclipse.cdt.debug.core.cdi.model.ICDIThread#finish()
-	 */
-	public void finish() throws CDIException {
-		getCTarget().setCurrentThread(this);
-		getTarget().finish();
-	}
-
-	/**
-	 * @see org.eclipse.cdt.debug.core.cdi.model.ICDIThread#resume()
-	 */
-	public void resume() throws CDIException {
-		getTarget().resume();
-	}
-
-	/**
-	 * @see org.eclipse.cdt.debug.core.cdi.model.ICDIThread#stepInto()
-	 */
-	public void stepInto() throws CDIException {
-		getCTarget().setCurrentThread(this);
-		getTarget().stepInto();
-	}
-
-	/**
-	 * @see org.eclipse.cdt.debug.core.cdi.model.ICDIThread#stepIntoInstruction()
-	 */
-	public void stepIntoInstruction() throws CDIException {
-		getCTarget().setCurrentThread(this);
-		getTarget().stepIntoInstruction();
-	}
-
-	/**
-	 * @see org.eclipse.cdt.debug.core.cdi.model.ICDIThread#stepOver()
-	 */
-	public void stepOver() throws CDIException {
-		getCTarget().setCurrentThread(this);
-		getTarget().stepOver();
-	}
-
-	/**
-	 * @see org.eclipse.cdt.debug.core.cdi.model.ICDIThread#stepOverInstruction()
-	 */
-	public void stepOverInstruction() throws CDIException {
-		getCTarget().setCurrentThread(this);
-		getTarget().stepOverInstruction();
-	}
-
-	/**
-	 * @see org.eclipse.cdt.debug.core.cdi.model.ICDIThread#stepReturn()
-	 */
-	public void stepReturn() throws CDIException {
-		getCTarget().setCurrentThread(this);
-		getTarget().stepReturn();
-	}
-
-	/**
-	 * @see org.eclipse.cdt.debug.core.cdi.model.ICDIThread#runUntil(ICDILocation)
-	 */
-	public void runUntil(ICDILocation location) throws CDIException {
-		getCTarget().setCurrentThread(this);
-		getTarget().runUntil(location);
-	}
-
-	/**
-	 * @see org.eclipse.cdt.debug.core.cdi.model.ICDIThread#suspend()
-	 */
-	public void suspend() throws CDIException {
-		getCTarget().setCurrentThread(this);
-		getTarget().suspend();
-	}
-
-	/**
-	 * @see org.eclipse.cdt.debug.core.cdi.model.ICDIThread#equals(ICDIThread)
-	 */
-	public boolean equals(ICDIThread thread) {
-		if (thread instanceof CThread) {
-			CThread cthread = (CThread) thread;
-			return id == cthread.getId();
-		}
-		return super.equals(thread);
-	}
-
-}
Index: src/org/eclipse/cdt/debug/mi/core/cdi/Catchpoint.java
===================================================================
RCS file: src/org/eclipse/cdt/debug/mi/core/cdi/Catchpoint.java
diff -N src/org/eclipse/cdt/debug/mi/core/cdi/Catchpoint.java
--- src/org/eclipse/cdt/debug/mi/core/cdi/Catchpoint.java	8 Jan 2003 21:33:12 -0000	1.4
+++ /dev/null	1 Jan 1970 00:00:00 -0000
@@ -1,26 +0,0 @@
-/*
- * (c) Copyright QNX Software Systems Ltd. 2002.
- * All Rights Reserved.
- */
-package org.eclipse.cdt.debug.mi.core.cdi;
-
-import org.eclipse.cdt.debug.core.cdi.CDIException;
-import org.eclipse.cdt.debug.core.cdi.ICDICatchEvent;
-import org.eclipse.cdt.debug.core.cdi.model.ICDICatchpoint;
-import org.eclipse.cdt.debug.mi.core.output.MIBreakpoint;
-
-/**
- */
-public class Catchpoint extends Breakpoint implements ICDICatchpoint {
-
-	public Catchpoint(BreakpointManager m, MIBreakpoint miBreak) {
-		super(m, miBreak);
-	}
-
-	/**
-	 * @see org.eclipse.cdt.debug.core.cdi.ICDICatchpoint#getEvent()
-	 */
-	public ICDICatchEvent getEvent() throws CDIException {
-		return null;
-	}
-}
Index: src/org/eclipse/cdt/debug/mi/core/cdi/ChangedEvent.java
===================================================================
RCS file: src/org/eclipse/cdt/debug/mi/core/cdi/ChangedEvent.java
diff -N src/org/eclipse/cdt/debug/mi/core/cdi/ChangedEvent.java
--- src/org/eclipse/cdt/debug/mi/core/cdi/ChangedEvent.java	8 Jan 2003 21:33:12 -0000	1.6
+++ /dev/null	1 Jan 1970 00:00:00 -0000
@@ -1,74 +0,0 @@
-/*
- * (c) Copyright QNX Software Systems Ltd. 2002.
- * All Rights Reserved.
- */
-package org.eclipse.cdt.debug.mi.core.cdi;
-
-import org.eclipse.cdt.debug.core.cdi.CDIException;
-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.mi.core.event.MIBreakpointChangedEvent;
-import org.eclipse.cdt.debug.mi.core.event.MIRegisterChangedEvent;
-import org.eclipse.cdt.debug.mi.core.event.MIVarChangedEvent;
-
-/**
- */
-public class ChangedEvent implements ICDIChangedEvent {
-
-	CSession session;
-	ICDIObject source;
-
-	public ChangedEvent(CSession s, MIVarChangedEvent var) {
-		session = s;
-		VariableManager mgr = session.getVariableManager();
-		String varName = var.getVarName();
-		VariableManager.Element element = mgr.getElement(varName);
-		if (element != null && element.variable != null) {
-			source = element.variable;
-		} else {
-			source = new CObject(session.getCTarget());
-		}
-	}
-
-	public ChangedEvent(CSession s, MIRegisterChangedEvent var) {
-		session = s;
-		RegisterManager mgr = session.getRegisterManager();
-		int regno = var.getNumber();
-		Register reg = null;
-		try {
-			reg = mgr.getRegister(regno);
-		} catch (CDIException e) {
-		}
-		if (reg != null) {
-			source = reg;
-		} else {
-			source = new CObject(session.getCTarget());
-		}
-	}
-
-	public ChangedEvent(CSession 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.getCTarget());
-		}
-	}
-
-	public ChangedEvent(CSession s, ICDIObject src) {
-		session = s;
-		source = src;
-	}
-
-	/**
-	 * @see org.eclipse.cdt.debug.core.cdi.event.ICDIEvent#getSource()
-	 */
-	public ICDIObject getSource() {
-		return source;
-	}
-
-}
Index: src/org/eclipse/cdt/debug/mi/core/cdi/CreatedEvent.java
===================================================================
RCS file: src/org/eclipse/cdt/debug/mi/core/cdi/CreatedEvent.java
diff -N src/org/eclipse/cdt/debug/mi/core/cdi/CreatedEvent.java
--- src/org/eclipse/cdt/debug/mi/core/cdi/CreatedEvent.java	8 Jan 2003 21:33:12 -0000	1.2
+++ /dev/null	1 Jan 1970 00:00:00 -0000
@@ -1,43 +0,0 @@
-/*
- * (c) Copyright QNX Software Systems Ltd. 2002.
- * All Rights Reserved.
- */
-package org.eclipse.cdt.debug.mi.core.cdi;
-
-import org.eclipse.cdt.debug.core.cdi.event.ICDICreatedEvent;
-import org.eclipse.cdt.debug.core.cdi.model.ICDIBreakpoint;
-import org.eclipse.cdt.debug.core.cdi.model.ICDIObject;
-import org.eclipse.cdt.debug.mi.core.event.MIBreakpointCreatedEvent;
-
-/**
- */
-public class CreatedEvent implements ICDICreatedEvent {
-
-	CSession session;
-	ICDIObject source;
-
-	public CreatedEvent(CSession s, MIBreakpointCreatedEvent 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.getCTarget());
-		}
-	}
-
-	public CreatedEvent(CSession s, ICDIObject src) {
-		session = s;
-		source = src;
-	}
-
-	/**
-	 * @see org.eclipse.cdt.debug.core.cdi.event.ICDIEvent#getSource()
-	 */
-	public ICDIObject getSource() {
-		return source;
-	}
-
-}
Index: src/org/eclipse/cdt/debug/mi/core/cdi/DestroyedEvent.java
===================================================================
RCS file: src/org/eclipse/cdt/debug/mi/core/cdi/DestroyedEvent.java
diff -N src/org/eclipse/cdt/debug/mi/core/cdi/DestroyedEvent.java
--- src/org/eclipse/cdt/debug/mi/core/cdi/DestroyedEvent.java	8 Jan 2003 21:33:12 -0000	1.6
+++ /dev/null	1 Jan 1970 00:00:00 -0000
@@ -1,66 +0,0 @@
-/*
- * (c) Copyright QNX Software Systems Ltd. 2002.
- * All Rights Reserved.
- *
- */
-package org.eclipse.cdt.debug.mi.core.cdi;
-
-import org.eclipse.cdt.debug.core.cdi.event.ICDIDestroyedEvent;
-import org.eclipse.cdt.debug.core.cdi.model.ICDIObject;
-import org.eclipse.cdt.debug.mi.core.event.MIBreakpointDeletedEvent;
-import org.eclipse.cdt.debug.mi.core.event.MIThreadExitEvent;
-import org.eclipse.cdt.debug.mi.core.event.MIVarChangedEvent;
-
-/**
- */
-public class DestroyedEvent implements ICDIDestroyedEvent {
-
-	CSession session;
-	ICDIObject source;
-	
-	public DestroyedEvent(CSession s, MIThreadExitEvent ethread) {
-		session = s;
-		source = new CThread(session.getCTarget(), ethread.getId());
-	}
-
-	public DestroyedEvent(CSession s, MIVarChangedEvent var) {
-		session = s;
-		VariableManager mgr = session.getVariableManager();
-		String varName = var.getVarName();
-		VariableManager.Element element = mgr.removeOutOfScope(varName);
-		if (element != null && element.variable != null) {
-			source = element.variable;
-		} else {
-			source = new CObject(session.getCTarget());
-		}
-	}
-
-	public DestroyedEvent(CSession s, MIBreakpointDeletedEvent bpoint) {
-		session = s;
-		BreakpointManager mgr = (BreakpointManager)session.getBreakpointManager();
-		int number = bpoint.getNumber();
-		Breakpoint breakpoint = mgr.deleteBreakpoint(number);
-		if (breakpoint != null) {
-			source = breakpoint;
-		} else {
-			source = new CObject(session.getCTarget());
-		}
-	}
-
-	public DestroyedEvent(CSession s, ICDIObject src) {
-		session = s;
-		source = src;
-	}
-	
-	public DestroyedEvent(CSession s) {
-		session = s;
-	}	
-	
-	/**
-	 * @see org.eclipse.cdt.debug.core.cdi.event.ICDIEvent#getSource()
-	 */
-	public ICDIObject getSource() {
-		return source;
-	}
-
-}
Index: src/org/eclipse/cdt/debug/mi/core/cdi/DisconnectedEvent.java
===================================================================
RCS file: src/org/eclipse/cdt/debug/mi/core/cdi/DisconnectedEvent.java
diff -N src/org/eclipse/cdt/debug/mi/core/cdi/DisconnectedEvent.java
--- src/org/eclipse/cdt/debug/mi/core/cdi/DisconnectedEvent.java	27 Sep 2002 19:22:51 -0000	1.1
+++ /dev/null	1 Jan 1970 00:00:00 -0000
@@ -1,23 +0,0 @@
-package org.eclipse.cdt.debug.mi.core.cdi;
-
-import org.eclipse.cdt.debug.core.cdi.event.ICDIDisconnectedEvent;
-import org.eclipse.cdt.debug.core.cdi.model.ICDIObject;
-
-/**
- */
-public class DisconnectedEvent implements ICDIDisconnectedEvent {
-
-	ICDIObject source;
-
-	public DisconnectedEvent(CSession session) {
-		source = (ICDIObject)session.getCTarget();
-	}
-
-	/**
-	 * @see org.eclipse.cdt.debug.core..ICDIEvent#getSource()
-	 */
-	public ICDIObject getSource() {
-		return source;
-	}
-
-}
Index: src/org/eclipse/cdt/debug/mi/core/cdi/EventManager.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/cdi/EventManager.java,v
retrieving revision 1.29
diff -u -r1.29 EventManager.java
--- src/org/eclipse/cdt/debug/mi/core/cdi/EventManager.java	8 Jan 2003 21:33:12 -0000	1.29
+++ src/org/eclipse/cdt/debug/mi/core/cdi/EventManager.java	9 Jan 2003 03:43:59 -0000
@@ -15,6 +15,15 @@
 import org.eclipse.cdt.debug.core.cdi.ICDIEventManager;
 import org.eclipse.cdt.debug.core.cdi.event.ICDIEvent;
 import org.eclipse.cdt.debug.core.cdi.event.ICDIEventListener;
+import org.eclipse.cdt.debug.mi.core.cdi.event.ChangedEvent;
+import org.eclipse.cdt.debug.mi.core.cdi.event.CreatedEvent;
+import org.eclipse.cdt.debug.mi.core.cdi.event.DestroyedEvent;
+import org.eclipse.cdt.debug.mi.core.cdi.event.DisconnectedEvent;
+import org.eclipse.cdt.debug.mi.core.cdi.event.ExitedEvent;
+import org.eclipse.cdt.debug.mi.core.cdi.event.MemoryChangedEvent;
+import org.eclipse.cdt.debug.mi.core.cdi.event.ResumedEvent;
+import org.eclipse.cdt.debug.mi.core.cdi.event.SuspendedEvent;
+import org.eclipse.cdt.debug.mi.core.cdi.model.CTarget;
 import org.eclipse.cdt.debug.mi.core.event.MIBreakpointChangedEvent;
 import org.eclipse.cdt.debug.mi.core.event.MIBreakpointCreatedEvent;
 import org.eclipse.cdt.debug.mi.core.event.MIBreakpointDeletedEvent;
Index: src/org/eclipse/cdt/debug/mi/core/cdi/ExitedEvent.java
===================================================================
RCS file: src/org/eclipse/cdt/debug/mi/core/cdi/ExitedEvent.java
diff -N src/org/eclipse/cdt/debug/mi/core/cdi/ExitedEvent.java
--- src/org/eclipse/cdt/debug/mi/core/cdi/ExitedEvent.java	5 Oct 2002 19:47:00 -0000	1.5
+++ /dev/null	1 Jan 1970 00:00:00 -0000
@@ -1,39 +0,0 @@
-/*
- * (c) Copyright QNX Software Systems Ltd. 2002.
- * All Rights Reserved.
- *
- */
-package org.eclipse.cdt.debug.mi.core.cdi;
-
-import org.eclipse.cdt.debug.core.cdi.ICDIExitInfo;
-import org.eclipse.cdt.debug.core.cdi.event.ICDIExitedEvent;
-import org.eclipse.cdt.debug.core.cdi.model.ICDIObject;
-import org.eclipse.cdt.debug.mi.core.event.MIInferiorExitEvent;
-
-/**
- */
-public class ExitedEvent implements ICDIExitedEvent {
-
-	MIInferiorExitEvent event;
-	CSession session;
-	
-	public ExitedEvent(CSession s, MIInferiorExitEvent e) {
-		session = s;
-		event = e;
-	}
-	
-	/**
-	 * @see org.eclipse.cdt.debug.core.cdi.event.ICDIExitedEvent#getExitInfo()
-	 */
-	public ICDIExitInfo getExitInfo() {
-		return new ExitInfo(session, event);
-	}
-
-	/**
-	 * @see org.eclipse.cdt.debug.core.cdi.event.ICDIEvent#getSource()
-	 */
-	public ICDIObject getSource() {
-		return session.getCurrentTarget();
-	}
-
-}
Index: src/org/eclipse/cdt/debug/mi/core/cdi/Expression.java
===================================================================
RCS file: src/org/eclipse/cdt/debug/mi/core/cdi/Expression.java
diff -N src/org/eclipse/cdt/debug/mi/core/cdi/Expression.java
--- src/org/eclipse/cdt/debug/mi/core/cdi/Expression.java	26 Aug 2002 05:16:43 -0000	1.6
+++ /dev/null	1 Jan 1970 00:00:00 -0000
@@ -1,18 +0,0 @@
-/*
- * (c) Copyright QNX Software Systems Ltd. 2002.
- * All Rights Reserved.
- *
- */
-package org.eclipse.cdt.debug.mi.core.cdi;
-
-import org.eclipse.cdt.debug.core.cdi.model.ICDIExpression;
-import org.eclipse.cdt.debug.mi.core.output.MIVar;
-
-/**
- */
-public class Expression extends Variable implements ICDIExpression {
-
-	public Expression(StackFrame stackframe, String name, MIVar var) {
-		super(stackframe, name, var);
-	}
-}
Index: src/org/eclipse/cdt/debug/mi/core/cdi/Instruction.java
===================================================================
RCS file: src/org/eclipse/cdt/debug/mi/core/cdi/Instruction.java
diff -N src/org/eclipse/cdt/debug/mi/core/cdi/Instruction.java
--- src/org/eclipse/cdt/debug/mi/core/cdi/Instruction.java	12 Oct 2002 01:22:05 -0000	1.2
+++ /dev/null	1 Jan 1970 00:00:00 -0000
@@ -1,49 +0,0 @@
-/*
- *(c) Copyright QNX Software Systems Ltd. 2002.
- * All Rights Reserved.
- * 
- */
-package org.eclipse.cdt.debug.mi.core.cdi;
-
-import org.eclipse.cdt.debug.core.cdi.model.ICDIInstruction;
-import org.eclipse.cdt.debug.mi.core.output.MIAsm;
-
-/**
- */
-public class Instruction extends CObject implements ICDIInstruction  {
-
-	MIAsm asm;
-	
-	public Instruction(CTarget target, MIAsm a) {
-		super(target);
-		asm = a;
-	}
-	/**
-	 * @see org.eclipse.cdt.debug.core.cdi.model.ICDIInstruction#getAdress()
-	 */
-	public long getAdress() {
-		return asm.getAddress();
-	}
-
-	/**
-	 * @see org.eclipse.cdt.debug.core.cdi.model.ICDIInstruction#getFuntionName()
-	 */
-	public String getFuntionName() {
-		return asm.getFunction();
-	}
-
-	/**
-	 * @see org.eclipse.cdt.debug.core.cdi.model.ICDIInstruction#getInstruction()
-	 */
-	public String getInstruction() {
-		return asm.getInstruction();
-	}
-
-	/**
-	 * @see org.eclipse.cdt.debug.core.cdi.model.ICDIInstruction#getOffset()
-	 */
-	public long getOffset() {
-		return asm.getOffset();
-	}
-
-}
Index: src/org/eclipse/cdt/debug/mi/core/cdi/MemoryBlock.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/cdi/MemoryBlock.java,v
retrieving revision 1.12
diff -u -r1.12 MemoryBlock.java
--- src/org/eclipse/cdt/debug/mi/core/cdi/MemoryBlock.java	5 Dec 2002 15:59:36 -0000	1.12
+++ src/org/eclipse/cdt/debug/mi/core/cdi/MemoryBlock.java	9 Jan 2003 03:43:56 -0000
@@ -8,6 +8,8 @@
 import org.eclipse.cdt.debug.mi.core.MIException;
 import org.eclipse.cdt.debug.mi.core.MIFormat;
 import org.eclipse.cdt.debug.mi.core.MISession;
+import org.eclipse.cdt.debug.mi.core.cdi.model.CObject;
+import org.eclipse.cdt.debug.mi.core.cdi.model.CTarget;
 import org.eclipse.cdt.debug.mi.core.command.CommandFactory;
 import org.eclipse.cdt.debug.mi.core.command.MIDataWriteMemory;
 import org.eclipse.cdt.debug.mi.core.output.MIDataReadMemoryInfo;
Index: src/org/eclipse/cdt/debug/mi/core/cdi/MemoryChangedEvent.java
===================================================================
RCS file: src/org/eclipse/cdt/debug/mi/core/cdi/MemoryChangedEvent.java
diff -N src/org/eclipse/cdt/debug/mi/core/cdi/MemoryChangedEvent.java
--- src/org/eclipse/cdt/debug/mi/core/cdi/MemoryChangedEvent.java	19 Oct 2002 19:20:11 -0000	1.1
+++ /dev/null	1 Jan 1970 00:00:00 -0000
@@ -1,50 +0,0 @@
-/*
- * (c) Copyright QNX Software Systems Ltd. 2002.
- * All Rights Reserved.
- */
-package org.eclipse.cdt.debug.mi.core.cdi;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.eclipse.cdt.debug.core.cdi.event.ICDIMemoryChangedEvent;
-import org.eclipse.cdt.debug.core.cdi.model.ICDIObject;
-import org.eclipse.cdt.debug.mi.core.event.MIMemoryChangedEvent;
-
-/**
- */
-public class MemoryChangedEvent implements ICDIMemoryChangedEvent {
-
-	CSession session;
-	MemoryBlock source;
-	MIMemoryChangedEvent miMem;
-
-	public MemoryChangedEvent(CSession s, MemoryBlock block, MIMemoryChangedEvent mem) {
-		session = s;
-		source = block;
-		miMem = mem;
-	}
-
-	/**
-	 * @see org.eclipse.cdt.debug.core.cdi.event.ICDIEvent#getAddresses()
-	 */
-	public Long[] getAddresses() {
-	 	/* But only returns the address that are in the block.  */
-		Long[] longs = miMem.getAddresses();
-		List aList = new ArrayList(longs.length);
-		for (int i = 0; i < longs.length; i++) {
-			if (source.contains(longs[i])) {
-				aList.add(longs[i]);
-			}
-		}
-		return (Long[])aList.toArray(new Long[0]);
-	}
-
-	/**
-	 * @see org.eclipse.cdt.debug.core.cdi.event.ICDIEvent#getSource()
-	 */
-	public ICDIObject getSource() {
-		return source;
-	}
-
-}
Index: src/org/eclipse/cdt/debug/mi/core/cdi/MixedInstruction.java
===================================================================
RCS file: src/org/eclipse/cdt/debug/mi/core/cdi/MixedInstruction.java
diff -N src/org/eclipse/cdt/debug/mi/core/cdi/MixedInstruction.java
--- src/org/eclipse/cdt/debug/mi/core/cdi/MixedInstruction.java	12 Oct 2002 01:21:29 -0000	1.1
+++ /dev/null	1 Jan 1970 00:00:00 -0000
@@ -1,50 +0,0 @@
-/*
- *(c) Copyright QNX Software Systems Ltd. 2002.
- * All Rights Reserved.
- * 
- */
-package org.eclipse.cdt.debug.mi.core.cdi;
-
-import org.eclipse.cdt.debug.core.cdi.model.ICDIInstruction;
-import org.eclipse.cdt.debug.core.cdi.model.ICDIMixedInstruction;
-import org.eclipse.cdt.debug.mi.core.output.MIAsm;
-import org.eclipse.cdt.debug.mi.core.output.MISrcAsm;
-
-/**
- */
-public class MixedInstruction extends CObject implements ICDIMixedInstruction {
-
-	MISrcAsm srcAsm;
-	
-	public MixedInstruction (CTarget target, MISrcAsm a) {
-		super(target);
-		srcAsm = a;
-	}
-	
-	/**
-	 * @see org.eclipse.cdt.debug.core.cdi.model.ICDIMixedInstruction#getFileName()
-	 */
-	public String getFileName() {
-		return srcAsm.getFile();
-	}
-
-	/**
-	 * @see org.eclipse.cdt.debug.core.cdi.model.ICDIMixedInstruction#getInstructions()
-	 */
-	public ICDIInstruction[] getInstructions() {
-		MIAsm[] asms = srcAsm.getMIAsms();
-		ICDIInstruction[] instructions = new ICDIInstruction[asms.length];
-		for (int i = 0; i < asms.length; i++) {
-			instructions[i] = new Instruction(getCTarget(), asms[i]);
-		}
-		return instructions;
-	}
-
-	/**
-	 * @see org.eclipse.cdt.debug.core.cdi.model.ICDIMixedInstruction#getLineNumber()
-	 */
-	public int getLineNumber() {
-		return srcAsm.getLine();
-	}
-
-}
Index: src/org/eclipse/cdt/debug/mi/core/cdi/Register.java
===================================================================
RCS file: src/org/eclipse/cdt/debug/mi/core/cdi/Register.java
diff -N src/org/eclipse/cdt/debug/mi/core/cdi/Register.java
--- src/org/eclipse/cdt/debug/mi/core/cdi/Register.java	17 Dec 2002 18:57:21 -0000	1.7
+++ /dev/null	1 Jan 1970 00:00:00 -0000
@@ -1,317 +0,0 @@
-/*
- * (c) Copyright QNX Software Systems Ltd. 2002.
- * All Rights Reserved.
- *
- */
-package org.eclipse.cdt.debug.mi.core.cdi;
-
-import java.util.ArrayList;
-import java.util.List;
-import java.util.StringTokenizer;
-
-import org.eclipse.cdt.debug.core.cdi.CDIException;
-import org.eclipse.cdt.debug.core.cdi.ICDIRegisterObject;
-import org.eclipse.cdt.debug.core.cdi.model.ICDIRegister;
-import org.eclipse.cdt.debug.core.cdi.model.ICDIValue;
-import org.eclipse.cdt.debug.core.cdi.model.ICDIVariable;
-import org.eclipse.cdt.debug.mi.core.MIException;
-import org.eclipse.cdt.debug.mi.core.MIFormat;
-import org.eclipse.cdt.debug.mi.core.MISession;
-import org.eclipse.cdt.debug.mi.core.command.CommandFactory;
-import org.eclipse.cdt.debug.mi.core.command.MIDataListRegisterValues;
-import org.eclipse.cdt.debug.mi.core.command.MIDataWriteRegisterValues;
-import org.eclipse.cdt.debug.mi.core.event.MIRegisterChangedEvent;
-import org.eclipse.cdt.debug.mi.core.output.MIDataListRegisterValuesInfo;
-import org.eclipse.cdt.debug.mi.core.output.MIInfo;
-import org.eclipse.cdt.debug.mi.core.output.MIRegisterValue;
-
-/**
- */
-public class Register extends CObject implements ICDIRegister, ICDIValue {
-
-	RegisterObject regObject;
-	int format = MIFormat.HEXADECIMAL;
-	Register parent;
-	String lastname;
-	
-	/**
-	 * A container class to hold the values of the registers and sub values
-	 * for example on x86, xmm0 register is consider to be a struct
-	 * gdb/mi -data-list-register-values returns the value like this
-	 * value="{f = {0x0, 0x0, 0x0, 0x0}}"
- 	 * we'll parse() it and change it to:
-	 * Argument[0] = { "xmm0", "{f = {0x0, 0x0, 0x0, 0x0}}"
-	 * Argument[1] = { "xmm0.f", "{0x0, 0x0, 0x0, 0x0}"}
-	 * Argument[2] = { "xmm0.f.0", "0x0"}
-	 * Argument[3] = { "xmm0.f.1", "0x0"}
-	 * Argument[4] = { "xmm0.f.2", "0x0"}
-	 * Argument[5] = { "xmm0.f.3", "0x0"}
-	 * see @parse()
-	 */
-	class Argument {
-		String name;
-		String val;
-		Argument(String n, String v) {
-			name = n;
-			val = v;
-		}
-		String getKey() {
-			return name;
-		}
-		String getValue() {
-			return val;
-		}
-	}
-
-	public Register(CTarget target, ICDIRegisterObject r) {
-		super(target);
-		parent = null;
-		lastname = r.getName();
-		regObject = (RegisterObject)r;
-	}
-
-	public Register(Register p, String n) {
-		super(p.getCTarget());
-		parent = p;
-		lastname = n;
-	}
-
-	/**
-	 * return the MI regno.
-	 */
-	public int getId() {
-		return regObject.getId();
-	}
-
-	/**
-	 * Returns a Unique name separated by '.' to describe the path
-	 * for example xmm0.f.0
-	 */
-	public String getUniqName() {
-		String n = "";
-		if (parent != null) {
-			n = parent.getUniqName() + "." + getLastName();
-		} else {
-			n = getLastName();
-		}
-		return n;
-	}
-	
-	/**
-	 * Returns the name of the register, for example xmm0.
-	 */ 
-	public String getBaseName() {
-		String base = "";
-		if (parent != null) {
-			base = parent.getBaseName();
-		} else {
-			base = getLastName();
-		}
-		return base;
-	}
-
-	/**
-	 * Returns the current name for xmm0.f the last name is "f".
-	 */
-	public String getLastName() {
-		return lastname;
-	}
-
-	/**
-	 * @see org.eclipse.cdt.debug.core.cdi.model.ICDIVariable#getName()
-	 */
-	public String getName() throws CDIException {
-		return getLastName();
-	}
-
-	/**
-	 * @see org.eclipse.cdt.debug.core.cdi.model.ICDIVariable#getTypeName()
-	 */
-	public String getTypeName() throws CDIException {
-		String v = getValueString();
-		if (v.startsWith("{")) {
-			// Use ptype?
-			return "struct ";
-		}
-		return "int";
-	}
-
-	/**
-	 * @see org.eclipse.cdt.debug.core.cdi.model.ICDIVariable#getValue()
-	 */
-	public ICDIValue getValue() throws CDIException {
-		return this;
-	}
-
-	/**
-	 * @see org.eclipse.cdt.debug.core.cdi.model.ICDIValue#getValueString()
-	 */
-	public String getValueString() throws CDIException {
-		if (parent == null) {
-			MISession mi = getCTarget().getCSession().getMISession();
-			CommandFactory factory = mi.getCommandFactory();
-			int[] regno = new int[]{regObject.getId()};
-			MIDataListRegisterValues registers =
-				factory.createMIDataListRegisterValues(format, regno);
-			try {
-				mi.postCommand(registers);
-				MIDataListRegisterValuesInfo info =
-					registers.getMIDataListRegisterValuesInfo();
-				if (info == null) {
-					throw new CDIException("No answer");
-				}
-				MIRegisterValue[] regValues = info.getMIRegisterValues();
-				// We only ask for one.  But do the right thing
-				for (int i = 0; i < regValues.length; i++) {
-					if (regValues[i].getNumber() == regno[i]) {
-						return regValues[i].getValue();
-					}
-				}
-			} catch (MIException e) {
-				throw new MI2CDIException(e);
-			}
-		} else {
-			String u = getUniqName();
-			String v = parent.getValueString();
-			Argument[] args = parse(parent.getUniqName(), v);
-			for (int i = 0; i < args.length; i++) {
-				if (u.equals(args[i].getKey())) {
-					return args[i].getValue();
-				}
-			}
-		}
-		return "";
-	}
-
-	/**
-	 * @see org.eclipse.cdt.debug.core.cdi.model.ICDIVariable#isEditable()
-	 */
-	public boolean isEditable() throws CDIException {
-		return false;
-	}
-
-	/**
-	 * @see org.eclipse.cdt.debug.core.cdi.model.ICDIVariable#setValue(ICDIValue)
-	 */
-	public void setValue(ICDIValue val) throws CDIException {
-		setValue(val.getValueString());
-	}
-
-	/**
-	 * @see org.eclipse.cdt.debug.core.cdi.model.ICDIVariable#setValue(String)
-	 */
-	public void setValue(String expression) throws CDIException {
-		MISession mi = getCTarget().getCSession().getMISession();
-		CommandFactory factory = mi.getCommandFactory();
-		int[] regnos = new int[]{regObject.getId()};
-		String[] values = new String[]{expression};
-		MIDataWriteRegisterValues registers =
-				factory.createMIDataWriteRegisterValues(format, regnos, values);
-		try {
-			mi.postCommand(registers);
-			MIInfo info = registers.getMIInfo();
-			if (info == null) {
-				throw new CDIException("No answer");
-			}
-		} catch (MIException e) {
-			throw new MI2CDIException(e);
-		}
-		// If the assign was succesfull fire a MIRegisterChangedEvent()
-		MIRegisterChangedEvent change = new MIRegisterChangedEvent(registers.getToken(),
-			regObject.getName(), regObject.getId());
-		mi.fireEvent(change);
-
-	}
-
-	/**
-	 * @see org.eclipse.cdt.debug.core.cdi.model.ICDIVariable#setFormat()
-	 */
-	public void setFormat(int fmt) throws CDIException {
-		format = Format.toMIFormat(fmt);
-	}
-
-	/**
-	 * @see org.eclipse.cdt.debug.core.cdi.model.ICDIValue#getChildrenNumber()
-	 */
-	public int getChildrenNumber() throws CDIException {
-		return getVariables().length;
-	}
-
-	/**
-	 * @see org.eclipse.cdt.debug.core.cdi.model.ICDIValue#getVariables()
-	 */
-	public ICDIVariable[] getVariables() throws CDIException {
-		List aList = new ArrayList(1);
-		String v = getValueString();
-		Argument[] args = parse(getUniqName(), v);
-		/* The idea here s to get the first level
-		 * 
-	 	 * Argument[0] = { "xmm0", "{f = {0x0, 0x0, 0x0, 0x0}}"
-	 	 * Argument[1] = { "xmm0.f", "{0x0, 0x0, 0x0, 0x0}"}
-	 	 * Argument[2] = { "xmm0.f.0", "0x0"}
-	 	 * Argument[3] = { "xmm0.f.1", "0x0"}
-	 	 * Argument[4] = { "xmm0.f.2", "0x0"}
-	 	 * Argument[5] = { "xmm0.f.3", "0x0"}
-		 *
-		 * For example the children or xmm0.f are xmm0.f.{0,1,2,3,}
-		 *  
-		 */
-		for (int i = 0; i < args.length; i++) {
-			String n = args[i].getKey();
-			String u = getUniqName();
-			if (n.startsWith(u) && n.length() > u.length()) {
-				String p = n.substring(u.length());
-				StringTokenizer st = new StringTokenizer(p, ".");
-				if (st.countTokens() == 1) {
-					aList.add(new Register(this, (String)st.nextElement()));
-				}
-			}
-		}
-		return (ICDIVariable[])aList.toArray(new ICDIVariable[0]);
-	}
-
-	/**
-	 * @see org.eclipse.cdt.debug.core.cdi.model.ICDIValue#hasChildren()
-	 */
-	public boolean hasChildren() throws CDIException {
-		return getChildrenNumber() > 0;
-	}
-
-	/**
-	 * We are parsing this:
-	 * "{f = {0x0, 0x0, 0x0, 0x0}}"
-	 * into:
-	 * Argument[0] = { "xmm0", "{f = {0x0, 0x0, 0x0, 0x0}}"
-	 * Argument[1] = { "xmm0.f", "{0x0, 0x0, 0x0, 0x0}"}
-	 * Argument[2] = { "xmm0.f.0", "0x0"}
-	 * Argument[3] = { "xmm0.f.1", "0x0"}
-	 * Argument[4] = { "xmm0.f.2", "0x0"}
-	 * Argument[5] = { "xmm0.f.3", "0x0"}
-	 */
-	Argument[] parse(String base, String v) throws CDIException {
-		List aList = new ArrayList(1);
-		StringBuffer sb = new StringBuffer(base);
-		aList.add(new Argument(sb.toString(), v.trim()));
-		while (v.startsWith("{")) {
-			int idx;
-			v = v.substring(1);
-			if (v.endsWith("}")) {
-				idx = v.lastIndexOf('}');
-				v = v.substring(0, idx);
-			}
-			idx = v.indexOf('=');
-			if (idx != -1) {
-				String n = v.substring(0, idx).trim();
-				sb.append('.').append(n);
-				v = v.substring(idx + 1).trim();
-				aList.add(new Argument(sb.toString(), v));
-			} else {
-				StringTokenizer st = new StringTokenizer(v, ",");
-				for (int i = 0; st.hasMoreElements(); i++) {
-					aList.add(new Argument(sb.toString() + "." + Integer.toString(i), ((String)st.nextElement()).trim()));
-				}
-			}
-		}
-		return (Argument[])aList.toArray(new Argument[0]);
-	}
-}
Index: src/org/eclipse/cdt/debug/mi/core/cdi/RegisterManager.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/cdi/RegisterManager.java,v
retrieving revision 1.3
diff -u -r1.3 RegisterManager.java
--- src/org/eclipse/cdt/debug/mi/core/cdi/RegisterManager.java	5 Dec 2002 15:59:55 -0000	1.3
+++ src/org/eclipse/cdt/debug/mi/core/cdi/RegisterManager.java	9 Jan 2003 03:43:58 -0000
@@ -12,6 +12,7 @@
 import org.eclipse.cdt.debug.core.cdi.ICDIRegisterObject;
 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.Register;
 import org.eclipse.cdt.debug.mi.core.command.CommandFactory;
 import org.eclipse.cdt.debug.mi.core.command.MIDataListChangedRegisters;
 import org.eclipse.cdt.debug.mi.core.command.MIDataListRegisterNames;
@@ -60,7 +61,7 @@
 		return (Register[])regList.toArray(new Register[0]);
 	}
 
-	Register getRegister(int regno) throws CDIException {
+	public Register getRegister(int regno) throws CDIException {
 		Register[] regs = getRegisters();
 		for (int i = 0; i < regs.length; i++) {
 			if (regs[i].getId() == regno) {
@@ -80,7 +81,7 @@
 		return null;
 	}
 	
-	Register createRegister(ICDIRegisterObject regObject) throws CDIException {
+	public Register createRegister(ICDIRegisterObject regObject) throws CDIException {
 		Register reg = getRegister(regObject);
 		if (reg == null) {
 			reg = new Register(getCSession().getCTarget(), regObject);
@@ -97,7 +98,7 @@
 		return regs;
 	}
 
-	void update() throws CDIException {
+	public void update() throws CDIException {
 		MISession mi = getCSession().getMISession();
 		CommandFactory factory = mi.getCommandFactory();
 		MIDataListChangedRegisters changed = factory.createMIDataListChangedRegisters();
Index: src/org/eclipse/cdt/debug/mi/core/cdi/ResumedEvent.java
===================================================================
RCS file: src/org/eclipse/cdt/debug/mi/core/cdi/ResumedEvent.java
diff -N src/org/eclipse/cdt/debug/mi/core/cdi/ResumedEvent.java
--- src/org/eclipse/cdt/debug/mi/core/cdi/ResumedEvent.java	2 Oct 2002 04:51:31 -0000	1.6
+++ /dev/null	1 Jan 1970 00:00:00 -0000
@@ -1,71 +0,0 @@
-/*
- * (c) Copyright QNX Software Systems Ltd. 2002.
- * All Rights Reserved.
- *
- */
-package org.eclipse.cdt.debug.mi.core.cdi;
-
-import org.eclipse.cdt.debug.core.cdi.event.ICDIResumedEvent;
-import org.eclipse.cdt.debug.core.cdi.model.ICDIObject;
-import org.eclipse.cdt.debug.mi.core.event.MIRunningEvent;
-
-/**
- */
-public class ResumedEvent implements ICDIResumedEvent {
-
-	CSession session;
-	MIRunningEvent event;
-
-	public ResumedEvent(CSession s, MIRunningEvent e) {
-		session = s;
-		event = e;
-	}
-
-	/**
-	 * @see org.eclipse.cdt.debug.core.cdi.event.ICDIEvent#getSource()
-	 */
-	public ICDIObject getSource() {
-		return session.getCurrentTarget();
-	}
-
-	/**
-	 * @see org.eclipse.cdt.debug.core.cdi.event.ICDIResumedEvent#getType()
-	 */
-	public int getType() {
-		MIRunningEvent running = (MIRunningEvent)event;
-		int type = running.getType();
-		int cdiType = 0;
-		switch (type) {
-			case MIRunningEvent.CONTINUE:
-				cdiType = ICDIResumedEvent.CONTINUE;
-			break;
-
-			case MIRunningEvent.UNTIL:
-			case MIRunningEvent.NEXT:
-				cdiType = ICDIResumedEvent.STEP_OVER;
-			break;
-
-			case MIRunningEvent.NEXTI:
-				cdiType = ICDIResumedEvent.STEP_OVER_INSTRUCTION;
-			break;
-
-			case MIRunningEvent.STEP:
-				cdiType = ICDIResumedEvent.STEP_INTO;
-			break;
-
-			case MIRunningEvent.STEPI:
-				cdiType = ICDIResumedEvent.STEP_INTO_INSTRUCTION;
-			break;
-
-			case MIRunningEvent.FINISH:
-				cdiType = ICDIResumedEvent.STEP_RETURN;
-			break;
-
-			//MIRunningEvent.UNTIL:
-			//cdiType = ICDIResumedEvent.STEP_UNTIL;
-			//break;
-		}
-		return cdiType;
-	}
-
-}
Index: src/org/eclipse/cdt/debug/mi/core/cdi/SourceManager.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/cdi/SourceManager.java,v
retrieving revision 1.18
diff -u -r1.18 SourceManager.java
--- src/org/eclipse/cdt/debug/mi/core/cdi/SourceManager.java	3 Jan 2003 20:29:16 -0000	1.18
+++ src/org/eclipse/cdt/debug/mi/core/cdi/SourceManager.java	9 Jan 2003 03:43:55 -0000
@@ -11,6 +11,8 @@
 import org.eclipse.cdt.debug.core.cdi.model.ICDIMixedInstruction;
 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.Instruction;
+import org.eclipse.cdt.debug.mi.core.cdi.model.MixedInstruction;
 import org.eclipse.cdt.debug.mi.core.command.CommandFactory;
 import org.eclipse.cdt.debug.mi.core.command.MIDataDisassemble;
 import org.eclipse.cdt.debug.mi.core.command.MIEnvironmentDirectory;
Index: src/org/eclipse/cdt/debug/mi/core/cdi/StackFrame.java
===================================================================
RCS file: src/org/eclipse/cdt/debug/mi/core/cdi/StackFrame.java
diff -N src/org/eclipse/cdt/debug/mi/core/cdi/StackFrame.java
--- src/org/eclipse/cdt/debug/mi/core/cdi/StackFrame.java	6 Nov 2002 21:04:57 -0000	1.13
+++ /dev/null	1 Jan 1970 00:00:00 -0000
@@ -1,165 +0,0 @@
-/*
- * (c) Copyright QNX Software Systems Ltd. 2002.
- * All Rights Reserved.
- *
- */
-package org.eclipse.cdt.debug.mi.core.cdi;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.eclipse.cdt.debug.core.cdi.CDIException;
-import org.eclipse.cdt.debug.core.cdi.ICDILocation;
-import org.eclipse.cdt.debug.core.cdi.model.ICDIArgument;
-import org.eclipse.cdt.debug.core.cdi.model.ICDIStackFrame;
-import org.eclipse.cdt.debug.core.cdi.model.ICDIVariable;
-import org.eclipse.cdt.debug.mi.core.MIException;
-import org.eclipse.cdt.debug.mi.core.MISession;
-import org.eclipse.cdt.debug.mi.core.command.CommandFactory;
-import org.eclipse.cdt.debug.mi.core.command.MIStackListArguments;
-import org.eclipse.cdt.debug.mi.core.command.MIStackListLocals;
-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;
-import org.eclipse.cdt.debug.mi.core.output.MIStackListLocalsInfo;
-
-/**
- */
-public class StackFrame extends CObject implements ICDIStackFrame {
-
-	MIFrame frame;
-	CThread cthread;
-
-	public StackFrame(CThread thread, MIFrame f) {
-		super(thread.getCTarget());
-		cthread = thread;
-		frame = f;
-	}
-
-	MIFrame getMIFrame() {
-		return frame;
-	}
-
-	CThread getCThread() {
-		return cthread;
-	}
-
-	/**
-	 * @see org.eclipse.cdt.debug.core.cdi.model.ICDIStackFrame#getArguments()
-	 */
-	public ICDIArgument[] getArguments() throws CDIException {
-		List cdiList = new ArrayList();
-		if (frame != null) {
-			CSession session = getCTarget().getCSession();
-			VariableManager mgr = (VariableManager)session.getVariableManager();
-			MISession mi = session.getMISession();
-			CommandFactory factory = mi.getCommandFactory();
-			int level = frame.getLevel();
-			MIStackListArguments listArgs =
-				factory.createMIStackListArguments(false, level, level);
-			try {
-				cthread.setCurrentStackFrame(this);
-				MIArg[] args = null;
-				mi.postCommand(listArgs);
-				MIStackListArgumentsInfo info =
-					listArgs.getMIStackListArgumentsInfo();
-				if (info == null) {
-					throw new CDIException("No answer");
-				}
-				MIFrame[] miFrames = info.getMIFrames();
-				if (miFrames != null && miFrames.length == 1) {
-					args = miFrames[0].getArgs();
-				}
-				if (args != null) {
-					for (int i = 0; i < args.length; i++) {
-						try {
-							cdiList.add(mgr.createArgument(this, args[i].getName()));
-						} catch (CDIException e) {
-						}
-					}
-				}
-			} catch (MIException e) {
-				//throw new CDIException(e.getMessage());
-				//System.err.println(e);
-			} catch (CDIException e) {
-				//throw e;
-				//System.err.println(e);
-			}
-		}
-		return (ICDIArgument[])cdiList.toArray(new ICDIArgument[0]);
-	}
-
-	/**
-	 * @see org.eclipse.cdt.debug.core.cdi.model.ICDIStackFrame#getLocalVariables()
-	 */
-	public ICDIVariable[] getLocalVariables() throws CDIException {
-		List cdiList = new ArrayList();
-		CSession session = getCTarget().getCSession();
-		VariableManager mgr = (VariableManager)session.getVariableManager();
-		MISession mi = session.getMISession();
-		CommandFactory factory = mi.getCommandFactory();
-		MIStackListLocals locals = factory.createMIStackListLocals(false);
-		try {
-			cthread.setCurrentStackFrame(this);
-			MIArg[] args = null;
-			mi.postCommand(locals);
-			MIStackListLocalsInfo info = locals.getMIStackListLocalsInfo();
-			if (info == null) {
-				throw new CDIException("No answer");
-			}
-			args = info.getLocals();
-			if (args != null) {
-				for (int i = 0; i < args.length; i++) {
-					try {
-						cdiList.add(mgr.createVariable(this, args[i].getName()));
-					} catch (CDIException e) {
-					}
-				}
-			}
-		} catch (MIException e) {
-			//throw new CDIException(e.getMessage());
-			//System.err.println(e);
-		} catch (CDIException e) {
-			//throw e;
-			//System.err.println(e);
-		}
-		return (ICDIVariable[])cdiList.toArray(new ICDIVariable[0]);
-	}
-
-	/**
-	 * @see org.eclipse.cdt.debug.core.cdi.model.ICDIStackFrame#getLocation()
-	 */
-	public ICDILocation getLocation() {
-		if (frame != null) {
-			return new Location(frame.getFile(), frame.getFunction(),
-					frame.getLine(), frame.getAddress());
-		}
-		return new Location("", "", 0, 0);
-	}
-
-	/**
-	 * @see org.eclipse.cdt.debug.core.cdi.model.ICDIStackFrame#getLevel()
-	 */
-	public int getLevel() {
-		if (frame != null) {
-			return frame.getLevel();
-		}
-		return 0;
-	}
-	/**
-	 * @see org.eclipse.cdt.debug.core.cdi.model.ICDIStackFrame#equals(ICDIStackFrame)
-	 */
-	public boolean equals(ICDIStackFrame stackframe) {
-		if (stackframe instanceof StackFrame) {
-			StackFrame stack = (StackFrame)stackframe;
-			return  cthread != null &&
-				cthread.equals(stack.getCThread()) &&
-				frame != null &&
-				frame.getLevel() == stack.getMIFrame().getLevel() &&
-				frame.getFile().equals(stack.getMIFrame().getFile()) &&
-				frame.getFunction().equals(stack.getMIFrame().getFunction());
-		}
-		return super.equals(stackframe);
-	}
-
-}
Index: src/org/eclipse/cdt/debug/mi/core/cdi/SuspendedEvent.java
===================================================================
RCS file: src/org/eclipse/cdt/debug/mi/core/cdi/SuspendedEvent.java
diff -N src/org/eclipse/cdt/debug/mi/core/cdi/SuspendedEvent.java
--- src/org/eclipse/cdt/debug/mi/core/cdi/SuspendedEvent.java	8 Jan 2003 21:33:12 -0000	1.14
+++ /dev/null	1 Jan 1970 00:00:00 -0000
@@ -1,66 +0,0 @@
-/*
- * (c) Copyright QNX Software Systems Ltd. 2002.
- * All Rights Reserved.
- *
- */
-package org.eclipse.cdt.debug.mi.core.cdi;
-
-import org.eclipse.cdt.debug.core.cdi.ICDISessionObject;
-import org.eclipse.cdt.debug.core.cdi.event.ICDISuspendedEvent;
-import org.eclipse.cdt.debug.core.cdi.model.ICDIObject;
-import org.eclipse.cdt.debug.mi.core.event.MIBreakpointHitEvent;
-import org.eclipse.cdt.debug.mi.core.event.MIErrorEvent;
-import org.eclipse.cdt.debug.mi.core.event.MIEvent;
-import org.eclipse.cdt.debug.mi.core.event.MIFunctionFinishedEvent;
-import org.eclipse.cdt.debug.mi.core.event.MILocationReachedEvent;
-import org.eclipse.cdt.debug.mi.core.event.MISignalEvent;
-import org.eclipse.cdt.debug.mi.core.event.MISteppingRangeEvent;
-import org.eclipse.cdt.debug.mi.core.event.MIWatchpointScopeEvent;
-import org.eclipse.cdt.debug.mi.core.event.MIWatchpointTriggerEvent;
-
-/**
- *
- */
-public class SuspendedEvent implements ICDISuspendedEvent {
-
-	MIEvent event;
-	CSession session;
-
-	public SuspendedEvent(CSession s, MIEvent e) {
-		session = s;
-		event = e;
-	}
-
-	public ICDISessionObject getReason() {
-		if (event instanceof MIBreakpointHitEvent) {
-			return new BreakpointHit(session, (MIBreakpointHitEvent)event);
-		} else if (event instanceof MIWatchpointTriggerEvent) {
-			return new WatchpointTrigger(session, (MIWatchpointTriggerEvent)event);
-		} else if (event instanceof MIWatchpointScopeEvent) {
-			return new WatchpointScope(session, (MIWatchpointScopeEvent)event);
-		} else if (event instanceof MISteppingRangeEvent) {
-			return new EndSteppingRange(session);
-		} else if (event instanceof MISignalEvent) {
-			return new Signal(session, (MISignalEvent)event);
-		} else if (event instanceof MILocationReachedEvent) {
-			return new EndSteppingRange(session);
-		} else if (event instanceof MIFunctionFinishedEvent) {
-			return new EndSteppingRange(session);
-		} else if (event instanceof MIErrorEvent) {
-			return new ErrorInfo(session, (MIErrorEvent)event);
-		}
-		return session;
-	}
-
-	/**
-	 * @see org.eclipse.cdt.debug.core.cdi.event.ICDIEvent#getSource()
-	 */
-	public ICDIObject getSource() {
-		CTarget target = session.getCTarget();
-		// We can send the target as the Source.  CDI
-		// Will assume that all threads are supended for this.
-		// This is true for gdb when it suspend the inferior
-		// all threads are suspended.
-		return target;
-	}
-}
Index: src/org/eclipse/cdt/debug/mi/core/cdi/Value.java
===================================================================
RCS file: src/org/eclipse/cdt/debug/mi/core/cdi/Value.java
diff -N src/org/eclipse/cdt/debug/mi/core/cdi/Value.java
--- src/org/eclipse/cdt/debug/mi/core/cdi/Value.java	2 Jan 2003 21:20:22 -0000	1.14
+++ /dev/null	1 Jan 1970 00:00:00 -0000
@@ -1,121 +0,0 @@
-/*
- * (c) Copyright QNX Software Systems Ltd. 2002.
- * All Rights Reserved.
- *
- */
-package org.eclipse.cdt.debug.mi.core.cdi;
-
-import org.eclipse.cdt.debug.core.cdi.CDIException;
-import org.eclipse.cdt.debug.core.cdi.model.ICDIValue;
-import org.eclipse.cdt.debug.core.cdi.model.ICDIVariable;
-import org.eclipse.cdt.debug.mi.core.MIException;
-import org.eclipse.cdt.debug.mi.core.MISession;
-import org.eclipse.cdt.debug.mi.core.command.CommandFactory;
-import org.eclipse.cdt.debug.mi.core.command.MIVarEvaluateExpression;
-import org.eclipse.cdt.debug.mi.core.command.MIVarListChildren;
-import org.eclipse.cdt.debug.mi.core.output.MIVar;
-import org.eclipse.cdt.debug.mi.core.output.MIVarEvaluateExpressionInfo;
-import org.eclipse.cdt.debug.mi.core.output.MIVarListChildrenInfo;
-
-/**
- */
-public class Value extends CObject implements ICDIValue {
-
-	Variable variable;
-
-	public Value(Variable v) {
-		super(v.getCTarget());
-		variable = v;
-	}
-	
-	/**
-	 * @see org.eclipse.cdt.debug.core.cdi.model.ICDIValue#getTypeName()
-	 */
-	public String getTypeName() throws CDIException {
-		return variable.getTypeName();
-	}
-
-	/**
-	 * @see org.eclipse.cdt.debug.core.cdi.model.ICDIValue#getValueString()
-	 */
-	public String getValueString() throws CDIException {
-		String result = "";
-		MISession mi = getCTarget().getCSession().getMISession();
-		CommandFactory factory = mi.getCommandFactory();
-		MIVarEvaluateExpression var =
-			factory.createMIVarEvaluateExpression(variable.getMIVar().getVarName());
-		try {
-			mi.postCommand(var);
-			MIVarEvaluateExpressionInfo info = var.getMIVarEvaluateExpressionInfo();
-			if (info == null) {
-				throw new CDIException("No answer");
-			}
-			result = info.getValue();
-		} catch (MIException e) {
-			//throw new CDIException(e.getMessage());
-		}
-		return result;
-	}
-
-	/**
-	 * @see org.eclipse.cdt.debug.core.cdi.model.ICDIValue#getVariables()
-	 */	
-	public int getChildrenNumber() throws CDIException {
-		return variable.getMIVar().getNumChild();
-	}
-	
-	/**
-	 * @see org.eclipse.cdt.debug.core.cdi.model.ICDIValue#getVariables()
-	 */
-	public boolean hasChildren() throws CDIException {
-	/*
-		int number = 0;
-		MISession mi = getCTarget().getCSession().getMISession();
-		CommandFactory factory = mi.getCommandFactory();
-		MIVarInfoNumChildren children = 
-			factory.createMIVarInfoNumChildren(variable.getMIVar().getVarName());
-		try {
-			mi.postCommand(children);
-			MIVarInfoNumChildrenInfo info = children.getMIVarInfoNumChildrenInfo();
-			if (info == null) {
-				throw new CDIException("No answer");
-			}
-			number = info.getChildNumber();
-		} catch (MIException e) {
-			throw new CDIException(e.getMessage());
-		}
-		return (number > 0);
-	*/
-		return (getChildrenNumber() > 0);	
-	}
-	/**
-	 * @see org.eclipse.cdt.debug.core.cdi.model.ICDIValue#getVariables()
-	 */
-	public ICDIVariable[] getVariables() throws CDIException {
-		Variable[] variables = null;
-		CSession session = getCTarget().getCSession();
-		MISession mi = session.getMISession();
-		VariableManager mgr = (VariableManager)session.getVariableManager();
-		CommandFactory factory = mi.getCommandFactory();
-		MIVarListChildren var = 
-			factory.createMIVarListChildren(variable.getMIVar().getVarName());
-		try {
-			mi.postCommand(var);
-			MIVarListChildrenInfo info = var.getMIVarListChildrenInfo();
-			if (info == null) {
-				throw new CDIException("No answer");
-			}
-			MIVar[] vars = info.getMIVars();
-			variables = new Variable[vars.length];
-			for (int i = 0; i < vars.length; i++) {
-				variables[i] = mgr.createVariable(variable.getStackFrame(),
-						vars[i].getExp(), vars[i]);
-
-			}
-		} catch (MIException e) {
-			throw new MI2CDIException(e);
-		}
-		return variables;
-	}
-
-}
Index: src/org/eclipse/cdt/debug/mi/core/cdi/Variable.java
===================================================================
RCS file: src/org/eclipse/cdt/debug/mi/core/cdi/Variable.java
diff -N src/org/eclipse/cdt/debug/mi/core/cdi/Variable.java
--- src/org/eclipse/cdt/debug/mi/core/cdi/Variable.java	5 Dec 2002 15:59:55 -0000	1.11
+++ /dev/null	1 Jan 1970 00:00:00 -0000
@@ -1,147 +0,0 @@
-/*
- * (c) Copyright QNX Software Systems Ltd. 2002.
- * All Rights Reserved.
- *
- */
-package org.eclipse.cdt.debug.mi.core.cdi;
-
-import org.eclipse.cdt.debug.core.cdi.CDIException;
-import org.eclipse.cdt.debug.core.cdi.model.ICDIValue;
-import org.eclipse.cdt.debug.core.cdi.model.ICDIVariable;
-import org.eclipse.cdt.debug.mi.core.MIException;
-import org.eclipse.cdt.debug.mi.core.MISession;
-import org.eclipse.cdt.debug.mi.core.command.CommandFactory;
-import org.eclipse.cdt.debug.mi.core.command.MIVarAssign;
-import org.eclipse.cdt.debug.mi.core.command.MIVarSetFormat;
-import org.eclipse.cdt.debug.mi.core.command.MIVarShowAttributes;
-import org.eclipse.cdt.debug.mi.core.event.MIVarChangedEvent;
-import org.eclipse.cdt.debug.mi.core.output.MIInfo;
-import org.eclipse.cdt.debug.mi.core.output.MIVar;
-import org.eclipse.cdt.debug.mi.core.output.MIVarShowAttributesInfo;
-
-/**
- */
-public class Variable extends CObject implements ICDIVariable {
-
-	MIVar miVar;
-	String name;
-	Value value;
-	StackFrame stack;
-
-	public Variable(StackFrame stackframe, String n, MIVar v) {
-		super(stackframe.getCTarget());
-		stack = stackframe;
-		name = n;
-		miVar = v;
-	}
-
-	StackFrame getStackFrame() {
-		return stack;
-	}
-
-	MIVar getMIVar() {
-		return miVar;
-	}
-
-	/**
-	 * @see org.eclipse.cdt.debug.core.cdi.model.ICDIVariable#getName()
-	 */
-	public String getName() throws CDIException {
-		return name;
-	}
-
-	/**
-	 * @see org.eclipse.cdt.debug.core.cdi.model.ICDIVariable#getTypeName()
-	 */
-	public String getTypeName() throws CDIException {
-		return miVar.getType();
-	}
-
-	/**
-	 * @see org.eclipse.cdt.debug.core.cdi.model.ICDIVariable#getValue()
-	 */
-	public ICDIValue getValue() throws CDIException {
-		if (value == null) {
-			value = new Value(this);
-		}
-		return value;
-	}
-
-	/**
-	 * @see org.eclipse.cdt.debug.core.cdi.model.ICDIVariable#setValue(ICDIValue)
-	 */
-	public void setValue(ICDIValue value) throws CDIException {
-		setValue(value.getValueString());
-	}
-
-	/**
-	 * @see org.eclipse.cdt.debug.core.cdi.model.ICDIVariable#setValue(String)
-	 */
-	public void setValue(String expression) throws CDIException {
-		MISession mi = getCTarget().getCSession().getMISession();
-		CommandFactory factory = mi.getCommandFactory();
-		MIVarAssign var = factory.createMIVarAssign(miVar.getVarName(), expression);
-		try {
-			mi.postCommand(var);
-			MIInfo info = var.getMIInfo();
-			if (info == null) {
-				throw new CDIException("No answer");
-			}
-		} catch (MIException e) {
-			throw new MI2CDIException(e);
-		}
-		
-		// If the assign was succesfull fire a MIVarChangedEvent()
-		MIVarChangedEvent change = new MIVarChangedEvent(var.getToken(), miVar.getVarName(), true);
-		mi.fireEvent(change);
-	}
-
-	/**
-	 * @see org.eclipse.cdt.debug.core.cdi.model.ICDIVariable#isEditable()
-	 */
-	public boolean isEditable() throws CDIException {
-		MISession mi = getCTarget().getCSession().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");
-			}
-			return info.isEditable();
-		} catch (MIException e) {
-			throw new MI2CDIException(e);
-		}
-	}
-
-	/**
-	 * @see org.eclipse.cdt.debug.core.cdi.model.ICDIVariable#setFormat()
-	 */
-	public void setFormat(int format) throws CDIException {
-		int fmt = Format.toMIFormat(format);
-		MISession mi = getCTarget().getCSession().getMISession();
-		CommandFactory factory = mi.getCommandFactory();
-		MIVarSetFormat var = factory.createMIVarSetFormat(miVar.getVarName(), fmt);
-		try {
-			mi.postCommand(var);
-			MIInfo info = var.getMIInfo();
-			if (info == null) {
-				throw new CDIException("No answer");
-			}
-		} catch (MIException e) {
-			throw new MI2CDIException(e);
-		}
-	}
-
-	/**
-	 * @see org.eclipse.cdt.debug.core.cdi.model.ICDIVariable#equals()
-	 */
-	public boolean equals(ICDIVariable var) {
-		if (var instanceof Variable) {
-			Variable variable = (Variable)var;
-			return miVar.getVarName().equals(variable.getMIVar().getVarName());
-		}
-		return super.equals(var);
-	}
-}
Index: src/org/eclipse/cdt/debug/mi/core/cdi/VariableManager.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/cdi/VariableManager.java,v
retrieving revision 1.12
diff -u -r1.12 VariableManager.java
--- src/org/eclipse/cdt/debug/mi/core/cdi/VariableManager.java	2 Jan 2003 21:44:57 -0000	1.12
+++ src/org/eclipse/cdt/debug/mi/core/cdi/VariableManager.java	9 Jan 2003 03:43:54 -0000
@@ -15,6 +15,12 @@
 import org.eclipse.cdt.debug.core.cdi.model.ICDIVariable;
 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.Argument;
+import org.eclipse.cdt.debug.mi.core.cdi.model.CTarget;
+import org.eclipse.cdt.debug.mi.core.cdi.model.CThread;
+import org.eclipse.cdt.debug.mi.core.cdi.model.Expression;
+import org.eclipse.cdt.debug.mi.core.cdi.model.StackFrame;
+import org.eclipse.cdt.debug.mi.core.cdi.model.Variable;
 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;
@@ -36,12 +42,12 @@
 	/**
 	 * Class container to regroup all info concerning a variable.
 	 */
-	class Element {
-		MIVar miVar;
-		String name;
-		StackFrame stackframe;
-		int stackdepth;
-		Variable variable;
+	public class Element {
+		public MIVar miVar;
+		public String name;
+		public StackFrame stackframe;
+		public int stackdepth;
+		public Variable variable;
 	}
 
 	public VariableManager(CSession session) {
@@ -53,7 +59,7 @@
 	/**
 	 * Return the element that have the uniq varName.
 	 */
-	Element getElement(String varName) {
+	public Element getElement(String varName) {
 		Element[] elements = getElements();
 		for (int i = 0; i < elements.length; i++) {
 			if (elements[i].miVar.getVarName().equals(varName)) {
@@ -183,7 +189,7 @@
 	/**
 	 * Remove element from the OutOfscope list(oos).
 	 */
-	Element removeOutOfScope(String varName) {
+	public Element removeOutOfScope(String varName) {
 		Element[] oos = (Element[])oosList.toArray(new Element[0]);
 		for (int i = 0; i < oos.length; i++) {
 			if (oos[i].miVar.getVarName().equals(varName)) {
@@ -249,7 +255,7 @@
 		}
 	}
 
-	ICDIVariable createVariable(StackFrame stack, String name) throws CDIException {
+	public ICDIVariable createVariable(StackFrame stack, String name) throws CDIException {
 		Element element = createElement(stack, name);
 		Variable var;
 		if (element.variable != null) {
@@ -262,7 +268,7 @@
 		return var;
 	}
 
-	Variable createVariable(StackFrame stack, String name, MIVar miVar )
+	public Variable createVariable(StackFrame stack, String name, MIVar miVar )
 		throws CDIException {
 		Element element = new Element();
 		element.miVar = miVar;
@@ -274,7 +280,7 @@
 		return var;
 	}
 
-	ICDIArgument createArgument(StackFrame stack, String name) throws CDIException {
+	public ICDIArgument createArgument(StackFrame stack, String name) throws CDIException {
 		Element element = createElement(stack, name);
 		Argument carg;
 		if (element.variable != null && element.variable instanceof Argument) { 
Index: src/org/eclipse/cdt/debug/mi/core/cdi/Watchpoint.java
===================================================================
RCS file: src/org/eclipse/cdt/debug/mi/core/cdi/Watchpoint.java
diff -N src/org/eclipse/cdt/debug/mi/core/cdi/Watchpoint.java
--- src/org/eclipse/cdt/debug/mi/core/cdi/Watchpoint.java	8 Jan 2003 21:33:12 -0000	1.6
+++ /dev/null	1 Jan 1970 00:00:00 -0000
@@ -1,41 +0,0 @@
-/*
- * (c) Copyright QNX Software Systems Ltd. 2002.
- * All Rights Reserved.
- *
- */
-package org.eclipse.cdt.debug.mi.core.cdi;
-
-import org.eclipse.cdt.debug.core.cdi.CDIException;
-import org.eclipse.cdt.debug.core.cdi.model.ICDIWatchpoint;
-import org.eclipse.cdt.debug.mi.core.output.MIBreakpoint;
-
-/**
- */
-public class Watchpoint extends Breakpoint implements ICDIWatchpoint {
-
-	public Watchpoint(BreakpointManager m, MIBreakpoint miBreak) {
-		super(m, miBreak);
-	}
-
-	/**
-	 * @see org.eclipse.cdt.debug.core.cdi.ICDIWatchpoint#getWatchExpression()
-	 */
-	public String getWatchExpression() throws CDIException {
-		return getMIBreakpoint().getWhat();
-	}
-
-	/**
-	 * @see org.eclipse.cdt.debug.core.cdi.ICDIWatchpoint#isReadType()
-	 */
-	public boolean isReadType() {
-		return getMIBreakpoint().isReadWatchpoint() || getMIBreakpoint().isAccessWatchpoint();
-	}
-
-	/**
-	 * @see org.eclipse.cdt.debug.core.cdi.ICDIWatchpoint#isWriteType()
-	 */
-	public boolean isWriteType() {
-		return getMIBreakpoint().isAccessWatchpoint() || getMIBreakpoint().isWriteWatchpoint();
-	}
-
-}
Index: src/org/eclipse/cdt/debug/mi/core/cdi/WatchpointScope.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/cdi/WatchpointScope.java,v
retrieving revision 1.3
diff -u -r1.3 WatchpointScope.java
--- src/org/eclipse/cdt/debug/mi/core/cdi/WatchpointScope.java	6 Sep 2002 20:18:21 -0000	1.3
+++ src/org/eclipse/cdt/debug/mi/core/cdi/WatchpointScope.java	9 Jan 2003 03:43:52 -0000
@@ -7,6 +7,7 @@
 
 import org.eclipse.cdt.debug.core.cdi.ICDIWatchpointScope;
 import org.eclipse.cdt.debug.core.cdi.model.ICDIWatchpoint;
+import org.eclipse.cdt.debug.mi.core.cdi.model.Watchpoint;
 import org.eclipse.cdt.debug.mi.core.event.MIWatchpointScopeEvent;
 
 /**
Index: src/org/eclipse/cdt/debug/mi/core/cdi/WatchpointTrigger.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/cdi/WatchpointTrigger.java,v
retrieving revision 1.3
diff -u -r1.3 WatchpointTrigger.java
--- src/org/eclipse/cdt/debug/mi/core/cdi/WatchpointTrigger.java	6 Sep 2002 20:18:21 -0000	1.3
+++ src/org/eclipse/cdt/debug/mi/core/cdi/WatchpointTrigger.java	9 Jan 2003 03:43:52 -0000
@@ -7,6 +7,7 @@
 
 import org.eclipse.cdt.debug.core.cdi.ICDIWatchpointTrigger;
 import org.eclipse.cdt.debug.core.cdi.model.ICDIWatchpoint;
+import org.eclipse.cdt.debug.mi.core.cdi.model.Watchpoint;
 import org.eclipse.cdt.debug.mi.core.event.MIWatchpointTriggerEvent;
 
 /**
Index: src/org/eclipse/cdt/debug/mi/core/cdi/event/ChangedEvent.java
===================================================================
RCS file: src/org/eclipse/cdt/debug/mi/core/cdi/event/ChangedEvent.java
diff -N src/org/eclipse/cdt/debug/mi/core/cdi/event/ChangedEvent.java
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ src/org/eclipse/cdt/debug/mi/core/cdi/event/ChangedEvent.java	9 Jan 2003 03:44:00 -0000
@@ -0,0 +1,80 @@
+/*
+ * (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.CDIException;
+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.mi.core.cdi.BreakpointManager;
+import org.eclipse.cdt.debug.mi.core.cdi.CSession;
+import org.eclipse.cdt.debug.mi.core.cdi.RegisterManager;
+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.cdi.model.Register;
+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.MIVarChangedEvent;
+
+/**
+ */
+public class ChangedEvent implements ICDIChangedEvent {
+
+	CSession session;
+	ICDIObject source;
+
+	public ChangedEvent(CSession s, MIVarChangedEvent var) {
+		session = s;
+		VariableManager mgr = session.getVariableManager();
+		String varName = var.getVarName();
+		VariableManager.Element element = mgr.getElement(varName);
+		if (element != null && element.variable != null) {
+			source = element.variable;
+		} else {
+			source = new CObject(session.getCTarget());
+		}
+	}
+
+	public ChangedEvent(CSession s, MIRegisterChangedEvent var) {
+		session = s;
+		RegisterManager mgr = session.getRegisterManager();
+		int regno = var.getNumber();
+		Register reg = null;
+		try {
+			reg = mgr.getRegister(regno);
+		} catch (CDIException e) {
+		}
+		if (reg != null) {
+			source = reg;
+		} else {
+			source = new CObject(session.getCTarget());
+		}
+	}
+
+	public ChangedEvent(CSession 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.getCTarget());
+		}
+	}
+
+	public ChangedEvent(CSession s, ICDIObject src) {
+		session = s;
+		source = src;
+	}
+
+	/**
+	 * @see org.eclipse.cdt.debug.core.cdi.event.ICDIEvent#getSource()
+	 */
+	public ICDIObject getSource() {
+		return source;
+	}
+
+}
Index: src/org/eclipse/cdt/debug/mi/core/cdi/event/CreatedEvent.java
===================================================================
RCS file: src/org/eclipse/cdt/debug/mi/core/cdi/event/CreatedEvent.java
diff -N src/org/eclipse/cdt/debug/mi/core/cdi/event/CreatedEvent.java
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ src/org/eclipse/cdt/debug/mi/core/cdi/event/CreatedEvent.java	9 Jan 2003 03:43:59 -0000
@@ -0,0 +1,46 @@
+/*
+ * (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.ICDICreatedEvent;
+import org.eclipse.cdt.debug.core.cdi.model.ICDIBreakpoint;
+import org.eclipse.cdt.debug.core.cdi.model.ICDIObject;
+import org.eclipse.cdt.debug.mi.core.cdi.BreakpointManager;
+import org.eclipse.cdt.debug.mi.core.cdi.CSession;
+import org.eclipse.cdt.debug.mi.core.cdi.model.CObject;
+import org.eclipse.cdt.debug.mi.core.event.MIBreakpointCreatedEvent;
+
+/**
+ */
+public class CreatedEvent implements ICDICreatedEvent {
+
+	CSession session;
+	ICDIObject source;
+
+	public CreatedEvent(CSession s, MIBreakpointCreatedEvent 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.getCTarget());
+		}
+	}
+
+	public CreatedEvent(CSession s, ICDIObject src) {
+		session = s;
+		source = src;
+	}
+
+	/**
+	 * @see org.eclipse.cdt.debug.core.cdi.event.ICDIEvent#getSource()
+	 */
+	public ICDIObject getSource() {
+		return source;
+	}
+
+}
Index: src/org/eclipse/cdt/debug/mi/core/cdi/event/DestroyedEvent.java
===================================================================
RCS file: src/org/eclipse/cdt/debug/mi/core/cdi/event/DestroyedEvent.java
diff -N src/org/eclipse/cdt/debug/mi/core/cdi/event/DestroyedEvent.java
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ src/org/eclipse/cdt/debug/mi/core/cdi/event/DestroyedEvent.java	9 Jan 2003 03:43:59 -0000
@@ -0,0 +1,72 @@
+/*
+ * (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.ICDIDestroyedEvent;
+import org.eclipse.cdt.debug.core.cdi.model.ICDIObject;
+import org.eclipse.cdt.debug.mi.core.cdi.BreakpointManager;
+import org.eclipse.cdt.debug.mi.core.cdi.CSession;
+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.CThread;
+import org.eclipse.cdt.debug.mi.core.event.MIBreakpointDeletedEvent;
+import org.eclipse.cdt.debug.mi.core.event.MIThreadExitEvent;
+import org.eclipse.cdt.debug.mi.core.event.MIVarChangedEvent;
+
+/**
+ */
+public class DestroyedEvent implements ICDIDestroyedEvent {
+
+	CSession session;
+	ICDIObject source;
+	
+	public DestroyedEvent(CSession s, MIThreadExitEvent ethread) {
+		session = s;
+		source = new CThread(session.getCTarget(), ethread.getId());
+	}
+
+	public DestroyedEvent(CSession s, MIVarChangedEvent var) {
+		session = s;
+		VariableManager mgr = session.getVariableManager();
+		String varName = var.getVarName();
+		VariableManager.Element element = mgr.removeOutOfScope(varName);
+		if (element != null && element.variable != null) {
+			source = element.variable;
+		} else {
+			source = new CObject(session.getCTarget());
+		}
+	}
+
+	public DestroyedEvent(CSession s, MIBreakpointDeletedEvent bpoint) {
+		session = s;
+		BreakpointManager mgr = (BreakpointManager)session.getBreakpointManager();
+		int number = bpoint.getNumber();
+		Breakpoint breakpoint = mgr.deleteBreakpoint(number);
+		if (breakpoint != null) {
+			source = breakpoint;
+		} else {
+			source = new CObject(session.getCTarget());
+		}
+	}
+
+	public DestroyedEvent(CSession s, ICDIObject src) {
+		session = s;
+		source = src;
+	}
+	
+	public DestroyedEvent(CSession s) {
+		session = s;
+	}	
+	
+	/**
+	 * @see org.eclipse.cdt.debug.core.cdi.event.ICDIEvent#getSource()
+	 */
+	public ICDIObject getSource() {
+		return source;
+	}
+
+}
Index: src/org/eclipse/cdt/debug/mi/core/cdi/event/DisconnectedEvent.java
===================================================================
RCS file: src/org/eclipse/cdt/debug/mi/core/cdi/event/DisconnectedEvent.java
diff -N src/org/eclipse/cdt/debug/mi/core/cdi/event/DisconnectedEvent.java
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ src/org/eclipse/cdt/debug/mi/core/cdi/event/DisconnectedEvent.java	9 Jan 2003 03:44:00 -0000
@@ -0,0 +1,24 @@
+package org.eclipse.cdt.debug.mi.core.cdi.event;
+
+import org.eclipse.cdt.debug.core.cdi.event.ICDIDisconnectedEvent;
+import org.eclipse.cdt.debug.core.cdi.model.ICDIObject;
+import org.eclipse.cdt.debug.mi.core.cdi.CSession;
+
+/**
+ */
+public class DisconnectedEvent implements ICDIDisconnectedEvent {
+
+	ICDIObject source;
+
+	public DisconnectedEvent(CSession session) {
+		source = (ICDIObject)session.getCTarget();
+	}
+
+	/**
+	 * @see org.eclipse.cdt.debug.core..ICDIEvent#getSource()
+	 */
+	public ICDIObject getSource() {
+		return source;
+	}
+
+}
Index: src/org/eclipse/cdt/debug/mi/core/cdi/event/ExitedEvent.java
===================================================================
RCS file: src/org/eclipse/cdt/debug/mi/core/cdi/event/ExitedEvent.java
diff -N src/org/eclipse/cdt/debug/mi/core/cdi/event/ExitedEvent.java
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ src/org/eclipse/cdt/debug/mi/core/cdi/event/ExitedEvent.java	9 Jan 2003 03:43:59 -0000
@@ -0,0 +1,41 @@
+/*
+ * (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.ICDIExitInfo;
+import org.eclipse.cdt.debug.core.cdi.event.ICDIExitedEvent;
+import org.eclipse.cdt.debug.core.cdi.model.ICDIObject;
+import org.eclipse.cdt.debug.mi.core.cdi.CSession;
+import org.eclipse.cdt.debug.mi.core.cdi.ExitInfo;
+import org.eclipse.cdt.debug.mi.core.event.MIInferiorExitEvent;
+
+/**
+ */
+public class ExitedEvent implements ICDIExitedEvent {
+
+	MIInferiorExitEvent event;
+	CSession session;
+	
+	public ExitedEvent(CSession s, MIInferiorExitEvent e) {
+		session = s;
+		event = e;
+	}
+	
+	/**
+	 * @see org.eclipse.cdt.debug.core.cdi.event.ICDIExitedEvent#getExitInfo()
+	 */
+	public ICDIExitInfo getExitInfo() {
+		return new ExitInfo(session, event);
+	}
+
+	/**
+	 * @see org.eclipse.cdt.debug.core.cdi.event.ICDIEvent#getSource()
+	 */
+	public ICDIObject getSource() {
+		return session.getCurrentTarget();
+	}
+
+}
Index: src/org/eclipse/cdt/debug/mi/core/cdi/event/MemoryChangedEvent.java
===================================================================
RCS file: src/org/eclipse/cdt/debug/mi/core/cdi/event/MemoryChangedEvent.java
diff -N src/org/eclipse/cdt/debug/mi/core/cdi/event/MemoryChangedEvent.java
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ src/org/eclipse/cdt/debug/mi/core/cdi/event/MemoryChangedEvent.java	9 Jan 2003 03:43:59 -0000
@@ -0,0 +1,52 @@
+/*
+ * (c) Copyright QNX Software Systems Ltd. 2002.
+ * All Rights Reserved.
+ */
+package org.eclipse.cdt.debug.mi.core.cdi.event;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.eclipse.cdt.debug.core.cdi.event.ICDIMemoryChangedEvent;
+import org.eclipse.cdt.debug.core.cdi.model.ICDIObject;
+import org.eclipse.cdt.debug.mi.core.cdi.CSession;
+import org.eclipse.cdt.debug.mi.core.cdi.MemoryBlock;
+import org.eclipse.cdt.debug.mi.core.event.MIMemoryChangedEvent;
+
+/**
+ */
+public class MemoryChangedEvent implements ICDIMemoryChangedEvent {
+
+	CSession session;
+	MemoryBlock source;
+	MIMemoryChangedEvent miMem;
+
+	public MemoryChangedEvent(CSession s, MemoryBlock block, MIMemoryChangedEvent mem) {
+		session = s;
+		source = block;
+		miMem = mem;
+	}
+
+	/**
+	 * @see org.eclipse.cdt.debug.core.cdi.event.ICDIEvent#getAddresses()
+	 */
+	public Long[] getAddresses() {
+	 	/* But only returns the address that are in the block.  */
+		Long[] longs = miMem.getAddresses();
+		List aList = new ArrayList(longs.length);
+		for (int i = 0; i < longs.length; i++) {
+			if (source.contains(longs[i])) {
+				aList.add(longs[i]);
+			}
+		}
+		return (Long[])aList.toArray(new Long[0]);
+	}
+
+	/**
+	 * @see org.eclipse.cdt.debug.core.cdi.event.ICDIEvent#getSource()
+	 */
+	public ICDIObject getSource() {
+		return source;
+	}
+
+}
Index: src/org/eclipse/cdt/debug/mi/core/cdi/event/ResumedEvent.java
===================================================================
RCS file: src/org/eclipse/cdt/debug/mi/core/cdi/event/ResumedEvent.java
diff -N src/org/eclipse/cdt/debug/mi/core/cdi/event/ResumedEvent.java
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ src/org/eclipse/cdt/debug/mi/core/cdi/event/ResumedEvent.java	9 Jan 2003 03:43:59 -0000
@@ -0,0 +1,72 @@
+/*
+ * (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.ICDIResumedEvent;
+import org.eclipse.cdt.debug.core.cdi.model.ICDIObject;
+import org.eclipse.cdt.debug.mi.core.cdi.CSession;
+import org.eclipse.cdt.debug.mi.core.event.MIRunningEvent;
+
+/**
+ */
+public class ResumedEvent implements ICDIResumedEvent {
+
+	CSession session;
+	MIRunningEvent event;
+
+	public ResumedEvent(CSession s, MIRunningEvent e) {
+		session = s;
+		event = e;
+	}
+
+	/**
+	 * @see org.eclipse.cdt.debug.core.cdi.event.ICDIEvent#getSource()
+	 */
+	public ICDIObject getSource() {
+		return session.getCurrentTarget();
+	}
+
+	/**
+	 * @see org.eclipse.cdt.debug.core.cdi.event.ICDIResumedEvent#getType()
+	 */
+	public int getType() {
+		MIRunningEvent running = (MIRunningEvent)event;
+		int type = running.getType();
+		int cdiType = 0;
+		switch (type) {
+			case MIRunningEvent.CONTINUE:
+				cdiType = ICDIResumedEvent.CONTINUE;
+			break;
+
+			case MIRunningEvent.UNTIL:
+			case MIRunningEvent.NEXT:
+				cdiType = ICDIResumedEvent.STEP_OVER;
+			break;
+
+			case MIRunningEvent.NEXTI:
+				cdiType = ICDIResumedEvent.STEP_OVER_INSTRUCTION;
+			break;
+
+			case MIRunningEvent.STEP:
+				cdiType = ICDIResumedEvent.STEP_INTO;
+			break;
+
+			case MIRunningEvent.STEPI:
+				cdiType = ICDIResumedEvent.STEP_INTO_INSTRUCTION;
+			break;
+
+			case MIRunningEvent.FINISH:
+				cdiType = ICDIResumedEvent.STEP_RETURN;
+			break;
+
+			//MIRunningEvent.UNTIL:
+			//cdiType = ICDIResumedEvent.STEP_UNTIL;
+			//break;
+		}
+		return cdiType;
+	}
+
+}
Index: src/org/eclipse/cdt/debug/mi/core/cdi/event/SuspendedEvent.java
===================================================================
RCS file: src/org/eclipse/cdt/debug/mi/core/cdi/event/SuspendedEvent.java
diff -N src/org/eclipse/cdt/debug/mi/core/cdi/event/SuspendedEvent.java
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ src/org/eclipse/cdt/debug/mi/core/cdi/event/SuspendedEvent.java	9 Jan 2003 03:44:00 -0000
@@ -0,0 +1,74 @@
+/*
+ * (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.ICDISessionObject;
+import org.eclipse.cdt.debug.core.cdi.event.ICDISuspendedEvent;
+import org.eclipse.cdt.debug.core.cdi.model.ICDIObject;
+import org.eclipse.cdt.debug.mi.core.cdi.BreakpointHit;
+import org.eclipse.cdt.debug.mi.core.cdi.CSession;
+import org.eclipse.cdt.debug.mi.core.cdi.EndSteppingRange;
+import org.eclipse.cdt.debug.mi.core.cdi.ErrorInfo;
+import org.eclipse.cdt.debug.mi.core.cdi.Signal;
+import org.eclipse.cdt.debug.mi.core.cdi.WatchpointScope;
+import org.eclipse.cdt.debug.mi.core.cdi.WatchpointTrigger;
+import org.eclipse.cdt.debug.mi.core.cdi.model.CTarget;
+import org.eclipse.cdt.debug.mi.core.event.MIBreakpointHitEvent;
+import org.eclipse.cdt.debug.mi.core.event.MIErrorEvent;
+import org.eclipse.cdt.debug.mi.core.event.MIEvent;
+import org.eclipse.cdt.debug.mi.core.event.MIFunctionFinishedEvent;
+import org.eclipse.cdt.debug.mi.core.event.MILocationReachedEvent;
+import org.eclipse.cdt.debug.mi.core.event.MISignalEvent;
+import org.eclipse.cdt.debug.mi.core.event.MISteppingRangeEvent;
+import org.eclipse.cdt.debug.mi.core.event.MIWatchpointScopeEvent;
+import org.eclipse.cdt.debug.mi.core.event.MIWatchpointTriggerEvent;
+
+/**
+ *
+ */
+public class SuspendedEvent implements ICDISuspendedEvent {
+
+	MIEvent event;
+	CSession session;
+
+	public SuspendedEvent(CSession s, MIEvent e) {
+		session = s;
+		event = e;
+	}
+
+	public ICDISessionObject getReason() {
+		if (event instanceof MIBreakpointHitEvent) {
+			return new BreakpointHit(session, (MIBreakpointHitEvent)event);
+		} else if (event instanceof MIWatchpointTriggerEvent) {
+			return new WatchpointTrigger(session, (MIWatchpointTriggerEvent)event);
+		} else if (event instanceof MIWatchpointScopeEvent) {
+			return new WatchpointScope(session, (MIWatchpointScopeEvent)event);
+		} else if (event instanceof MISteppingRangeEvent) {
+			return new EndSteppingRange(session);
+		} else if (event instanceof MISignalEvent) {
+			return new Signal(session, (MISignalEvent)event);
+		} else if (event instanceof MILocationReachedEvent) {
+			return new EndSteppingRange(session);
+		} else if (event instanceof MIFunctionFinishedEvent) {
+			return new EndSteppingRange(session);
+		} else if (event instanceof MIErrorEvent) {
+			return new ErrorInfo(session, (MIErrorEvent)event);
+		}
+		return session;
+	}
+
+	/**
+	 * @see org.eclipse.cdt.debug.core.cdi.event.ICDIEvent#getSource()
+	 */
+	public ICDIObject getSource() {
+		CTarget target = session.getCTarget();
+		// We can send the target as the Source.  CDI
+		// Will assume that all threads are supended for this.
+		// This is true for gdb when it suspend the inferior
+		// all threads are suspended.
+		return target;
+	}
+}
Index: src/org/eclipse/cdt/debug/mi/core/cdi/model/Argument.java
===================================================================
RCS file: src/org/eclipse/cdt/debug/mi/core/cdi/model/Argument.java
diff -N src/org/eclipse/cdt/debug/mi/core/cdi/model/Argument.java
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ src/org/eclipse/cdt/debug/mi/core/cdi/model/Argument.java	9 Jan 2003 03:44:03 -0000
@@ -0,0 +1,17 @@
+/*
+ * (c) Copyright QNX Software Systems Ltd. 2002.
+ * All Rights Reserved.
+ */
+package org.eclipse.cdt.debug.mi.core.cdi.model;
+
+import org.eclipse.cdt.debug.core.cdi.model.ICDIArgument;
+import org.eclipse.cdt.debug.mi.core.output.MIVar;
+
+/**
+ */
+public class Argument extends Variable implements ICDIArgument {
+
+	public Argument(StackFrame frame, String name, MIVar var) {
+		super(frame, name, var);
+	}
+}
Index: src/org/eclipse/cdt/debug/mi/core/cdi/model/Breakpoint.java
===================================================================
RCS file: src/org/eclipse/cdt/debug/mi/core/cdi/model/Breakpoint.java
diff -N src/org/eclipse/cdt/debug/mi/core/cdi/model/Breakpoint.java
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ src/org/eclipse/cdt/debug/mi/core/cdi/model/Breakpoint.java	9 Jan 2003 03:44:03 -0000
@@ -0,0 +1,107 @@
+/*
+ * (c) Copyright QNX Software Systems Ltd. 2002.
+ * All Rights Reserved.
+ */
+package org.eclipse.cdt.debug.mi.core.cdi.model;
+
+import org.eclipse.cdt.debug.core.cdi.CDIException;
+import org.eclipse.cdt.debug.core.cdi.ICDICondition;
+import org.eclipse.cdt.debug.core.cdi.ICDILocation;
+import org.eclipse.cdt.debug.core.cdi.model.ICDILocationBreakpoint;
+import org.eclipse.cdt.debug.mi.core.cdi.BreakpointManager;
+import org.eclipse.cdt.debug.mi.core.cdi.Condition;
+import org.eclipse.cdt.debug.mi.core.cdi.Location;
+import org.eclipse.cdt.debug.mi.core.output.MIBreakpoint;
+
+/**
+ */
+public class Breakpoint extends CObject implements ICDILocationBreakpoint {
+
+	ICDILocation location;
+	ICDICondition condition;
+	MIBreakpoint miBreakpoint;
+	BreakpointManager mgr;
+
+	public Breakpoint(BreakpointManager m, MIBreakpoint miBreak) {
+		super(m.getCSession().getCTarget());
+		miBreakpoint = miBreak;
+		mgr = m;
+	}
+
+	public MIBreakpoint getMIBreakpoint() {
+		return miBreakpoint;
+	}
+	
+	/**
+	 * @see org.eclipse.cdt.debug.core.cdi.ICDIBreakpoint#getCondition()
+	 */
+	public ICDICondition getCondition() throws CDIException {
+		if (condition == null) {
+			condition =  new Condition(miBreakpoint.getIgnoreCount(),
+				miBreakpoint.getWhat());
+		}
+		return condition;
+	}
+
+	/**
+	 * @see org.eclipse.cdt.debug.core.cdi.ICDIBreakpoint#getThreadId()
+	 */
+	public String getThreadId() throws CDIException {
+		return miBreakpoint.getThreadId();
+	}
+
+	/**
+	 * @see org.eclipse.cdt.debug.core.cdi.ICDIBreakpoint#isEnabled()
+	 */
+	public boolean isEnabled() throws CDIException {
+		return miBreakpoint.isEnabled();
+	}
+
+	/**
+	 * @see org.eclipse.cdt.debug.core.cdi.ICDIBreakpoint#isHardware()
+	 */
+	public boolean isHardware() {
+		return miBreakpoint.isHardware();
+	}
+
+	/**
+	 * @see org.eclipse.cdt.debug.core.cdi.ICDIBreakpoint#isTemporary()
+	 */
+	public boolean isTemporary() {
+		return miBreakpoint.isTemporary();
+	}
+
+	/**
+	 * @see org.eclipse.cdt.debug.core.cdi.ICDIBreakpoint#setCondition(ICDICondition)
+	 */
+	public void setCondition(ICDICondition condition) throws CDIException {
+		if (isEnabled()) {
+			mgr.setCondition(this, condition);
+		}
+		this.condition = condition;
+	}
+
+	/**
+	 * @see org.eclipse.cdt.debug.core.cdi.ICDIBreakpoint#setEnabled(boolean)
+	 */
+	public void setEnabled(boolean enable) throws CDIException {
+		if (enable == false && isEnabled() == true) { 
+				mgr.disableBreakpoint(this);
+		} else if (enable == true && isEnabled() == false) {
+				mgr.enableBreakpoint(this);
+		}
+	}
+
+	/**
+	 * @see org.eclipse.cdt.debug.core.cdi.ICDILocationBreakpoint#getLocation()
+	 */
+	public ICDILocation getLocation() throws CDIException {
+		if (location == null) {
+			location = new Location (miBreakpoint.getFile(),
+					miBreakpoint.getFunction(),
+					miBreakpoint.getLine(),
+					miBreakpoint.getAddress());
+		}
+		return location;
+	}
+}
Index: src/org/eclipse/cdt/debug/mi/core/cdi/model/CObject.java
===================================================================
RCS file: src/org/eclipse/cdt/debug/mi/core/cdi/model/CObject.java
diff -N src/org/eclipse/cdt/debug/mi/core/cdi/model/CObject.java
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ src/org/eclipse/cdt/debug/mi/core/cdi/model/CObject.java	9 Jan 2003 03:44:02 -0000
@@ -0,0 +1,31 @@
+/*
+ * (c) Copyright QNX Software Systems Ltd. 2002.
+ * All Rights Reserved.
+ */
+package org.eclipse.cdt.debug.mi.core.cdi.model;
+
+import org.eclipse.cdt.debug.core.cdi.model.ICDIObject;
+import org.eclipse.cdt.debug.core.cdi.model.ICDITarget;
+
+/**
+ */
+public class CObject implements ICDIObject {
+
+	CTarget target;
+	
+	public CObject(CTarget t) {
+		target = t;
+	}
+	
+	/**
+	 * @see org.eclipse.cdt.debug.core.cdi.model.ICDIObject#getTarget()
+	 */
+	public ICDITarget getTarget() {
+		return target;
+	}
+	
+	public CTarget getCTarget() {
+			return target;
+	}
+
+}
Index: src/org/eclipse/cdt/debug/mi/core/cdi/model/CTarget.java
===================================================================
RCS file: src/org/eclipse/cdt/debug/mi/core/cdi/model/CTarget.java
diff -N src/org/eclipse/cdt/debug/mi/core/cdi/model/CTarget.java
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ src/org/eclipse/cdt/debug/mi/core/cdi/model/CTarget.java	9 Jan 2003 03:44:01 -0000
@@ -0,0 +1,560 @@
+/*
+ *(c) Copyright QNX Software Systems Ltd. 2002.
+ * All Rights Reserved.
+ * 
+ */
+package org.eclipse.cdt.debug.mi.core.cdi.model;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.eclipse.cdt.debug.core.cdi.CDIException;
+import org.eclipse.cdt.debug.core.cdi.ICDILocation;
+import org.eclipse.cdt.debug.core.cdi.ICDIRegisterObject;
+import org.eclipse.cdt.debug.core.cdi.ICDISession;
+import org.eclipse.cdt.debug.core.cdi.model.ICDIGlobalVariable;
+import org.eclipse.cdt.debug.core.cdi.model.ICDIRegister;
+import org.eclipse.cdt.debug.core.cdi.model.ICDISharedLibrary;
+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.CSession;
+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.command.CommandFactory;
+import org.eclipse.cdt.debug.mi.core.command.MIDataEvaluateExpression;
+import org.eclipse.cdt.debug.mi.core.command.MIExecContinue;
+import org.eclipse.cdt.debug.mi.core.command.MIExecFinish;
+import org.eclipse.cdt.debug.mi.core.command.MIExecNext;
+import org.eclipse.cdt.debug.mi.core.command.MIExecNextInstruction;
+import org.eclipse.cdt.debug.mi.core.command.MIExecRun;
+import org.eclipse.cdt.debug.mi.core.command.MIExecStep;
+import org.eclipse.cdt.debug.mi.core.command.MIExecStepInstruction;
+import org.eclipse.cdt.debug.mi.core.command.MIExecUntil;
+import org.eclipse.cdt.debug.mi.core.command.MIInfoThreads;
+import org.eclipse.cdt.debug.mi.core.command.MITargetDetach;
+import org.eclipse.cdt.debug.mi.core.command.MIThreadSelect;
+import org.eclipse.cdt.debug.mi.core.event.MIDetachedEvent;
+import org.eclipse.cdt.debug.mi.core.event.MIThreadExitEvent;
+import org.eclipse.cdt.debug.mi.core.output.MIDataEvaluateExpressionInfo;
+import org.eclipse.cdt.debug.mi.core.output.MIInfo;
+import org.eclipse.cdt.debug.mi.core.output.MIInfoThreadsInfo;
+import org.eclipse.cdt.debug.mi.core.output.MIThreadSelectInfo;
+
+/**
+ */
+public class CTarget  implements ICDITarget {
+
+	CSession session;
+	CThread[] noThreads = new CThread[0];
+	CThread[] currentThreads;
+	int currentThreadId;
+	int lastExecutionToken;
+	
+	public CTarget(CSession s) {
+		session = s;
+		currentThreads = noThreads;
+	}
+	
+	public CSession getCSession() {
+		return session;
+	}
+
+	public int getLastExecutionToken() {
+		return lastExecutionToken;
+	}
+
+	/**
+	 * @see org.eclipse.cdt.debug.core.cdi.model.ICDITarget#getSession()
+	 */
+	public ICDISession getSession() {
+		return session;
+	}
+
+	/**
+	 * @see org.eclipse.cdt.debug.core.cdi.model.ICDIObject#getTarget()
+	 */
+	public ICDITarget getTarget() {
+		return this;
+	}
+	
+	/**
+	 * @see org.eclipse.cdt.debug.core.cdi.model.ICDITarget#setCurrentThread(ICDIThread)
+	 */
+	public void setCurrentThread(ICDIThread cthread) throws CDIException {
+		if (cthread instanceof CThread) {
+			setCurrentThread((CThread)cthread);
+		}
+	}
+
+	/**
+	 */
+	public void setCurrentThread(CThread cthread) throws CDIException {
+		session.setCurrentTarget(this);
+		int id = cthread.getId();
+		// No need to set thread id 0, it is a dummy thread.
+		if (id == 0) {
+			return;
+		}
+		// already the current thread?
+		if (currentThreadId != id) {
+			MISession mi = session.getMISession();
+			CommandFactory factory = mi.getCommandFactory();
+			MIThreadSelect select = factory.createMIThreadSelect(id);
+			try {
+				mi.postCommand(select);
+				MIThreadSelectInfo info = select.getMIThreadSelectInfo();
+				if (info == null) {
+					throw new CDIException("No Answer");
+				}
+				currentThreadId = info.getNewThreadId();
+			} catch (MIException e) {
+				throw new MI2CDIException(e);
+			}
+
+			// Resetting threads may change the value of
+			// some variables like Register.  Send an update
+			// To generate changeEvents.
+			RegisterManager regMgr = session.getRegisterManager();
+			regMgr.update();
+		}
+
+		// We should be allright now.
+		if (currentThreadId != id) {
+			// thread is gone.  Generate a Thread destroyed.
+			MISession mi = session.getMISession();
+			mi.fireEvent(new MIThreadExitEvent(id));
+			throw new CDIException("Thread destroyed");
+		}
+	}
+
+	/**
+	 * Called when stopping because of breakpoints etc ..
+	 */
+	public void updateState(int newThreadId) {
+		CThread[] oldThreads = currentThreads;
+
+		// If we use "info threads" in getCThreads() this
+		// will be overwritten.  However if we use -stack-list-threads
+		// it does not provide to the current thread
+		currentThreadId = newThreadId;
+		// get the new Threads.
+		CThread[] newThreads = getCThreads();
+
+		currentThreads = newThreads;
+
+		// Fire destroyedEvent for old threads.
+		if (oldThreads != null && oldThreads.length > 0) {
+			List dList = new ArrayList(oldThreads.length);
+			for (int i = 0; i < oldThreads.length; i++) {
+				boolean found = false;
+				for (int j = 0; j < newThreads.length; j++) {
+					if (newThreads[j].getId() == ((CThread)oldThreads[i]).getId()) {
+						found = true;
+						break;
+					}
+				}
+				if (!found) {
+					dList.add(new Integer(oldThreads[i].getId()));
+				}
+			}
+			if (!dList.isEmpty()) {
+				MIThreadExitEvent[] events = new MIThreadExitEvent[dList.size()];
+				for (int j = 0; j < events.length; j++) {
+					int id = ((Integer)dList.get(j)).intValue();
+					events[j] = new MIThreadExitEvent(id);
+				}
+				MISession miSession = session.getMISession();
+				miSession.fireEvents(events);
+			}
+		}
+	}
+
+	/**
+	 * Do the real work of call -thread-list-ids.
+	 */
+	public CThread[] getCThreads() { //throws CDIException {
+		CThread[] cthreads = noThreads;
+		MISession mi = session.getMISession();
+		CommandFactory factory = mi.getCommandFactory();
+		MIInfoThreads tids = factory.createMIInfoThreads();
+		try {
+			// HACK/FIXME: gdb/mi thread-list-ids does not
+			// show any newly create thread, we workaround by
+			// issuing "info threads" instead.
+			//MIThreadListIds tids = factory.createMIThreadListIds();
+			//MIThreadListIdsInfo info = tids.getMIThreadListIdsInfo();
+			mi.postCommand(tids);
+			MIInfoThreadsInfo info = tids.getMIInfoThreadsInfo();
+			int [] ids;
+			if (info == null) {
+				ids = new int[0];
+			} else {
+				ids = info.getThreadIds();
+			}
+			if (ids != null && ids.length > 0) {
+				cthreads = new CThread[ids.length];
+				// Ok that means it is a multiThreaded.
+				for (int i = 0; i < ids.length; i++) {
+					cthreads[i] = new CThread(this, ids[i]);
+				}
+			} else {
+				// Provide a dummy.
+				cthreads = new CThread[]{new CThread(this, 0)};
+			}
+			currentThreadId = info.getCurrentThread();
+		} catch (MIException e) {
+			// Do not throw anything in this case.
+			//throw new CDIException(e.getMessage());
+		}
+		return cthreads;
+	}
+
+	/**
+	 * @see org.eclipse.cdt.debug.core.cdi.model.ICDITarget#getCurrentThread()
+	 */
+	public ICDIThread getCurrentThread() throws CDIException {
+		ICDIThread[] threads = getThreads();
+		for (int i = 0; i < threads.length; i++) {
+			CThread cthread = (CThread)threads[i];
+			if (cthread.getId() == currentThreadId) {
+				return cthread;
+			}
+		}
+		return null;
+	}
+
+	/**
+	 * @see org.eclipse.cdt.debug.core.cdi.model.ICDITarget#getThreads()
+	 */
+	public ICDIThread[] getThreads() throws CDIException {
+		if (currentThreads.length == 0) {
+			currentThreads = getCThreads();
+		}
+		return currentThreads;
+	}
+
+	/**
+	 * @see org.eclipse.cdt.debug.core.cdi.model.ICDITarget#restart()
+	 */
+	public void restart() throws CDIException {
+		MISession mi = session.getMISession();
+		CommandFactory factory = mi.getCommandFactory();
+		MIExecRun run = factory.createMIExecRun(new String[0]);
+		try {
+			mi.postCommand(run);
+			MIInfo info = run.getMIInfo();
+			if (info == null) {
+				throw new CDIException("No answer");
+			}
+		} catch (MIException e) {
+			throw new MI2CDIException(e);
+		}
+		lastExecutionToken = run.getToken();
+	}
+
+	/**
+	 * @see org.eclipse.cdt.debug.core.cdi.model.ICDITarget#resume()
+	 */
+	public void resume() throws CDIException {
+		MISession mi = session.getMISession();
+		if (mi.getMIInferior().isRunning()) {
+			throw new CDIException("Inferior already running");
+		} else if (mi.getMIInferior().isSuspended()) {
+			CommandFactory factory = mi.getCommandFactory();
+			MIExecContinue cont = factory.createMIExecContinue();
+			try {
+				mi.postCommand(cont);
+				MIInfo info = cont.getMIInfo();
+				if (info == null) {
+					throw new CDIException("No answer");
+				}
+			} catch (MIException e) {
+				throw new MI2CDIException(e);
+			}
+			lastExecutionToken = cont.getToken();
+		} else if (mi.getMIInferior().isTerminated()) {
+			restart();
+		} else {
+			restart();
+			//throw new CDIException("Unknow state");
+		}
+	}
+
+	/**
+	 * @see org.eclipse.cdt.debug.core.cdi.model.ICDITarget#stepInto()
+	 */
+	public void stepInto() throws CDIException {
+		MISession mi = session.getMISession();
+		CommandFactory factory = mi.getCommandFactory();
+		MIExecStep step = factory.createMIExecStep();
+		try {
+			mi.postCommand(step);
+			MIInfo info = step.getMIInfo();
+			if (info == null) {
+				throw new CDIException("No answer");
+			}
+		} catch (MIException e) {
+			throw new MI2CDIException(e);
+		}
+		lastExecutionToken = step.getToken();
+	}
+
+	/**
+	 * @see org.eclipse.cdt.debug.core.cdi.model.ICDITarget#stepIntoInstruction()
+	 */
+	public void stepIntoInstruction() throws CDIException {
+		MISession mi = session.getMISession();
+		CommandFactory factory = mi.getCommandFactory();
+		MIExecStepInstruction stepi = factory.createMIExecStepInstruction();
+		try {
+			mi.postCommand(stepi);
+			MIInfo info = stepi.getMIInfo();
+			if (info == null) {
+				throw new CDIException("No answer");
+			}
+		} catch (MIException e) {
+			throw new MI2CDIException(e);
+		}
+		lastExecutionToken = stepi.getToken();
+	}
+
+	/**
+	 * @see org.eclipse.cdt.debug.core.cdi.model.ICDITarget#stepOver()
+	 */
+	public void stepOver() throws CDIException {
+		MISession mi = session.getMISession();
+		CommandFactory factory = mi.getCommandFactory();
+		MIExecNext next = factory.createMIExecNext();
+		try {
+			mi.postCommand(next);
+			MIInfo info = next.getMIInfo();
+			if (info == null) {
+				throw new CDIException("No answer");
+			}
+		} catch (MIException e) {
+			throw new MI2CDIException(e);
+		}
+		lastExecutionToken = next.getToken();
+	}
+
+	/**
+	 * @see org.eclipse.cdt.debug.core.cdi.model.ICDITarget#stepOverInstruction()
+	 */
+	public void stepOverInstruction() throws CDIException {
+		MISession mi = session.getMISession();
+		CommandFactory factory = mi.getCommandFactory();
+		MIExecNextInstruction nexti = factory.createMIExecNextInstruction();
+		try {
+			mi.postCommand(nexti);
+			MIInfo info = nexti.getMIInfo();
+			if (info == null) {
+				throw new CDIException("No answer");
+			}
+		} catch (MIException e) {
+			throw new MI2CDIException(e);
+		}
+		lastExecutionToken = nexti.getToken();
+	}
+
+	/**
+	 * @see org.eclipse.cdt.debug.core.cdi.model.ICDITarget#stepReturn()
+	 */
+	public void stepReturn() throws CDIException {
+		MISession mi = session.getMISession();
+		CommandFactory factory = mi.getCommandFactory();
+		MIExecFinish finish = factory.createMIExecFinish();
+		try {
+			mi.postCommand(finish);
+			MIInfo info = finish.getMIInfo();
+			if (info == null) {
+				throw new CDIException("No answer");
+			}
+		} catch (MIException e) {
+			throw new MI2CDIException(e);
+		}
+		lastExecutionToken = finish.getToken();
+	}
+
+	/**
+	 * @see org.eclipse.cdt.debug.core.cdi.model.ICDITarget#suspend()
+	 */
+	public void suspend() throws CDIException {
+		// send a noop to see if we get an aswer.
+		MISession mi = session.getMISession();
+		try {
+			mi.getMIInferior().interrupt();
+		} catch (MIException e) {
+			throw new MI2CDIException(e);
+		}
+	}
+
+	/**
+	 * @see org.eclipse.cdt.debug.core.cdi.model.ICDITarget#disconnect()
+	 */
+	public void disconnect() throws CDIException {
+		MISession mi = session.getMISession();
+		CommandFactory factory = mi.getCommandFactory();
+		MITargetDetach detach = factory.createMITargetDetach();
+		try {
+			mi.postCommand(detach);
+			MIInfo info = detach.getMIInfo();
+			if (info == null) {
+				throw new CDIException("No answer");
+			}
+		} catch (MIException e) {
+			throw new MI2CDIException(e);
+		}
+		// Unfortunately -target-detach does not generate an
+		// event so we do it here.
+		MISession miSession = session.getMISession();
+		miSession.fireEvent(new MIDetachedEvent(detach.getToken()));
+		session.getMISession().getMIInferior().setDisconnected();
+	}
+
+	/**
+	 * @see org.eclipse.cdt.debug.core.cdi.model.ICDITarget#finish()
+	 */
+	public void finish() throws CDIException {
+		MISession mi = session.getMISession();
+		CommandFactory factory = mi.getCommandFactory();
+		MIExecFinish finish = factory.createMIExecFinish();
+		try {
+			mi.postCommand(finish);
+			MIInfo info = finish.getMIInfo();
+			if (info == null) {
+				throw new CDIException("No answer");
+			}
+		} catch (MIException e) {
+			throw new MI2CDIException(e);
+		}
+		lastExecutionToken = finish.getToken();
+	}
+
+	/**
+	 * @see org.eclipse.cdt.debug.core.cdi.model.ICDITarget#runUntil(ICDILocation)
+	 */
+	public void runUntil(ICDILocation location) throws CDIException {
+		MISession mi = session.getMISession();
+		CommandFactory factory = mi.getCommandFactory();
+		String loc = "";
+		if (location.getFile() != null) {
+			loc = location.getFile() + ":" + location.getLineNumber();
+		} else if (location.getFunction() != null) {
+			loc = location.getFunction();
+		} else if (location.getAddress() != 0) {
+			loc = "" + location.getAddress();
+		}
+		MIExecUntil until = factory.createMIExecUntil(loc);
+		try {
+			mi.postCommand(until);
+			MIInfo info = until.getMIInfo();
+			if (info == null) {
+				throw new CDIException("No answer");
+			}
+		} catch (MIException e) {
+			throw new MI2CDIException(e);
+		}
+		lastExecutionToken = until.getToken();
+
+	}
+
+	/**
+	 * @see org.eclipse.cdt.debug.core.cdi.model.ICDITarget#evaluateExpressionToString(String)
+	 */
+	public String evaluateExpressionToString(String expressionText)
+		throws CDIException {
+		MISession mi = session.getMISession();
+		CommandFactory factory = mi.getCommandFactory();
+		MIDataEvaluateExpression evaluate = 
+			factory.createMIDataEvaluateExpression(expressionText);
+		try {
+			mi.postCommand(evaluate);
+			MIDataEvaluateExpressionInfo info =
+				evaluate.getMIDataEvaluateExpressionInfo();
+			if (info == null) {
+				throw new CDIException("No answer");
+			}
+			return info.getExpression();
+		} catch (MIException e) {
+			throw new MI2CDIException(e);
+		}
+	}
+
+	/**
+	 * @see org.eclipse.cdt.debug.core.cdi.model.ICDITarget#terminate()
+	 */
+	public void terminate() throws CDIException {
+		session.getMISession().getMIInferior().destroy();
+	}
+
+	/**
+	 * @see org.eclipse.cdt.debug.core.cdi.model.ICDITarget#isTerminated()
+	 */
+	public boolean isTerminated() {
+		return session.getMISession().getMIInferior().isTerminated();
+	}
+
+	/**
+	 * @see org.eclipse.cdt.debug.core.cdi.model.ICDITarget#isDisconnected()
+	 */
+	public boolean isDisconnected() {
+		return !session.getMISession().getMIInferior().isConnected();
+	}
+
+	/**
+	 * @see org.eclipse.cdt.debug.core.cdi.model.ICDITarget#isSuspended()
+	 */
+	public boolean isSuspended() {
+		return session.getMISession().getMIInferior().isSuspended();
+	}
+
+	public boolean isRunning() {
+		return session.getMISession().getMIInferior().isRunning();
+	}
+	
+	/**
+	 * @see org.eclipse.cdt.debug.core.cdi.model.ICDITarget#getGlobalVariables()
+	 */
+	public ICDIGlobalVariable[] getGlobalVariables() throws CDIException {
+		return new ICDIGlobalVariable[0];
+	}
+
+	/**
+	 * @see org.eclipse.cdt.debug.core.cdi.model.ICDITarget#getRegisterObjects()
+	 */
+	public ICDIRegisterObject[] getRegisterObjects() throws CDIException {
+		RegisterManager mgr = session.getRegisterManager();
+		return mgr.getRegisterObjects();
+	}
+
+	/**
+	 * @see org.eclipse.cdt.debug.core.cdi.model.ICDIStackFrame#getRegisters(ICDIRegisterObject[])
+	*/
+	public ICDIRegister[] getRegisters(ICDIRegisterObject[] regs) throws CDIException {
+		ICDIRegister[] registers = null;
+		RegisterManager mgr = session.getRegisterManager();
+		registers = new ICDIRegister[regs.length];
+		for (int i = 0; i < registers.length; i++) {
+				registers[i] = mgr.createRegister(regs[i]);
+		}
+		return registers;
+	}
+
+
+	/**
+	 * @see org.eclipse.cdt.debug.core.cdi.model.ICDITarget#getSharedLibraries()
+	 */
+	public ICDISharedLibrary[] getSharedLibraries() throws CDIException {
+		return new ICDISharedLibrary[0];
+	}
+
+	/**
+	 * @see org.eclipse.cdt.debug.core.cdi.model.ICDITarget#getProcess()
+	 */
+	public Process getProcess() {
+		return session.getMISession().getMIInferior();
+	}
+
+}
Index: src/org/eclipse/cdt/debug/mi/core/cdi/model/CThread.java
===================================================================
RCS file: src/org/eclipse/cdt/debug/mi/core/cdi/model/CThread.java
diff -N src/org/eclipse/cdt/debug/mi/core/cdi/model/CThread.java
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ src/org/eclipse/cdt/debug/mi/core/cdi/model/CThread.java	9 Jan 2003 03:44:03 -0000
@@ -0,0 +1,288 @@
+/*
+ * (c) Copyright QNX Software Systems Ltd. 2002.
+ * All Rights Reserved.
+ *
+ */
+package org.eclipse.cdt.debug.mi.core.cdi.model;
+
+import org.eclipse.cdt.debug.core.cdi.CDIException;
+import org.eclipse.cdt.debug.core.cdi.ICDILocation;
+import org.eclipse.cdt.debug.core.cdi.model.ICDIStackFrame;
+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.CSession;
+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.command.CommandFactory;
+import org.eclipse.cdt.debug.mi.core.command.MIStackInfoDepth;
+import org.eclipse.cdt.debug.mi.core.command.MIStackListFrames;
+import org.eclipse.cdt.debug.mi.core.command.MIStackSelectFrame;
+import org.eclipse.cdt.debug.mi.core.output.MIFrame;
+import org.eclipse.cdt.debug.mi.core.output.MIInfo;
+import org.eclipse.cdt.debug.mi.core.output.MIStackInfoDepthInfo;
+import org.eclipse.cdt.debug.mi.core.output.MIStackListFramesInfo;
+
+/**
+ */
+public class CThread extends CObject implements ICDIThread {
+
+	int id;
+	static StackFrame[] noStack = new StackFrame[0];
+	StackFrame currentFrame;
+	
+	public CThread(CTarget target, int threadId) {
+		super(target);
+		id = threadId;
+	}
+	
+	int getId() {
+		return id;
+	}
+
+	public String toString() {
+		return Integer.toString(id);
+	}
+
+	public StackFrame getCurrentStackFrame() throws CDIException {
+		if (currentFrame == null) {
+			ICDIStackFrame[] frames = getStackFrames(0, 0);
+			if (frames.length > 0) {
+				currentFrame = (StackFrame)frames[0];
+			}
+		}
+		return currentFrame;
+	}
+
+	/**
+	 * @see org.eclipse.cdt.debug.core.cdi.model.ICDIThread#getStackFrames()
+	 */
+	public ICDIStackFrame[] getStackFrames() throws CDIException {
+
+		StackFrame[] stack = noStack;
+		CSession session = getCTarget().getCSession();
+
+		MISession mi = session.getMISession();
+		CommandFactory factory = mi.getCommandFactory();
+		MIStackListFrames frames = factory.createMIStackListFrames();
+		try {
+			ICDIThread oldThread = getCTarget().getCurrentThread();
+			getCTarget().setCurrentThread(this);
+			mi.postCommand(frames);
+			MIStackListFramesInfo info = frames.getMIStackListFramesInfo();
+			if (info == null) {
+				throw new CDIException("No answer");
+			}
+			MIFrame[] miFrames = info.getMIFrames();
+			stack = new StackFrame[miFrames.length];
+			for (int i = 0; i < stack.length; i++) {
+				stack[i] = new StackFrame(this, miFrames[i]);
+			}
+			getCTarget().setCurrentThread(oldThread);
+			return stack;
+		} catch (MIException e) {
+			//throw new CDIException(e.getMessage());
+			//System.out.println(e);
+		} catch (CDIException e) {
+			//throw e;
+			//System.out.println(e);
+		}
+		return stack;
+	}
+
+	/**
+	 * @see org.eclipse.cdt.debug.core.cdi.model.ICDIThread#getStackFrames()
+	 */
+	public int getStackFrameCount() throws CDIException {
+		CSession session = getCTarget().getCSession();
+		MISession mi = session.getMISession();
+		CommandFactory factory = mi.getCommandFactory();
+		MIStackInfoDepth depth = factory.createMIStackInfoDepth();
+		try {
+			ICDIThread oldThread = getCTarget().getCurrentThread();
+			getCTarget().setCurrentThread(this);
+			mi.postCommand(depth);
+			MIStackInfoDepthInfo info = depth.getMIStackInfoDepthInfo();
+			if (info == null) {
+				throw new CDIException("No answer");
+			}
+			getCTarget().setCurrentThread(oldThread);
+			return info.getDepth();
+		} catch (MIException e) {
+			throw new MI2CDIException(e);
+			//System.out.println(e);
+		}
+	}
+
+	/**
+	 * @see org.eclipse.cdt.debug.core.cdi.model.ICDIThread#getStackFrames()
+	 */
+	public ICDIStackFrame[] getStackFrames(int low, int high) throws CDIException {
+		StackFrame[] stack = noStack;
+		CSession session = getCTarget().getCSession();
+
+		MISession mi = session.getMISession();
+		CommandFactory factory = mi.getCommandFactory();
+		MIStackListFrames frames = factory.createMIStackListFrames(low, high);
+		try {
+			ICDIThread oldThread = getCTarget().getCurrentThread();
+			getCTarget().setCurrentThread(this);
+			mi.postCommand(frames);
+			MIStackListFramesInfo info = frames.getMIStackListFramesInfo();
+			if (info == null) {
+				throw new CDIException("No answer");
+			}
+			MIFrame[] miFrames = info.getMIFrames();
+			stack = new StackFrame[miFrames.length];
+			for (int i = 0; i < stack.length; i++) {
+				stack[i] = new StackFrame(this, miFrames[i]);
+			}
+			getCTarget().setCurrentThread(oldThread);
+			return stack;
+		} catch (MIException e) {
+			//throw new CDIException(e.getMessage());
+			//System.out.println(e);
+		} catch (CDIException e) {
+			//throw e;
+			//System.out.println(e);
+		}
+		return stack;
+	}
+
+	/**
+	 * @see org.eclipse.cdt.debug.core.cdi.model.ICDIThread#setCurrentStackFrame(ICDIStackFrame)
+	 */
+	public void setCurrentStackFrame(ICDIStackFrame stackframe) throws CDIException {
+		if (stackframe instanceof  StackFrame) {
+			setCurrentStackFrame((StackFrame)stackframe);
+		}
+	}
+
+	public void setCurrentStackFrame(StackFrame stackframe) throws CDIException {
+		CSession session = getCTarget().getCSession();
+		MISession mi = session.getMISession();
+		CommandFactory factory = mi.getCommandFactory();
+		int frameNum = 0;
+		if (stackframe != null) {
+			frameNum = stackframe.getLevel();
+		}
+		
+		// Check to see if we are already at this level
+		StackFrame current = getCurrentStackFrame();
+		if (current != null && current.getLevel() == frameNum) {
+			// noop
+			return;
+		}
+		
+		MIStackSelectFrame frame = factory.createMIStackSelectFrame(frameNum);
+		try {
+			// Set ourself as the current thread first.
+			getCTarget().setCurrentThread(this);
+			mi.postCommand(frame);
+			MIInfo info = frame.getMIInfo();
+			if (info == null) {
+				throw new CDIException("No answer");
+			}
+			currentFrame = stackframe;
+
+			// Resetting threads may change the value of
+			// some variables like Register.  Send an update
+			// To generate changeEvents.
+			RegisterManager regMgr = session.getRegisterManager();
+			regMgr.update();
+
+		} catch (MIException e) {
+			throw new MI2CDIException(e);
+		}
+	}
+
+	/**
+	 * @see org.eclipse.cdt.debug.core.cdi.model.ICDIThread#isSuspended()
+	 */
+	public boolean isSuspended() {
+		return getTarget().isSuspended();
+	}
+
+	/**
+	 * @see org.eclipse.cdt.debug.core.cdi.model.ICDIThread#finish()
+	 */
+	public void finish() throws CDIException {
+		getCTarget().setCurrentThread(this);
+		getTarget().finish();
+	}
+
+	/**
+	 * @see org.eclipse.cdt.debug.core.cdi.model.ICDIThread#resume()
+	 */
+	public void resume() throws CDIException {
+		getTarget().resume();
+	}
+
+	/**
+	 * @see org.eclipse.cdt.debug.core.cdi.model.ICDIThread#stepInto()
+	 */
+	public void stepInto() throws CDIException {
+		getCTarget().setCurrentThread(this);
+		getTarget().stepInto();
+	}
+
+	/**
+	 * @see org.eclipse.cdt.debug.core.cdi.model.ICDIThread#stepIntoInstruction()
+	 */
+	public void stepIntoInstruction() throws CDIException {
+		getCTarget().setCurrentThread(this);
+		getTarget().stepIntoInstruction();
+	}
+
+	/**
+	 * @see org.eclipse.cdt.debug.core.cdi.model.ICDIThread#stepOver()
+	 */
+	public void stepOver() throws CDIException {
+		getCTarget().setCurrentThread(this);
+		getTarget().stepOver();
+	}
+
+	/**
+	 * @see org.eclipse.cdt.debug.core.cdi.model.ICDIThread#stepOverInstruction()
+	 */
+	public void stepOverInstruction() throws CDIException {
+		getCTarget().setCurrentThread(this);
+		getTarget().stepOverInstruction();
+	}
+
+	/**
+	 * @see org.eclipse.cdt.debug.core.cdi.model.ICDIThread#stepReturn()
+	 */
+	public void stepReturn() throws CDIException {
+		getCTarget().setCurrentThread(this);
+		getTarget().stepReturn();
+	}
+
+	/**
+	 * @see org.eclipse.cdt.debug.core.cdi.model.ICDIThread#runUntil(ICDILocation)
+	 */
+	public void runUntil(ICDILocation location) throws CDIException {
+		getCTarget().setCurrentThread(this);
+		getTarget().runUntil(location);
+	}
+
+	/**
+	 * @see org.eclipse.cdt.debug.core.cdi.model.ICDIThread#suspend()
+	 */
+	public void suspend() throws CDIException {
+		getCTarget().setCurrentThread(this);
+		getTarget().suspend();
+	}
+
+	/**
+	 * @see org.eclipse.cdt.debug.core.cdi.model.ICDIThread#equals(ICDIThread)
+	 */
+	public boolean equals(ICDIThread thread) {
+		if (thread instanceof CThread) {
+			CThread cthread = (CThread) thread;
+			return id == cthread.getId();
+		}
+		return super.equals(thread);
+	}
+
+}
Index: src/org/eclipse/cdt/debug/mi/core/cdi/model/Catchpoint.java
===================================================================
RCS file: src/org/eclipse/cdt/debug/mi/core/cdi/model/Catchpoint.java
diff -N src/org/eclipse/cdt/debug/mi/core/cdi/model/Catchpoint.java
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ src/org/eclipse/cdt/debug/mi/core/cdi/model/Catchpoint.java	9 Jan 2003 03:44:02 -0000
@@ -0,0 +1,27 @@
+/*
+ * (c) Copyright QNX Software Systems Ltd. 2002.
+ * All Rights Reserved.
+ */
+package org.eclipse.cdt.debug.mi.core.cdi.model;
+
+import org.eclipse.cdt.debug.core.cdi.CDIException;
+import org.eclipse.cdt.debug.core.cdi.ICDICatchEvent;
+import org.eclipse.cdt.debug.core.cdi.model.ICDICatchpoint;
+import org.eclipse.cdt.debug.mi.core.cdi.BreakpointManager;
+import org.eclipse.cdt.debug.mi.core.output.MIBreakpoint;
+
+/**
+ */
+public class Catchpoint extends Breakpoint implements ICDICatchpoint {
+
+	public Catchpoint(BreakpointManager m, MIBreakpoint miBreak) {
+		super(m, miBreak);
+	}
+
+	/**
+	 * @see org.eclipse.cdt.debug.core.cdi.ICDICatchpoint#getEvent()
+	 */
+	public ICDICatchEvent getEvent() throws CDIException {
+		return null;
+	}
+}
Index: src/org/eclipse/cdt/debug/mi/core/cdi/model/Expression.java
===================================================================
RCS file: src/org/eclipse/cdt/debug/mi/core/cdi/model/Expression.java
diff -N src/org/eclipse/cdt/debug/mi/core/cdi/model/Expression.java
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ src/org/eclipse/cdt/debug/mi/core/cdi/model/Expression.java	9 Jan 2003 03:44:03 -0000
@@ -0,0 +1,18 @@
+/*
+ * (c) Copyright QNX Software Systems Ltd. 2002.
+ * All Rights Reserved.
+ *
+ */
+package org.eclipse.cdt.debug.mi.core.cdi.model;
+
+import org.eclipse.cdt.debug.core.cdi.model.ICDIExpression;
+import org.eclipse.cdt.debug.mi.core.output.MIVar;
+
+/**
+ */
+public class Expression extends Variable implements ICDIExpression {
+
+	public Expression(StackFrame stackframe, String name, MIVar var) {
+		super(stackframe, name, var);
+	}
+}
Index: src/org/eclipse/cdt/debug/mi/core/cdi/model/Instruction.java
===================================================================
RCS file: src/org/eclipse/cdt/debug/mi/core/cdi/model/Instruction.java
diff -N src/org/eclipse/cdt/debug/mi/core/cdi/model/Instruction.java
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ src/org/eclipse/cdt/debug/mi/core/cdi/model/Instruction.java	9 Jan 2003 03:44:02 -0000
@@ -0,0 +1,49 @@
+/*
+ *(c) Copyright QNX Software Systems Ltd. 2002.
+ * All Rights Reserved.
+ * 
+ */
+package org.eclipse.cdt.debug.mi.core.cdi.model;
+
+import org.eclipse.cdt.debug.core.cdi.model.ICDIInstruction;
+import org.eclipse.cdt.debug.mi.core.output.MIAsm;
+
+/**
+ */
+public class Instruction extends CObject implements ICDIInstruction  {
+
+	MIAsm asm;
+	
+	public Instruction(CTarget target, MIAsm a) {
+		super(target);
+		asm = a;
+	}
+	/**
+	 * @see org.eclipse.cdt.debug.core.cdi.model.ICDIInstruction#getAdress()
+	 */
+	public long getAdress() {
+		return asm.getAddress();
+	}
+
+	/**
+	 * @see org.eclipse.cdt.debug.core.cdi.model.ICDIInstruction#getFuntionName()
+	 */
+	public String getFuntionName() {
+		return asm.getFunction();
+	}
+
+	/**
+	 * @see org.eclipse.cdt.debug.core.cdi.model.ICDIInstruction#getInstruction()
+	 */
+	public String getInstruction() {
+		return asm.getInstruction();
+	}
+
+	/**
+	 * @see org.eclipse.cdt.debug.core.cdi.model.ICDIInstruction#getOffset()
+	 */
+	public long getOffset() {
+		return asm.getOffset();
+	}
+
+}
Index: src/org/eclipse/cdt/debug/mi/core/cdi/model/MixedInstruction.java
===================================================================
RCS file: src/org/eclipse/cdt/debug/mi/core/cdi/model/MixedInstruction.java
diff -N src/org/eclipse/cdt/debug/mi/core/cdi/model/MixedInstruction.java
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ src/org/eclipse/cdt/debug/mi/core/cdi/model/MixedInstruction.java	9 Jan 2003 03:44:02 -0000
@@ -0,0 +1,50 @@
+/*
+ *(c) Copyright QNX Software Systems Ltd. 2002.
+ * All Rights Reserved.
+ * 
+ */
+package org.eclipse.cdt.debug.mi.core.cdi.model;
+
+import org.eclipse.cdt.debug.core.cdi.model.ICDIInstruction;
+import org.eclipse.cdt.debug.core.cdi.model.ICDIMixedInstruction;
+import org.eclipse.cdt.debug.mi.core.output.MIAsm;
+import org.eclipse.cdt.debug.mi.core.output.MISrcAsm;
+
+/**
+ */
+public class MixedInstruction extends CObject implements ICDIMixedInstruction {
+
+	MISrcAsm srcAsm;
+	
+	public MixedInstruction (CTarget target, MISrcAsm a) {
+		super(target);
+		srcAsm = a;
+	}
+	
+	/**
+	 * @see org.eclipse.cdt.debug.core.cdi.model.ICDIMixedInstruction#getFileName()
+	 */
+	public String getFileName() {
+		return srcAsm.getFile();
+	}
+
+	/**
+	 * @see org.eclipse.cdt.debug.core.cdi.model.ICDIMixedInstruction#getInstructions()
+	 */
+	public ICDIInstruction[] getInstructions() {
+		MIAsm[] asms = srcAsm.getMIAsms();
+		ICDIInstruction[] instructions = new ICDIInstruction[asms.length];
+		for (int i = 0; i < asms.length; i++) {
+			instructions[i] = new Instruction(getCTarget(), asms[i]);
+		}
+		return instructions;
+	}
+
+	/**
+	 * @see org.eclipse.cdt.debug.core.cdi.model.ICDIMixedInstruction#getLineNumber()
+	 */
+	public int getLineNumber() {
+		return srcAsm.getLine();
+	}
+
+}
Index: src/org/eclipse/cdt/debug/mi/core/cdi/model/Register.java
===================================================================
RCS file: src/org/eclipse/cdt/debug/mi/core/cdi/model/Register.java
diff -N src/org/eclipse/cdt/debug/mi/core/cdi/model/Register.java
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ src/org/eclipse/cdt/debug/mi/core/cdi/model/Register.java	9 Jan 2003 03:44:04 -0000
@@ -0,0 +1,320 @@
+/*
+ * (c) Copyright QNX Software Systems Ltd. 2002.
+ * All Rights Reserved.
+ *
+ */
+package org.eclipse.cdt.debug.mi.core.cdi.model;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.StringTokenizer;
+
+import org.eclipse.cdt.debug.core.cdi.CDIException;
+import org.eclipse.cdt.debug.core.cdi.ICDIRegisterObject;
+import org.eclipse.cdt.debug.core.cdi.model.ICDIRegister;
+import org.eclipse.cdt.debug.core.cdi.model.ICDIValue;
+import org.eclipse.cdt.debug.core.cdi.model.ICDIVariable;
+import org.eclipse.cdt.debug.mi.core.MIException;
+import org.eclipse.cdt.debug.mi.core.MIFormat;
+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.RegisterObject;
+import org.eclipse.cdt.debug.mi.core.command.CommandFactory;
+import org.eclipse.cdt.debug.mi.core.command.MIDataListRegisterValues;
+import org.eclipse.cdt.debug.mi.core.command.MIDataWriteRegisterValues;
+import org.eclipse.cdt.debug.mi.core.event.MIRegisterChangedEvent;
+import org.eclipse.cdt.debug.mi.core.output.MIDataListRegisterValuesInfo;
+import org.eclipse.cdt.debug.mi.core.output.MIInfo;
+import org.eclipse.cdt.debug.mi.core.output.MIRegisterValue;
+
+/**
+ */
+public class Register extends CObject implements ICDIRegister, ICDIValue {
+
+	RegisterObject regObject;
+	int format = MIFormat.HEXADECIMAL;
+	Register parent;
+	String lastname;
+	
+	/**
+	 * A container class to hold the values of the registers and sub values
+	 * for example on x86, xmm0 register is consider to be a struct
+	 * gdb/mi -data-list-register-values returns the value like this
+	 * value="{f = {0x0, 0x0, 0x0, 0x0}}"
+ 	 * we'll parse() it and change it to:
+	 * Argument[0] = { "xmm0", "{f = {0x0, 0x0, 0x0, 0x0}}"
+	 * Argument[1] = { "xmm0.f", "{0x0, 0x0, 0x0, 0x0}"}
+	 * Argument[2] = { "xmm0.f.0", "0x0"}
+	 * Argument[3] = { "xmm0.f.1", "0x0"}
+	 * Argument[4] = { "xmm0.f.2", "0x0"}
+	 * Argument[5] = { "xmm0.f.3", "0x0"}
+	 * see @parse()
+	 */
+	class Argument {
+		String name;
+		String val;
+		Argument(String n, String v) {
+			name = n;
+			val = v;
+		}
+		String getKey() {
+			return name;
+		}
+		String getValue() {
+			return val;
+		}
+	}
+
+	public Register(CTarget target, ICDIRegisterObject r) {
+		super(target);
+		parent = null;
+		lastname = r.getName();
+		regObject = (RegisterObject)r;
+	}
+
+	public Register(Register p, String n) {
+		super(p.getCTarget());
+		parent = p;
+		lastname = n;
+	}
+
+	/**
+	 * return the MI regno.
+	 */
+	public int getId() {
+		return regObject.getId();
+	}
+
+	/**
+	 * Returns a Unique name separated by '.' to describe the path
+	 * for example xmm0.f.0
+	 */
+	public String getUniqName() {
+		String n = "";
+		if (parent != null) {
+			n = parent.getUniqName() + "." + getLastName();
+		} else {
+			n = getLastName();
+		}
+		return n;
+	}
+	
+	/**
+	 * Returns the name of the register, for example xmm0.
+	 */ 
+	public String getBaseName() {
+		String base = "";
+		if (parent != null) {
+			base = parent.getBaseName();
+		} else {
+			base = getLastName();
+		}
+		return base;
+	}
+
+	/**
+	 * Returns the current name for xmm0.f the last name is "f".
+	 */
+	public String getLastName() {
+		return lastname;
+	}
+
+	/**
+	 * @see org.eclipse.cdt.debug.core.cdi.model.ICDIVariable#getName()
+	 */
+	public String getName() throws CDIException {
+		return getLastName();
+	}
+
+	/**
+	 * @see org.eclipse.cdt.debug.core.cdi.model.ICDIVariable#getTypeName()
+	 */
+	public String getTypeName() throws CDIException {
+		String v = getValueString();
+		if (v.startsWith("{")) {
+			// Use ptype?
+			return "struct ";
+		}
+		return "int";
+	}
+
+	/**
+	 * @see org.eclipse.cdt.debug.core.cdi.model.ICDIVariable#getValue()
+	 */
+	public ICDIValue getValue() throws CDIException {
+		return this;
+	}
+
+	/**
+	 * @see org.eclipse.cdt.debug.core.cdi.model.ICDIValue#getValueString()
+	 */
+	public String getValueString() throws CDIException {
+		if (parent == null) {
+			MISession mi = getCTarget().getCSession().getMISession();
+			CommandFactory factory = mi.getCommandFactory();
+			int[] regno = new int[]{regObject.getId()};
+			MIDataListRegisterValues registers =
+				factory.createMIDataListRegisterValues(format, regno);
+			try {
+				mi.postCommand(registers);
+				MIDataListRegisterValuesInfo info =
+					registers.getMIDataListRegisterValuesInfo();
+				if (info == null) {
+					throw new CDIException("No answer");
+				}
+				MIRegisterValue[] regValues = info.getMIRegisterValues();
+				// We only ask for one.  But do the right thing
+				for (int i = 0; i < regValues.length; i++) {
+					if (regValues[i].getNumber() == regno[i]) {
+						return regValues[i].getValue();
+					}
+				}
+			} catch (MIException e) {
+				throw new MI2CDIException(e);
+			}
+		} else {
+			String u = getUniqName();
+			String v = parent.getValueString();
+			Argument[] args = parse(parent.getUniqName(), v);
+			for (int i = 0; i < args.length; i++) {
+				if (u.equals(args[i].getKey())) {
+					return args[i].getValue();
+				}
+			}
+		}
+		return "";
+	}
+
+	/**
+	 * @see org.eclipse.cdt.debug.core.cdi.model.ICDIVariable#isEditable()
+	 */
+	public boolean isEditable() throws CDIException {
+		return false;
+	}
+
+	/**
+	 * @see org.eclipse.cdt.debug.core.cdi.model.ICDIVariable#setValue(ICDIValue)
+	 */
+	public void setValue(ICDIValue val) throws CDIException {
+		setValue(val.getValueString());
+	}
+
+	/**
+	 * @see org.eclipse.cdt.debug.core.cdi.model.ICDIVariable#setValue(String)
+	 */
+	public void setValue(String expression) throws CDIException {
+		MISession mi = getCTarget().getCSession().getMISession();
+		CommandFactory factory = mi.getCommandFactory();
+		int[] regnos = new int[]{regObject.getId()};
+		String[] values = new String[]{expression};
+		MIDataWriteRegisterValues registers =
+				factory.createMIDataWriteRegisterValues(format, regnos, values);
+		try {
+			mi.postCommand(registers);
+			MIInfo info = registers.getMIInfo();
+			if (info == null) {
+				throw new CDIException("No answer");
+			}
+		} catch (MIException e) {
+			throw new MI2CDIException(e);
+		}
+		// If the assign was succesfull fire a MIRegisterChangedEvent()
+		MIRegisterChangedEvent change = new MIRegisterChangedEvent(registers.getToken(),
+			regObject.getName(), regObject.getId());
+		mi.fireEvent(change);
+
+	}
+
+	/**
+	 * @see org.eclipse.cdt.debug.core.cdi.model.ICDIVariable#setFormat()
+	 */
+	public void setFormat(int fmt) throws CDIException {
+		format = Format.toMIFormat(fmt);
+	}
+
+	/**
+	 * @see org.eclipse.cdt.debug.core.cdi.model.ICDIValue#getChildrenNumber()
+	 */
+	public int getChildrenNumber() throws CDIException {
+		return getVariables().length;
+	}
+
+	/**
+	 * @see org.eclipse.cdt.debug.core.cdi.model.ICDIValue#getVariables()
+	 */
+	public ICDIVariable[] getVariables() throws CDIException {
+		List aList = new ArrayList(1);
+		String v = getValueString();
+		Argument[] args = parse(getUniqName(), v);
+		/* The idea here s to get the first level
+		 * 
+	 	 * Argument[0] = { "xmm0", "{f = {0x0, 0x0, 0x0, 0x0}}"
+	 	 * Argument[1] = { "xmm0.f", "{0x0, 0x0, 0x0, 0x0}"}
+	 	 * Argument[2] = { "xmm0.f.0", "0x0"}
+	 	 * Argument[3] = { "xmm0.f.1", "0x0"}
+	 	 * Argument[4] = { "xmm0.f.2", "0x0"}
+	 	 * Argument[5] = { "xmm0.f.3", "0x0"}
+		 *
+		 * For example the children or xmm0.f are xmm0.f.{0,1,2,3,}
+		 *  
+		 */
+		for (int i = 0; i < args.length; i++) {
+			String n = args[i].getKey();
+			String u = getUniqName();
+			if (n.startsWith(u) && n.length() > u.length()) {
+				String p = n.substring(u.length());
+				StringTokenizer st = new StringTokenizer(p, ".");
+				if (st.countTokens() == 1) {
+					aList.add(new Register(this, (String)st.nextElement()));
+				}
+			}
+		}
+		return (ICDIVariable[])aList.toArray(new ICDIVariable[0]);
+	}
+
+	/**
+	 * @see org.eclipse.cdt.debug.core.cdi.model.ICDIValue#hasChildren()
+	 */
+	public boolean hasChildren() throws CDIException {
+		return getChildrenNumber() > 0;
+	}
+
+	/**
+	 * We are parsing this:
+	 * "{f = {0x0, 0x0, 0x0, 0x0}}"
+	 * into:
+	 * Argument[0] = { "xmm0", "{f = {0x0, 0x0, 0x0, 0x0}}"
+	 * Argument[1] = { "xmm0.f", "{0x0, 0x0, 0x0, 0x0}"}
+	 * Argument[2] = { "xmm0.f.0", "0x0"}
+	 * Argument[3] = { "xmm0.f.1", "0x0"}
+	 * Argument[4] = { "xmm0.f.2", "0x0"}
+	 * Argument[5] = { "xmm0.f.3", "0x0"}
+	 */
+	Argument[] parse(String base, String v) throws CDIException {
+		List aList = new ArrayList(1);
+		StringBuffer sb = new StringBuffer(base);
+		aList.add(new Argument(sb.toString(), v.trim()));
+		while (v.startsWith("{")) {
+			int idx;
+			v = v.substring(1);
+			if (v.endsWith("}")) {
+				idx = v.lastIndexOf('}');
+				v = v.substring(0, idx);
+			}
+			idx = v.indexOf('=');
+			if (idx != -1) {
+				String n = v.substring(0, idx).trim();
+				sb.append('.').append(n);
+				v = v.substring(idx + 1).trim();
+				aList.add(new Argument(sb.toString(), v));
+			} else {
+				StringTokenizer st = new StringTokenizer(v, ",");
+				for (int i = 0; st.hasMoreElements(); i++) {
+					aList.add(new Argument(sb.toString() + "." + Integer.toString(i), ((String)st.nextElement()).trim()));
+				}
+			}
+		}
+		return (Argument[])aList.toArray(new Argument[0]);
+	}
+}
Index: src/org/eclipse/cdt/debug/mi/core/cdi/model/StackFrame.java
===================================================================
RCS file: src/org/eclipse/cdt/debug/mi/core/cdi/model/StackFrame.java
diff -N src/org/eclipse/cdt/debug/mi/core/cdi/model/StackFrame.java
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ src/org/eclipse/cdt/debug/mi/core/cdi/model/StackFrame.java	9 Jan 2003 03:44:04 -0000
@@ -0,0 +1,168 @@
+/*
+ * (c) Copyright QNX Software Systems Ltd. 2002.
+ * All Rights Reserved.
+ *
+ */
+package org.eclipse.cdt.debug.mi.core.cdi.model;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.eclipse.cdt.debug.core.cdi.CDIException;
+import org.eclipse.cdt.debug.core.cdi.ICDILocation;
+import org.eclipse.cdt.debug.core.cdi.model.ICDIArgument;
+import org.eclipse.cdt.debug.core.cdi.model.ICDIStackFrame;
+import org.eclipse.cdt.debug.core.cdi.model.ICDIVariable;
+import org.eclipse.cdt.debug.mi.core.MIException;
+import org.eclipse.cdt.debug.mi.core.MISession;
+import org.eclipse.cdt.debug.mi.core.cdi.CSession;
+import org.eclipse.cdt.debug.mi.core.cdi.Location;
+import org.eclipse.cdt.debug.mi.core.cdi.VariableManager;
+import org.eclipse.cdt.debug.mi.core.command.CommandFactory;
+import org.eclipse.cdt.debug.mi.core.command.MIStackListArguments;
+import org.eclipse.cdt.debug.mi.core.command.MIStackListLocals;
+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;
+import org.eclipse.cdt.debug.mi.core.output.MIStackListLocalsInfo;
+
+/**
+ */
+public class StackFrame extends CObject implements ICDIStackFrame {
+
+	MIFrame frame;
+	CThread cthread;
+
+	public StackFrame(CThread thread, MIFrame f) {
+		super(thread.getCTarget());
+		cthread = thread;
+		frame = f;
+	}
+
+	MIFrame getMIFrame() {
+		return frame;
+	}
+
+	public CThread getCThread() {
+		return cthread;
+	}
+
+	/**
+	 * @see org.eclipse.cdt.debug.core.cdi.model.ICDIStackFrame#getArguments()
+	 */
+	public ICDIArgument[] getArguments() throws CDIException {
+		List cdiList = new ArrayList();
+		if (frame != null) {
+			CSession session = getCTarget().getCSession();
+			VariableManager mgr = (VariableManager)session.getVariableManager();
+			MISession mi = session.getMISession();
+			CommandFactory factory = mi.getCommandFactory();
+			int level = frame.getLevel();
+			MIStackListArguments listArgs =
+				factory.createMIStackListArguments(false, level, level);
+			try {
+				cthread.setCurrentStackFrame(this);
+				MIArg[] args = null;
+				mi.postCommand(listArgs);
+				MIStackListArgumentsInfo info =
+					listArgs.getMIStackListArgumentsInfo();
+				if (info == null) {
+					throw new CDIException("No answer");
+				}
+				MIFrame[] miFrames = info.getMIFrames();
+				if (miFrames != null && miFrames.length == 1) {
+					args = miFrames[0].getArgs();
+				}
+				if (args != null) {
+					for (int i = 0; i < args.length; i++) {
+						try {
+							cdiList.add(mgr.createArgument(this, args[i].getName()));
+						} catch (CDIException e) {
+						}
+					}
+				}
+			} catch (MIException e) {
+				//throw new CDIException(e.getMessage());
+				//System.err.println(e);
+			} catch (CDIException e) {
+				//throw e;
+				//System.err.println(e);
+			}
+		}
+		return (ICDIArgument[])cdiList.toArray(new ICDIArgument[0]);
+	}
+
+	/**
+	 * @see org.eclipse.cdt.debug.core.cdi.model.ICDIStackFrame#getLocalVariables()
+	 */
+	public ICDIVariable[] getLocalVariables() throws CDIException {
+		List cdiList = new ArrayList();
+		CSession session = getCTarget().getCSession();
+		VariableManager mgr = (VariableManager)session.getVariableManager();
+		MISession mi = session.getMISession();
+		CommandFactory factory = mi.getCommandFactory();
+		MIStackListLocals locals = factory.createMIStackListLocals(false);
+		try {
+			cthread.setCurrentStackFrame(this);
+			MIArg[] args = null;
+			mi.postCommand(locals);
+			MIStackListLocalsInfo info = locals.getMIStackListLocalsInfo();
+			if (info == null) {
+				throw new CDIException("No answer");
+			}
+			args = info.getLocals();
+			if (args != null) {
+				for (int i = 0; i < args.length; i++) {
+					try {
+						cdiList.add(mgr.createVariable(this, args[i].getName()));
+					} catch (CDIException e) {
+					}
+				}
+			}
+		} catch (MIException e) {
+			//throw new CDIException(e.getMessage());
+			//System.err.println(e);
+		} catch (CDIException e) {
+			//throw e;
+			//System.err.println(e);
+		}
+		return (ICDIVariable[])cdiList.toArray(new ICDIVariable[0]);
+	}
+
+	/**
+	 * @see org.eclipse.cdt.debug.core.cdi.model.ICDIStackFrame#getLocation()
+	 */
+	public ICDILocation getLocation() {
+		if (frame != null) {
+			return new Location(frame.getFile(), frame.getFunction(),
+					frame.getLine(), frame.getAddress());
+		}
+		return new Location("", "", 0, 0);
+	}
+
+	/**
+	 * @see org.eclipse.cdt.debug.core.cdi.model.ICDIStackFrame#getLevel()
+	 */
+	public int getLevel() {
+		if (frame != null) {
+			return frame.getLevel();
+		}
+		return 0;
+	}
+	/**
+	 * @see org.eclipse.cdt.debug.core.cdi.model.ICDIStackFrame#equals(ICDIStackFrame)
+	 */
+	public boolean equals(ICDIStackFrame stackframe) {
+		if (stackframe instanceof StackFrame) {
+			StackFrame stack = (StackFrame)stackframe;
+			return  cthread != null &&
+				cthread.equals(stack.getCThread()) &&
+				frame != null &&
+				frame.getLevel() == stack.getMIFrame().getLevel() &&
+				frame.getFile().equals(stack.getMIFrame().getFile()) &&
+				frame.getFunction().equals(stack.getMIFrame().getFunction());
+		}
+		return super.equals(stackframe);
+	}
+
+}
Index: src/org/eclipse/cdt/debug/mi/core/cdi/model/Value.java
===================================================================
RCS file: src/org/eclipse/cdt/debug/mi/core/cdi/model/Value.java
diff -N src/org/eclipse/cdt/debug/mi/core/cdi/model/Value.java
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ src/org/eclipse/cdt/debug/mi/core/cdi/model/Value.java	9 Jan 2003 03:44:02 -0000
@@ -0,0 +1,124 @@
+/*
+ * (c) Copyright QNX Software Systems Ltd. 2002.
+ * All Rights Reserved.
+ *
+ */
+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.ICDIValue;
+import org.eclipse.cdt.debug.core.cdi.model.ICDIVariable;
+import org.eclipse.cdt.debug.mi.core.MIException;
+import org.eclipse.cdt.debug.mi.core.MISession;
+import org.eclipse.cdt.debug.mi.core.cdi.CSession;
+import org.eclipse.cdt.debug.mi.core.cdi.MI2CDIException;
+import org.eclipse.cdt.debug.mi.core.cdi.VariableManager;
+import org.eclipse.cdt.debug.mi.core.command.CommandFactory;
+import org.eclipse.cdt.debug.mi.core.command.MIVarEvaluateExpression;
+import org.eclipse.cdt.debug.mi.core.command.MIVarListChildren;
+import org.eclipse.cdt.debug.mi.core.output.MIVar;
+import org.eclipse.cdt.debug.mi.core.output.MIVarEvaluateExpressionInfo;
+import org.eclipse.cdt.debug.mi.core.output.MIVarListChildrenInfo;
+
+/**
+ */
+public class Value extends CObject implements ICDIValue {
+
+	Variable variable;
+
+	public Value(Variable v) {
+		super(v.getCTarget());
+		variable = v;
+	}
+	
+	/**
+	 * @see org.eclipse.cdt.debug.core.cdi.model.ICDIValue#getTypeName()
+	 */
+	public String getTypeName() throws CDIException {
+		return variable.getTypeName();
+	}
+
+	/**
+	 * @see org.eclipse.cdt.debug.core.cdi.model.ICDIValue#getValueString()
+	 */
+	public String getValueString() throws CDIException {
+		String result = "";
+		MISession mi = getCTarget().getCSession().getMISession();
+		CommandFactory factory = mi.getCommandFactory();
+		MIVarEvaluateExpression var =
+			factory.createMIVarEvaluateExpression(variable.getMIVar().getVarName());
+		try {
+			mi.postCommand(var);
+			MIVarEvaluateExpressionInfo info = var.getMIVarEvaluateExpressionInfo();
+			if (info == null) {
+				throw new CDIException("No answer");
+			}
+			result = info.getValue();
+		} catch (MIException e) {
+			//throw new CDIException(e.getMessage());
+		}
+		return result;
+	}
+
+	/**
+	 * @see org.eclipse.cdt.debug.core.cdi.model.ICDIValue#getVariables()
+	 */	
+	public int getChildrenNumber() throws CDIException {
+		return variable.getMIVar().getNumChild();
+	}
+	
+	/**
+	 * @see org.eclipse.cdt.debug.core.cdi.model.ICDIValue#getVariables()
+	 */
+	public boolean hasChildren() throws CDIException {
+	/*
+		int number = 0;
+		MISession mi = getCTarget().getCSession().getMISession();
+		CommandFactory factory = mi.getCommandFactory();
+		MIVarInfoNumChildren children = 
+			factory.createMIVarInfoNumChildren(variable.getMIVar().getVarName());
+		try {
+			mi.postCommand(children);
+			MIVarInfoNumChildrenInfo info = children.getMIVarInfoNumChildrenInfo();
+			if (info == null) {
+				throw new CDIException("No answer");
+			}
+			number = info.getChildNumber();
+		} catch (MIException e) {
+			throw new CDIException(e.getMessage());
+		}
+		return (number > 0);
+	*/
+		return (getChildrenNumber() > 0);	
+	}
+	/**
+	 * @see org.eclipse.cdt.debug.core.cdi.model.ICDIValue#getVariables()
+	 */
+	public ICDIVariable[] getVariables() throws CDIException {
+		Variable[] variables = null;
+		CSession session = getCTarget().getCSession();
+		MISession mi = session.getMISession();
+		VariableManager mgr = (VariableManager)session.getVariableManager();
+		CommandFactory factory = mi.getCommandFactory();
+		MIVarListChildren var = 
+			factory.createMIVarListChildren(variable.getMIVar().getVarName());
+		try {
+			mi.postCommand(var);
+			MIVarListChildrenInfo info = var.getMIVarListChildrenInfo();
+			if (info == null) {
+				throw new CDIException("No answer");
+			}
+			MIVar[] vars = info.getMIVars();
+			variables = new Variable[vars.length];
+			for (int i = 0; i < vars.length; i++) {
+				variables[i] = mgr.createVariable(variable.getStackFrame(),
+						vars[i].getExp(), vars[i]);
+
+			}
+		} catch (MIException e) {
+			throw new MI2CDIException(e);
+		}
+		return variables;
+	}
+
+}
Index: src/org/eclipse/cdt/debug/mi/core/cdi/model/Variable.java
===================================================================
RCS file: src/org/eclipse/cdt/debug/mi/core/cdi/model/Variable.java
diff -N src/org/eclipse/cdt/debug/mi/core/cdi/model/Variable.java
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ src/org/eclipse/cdt/debug/mi/core/cdi/model/Variable.java	9 Jan 2003 03:44:04 -0000
@@ -0,0 +1,149 @@
+/*
+ * (c) Copyright QNX Software Systems Ltd. 2002.
+ * All Rights Reserved.
+ *
+ */
+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.ICDIValue;
+import org.eclipse.cdt.debug.core.cdi.model.ICDIVariable;
+import org.eclipse.cdt.debug.mi.core.MIException;
+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.command.CommandFactory;
+import org.eclipse.cdt.debug.mi.core.command.MIVarAssign;
+import org.eclipse.cdt.debug.mi.core.command.MIVarSetFormat;
+import org.eclipse.cdt.debug.mi.core.command.MIVarShowAttributes;
+import org.eclipse.cdt.debug.mi.core.event.MIVarChangedEvent;
+import org.eclipse.cdt.debug.mi.core.output.MIInfo;
+import org.eclipse.cdt.debug.mi.core.output.MIVar;
+import org.eclipse.cdt.debug.mi.core.output.MIVarShowAttributesInfo;
+
+/**
+ */
+public class Variable extends CObject implements ICDIVariable {
+
+	MIVar miVar;
+	String name;
+	Value value;
+	StackFrame stack;
+
+	public Variable(StackFrame stackframe, String n, MIVar v) {
+		super(stackframe.getCTarget());
+		stack = stackframe;
+		name = n;
+		miVar = v;
+	}
+
+	StackFrame getStackFrame() {
+		return stack;
+	}
+
+	public MIVar getMIVar() {
+		return miVar;
+	}
+
+	/**
+	 * @see org.eclipse.cdt.debug.core.cdi.model.ICDIVariable#getName()
+	 */
+	public String getName() throws CDIException {
+		return name;
+	}
+
+	/**
+	 * @see org.eclipse.cdt.debug.core.cdi.model.ICDIVariable#getTypeName()
+	 */
+	public String getTypeName() throws CDIException {
+		return miVar.getType();
+	}
+
+	/**
+	 * @see org.eclipse.cdt.debug.core.cdi.model.ICDIVariable#getValue()
+	 */
+	public ICDIValue getValue() throws CDIException {
+		if (value == null) {
+			value = new Value(this);
+		}
+		return value;
+	}
+
+	/**
+	 * @see org.eclipse.cdt.debug.core.cdi.model.ICDIVariable#setValue(ICDIValue)
+	 */
+	public void setValue(ICDIValue value) throws CDIException {
+		setValue(value.getValueString());
+	}
+
+	/**
+	 * @see org.eclipse.cdt.debug.core.cdi.model.ICDIVariable#setValue(String)
+	 */
+	public void setValue(String expression) throws CDIException {
+		MISession mi = getCTarget().getCSession().getMISession();
+		CommandFactory factory = mi.getCommandFactory();
+		MIVarAssign var = factory.createMIVarAssign(miVar.getVarName(), expression);
+		try {
+			mi.postCommand(var);
+			MIInfo info = var.getMIInfo();
+			if (info == null) {
+				throw new CDIException("No answer");
+			}
+		} catch (MIException e) {
+			throw new MI2CDIException(e);
+		}
+		
+		// If the assign was succesfull fire a MIVarChangedEvent()
+		MIVarChangedEvent change = new MIVarChangedEvent(var.getToken(), miVar.getVarName(), true);
+		mi.fireEvent(change);
+	}
+
+	/**
+	 * @see org.eclipse.cdt.debug.core.cdi.model.ICDIVariable#isEditable()
+	 */
+	public boolean isEditable() throws CDIException {
+		MISession mi = getCTarget().getCSession().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");
+			}
+			return info.isEditable();
+		} catch (MIException e) {
+			throw new MI2CDIException(e);
+		}
+	}
+
+	/**
+	 * @see org.eclipse.cdt.debug.core.cdi.model.ICDIVariable#setFormat()
+	 */
+	public void setFormat(int format) throws CDIException {
+		int fmt = Format.toMIFormat(format);
+		MISession mi = getCTarget().getCSession().getMISession();
+		CommandFactory factory = mi.getCommandFactory();
+		MIVarSetFormat var = factory.createMIVarSetFormat(miVar.getVarName(), fmt);
+		try {
+			mi.postCommand(var);
+			MIInfo info = var.getMIInfo();
+			if (info == null) {
+				throw new CDIException("No answer");
+			}
+		} catch (MIException e) {
+			throw new MI2CDIException(e);
+		}
+	}
+
+	/**
+	 * @see org.eclipse.cdt.debug.core.cdi.model.ICDIVariable#equals()
+	 */
+	public boolean equals(ICDIVariable var) {
+		if (var instanceof Variable) {
+			Variable variable = (Variable)var;
+			return miVar.getVarName().equals(variable.getMIVar().getVarName());
+		}
+		return super.equals(var);
+	}
+}
Index: src/org/eclipse/cdt/debug/mi/core/cdi/model/Watchpoint.java
===================================================================
RCS file: src/org/eclipse/cdt/debug/mi/core/cdi/model/Watchpoint.java
diff -N src/org/eclipse/cdt/debug/mi/core/cdi/model/Watchpoint.java
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ src/org/eclipse/cdt/debug/mi/core/cdi/model/Watchpoint.java	9 Jan 2003 03:44:02 -0000
@@ -0,0 +1,42 @@
+/*
+ * (c) Copyright QNX Software Systems Ltd. 2002.
+ * All Rights Reserved.
+ *
+ */
+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.ICDIWatchpoint;
+import org.eclipse.cdt.debug.mi.core.cdi.BreakpointManager;
+import org.eclipse.cdt.debug.mi.core.output.MIBreakpoint;
+
+/**
+ */
+public class Watchpoint extends Breakpoint implements ICDIWatchpoint {
+
+	public Watchpoint(BreakpointManager m, MIBreakpoint miBreak) {
+		super(m, miBreak);
+	}
+
+	/**
+	 * @see org.eclipse.cdt.debug.core.cdi.ICDIWatchpoint#getWatchExpression()
+	 */
+	public String getWatchExpression() throws CDIException {
+		return getMIBreakpoint().getWhat();
+	}
+
+	/**
+	 * @see org.eclipse.cdt.debug.core.cdi.ICDIWatchpoint#isReadType()
+	 */
+	public boolean isReadType() {
+		return getMIBreakpoint().isReadWatchpoint() || getMIBreakpoint().isAccessWatchpoint();
+	}
+
+	/**
+	 * @see org.eclipse.cdt.debug.core.cdi.ICDIWatchpoint#isWriteType()
+	 */
+	public boolean isWriteType() {
+		return getMIBreakpoint().isAccessWatchpoint() || getMIBreakpoint().isWriteWatchpoint();
+	}
+
+}



Back to the top