diff --git a/debug/org.eclipse.cdt.debug.mi.core/.classpath b/debug/org.eclipse.cdt.debug.mi.core/.classpath index 4ee934cafad..2821669df5f 100644 --- a/debug/org.eclipse.cdt.debug.mi.core/.classpath +++ b/debug/org.eclipse.cdt.debug.mi.core/.classpath @@ -4,5 +4,6 @@ + diff --git a/debug/org.eclipse.cdt.debug.mi.core/.project b/debug/org.eclipse.cdt.debug.mi.core/.project index 3310fb7e76a..65c92e96b21 100644 --- a/debug/org.eclipse.cdt.debug.mi.core/.project +++ b/debug/org.eclipse.cdt.debug.mi.core/.project @@ -3,6 +3,7 @@ org.eclipse.cdt.debug.mi.core + org.eclipse.cdt.debug.core org.eclipse.core.boot org.eclipse.core.runtime diff --git a/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/MIFormat.java b/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/MIFormat.java new file mode 100644 index 00000000000..13a49349952 --- /dev/null +++ b/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/MIFormat.java @@ -0,0 +1,28 @@ +/* + * (c) Copyright QNX Software Systems Ltd. 2002. + * All Rights Reserved. + */ +package org.eclipse.cdt.debug.mi.core; + +/** + * Help class to specify formats. + */ +public final class MIFormat { + public final static int HEXADECIMAL = 0; + public final static int OCTAL = 1; + public final static int BINARY = 2; + public final static int DECIMAL = 3; + public final static int RAW = 4; + public final static int NATURAL = 5; + + public final static int FLOAT = 10; + public final static int ADDRESS = 11; + public final static int INSTRUCTION = 12; + public final static int CHAR = 13; + public final static int STRING = 14; + public final static int UNSIGNED = 15; + + // no instanciation. + private MIFormat() { + } +} diff --git a/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/MIPlugin.java b/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/MIPlugin.java index ebd7b651f8b..a528ddec425 100644 --- a/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/MIPlugin.java +++ b/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/MIPlugin.java @@ -1,3 +1,7 @@ +/* + * (c) Copyright QNX Software Systems Ltd. 2002. + * All Rights Reserved. + */ package org.eclipse.cdt.debug.mi.core; import java.io.InputStream; @@ -7,7 +11,7 @@ import org.eclipse.core.runtime.IPluginDescriptor; import org.eclipse.core.runtime.Plugin; /** - * + * GDB/MI Plugin. */ public class MIPlugin extends Plugin { diff --git a/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/MISession.java b/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/MISession.java index 13d50255d80..53466758469 100644 --- a/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/MISession.java +++ b/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/MISession.java @@ -1,3 +1,7 @@ +/* + * (c) Copyright QNX Software Systems Ltd. 2002. + * All Rights Reserved. + */ package org.eclipse.cdt.debug.mi.core; import java.io.IOException; @@ -175,6 +179,10 @@ public class MISession extends Observable { } } + public boolean isTerminated() { + return (!txThread.isAlive() || !rxThread.isAlive()); + } + /** * Close the MISession. */ diff --git a/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/Queue.java b/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/Queue.java index 8d93ed56dd6..69b5c1ad65e 100644 --- a/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/Queue.java +++ b/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/Queue.java @@ -1,9 +1,8 @@ -package org.eclipse.cdt.debug.mi.core; - /* * (c) Copyright QNX Software Systems Ltd. 2002. * All Rights Reserved. */ +package org.eclipse.cdt.debug.mi.core; import java.util.Collections; import java.util.LinkedList; @@ -11,6 +10,9 @@ import java.util.List; import org.eclipse.cdt.debug.mi.core.command.Command; +/** + * Simple thread-safe Queue implemetation. + */ public class Queue { private List list; diff --git a/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/RxThread.java b/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/RxThread.java index 5e3ea237d73..66cc5541f55 100644 --- a/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/RxThread.java +++ b/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/RxThread.java @@ -1,3 +1,7 @@ +/* + * (c) Copyright QNX Software Systems Ltd. 2002. + * All Rights Reserved. + */ package org.eclipse.cdt.debug.mi.core; import java.io.BufferedReader; @@ -31,12 +35,9 @@ import org.eclipse.cdt.debug.mi.core.output.MIStreamRecord; import org.eclipse.cdt.debug.mi.core.output.MITargetStreamOutput; import org.eclipse.cdt.debug.mi.core.output.MIValue; -/* - * (c) Copyright QNX Software Systems Ltd. 2002. - * All Rights Reserved. +/** + * Receiving thread of gdb, read the input channel. */ - - public class RxThread extends Thread { final MISession session; diff --git a/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/TxThread.java b/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/TxThread.java index e916b501585..035d727e1d6 100644 --- a/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/TxThread.java +++ b/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/TxThread.java @@ -1,15 +1,19 @@ -package org.eclipse.cdt.debug.mi.core; - /* * (c) Copyright QNX Software Systems Ltd. 2002. * All Rights Reserved. */ + +package org.eclipse.cdt.debug.mi.core; import java.io.IOException; import java.io.OutputStream; import org.eclipse.cdt.debug.mi.core.command.Command; +/** + * Transmission command thread blocks on the command Queue + * and wake cmd are available and push them to gdb out channel. + */ public class TxThread extends Thread { MISession session; diff --git a/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/cdi/BreakpointManager.java b/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/cdi/BreakpointManager.java new file mode 100644 index 00000000000..38ad79bed9d --- /dev/null +++ b/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/cdi/BreakpointManager.java @@ -0,0 +1,110 @@ +/* + *(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.ICBreakpoint; +import org.eclipse.cdt.debug.core.cdi.ICBreakpointManager; +import org.eclipse.cdt.debug.core.cdi.ICCatchEvent; +import org.eclipse.cdt.debug.core.cdi.ICCatchpoint; +import org.eclipse.cdt.debug.core.cdi.ICCondition; +import org.eclipse.cdt.debug.core.cdi.ICLocation; +import org.eclipse.cdt.debug.core.cdi.ICLocationBreakpoint; +import org.eclipse.cdt.debug.core.cdi.ICSession; +import org.eclipse.cdt.debug.core.cdi.ICWatchpoint; +import org.eclipse.cdt.debug.mi.core.MISession; + +/** + * + */ +public class BreakpointManager implements ICBreakpointManager { + + MISession session; + + public BreakpointManager(MISession s) { + session = s; + } + /** + * @see org.eclipse.cdt.debug.core.cdi.ICBreakpointManager#deleteAllBreakpoints() + */ + public void deleteAllBreakpoints() throws CDIException { + } + + /** + * @see org.eclipse.cdt.debug.core.cdi.ICBreakpointManager#deleteBreakpoint(ICBreakpoint) + */ + public void deleteBreakpoint(ICBreakpoint breakpoint) throws CDIException { + } + + /** + * @see org.eclipse.cdt.debug.core.cdi.ICBreakpointManager#deleteBreakpoints(ICBreakpoint[]) + */ + public void deleteBreakpoints(ICBreakpoint[] breakpoints) + throws CDIException { + } + + /** + * @see org.eclipse.cdt.debug.core.cdi.ICBreakpointManager#getBreakpoint(String) + */ + public ICBreakpoint getBreakpoint(String breakpointId) + throws CDIException { + return null; + } + + /** + * @see org.eclipse.cdt.debug.core.cdi.ICBreakpointManager#getBreakpoints() + */ + public ICBreakpoint[] getBreakpoints() throws CDIException { + return null; + } + + /** + * @see org.eclipse.cdt.debug.core.cdi.ICBreakpointManager#setCatchpoint(int, ICCatchEvent, String, ICCondition, boolean) + */ + public ICCatchpoint setCatchpoint( + int type, + ICCatchEvent event, + String expression, + ICCondition condition, + boolean enabled) + throws CDIException { + return null; + } + + /** + * @see org.eclipse.cdt.debug.core.cdi.ICBreakpointManager#setLocationBreakpoint(int, ICLocation, ICCondition, boolean, String) + */ + public ICLocationBreakpoint setLocationBreakpoint( + int type, + ICLocation location, + ICCondition condition, + boolean enabled, + String threadId) + throws CDIException { + return null; + } + + /** + * @see org.eclipse.cdt.debug.core.cdi.ICBreakpointManager#setWatchpoint(int, int, String, ICCondition, boolean) + */ + public ICWatchpoint setWatchpoint( + int type, + int watchType, + String expression, + ICCondition condition, + boolean enabled) + throws CDIException { + return null; + } + + /** + * @see org.eclipse.cdt.debug.core.cdi.ICSessionObject#getSession() + */ + public ICSession getSession() { + return null; + } + +} diff --git a/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/cdi/CSession.java b/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/cdi/CSession.java new file mode 100644 index 00000000000..cfa44e6479d --- /dev/null +++ b/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/cdi/CSession.java @@ -0,0 +1,126 @@ +/* + *(c) Copyright QNX Software Systems Ltd. 2002. + * All Rights Reserved. + * + */ + +package org.eclipse.cdt.debug.mi.core.cdi; + +import java.util.Properties; + +import org.eclipse.cdt.debug.core.cdi.CDIException; +import org.eclipse.cdt.debug.core.cdi.ICBreakpointManager; +import org.eclipse.cdt.debug.core.cdi.ICEventManager; +import org.eclipse.cdt.debug.core.cdi.ICExpressionManager; +import org.eclipse.cdt.debug.core.cdi.ICMemoryManager; +import org.eclipse.cdt.debug.core.cdi.ICSession; +import org.eclipse.cdt.debug.core.cdi.ICSignalManager; +import org.eclipse.cdt.debug.core.cdi.ICSourceManager; +import org.eclipse.cdt.debug.core.cdi.model.ICTarget; +import org.eclipse.cdt.debug.mi.core.MISession; + +/** + * @see org.eclipse.cdt.debug.core.cdi.ICSession + */ +public class CSession implements ICSession { + + Properties props; + MISession session; + BreakpointManager breakpointManager; + EventManager eventManager; + ExpressionManager expressionManager; + MemoryManager memoryManager; + SignalManager signalManager; + SourceManager sourceManager; + CTarget ctarget; + + public CSession(MISession s) { + session = s; + props = new Properties(); + breakpointManager = new BreakpointManager(session); + eventManager = new EventManager(session); + expressionManager = new ExpressionManager(session); + memoryManager = new MemoryManager(session); + signalManager = new SignalManager(session); + sourceManager = new SourceManager(session); + ctarget = new CTarget(session); + } + + /** + * @see org.eclipse.cdt.debug.core.cdi.ICSession#getAttribute(String) + */ + public String getAttribute(String key) { + return props.getProperty(key); + } + + /** + * @see org.eclipse.cdt.debug.core.cdi.ICSession#getBreakpointManager() + */ + public ICBreakpointManager getBreakpointManager() { + return breakpointManager; + } + + /** + * @see org.eclipse.cdt.debug.core.cdi.ICSession#getEventManager() + */ + public ICEventManager getEventManager() { + return eventManager; + } + + /** + * @see org.eclipse.cdt.debug.core.cdi.ICSession#getExpressionManager() + */ + public ICExpressionManager getExpressionManager() { + return expressionManager; + } + + /** + * @see org.eclipse.cdt.debug.core.cdi.ICSession#getMemoryManager() + */ + public ICMemoryManager getMemoryManager() { + return memoryManager; + } + + /** + * @see org.eclipse.cdt.debug.core.cdi.ICSession#getSignalManager() + */ + public ICSignalManager getSignalManager() { + return signalManager; + } + + /** + * @see org.eclipse.cdt.debug.core.cdi.ICSession#getSourceManager() + */ + public ICSourceManager getSourceManager() { + return sourceManager; + } + + /** + * @see org.eclipse.cdt.debug.core.cdi.ICSession#getTargets() + */ + public ICTarget[] getTargets() { + return new ICTarget[]{ctarget}; + } + + /** + * @see org.eclipse.cdt.debug.core.cdi.ICSession#isTerminated() + */ + public boolean isTerminated() { + return session.isTerminated(); + } + + /** + * @see org.eclipse.cdt.debug.core.cdi.ICSession#setAttribute(String, String) + */ + public void setAttribute(String key, String value) { + props.setProperty(key, value); + } + + /** + * @see org.eclipse.cdt.debug.core.cdi.ICSession#terminate() + */ + public void terminate() throws CDIException { + session.terminate(); + } + +} diff --git a/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/cdi/CTarget.java b/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/cdi/CTarget.java new file mode 100644 index 00000000000..a1eaca8de20 --- /dev/null +++ b/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/cdi/CTarget.java @@ -0,0 +1,234 @@ +/* + *(c) Copyright QNX Software Systems Ltd. 2002. + * All Rights Reserved. + * + */ +package org.eclipse.cdt.debug.mi.core.cdi; + +import java.io.InputStream; +import java.io.OutputStream; + +import org.eclipse.cdt.debug.core.cdi.CDIException; +import org.eclipse.cdt.debug.core.cdi.ICSession; +import org.eclipse.cdt.debug.core.cdi.model.ICExpression; +import org.eclipse.cdt.debug.core.cdi.model.ICGlobalVariable; +import org.eclipse.cdt.debug.core.cdi.model.ICMemoryBlock; +import org.eclipse.cdt.debug.core.cdi.model.ICObject; +import org.eclipse.cdt.debug.core.cdi.model.ICRegisterGroup; +import org.eclipse.cdt.debug.core.cdi.model.ICSharedLibrary; +import org.eclipse.cdt.debug.core.cdi.model.ICTarget; +import org.eclipse.cdt.debug.core.cdi.model.ICThread; +import org.eclipse.cdt.debug.mi.core.MISession; + +/** + * @author alain + * + * To change this generated comment edit the template variable "typecomment": + * Window>Preferences>Java>Templates. + * To enable and disable the creation of type comments go to + * Window>Preferences>Java>Code Generation. + */ +public class CTarget implements ICTarget { + + MISession session; + + public CTarget(MISession s) { + session = s; + } + + /** + * @see org.eclipse.cdt.debug.core.cdi.model.ICTarget#disconnect() + */ + public void disconnect() throws CDIException { + } + + /** + * @see org.eclipse.cdt.debug.core.cdi.model.ICTarget#evaluateExpression(ICExpression) + */ + public void evaluateExpression(ICExpression expression) + throws CDIException { + } + + /** + * @see org.eclipse.cdt.debug.core.cdi.model.ICTarget#evaluateExpression(String) + */ + public ICExpression evaluateExpression(String expressionText) + throws CDIException { + return null; + } + + /** + * @see org.eclipse.cdt.debug.core.cdi.model.ICTarget#finish() + */ + public void finish() throws CDIException { + } + + /** + * @see org.eclipse.cdt.debug.core.cdi.model.ICTarget#getCMemoryBlock(long, long) + */ + public ICMemoryBlock getCMemoryBlock(long startAddress, long length) + throws CDIException { + return null; + } + + /** + * @see org.eclipse.cdt.debug.core.cdi.model.ICTarget#getErrorStream() + */ + public InputStream getErrorStream() { + return null; + } + + /** + * @see org.eclipse.cdt.debug.core.cdi.model.ICTarget#getGlobalVariables() + */ + public ICGlobalVariable[] getGlobalVariables() throws CDIException { + return null; + } + + /** + * @see org.eclipse.cdt.debug.core.cdi.model.ICTarget#getInputStream() + */ + public InputStream getInputStream() { + return null; + } + + /** + * @see org.eclipse.cdt.debug.core.cdi.model.ICTarget#getOutputStream() + */ + public OutputStream getOutputStream() { + return null; + } + + /** + * @see org.eclipse.cdt.debug.core.cdi.model.ICTarget#getRegisterGroups() + */ + public ICRegisterGroup[] getRegisterGroups() throws CDIException { + return null; + } + + /** + * @see org.eclipse.cdt.debug.core.cdi.model.ICTarget#getSession() + */ + public ICSession getSession() { + return null; + } + + /** + * @see org.eclipse.cdt.debug.core.cdi.model.ICTarget#getSharedLibraries() + */ + public ICSharedLibrary[] getSharedLibraries() throws CDIException { + return null; + } + + /** + * @see org.eclipse.cdt.debug.core.cdi.model.ICTarget#getThread(String) + */ + public ICThread getThread(String id) throws CDIException { + return null; + } + + /** + * @see org.eclipse.cdt.debug.core.cdi.model.ICTarget#getThreads() + */ + public ICThread[] getThreads() throws CDIException { + return null; + } + + /** + * @see org.eclipse.cdt.debug.core.cdi.model.ICTarget#isDisconnected() + */ + public boolean isDisconnected() { + return false; + } + + /** + * @see org.eclipse.cdt.debug.core.cdi.model.ICTarget#isStepping() + */ + public boolean isStepping() { + return false; + } + + /** + * @see org.eclipse.cdt.debug.core.cdi.model.ICTarget#isSuspended() + */ + public boolean isSuspended() { + return false; + } + + /** + * @see org.eclipse.cdt.debug.core.cdi.model.ICTarget#isTerminated() + */ + public boolean isTerminated() { + return false; + } + + /** + * @see org.eclipse.cdt.debug.core.cdi.model.ICTarget#restart() + */ + public void restart() throws CDIException { + } + + /** + * @see org.eclipse.cdt.debug.core.cdi.model.ICTarget#resume() + */ + public void resume() throws CDIException { + } + + /** + * @see org.eclipse.cdt.debug.core.cdi.model.ICTarget#stepInto() + */ + public void stepInto() throws CDIException { + } + + /** + * @see org.eclipse.cdt.debug.core.cdi.model.ICTarget#stepIntoInstruction() + */ + public void stepIntoInstruction() throws CDIException { + } + + /** + * @see org.eclipse.cdt.debug.core.cdi.model.ICTarget#stepOver() + */ + public void stepOver() throws CDIException { + } + + /** + * @see org.eclipse.cdt.debug.core.cdi.model.ICTarget#stepOverInstruction() + */ + public void stepOverInstruction() throws CDIException { + } + + /** + * @see org.eclipse.cdt.debug.core.cdi.model.ICTarget#suspend() + */ + public void suspend() throws CDIException { + } + + /** + * @see org.eclipse.cdt.debug.core.cdi.model.ICTarget#terminate() + */ + public void terminate() throws CDIException { + } + + /** + * @see org.eclipse.cdt.debug.core.cdi.model.ICObject#getCDITarget() + */ + public ICTarget getCDITarget() { + return null; + } + + /** + * @see org.eclipse.cdt.debug.core.cdi.model.ICObject#getId() + */ + public String getId() { + return null; + } + + /** + * @see org.eclipse.cdt.debug.core.cdi.model.ICObject#getParent() + */ + public ICObject getParent() { + return null; + } + +} diff --git a/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/cdi/EventManager.java b/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/cdi/EventManager.java new file mode 100644 index 00000000000..ff8a8590a67 --- /dev/null +++ b/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/cdi/EventManager.java @@ -0,0 +1,48 @@ +/* + *(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.ICEventManager; +import org.eclipse.cdt.debug.core.cdi.ICSession; +import org.eclipse.cdt.debug.core.cdi.event.ICEventListener; +import org.eclipse.cdt.debug.mi.core.MISession; + +/** + * @author alain + * + * To change this generated comment edit the template variable "typecomment": + * Window>Preferences>Java>Templates. + * To enable and disable the creation oEventManagerts go to + * Window>Preferences>Java>Code Generation. + */ +public class EventManager implements ICEventManager { + + MISession session; + + public EventManager(MISession s) { + session = s; + } + + /** + * @see org.eclipse.cdt.debug.core.cdi.ICEventManager#addEventListener(ICEventListener) + */ + public void addEventListener(ICEventListener listener) { + } + + /** + * @see org.eclipse.cdt.debug.core.cdi.ICEventManager#removeEventListener(ICEventListener) + */ + public void removeEventListener(ICEventListener listener) { + } + + /** + * @see org.eclipse.cdt.debug.core.cdi.ICSessionObject#getSession() + */ + public ICSession getSession() { + return null; + } + +} diff --git a/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/cdi/ExpressionManager.java b/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/cdi/ExpressionManager.java new file mode 100644 index 00000000000..862df16d65a --- /dev/null +++ b/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/cdi/ExpressionManager.java @@ -0,0 +1,71 @@ +/* + *(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.ICExpressionManager; +import org.eclipse.cdt.debug.core.cdi.ICSession; +import org.eclipse.cdt.debug.core.cdi.model.ICExpression; +import org.eclipse.cdt.debug.mi.core.MISession; + +/** + * @author alain + * + * To change this generated comment edit the template variable "typecomment": + * Window>Preferences>Java>Templates. + * To enable and disable the creation of type comments go to + * Window>Preferences>Java>Code Generation. + */ +public class ExpressionManager implements ICExpressionManager { + + MISession session; + + public ExpressionManager(MISession s) { + session = s; + } + + /** + * @see org.eclipse.cdt.debug.core.cdi.ICExpressionManager#addExpression(ICExpression) + */ + public void addExpression(ICExpression expression) throws CDIException { + } + + /** + * @see org.eclipse.cdt.debug.core.cdi.ICExpressionManager#getExpression(String) + */ + public ICExpression getExpression(String expressionId) + throws CDIException { + return null; + } + + /** + * @see org.eclipse.cdt.debug.core.cdi.ICExpressionManager#getExpressions() + */ + public ICExpression[] getExpressions() throws CDIException { + return null; + } + + /** + * @see org.eclipse.cdt.debug.core.cdi.ICExpressionManager#removeExpression(ICExpression) + */ + public void removeExpression(ICExpression expression) throws CDIException { + } + + /** + * @see org.eclipse.cdt.debug.core.cdi.ICExpressionManager#removeExpressions(ICExpression[]) + */ + public void removeExpressions(ICExpression[] expressions) + throws CDIException { + } + + /** + * @see org.eclipse.cdt.debug.core.cdi.ICSessionObject#getSession() + */ + public ICSession getSession() { + return null; + } + +} diff --git a/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/cdi/MemoryManager.java b/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/cdi/MemoryManager.java new file mode 100644 index 00000000000..1e818f8faab --- /dev/null +++ b/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/cdi/MemoryManager.java @@ -0,0 +1,76 @@ +/* + *(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.ICMemoryManager; +import org.eclipse.cdt.debug.core.cdi.ICSession; +import org.eclipse.cdt.debug.core.cdi.model.ICMemoryBlock; +import org.eclipse.cdt.debug.mi.core.MISession; + +/** + * @author alain + * + * To change this generated comment edit the template variable "typecomment": + * Window>Preferences>Java>Templates. + * To enable and disable the creation of type comments go to + * Window>Preferences>Java>Code Generation. + */ +public class MemoryManager implements ICMemoryManager { + + MISession session; + + public MemoryManager(MISession s) { + session = s; + } + + /** + * @see org.eclipse.cdt.debug.core.cdi.ICMemoryManager#addBlock(ICMemoryBlock) + */ + public void addBlock(ICMemoryBlock memoryBlock) throws CDIException { + } + + /** + * @see org.eclipse.cdt.debug.core.cdi.ICMemoryManager#getBlock(String) + */ + public ICMemoryBlock getBlock(String id) throws CDIException { + return null; + } + + /** + * @see org.eclipse.cdt.debug.core.cdi.ICMemoryManager#getBlocks() + */ + public ICMemoryBlock[] getBlocks() throws CDIException { + return null; + } + + /** + * @see org.eclipse.cdt.debug.core.cdi.ICMemoryManager#removeAllBlocks() + */ + public void removeAllBlocks() throws CDIException { + } + + /** + * @see org.eclipse.cdt.debug.core.cdi.ICMemoryManager#removeBlock(ICMemoryBlock) + */ + public void removeBlock(ICMemoryBlock memoryBlock) { + } + + /** + * @see org.eclipse.cdt.debug.core.cdi.ICMemoryManager#removeBlocks(ICMemoryBlock[]) + */ + public void removeBlocks(ICMemoryBlock[] memoryBlocks) + throws CDIException { + } + + /** + * @see org.eclipse.cdt.debug.core.cdi.ICSessionObject#getSession() + */ + public ICSession getSession() { + return null; + } + +} diff --git a/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/cdi/SignalManager.java b/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/cdi/SignalManager.java new file mode 100644 index 00000000000..0a64a5425d1 --- /dev/null +++ b/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/cdi/SignalManager.java @@ -0,0 +1,44 @@ +/* + *(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.ICSession; +import org.eclipse.cdt.debug.core.cdi.ICSignal; +import org.eclipse.cdt.debug.core.cdi.ICSignalManager; +import org.eclipse.cdt.debug.mi.core.MISession; + +/** + * @author alain + * + * To change this generated comment edit the template variable "typecomment": + * Window>Preferences>Java>Templates. + * To enable and disable the creation of type comments go to + * Window>Preferences>Java>Code Generation. + */ +public class SignalManager implements ICSignalManager { + + MISession session; + + public SignalManager(MISession s) { + session = s; + } + + /** + * @see org.eclipse.cdt.debug.core.cdi.ICSignalManager#getSignals() + */ + public ICSignal[] getSignals() throws CDIException { + return null; + } + + /** + * @see org.eclipse.cdt.debug.core.cdi.ICSessionObject#getSession() + */ + public ICSession getSession() { + return null; + } + +} diff --git a/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/cdi/SourceManager.java b/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/cdi/SourceManager.java new file mode 100644 index 00000000000..92936952ae8 --- /dev/null +++ b/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/cdi/SourceManager.java @@ -0,0 +1,57 @@ +/* + *(c) Copyright QNX Software Systems Ltd. 2002. + * All Rights Reserved. + * + */ +package org.eclipse.cdt.debug.mi.core.cdi; + +import java.io.File; + +import org.eclipse.cdt.debug.core.cdi.CDIException; +import org.eclipse.cdt.debug.core.cdi.ICSession; +import org.eclipse.cdt.debug.core.cdi.ICSourceManager; +import org.eclipse.cdt.debug.mi.core.MISession; + +/** + * @author alain + * + * To change this generated comment edit the template variable "typecomment": + * Window>Preferences>Java>Templates. + * To enable and disable the creation of type comments go to + * Window>Preferences>Java>Code Generation. + */ +public class SourceManager implements ICSourceManager { + + MISession session; + + public SourceManager(MISession s) { + session = s; + } + + /** + * @see org.eclipse.cdt.debug.core.cdi.ICSourceManager#getDirectories() + */ + public File[] getDirectories() throws CDIException { + return null; + } + + /** + * @see org.eclipse.cdt.debug.core.cdi.ICSourceManager#reset() + */ + public void reset() throws CDIException { + } + + /** + * @see org.eclipse.cdt.debug.core.cdi.ICSourceManager#set(File[]) + */ + public void set(File[] directories) throws CDIException { + } + + /** + * @see org.eclipse.cdt.debug.core.cdi.ICSessionObject#getSession() + */ + public ICSession getSession() { + return null; + } + +} diff --git a/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/command/CLICommand.java b/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/command/CLICommand.java index a2e7e100bca..ce5025bbce9 100644 --- a/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/command/CLICommand.java +++ b/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/command/CLICommand.java @@ -10,7 +10,6 @@ import org.eclipse.cdt.debug.mi.core.output.MIInfo; import org.eclipse.cdt.debug.mi.core.output.MIOutput; /** - * * Represents a CLI command. */ public class CLICommand extends Command @@ -28,6 +27,8 @@ public class CLICommand extends Command * @return the text representation of this command */ public String toString(){ - return operation; + if (operation.endsWith("\n")) + return operation; + return operation + "\n"; } } diff --git a/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/command/Command.java b/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/command/Command.java index 7de4730990d..c068aeb4658 100644 --- a/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/command/Command.java +++ b/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/command/Command.java @@ -11,11 +11,7 @@ import org.eclipse.cdt.debug.mi.core.output.MIInfo; import org.eclipse.cdt.debug.mi.core.output.MIOutput; /** - * * A base class for all mi requests. - * - * @author Mikhail Khodjaiants - * @since Jul 11, 2002 */ public abstract class Command { diff --git a/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/command/CommandFactory.java b/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/command/CommandFactory.java index cb301e52104..94975cd0acf 100644 --- a/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/command/CommandFactory.java +++ b/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/command/CommandFactory.java @@ -1,9 +1,12 @@ +/* + * (c) Copyright QNX Software Systems Ltd. 2002. + * All Rights Reserved. + */ + package org.eclipse.cdt.debug.mi.core.command; - - /** - * + * Factory to create GDB commands. */ public class CommandFactory { @@ -68,8 +71,8 @@ public class CommandFactory { return new MIDataListRegisterValues(fmt, regno); } - public MIDataReadMemory createMIDataReadMemory(int offset, String address, - String wordFormat, int wordSize, + public MIDataReadMemory createMIDataReadMemory(long offset, String address, + int wordFormat, int wordSize, int rows, int cols, Character asChar) { return new MIDataReadMemory(offset, address, wordFormat, wordSize, rows, cols, asChar); @@ -147,6 +150,14 @@ public class CommandFactory { return new MIGDBExit(); } + public MIGDBSet createMIGDBSet(String[] params) { + return new MIGDBSet(params); + } + + public MIGDBShow createMIGDBShow(String[] params) { + return new MIGDBShow(params); + } + public MIStackInfoDepth createMIStackInfoDepth(int depth) { return new MIStackInfoDepth(depth); } diff --git a/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/command/MIBreakCondition.java b/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/command/MIBreakCondition.java index 90c04ebbfac..924bee8ddff 100644 --- a/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/command/MIBreakCondition.java +++ b/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/command/MIBreakCondition.java @@ -8,10 +8,11 @@ package org.eclipse.cdt.debug.mi.core.command; /** * - * -break-after NUMBER COUNT - * The breakpoint number NUMBER is not in effect until it has been hit - * COUNT times. * + * -break-condition NUMBER EXPR + * + * Breakpoint NUMBER will stop the program only if the condition in + * EXPR is true. The condition becomes part of the `-break-list' output * Result: * ^done */ diff --git a/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/command/MIDataListRegisterValues.java b/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/command/MIDataListRegisterValues.java index f058835ab6a..9ece855fedd 100644 --- a/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/command/MIDataListRegisterValues.java +++ b/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/command/MIDataListRegisterValues.java @@ -7,6 +7,7 @@ package org.eclipse.cdt.debug.mi.core.command; import org.eclipse.cdt.debug.mi.core.MIException; +import org.eclipse.cdt.debug.mi.core.MIFormat; 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.MIOutput; @@ -24,13 +25,6 @@ import org.eclipse.cdt.debug.mi.core.output.MIOutput; */ public class MIDataListRegisterValues extends MICommand { - public final static int HEXADECIMAL = 0; - public final static int OCTAL = 1; - public final static int BINARY = 2; - public final static int DECIMAL = 3; - public final static int RAW = 4; - public final static int NATURAL = 5; - public MIDataListRegisterValues(int fmt) { this(fmt, null); } @@ -40,27 +34,30 @@ public class MIDataListRegisterValues extends MICommand String format = "x"; switch (fmt) { - case NATURAL: - format = "N"; + case MIFormat.NATURAL: + format = "N"; break; - case RAW: - format = "r"; + + case MIFormat.RAW: + format = "r"; break; - case DECIMAL: - format = "d"; + + case MIFormat.DECIMAL: + format = "d"; break; - case BINARY: - format = "t"; + + case MIFormat.BINARY: + format = "t"; break; - case OCTAL: - format = "o"; + + case MIFormat.OCTAL: + format = "o"; break; - /* - case HEXADECIMAL: - default: - format = "x"; + + case MIFormat.HEXADECIMAL: + default: + format = "x"; break; - */ } setOptions(new String[]{format}); diff --git a/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/command/MIDataReadMemory.java b/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/command/MIDataReadMemory.java index df23da9af84..db85b3fb5da 100644 --- a/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/command/MIDataReadMemory.java +++ b/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/command/MIDataReadMemory.java @@ -7,6 +7,7 @@ package org.eclipse.cdt.debug.mi.core.command; import org.eclipse.cdt.debug.mi.core.MIException; +import org.eclipse.cdt.debug.mi.core.MIFormat; import org.eclipse.cdt.debug.mi.core.output.MIDataReadMemoryInfo; import org.eclipse.cdt.debug.mi.core.output.MIInfo; import org.eclipse.cdt.debug.mi.core.output.MIOutput; @@ -49,22 +50,81 @@ import org.eclipse.cdt.debug.mi.core.output.MIOutput; * * */ -public class MIDataReadMemory extends MICommand -{ +public class MIDataReadMemory extends MICommand { - public MIDataReadMemory (int offset, String address, - String wordFormat, int wordSize, - int rows, int cols, Character asChar) { + public MIDataReadMemory( + long offset, + String address, + int wordFormat, + int wordSize, + int rows, + int cols, + Character asChar) { super("-data-read-memory"); if (offset != 0) { - setOptions(new String[]{"-o", Integer.toString(offset)}); + setOptions(new String[] { "-o", Long.toString(offset)}); } + + String format = "x"; + switch (wordFormat) { + case MIFormat.UNSIGNED : + format = "u"; + break; + + case MIFormat.FLOAT : + format = "f"; + break; + + case MIFormat.ADDRESS : + format = "a"; + break; + + case MIFormat.INSTRUCTION : + format = "i"; + break; + + case MIFormat.CHAR : + format = "c"; + break; + + case MIFormat.STRING : + format = "s"; + break; + + case MIFormat.DECIMAL : + format = "d"; + break; + + case MIFormat.BINARY : + format = "t"; + break; + + case MIFormat.OCTAL : + format = "o"; + break; + + case MIFormat.HEXADECIMAL : + default : + format = "x"; + break; + } + if (asChar == null) { - setParameters(new String[]{address, wordFormat, Integer.toString(wordSize), - Integer.toString(rows), Integer.toString(cols)}); + setParameters( + new String[] { + address, + format, + Integer.toString(wordSize), + Integer.toString(rows), + Integer.toString(cols)}); } else { - setParameters(new String[]{address, wordFormat, Integer.toString(wordSize), - Integer.toString(rows), Integer.toString(cols), + setParameters( + new String[] { + address, + format, + Integer.toString(wordSize), + Integer.toString(rows), + Integer.toString(cols), asChar.toString()}); } } diff --git a/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/command/MIEnvironmentPWD.java b/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/command/MIEnvironmentPWD.java index 3c68b3d7adb..bc586ca3328 100644 --- a/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/command/MIEnvironmentPWD.java +++ b/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/command/MIEnvironmentPWD.java @@ -6,6 +6,11 @@ package org.eclipse.cdt.debug.mi.core.command; +import org.eclipse.cdt.debug.mi.core.MIException; +import org.eclipse.cdt.debug.mi.core.output.MIEnvironmentPWDInfo; +import org.eclipse.cdt.debug.mi.core.output.MIInfo; +import org.eclipse.cdt.debug.mi.core.output.MIOutput; + /** * * -environment-pwd @@ -18,4 +23,17 @@ public class MIEnvironmentPWD extends MICommand public MIEnvironmentPWD() { super("-environment-pwd"); } + + public MIInfo getMIInfo() throws MIException { + MIInfo info = null; + MIOutput out = getMIOutput(); + if (out != null) { + info = new MIEnvironmentPWDInfo(out); + if (info.isError()) { + throw new MIException(info.getErrorMsg()); + } + } + return info; + } + } diff --git a/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/command/MIExecStepInstruction.java b/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/command/MIExecStepInstruction.java index 8f225c60bfc..ec3454051da 100644 --- a/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/command/MIExecStepInstruction.java +++ b/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/command/MIExecStepInstruction.java @@ -26,17 +26,4 @@ public class MIExecStepInstruction extends MICommand public MIExecStepInstruction() { super("-exec-step-instruction"); } -/* - public MIInfo getMIInfo() throws MIException { - MIInfo info = null; - MIOutput out = getMIOutput(); - if (out != null) { - info = new MIExecStepInstructionInfo(out); - if (info.isError()) { - throw new MIException(info.getErrorMsg()); - } - } - return info; - } -*/ } diff --git a/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/command/MIGDBSet.java b/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/command/MIGDBSet.java new file mode 100644 index 00000000000..4ed52be2af2 --- /dev/null +++ b/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/command/MIGDBSet.java @@ -0,0 +1,21 @@ +/* + *(c) Copyright QNX Software Systems Ltd. 2002. + * All Rights Reserved. + * + */ + +package org.eclipse.cdt.debug.mi.core.command; + +/** + * + * -gdb-set + * + * Set an internal GDB variable. + * + */ +public class MIGDBSet extends MICommand +{ + public MIGDBSet(String[] params) { + super("-gdb-set", params); + } +} diff --git a/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/command/MIGDBShow.java b/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/command/MIGDBShow.java new file mode 100644 index 00000000000..8e09c1e4d95 --- /dev/null +++ b/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/command/MIGDBShow.java @@ -0,0 +1,38 @@ +/* + *(c) Copyright QNX Software Systems Ltd. 2002. + * All Rights Reserved. + * + */ + +package org.eclipse.cdt.debug.mi.core.command; + +import org.eclipse.cdt.debug.mi.core.MIException; +import org.eclipse.cdt.debug.mi.core.output.MIGDBShowInfo; +import org.eclipse.cdt.debug.mi.core.output.MIInfo; +import org.eclipse.cdt.debug.mi.core.output.MIOutput; + +/** + * + * -gdb-show + * + * Show the current value of a GDB variable. + * + */ +public class MIGDBShow extends MICommand +{ + public MIGDBShow(String[] params) { + super("-gdb-show", params); + } + + public MIInfo getMIInfo() throws MIException { + MIInfo info = null; + MIOutput out = getMIOutput(); + if (out != null) { + info = new MIGDBShowInfo(out); + if (info.isError()) { + throw new MIException(info.getErrorMsg()); + } + } + return info; + } +} diff --git a/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/command/MIVarSetFormat.java b/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/command/MIVarSetFormat.java index 4221d0102e6..6d8c477236b 100644 --- a/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/command/MIVarSetFormat.java +++ b/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/command/MIVarSetFormat.java @@ -6,6 +6,8 @@ package org.eclipse.cdt.debug.mi.core.command; +import org.eclipse.cdt.debug.mi.core.MIFormat; + /** * * -var-set-format NAME FORMAT-SPEC @@ -21,33 +23,27 @@ package org.eclipse.cdt.debug.mi.core.command; */ public class MIVarSetFormat extends MICommand { - public final static int HEXADECIMAL = 0; - public final static int OCTAL = 1; - public final static int BINARY = 2; - public final static int DECIMAL = 3; -// public final static int RAW = 4; - public final static int NATURAL = 5; - public MIVarSetFormat(String name, int fmt) { super("-var-set-format"); String format = "hexadecimal"; switch (fmt) { - case NATURAL: + case MIFormat.NATURAL: format = "natural"; break; - case DECIMAL: + case MIFormat.DECIMAL: format = "decimal"; break; - case BINARY: + case MIFormat.BINARY: format = "binary"; break; - case OCTAL: + case MIFormat.OCTAL: format = "octal"; break; /* - case HEXADECIMAL: + case MIFormat.HEXADECIMAL: + case MIFormat.RAW: default: - format = "x"; + format = "hexadecimal"; break; */ } diff --git a/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/output/MIArg.java b/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/output/MIArg.java index 80efac5c074..c545e08e880 100644 --- a/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/output/MIArg.java +++ b/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/output/MIArg.java @@ -1,11 +1,16 @@ +/* + * (c) Copyright QNX Software Systems Ltd. 2002. + * All Rights Reserved. + */ + package org.eclipse.cdt.debug.mi.core.output; import java.util.ArrayList; import java.util.List; - /** + * Represents a set name=value. */ public class MIArg { String name; diff --git a/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/output/MIAsm.java b/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/output/MIAsm.java index a1bcdf1eb3b..9277a47363c 100644 --- a/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/output/MIAsm.java +++ b/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/output/MIAsm.java @@ -1,8 +1,11 @@ +/* + * (c) Copyright QNX Software Systems Ltd. 2002. + * All Rights Reserved. + */ package org.eclipse.cdt.debug.mi.core.output; - - /** + * Represent a GDB Tuple MI assembly response. */ public class MIAsm { long address; diff --git a/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/output/MIAsyncRecord.java b/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/output/MIAsyncRecord.java index ec021ea11d2..277d61bfd8b 100644 --- a/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/output/MIAsyncRecord.java +++ b/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/output/MIAsyncRecord.java @@ -1,6 +1,12 @@ +/* + * (c) Copyright QNX Software Systems Ltd. 2002. + * All Rights Reserved. + */ + package org.eclipse.cdt.debug.mi.core.output; /** + * base Abstract class for the OOB stream MI responses. */ public abstract class MIAsyncRecord extends MIOOBRecord { diff --git a/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/output/MIBreakInsertInfo.java b/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/output/MIBreakInsertInfo.java index 06045e14960..9ce860a80ab 100644 --- a/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/output/MIBreakInsertInfo.java +++ b/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/output/MIBreakInsertInfo.java @@ -1,10 +1,14 @@ +/* + * (c) Copyright QNX Software Systems Ltd. 2002. + * All Rights Reserved. + */ + package org.eclipse.cdt.debug.mi.core.output; import java.util.ArrayList; import java.util.List; - /** * -break-insert main * ^done,bkpt={number="1",type="breakpoint",disp="keep",enabled="y",addr="0x08048468",func="main",file="hello.c",line="4",times="0"} diff --git a/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/output/MIBreakListInfo.java b/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/output/MIBreakListInfo.java index a765ac3d2b0..aa4e898a961 100644 --- a/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/output/MIBreakListInfo.java +++ b/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/output/MIBreakListInfo.java @@ -1,10 +1,13 @@ +/* + * (c) Copyright QNX Software Systems Ltd. 2002. + * All Rights Reserved. + */ package org.eclipse.cdt.debug.mi.core.output; import java.util.ArrayList; import java.util.List; - /** * A -break-list result-record is the form: *
diff --git a/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/output/MIBreakPoint.java b/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/output/MIBreakPoint.java
index f37633e9e44..6f5aaf16b93 100644
--- a/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/output/MIBreakPoint.java
+++ b/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/output/MIBreakPoint.java
@@ -1,6 +1,12 @@
+/*
+ * (c) Copyright QNX Software Systems Ltd. 2002.
+ * All Rights Reserved.
+ */
+
 package org.eclipse.cdt.debug.mi.core.output;
 
 /**
+ * Contain info about the GDB/MI breakpoint info.
  */
 public class MIBreakPoint {
 
diff --git a/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/output/MIBreakWatchInfo.java b/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/output/MIBreakWatchInfo.java
index 2d6309f2769..601913ecca9 100644
--- a/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/output/MIBreakWatchInfo.java
+++ b/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/output/MIBreakWatchInfo.java
@@ -1,3 +1,8 @@
+/*
+ * (c) Copyright QNX Software Systems Ltd. 2002.
+ * All Rights Reserved.
+ */
+
 package org.eclipse.cdt.debug.mi.core.output;
 
 import java.util.ArrayList;
@@ -6,7 +11,6 @@ import java.util.List;
 import org.eclipse.cdt.debug.mi.core.command.MIBreakInsert;
 
 
-
 /**
  * -break-watch buf
  * ^done,wpt={number="2",exp="buf"}
diff --git a/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/output/MIChange.java b/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/output/MIChange.java
new file mode 100644
index 00000000000..a82a664ce5b
--- /dev/null
+++ b/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/output/MIChange.java
@@ -0,0 +1,35 @@
+/*
+ * (c) Copyright QNX Software Systems Ltd. 2002.
+ * All Rights Reserved.
+ */
+package org.eclipse.cdt.debug.mi.core.output;
+
+/**
+ * GDB/MI var-update.
+ */
+
+public class MIChange {
+	String name;
+	boolean inScope;
+	boolean changed;
+
+	public MIChange(String n) {
+		name = n;
+	}
+
+	public boolean isInScope() {
+		return inScope;
+	}
+
+	public boolean isChanged() {
+		return changed;
+	}
+
+	public void setInScope(boolean b) {
+		inScope = b;
+	}
+
+	public void setChanged(boolean c) {
+		changed = c;
+	}
+}
diff --git a/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/output/MIChild.java b/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/output/MIChild.java
new file mode 100644
index 00000000000..714ed24ac72
--- /dev/null
+++ b/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/output/MIChild.java
@@ -0,0 +1,58 @@
+/*
+ * (c) Copyright QNX Software Systems Ltd. 2002.
+ * All Rights Reserved.
+ */
+package org.eclipse.cdt.debug.mi.core.output;
+
+/**
+ * GDB/MI var-list-children
+ * -var-list-children var2
+ *  ^done,numchild="6",children={child={name="var2.0",exp="0",numchild="0",type="char"},child={name="var2.1",exp="1",numchild="0",type="char"},child={name="var2.2",exp="2",numchild="0",type="char"},child={name="var2.3",exp="3",numchild="0",type="char"},child={name="var2.4",exp="4",numchild="0",type="char"},child={name="var2.5",exp="5",numchild="0",type="char"}}
+ *
+ */
+public class MIChild {
+
+	String name = "";
+	String type = "";
+	int numchild;
+
+
+	public MIChild(MITuple tuple) {
+		parse(tuple);
+	}
+
+	public String getName() {
+		return name;
+	}
+
+	public String getType() {
+		return type;
+	}
+
+	public int getnumChild() {
+		return numchild;
+	}
+
+	void parse(MITuple tuple) {
+		MIResult[] results = tuple.getMIResults();
+		for (int i = 0; i < results.length; i++) {
+			String var = results[i].getVariable();
+			MIValue value = results[i].getMIValue();
+			String str = "";
+			if (value != null && value instanceof MIConst) {
+				str = ((MIConst)value).getCString();
+			}
+
+			if (var.equals("numchild")) {
+				try {
+					numchild = Integer.parseInt(str.trim());
+				} catch (NumberFormatException e) {
+				}
+			} else if (var.equals("name")) {
+				name = str;
+			} else if (var.equals("type")) {
+				type = str;
+			}
+		}
+	}
+}
diff --git a/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/output/MIConsoleStreamOutput.java b/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/output/MIConsoleStreamOutput.java
index 022d8c7e465..8f6896fb032 100644
--- a/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/output/MIConsoleStreamOutput.java
+++ b/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/output/MIConsoleStreamOutput.java
@@ -1,6 +1,12 @@
+/*
+ * (c) Copyright QNX Software Systems Ltd. 2002.
+ * All Rights Reserved.
+ */
+
 package org.eclipse.cdt.debug.mi.core.output;
 
 /**
+ * @see MIStreamRecord
  */
 public class MIConsoleStreamOutput extends MIStreamRecord {
 }
diff --git a/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/output/MIConst.java b/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/output/MIConst.java
index f9a519f353d..370c80fb211 100644
--- a/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/output/MIConst.java
+++ b/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/output/MIConst.java
@@ -1,6 +1,12 @@
+/*
+ * (c) Copyright QNX Software Systems Ltd. 2002.
+ * All Rights Reserved.
+ */
+
 package org.eclipse.cdt.debug.mi.core.output;
 
 /**
+ * GDB/MI const value represents a ios-c string.
  */
 public class MIConst extends MIValue {
 	String cstring = "";
diff --git a/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/output/MIDataDisassembleInfo.java b/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/output/MIDataDisassembleInfo.java
index ec9a4a2f560..237f96644a1 100644
--- a/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/output/MIDataDisassembleInfo.java
+++ b/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/output/MIDataDisassembleInfo.java
@@ -1,9 +1,15 @@
+/*
+ * (c) Copyright QNX Software Systems Ltd. 2002.
+ * All Rights Reserved.
+ */
+
 package org.eclipse.cdt.debug.mi.core.output;
 
 import java.util.ArrayList;
 import java.util.List;
 
 /**
+ * GDB/MI disassemble parsing response.
  */
 public class MIDataDisassembleInfo extends MIInfo {
 
diff --git a/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/output/MIDataEvaluateExpressionInfo.java b/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/output/MIDataEvaluateExpressionInfo.java
index 9a3f8c7321c..ecb262a1c6c 100644
--- a/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/output/MIDataEvaluateExpressionInfo.java
+++ b/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/output/MIDataEvaluateExpressionInfo.java
@@ -1,8 +1,13 @@
+/*
+ * (c) Copyright QNX Software Systems Ltd. 2002.
+ * All Rights Reserved.
+ */
+
 package org.eclipse.cdt.debug.mi.core.output;
 
 
-
 /**
+ * GDB/MI Data evalue expression parsing response.
  */
 public class MIDataEvaluateExpressionInfo extends MIInfo{
 
diff --git a/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/output/MIDataListChangedRegistersInfo.java b/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/output/MIDataListChangedRegistersInfo.java
index 81cc44eddd5..e28597d356c 100644
--- a/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/output/MIDataListChangedRegistersInfo.java
+++ b/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/output/MIDataListChangedRegistersInfo.java
@@ -1,9 +1,14 @@
+/*
+ * (c) Copyright QNX Software Systems Ltd. 2002.
+ * All Rights Reserved.
+ */
 package org.eclipse.cdt.debug.mi.core.output;
 
 import java.util.ArrayList;
 import java.util.List;
 
 /**
+ * GDB/MI data list changed registers response parsing.
  */
 public class MIDataListChangedRegistersInfo extends MIInfo {
 
diff --git a/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/output/MIDataListRegisterNamesInfo.java b/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/output/MIDataListRegisterNamesInfo.java
index 1b6e4945508..1fa4eb6b0d6 100644
--- a/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/output/MIDataListRegisterNamesInfo.java
+++ b/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/output/MIDataListRegisterNamesInfo.java
@@ -1,9 +1,15 @@
+/*
+ * (c) Copyright QNX Software Systems Ltd. 2002.
+ * All Rights Reserved.
+ */
+
 package org.eclipse.cdt.debug.mi.core.output;
 
 import java.util.ArrayList;
 import java.util.List;
 
 /**
+ * GDB/MI data list regiter names response extraction.
  */
 public class MIDataListRegisterNamesInfo extends MIInfo {
 
diff --git a/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/output/MIDataListRegisterValuesInfo.java b/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/output/MIDataListRegisterValuesInfo.java
index bbfb2fccd91..33223b9de8a 100644
--- a/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/output/MIDataListRegisterValuesInfo.java
+++ b/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/output/MIDataListRegisterValuesInfo.java
@@ -1,8 +1,12 @@
+/*
+ * (c) Copyright QNX Software Systems Ltd. 2002.
+ * All Rights Reserved.
+ */
+
 package org.eclipse.cdt.debug.mi.core.output;
 
-
-
 /**
+ * GDB/MI data list register values extraction.
  */
 public class MIDataListRegisterValuesInfo extends MIInfo {
 
diff --git a/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/output/MIDataReadMemoryInfo.java b/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/output/MIDataReadMemoryInfo.java
index e66fdc760ca..343d5fc9969 100644
--- a/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/output/MIDataReadMemoryInfo.java
+++ b/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/output/MIDataReadMemoryInfo.java
@@ -1,11 +1,15 @@
+/*
+ * (c) Copyright QNX Software Systems Ltd. 2002.
+ * All Rights Reserved.
+ */
+
 package org.eclipse.cdt.debug.mi.core.output;
 
 import java.util.ArrayList;
 import java.util.List;
 
-
-
 /**
+ * GDB/MI data read memor info extraction.
  */
 public class MIDataReadMemoryInfo extends MIInfo {
 
diff --git a/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/output/MIEnvironmentPWDInfo.java b/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/output/MIEnvironmentPWDInfo.java
index 9d3912e6c78..9a5ae3107b8 100644
--- a/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/output/MIEnvironmentPWDInfo.java
+++ b/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/output/MIEnvironmentPWDInfo.java
@@ -1,16 +1,50 @@
+/*
+ * (c) Copyright QNX Software Systems Ltd. 2002.
+ * All Rights Reserved.
+ */
+
 package org.eclipse.cdt.debug.mi.core.output;
 
+import java.util.ArrayList;
+import java.util.List;
 
 
 /**
+ * GDB/MI environment PWD info extraction.
  */
 public class MIEnvironmentPWDInfo extends MIInfo {
 
+	String pwd = "";
+
 	public MIEnvironmentPWDInfo(MIOutput o) {
 		super(o);
+		parse();
 	}
 
 	public String getWorkingDirectory() {
-		return ".";
+		return pwd;
 	}
+
+	void parse() {
+		if (isDone()) {
+			MIOutput out = getMIOutput();
+			MIOOBRecord[] oobs = out.getMIOOBRecords();
+			for (int i = 0; i < oobs.length; i++) {
+				if (oobs[i] instanceof MIConsoleStreamOutput) {
+					MIStreamRecord cons = (MIStreamRecord)oobs[i];
+					String str = cons.getString();
+					if (str.startsWith("Working directory")) {
+						int len = "Working directory".length();
+						str = str.substring(len).trim();
+						len = str.indexOf('.');
+						if (len != -1) {
+							str = str.substring(0, len);
+						}
+						pwd = str;
+					}
+				}
+			}
+		}
+	}
+
 }
diff --git a/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/output/MIExecAsyncOutput.java b/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/output/MIExecAsyncOutput.java
index cef0f3c4e9c..e08c6454780 100644
--- a/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/output/MIExecAsyncOutput.java
+++ b/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/output/MIExecAsyncOutput.java
@@ -1,6 +1,11 @@
+/*
+ * (c) Copyright QNX Software Systems Ltd. 2002.
+ * All Rights Reserved.
+ */
 package org.eclipse.cdt.debug.mi.core.output;
 
 /**
+ * @see MIAsyncRecord
  */
 public class MIExecAsyncOutput extends MIAsyncRecord {
 }
diff --git a/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/output/MIFrame.java b/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/output/MIFrame.java
index 79474b8c0be..7e1e22ddcce 100644
--- a/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/output/MIFrame.java
+++ b/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/output/MIFrame.java
@@ -1,6 +1,11 @@
+/*
+ * (c) Copyright QNX Software Systems Ltd. 2002.
+ * All Rights Reserved.
+ */
 package org.eclipse.cdt.debug.mi.core.output;
 
 /**
+ * GDB/MI Frame tuple parsing.
  */
 public class MIFrame {
 
diff --git a/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/output/MIGDBShowInfo.java b/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/output/MIGDBShowInfo.java
new file mode 100644
index 00000000000..22c0f0902e3
--- /dev/null
+++ b/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/output/MIGDBShowInfo.java
@@ -0,0 +1,45 @@
+/*
+ * (c) Copyright QNX Software Systems Ltd. 2002.
+ * All Rights Reserved.
+ */
+package org.eclipse.cdt.debug.mi.core.output;
+
+import java.util.ArrayList;
+import java.util.List;
+
+
+/**
+ * GDB/MI show parsing.
+ */
+public class MIGDBShowInfo extends MIInfo {
+
+	String value = "";
+
+	public MIGDBShowInfo(MIOutput o) {
+		super(o);
+		parse();
+	}
+
+	public String getValue() {
+		return value;
+	}
+
+	void parse() {
+		if (isDone()) {
+			MIOutput out = getMIOutput();
+			MIResultRecord rr = out.getMIResultRecord();
+			if (rr != null) {
+				MIResult[] results =  rr.getMIResults();
+				for (int i = 0; i < results.length; i++) {
+					String var = results[i].getVariable();
+					if (var.equals("value")) {
+						MIValue val = results[i].getMIValue();
+						if (val instanceof MIConst) {
+							value = ((MIConst)val).getString();
+						}
+					}
+				}
+			}
+		}
+	}
+}
diff --git a/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/output/MIInfo.java b/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/output/MIInfo.java
index 49c80b362ba..eb275e63048 100644
--- a/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/output/MIInfo.java
+++ b/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/output/MIInfo.java
@@ -1,8 +1,11 @@
+/*
+ * (c) Copyright QNX Software Systems Ltd. 2002.
+ * All Rights Reserved.
+ */
 package org.eclipse.cdt.debug.mi.core.output;
 
-
-
 /**
+ * Base class for teh parsing/info GDB/MI classes.
  */
 public class MIInfo {
 
diff --git a/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/output/MIList.java b/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/output/MIList.java
index fc605ddfaea..54c84c21fae 100644
--- a/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/output/MIList.java
+++ b/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/output/MIList.java
@@ -1,6 +1,11 @@
+/*
+ * (c) Copyright QNX Software Systems Ltd. 2002.
+ * All Rights Reserved.
+ */
 package org.eclipse.cdt.debug.mi.core.output;
 
 /**
+ * GDB/MI list semantic.
  */
 public class MIList extends MIValue {
 
diff --git a/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/output/MILogStreamOutput.java b/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/output/MILogStreamOutput.java
index 698634e8be1..5430058b300 100644
--- a/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/output/MILogStreamOutput.java
+++ b/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/output/MILogStreamOutput.java
@@ -1,6 +1,11 @@
+/*
+ * (c) Copyright QNX Software Systems Ltd. 2002.
+ * All Rights Reserved.
+ */
 package org.eclipse.cdt.debug.mi.core.output;
 
 /**
+ * @see MIStreamRecord
  */
 public class MILogStreamOutput extends MIStreamRecord {
 
diff --git a/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/output/MIMemory.java b/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/output/MIMemory.java
index 289e7075033..f3b7d02150e 100644
--- a/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/output/MIMemory.java
+++ b/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/output/MIMemory.java
@@ -1,6 +1,11 @@
+/*
+ * (c) Copyright QNX Software Systems Ltd. 2002.
+ * All Rights Reserved.
+ */
 package org.eclipse.cdt.debug.mi.core.output;
 
 /**
+ * GDB/MI memory parsing.
  */
 public class MIMemory {
 	long addr;
diff --git a/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/output/MINotifyAsyncOutput.java b/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/output/MINotifyAsyncOutput.java
index 99dd4c44be5..f050da04ae7 100644
--- a/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/output/MINotifyAsyncOutput.java
+++ b/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/output/MINotifyAsyncOutput.java
@@ -1,7 +1,11 @@
+/*
+ * (c) Copyright QNX Software Systems Ltd. 2002.
+ * All Rights Reserved.
+ */
 package org.eclipse.cdt.debug.mi.core.output;
 
 /**
- *
+ * @see MIAsyncRecord
  */
 public class MINotifyAsyncOutput extends MIAsyncRecord {
 }
diff --git a/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/output/MIOOBRecord.java b/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/output/MIOOBRecord.java
index 24837d588ab..f6b4cba9160 100644
--- a/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/output/MIOOBRecord.java
+++ b/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/output/MIOOBRecord.java
@@ -1,7 +1,11 @@
+/*
+ * (c) Copyright QNX Software Systems Ltd. 2002.
+ * All Rights Reserved.
+ */
 package org.eclipse.cdt.debug.mi.core.output;
 
 /**
- *
+ * @see MIOOBRecord
  */
 public abstract class MIOOBRecord {
 }
diff --git a/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/output/MIOutput.java b/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/output/MIOutput.java
index 0870dbf61e2..ff55dfe1265 100644
--- a/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/output/MIOutput.java
+++ b/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/output/MIOutput.java
@@ -1,6 +1,11 @@
+/*
+ * (c) Copyright QNX Software Systems Ltd. 2002.
+ * All Rights Reserved.
+ */
 package org.eclipse.cdt.debug.mi.core.output;
 
 /**
+ * GDB/MI response.
  */
 public class MIOutput {
 
diff --git a/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/output/MIParser.java b/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/output/MIParser.java
index 66e10954c30..d57c8209ce5 100644
--- a/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/output/MIParser.java
+++ b/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/output/MIParser.java
@@ -1,3 +1,7 @@
+/*
+ * (c) Copyright QNX Software Systems Ltd. 2002.
+ * All Rights Reserved.
+ */
 package org.eclipse.cdt.debug.mi.core.output;
 
 import java.util.ArrayList;
diff --git a/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/output/MIRegisterValue.java b/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/output/MIRegisterValue.java
index fcc7b929c4a..d1d0c8e7641 100644
--- a/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/output/MIRegisterValue.java
+++ b/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/output/MIRegisterValue.java
@@ -1,3 +1,7 @@
+/*
+ * (c) Copyright QNX Software Systems Ltd. 2002.
+ * All Rights Reserved.
+ */
 package org.eclipse.cdt.debug.mi.core.output;
 
 import java.util.ArrayList;
@@ -6,6 +10,7 @@ import java.util.List;
 
 
 /**
+ * GDB/MI register response parsing.
  */
 public class MIRegisterValue {
 	int name;
diff --git a/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/output/MIResult.java b/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/output/MIResult.java
index 97b3516386a..1a9464a1ed9 100644
--- a/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/output/MIResult.java
+++ b/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/output/MIResult.java
@@ -1,6 +1,11 @@
+/*
+ * (c) Copyright QNX Software Systems Ltd. 2002.
+ * All Rights Reserved.
+ */
 package org.eclipse.cdt.debug.mi.core.output;
 
 /**
+ * GDB/MI result sematic (Variable=Value)
  */
 public class MIResult {
 	String variable = "";
diff --git a/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/output/MIResultRecord.java b/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/output/MIResultRecord.java
index 4744a4cfe25..b5d6a5c87b1 100644
--- a/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/output/MIResultRecord.java
+++ b/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/output/MIResultRecord.java
@@ -1,6 +1,11 @@
+/*
+ * (c) Copyright QNX Software Systems Ltd. 2002.
+ * All Rights Reserved.
+ */
 package org.eclipse.cdt.debug.mi.core.output;
 
 /**
+ * GDB/MI ResultRecord.
  */
 public class MIResultRecord {
 
diff --git a/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/output/MIStackInfoDepthInfo.java b/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/output/MIStackInfoDepthInfo.java
index b57b70dd56c..872ae47a614 100644
--- a/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/output/MIStackInfoDepthInfo.java
+++ b/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/output/MIStackInfoDepthInfo.java
@@ -1,8 +1,12 @@
+/*
+ * (c) Copyright QNX Software Systems Ltd. 2002.
+ * All Rights Reserved.
+ */
+
 package org.eclipse.cdt.debug.mi.core.output;
 
-
-
 /**
+ * GDB/MI stack info depth parsing.
  */
 public class MIStackInfoDepthInfo extends MIInfo {
 
diff --git a/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/output/MIStackListArgumentsInfo.java b/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/output/MIStackListArgumentsInfo.java
index 14595ed8761..fba3a6ad9a7 100644
--- a/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/output/MIStackListArgumentsInfo.java
+++ b/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/output/MIStackListArgumentsInfo.java
@@ -1,11 +1,16 @@
+/*
+ * (c) Copyright QNX Software Systems Ltd. 2002.
+ * All Rights Reserved.
+ */
+
 package org.eclipse.cdt.debug.mi.core.output;
 
 import java.util.ArrayList;
 import java.util.List;
 
 
-
 /**
+ * GDB/MI stack list arguments parsing.
  */
 public class MIStackListArgumentsInfo extends MIInfo {
 
diff --git a/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/output/MIStackListFramesInfo.java b/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/output/MIStackListFramesInfo.java
index a4683eda962..2b89607ee22 100644
--- a/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/output/MIStackListFramesInfo.java
+++ b/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/output/MIStackListFramesInfo.java
@@ -1,11 +1,15 @@
+/*
+ * (c) Copyright QNX Software Systems Ltd. 2002.
+ * All Rights Reserved.
+ */
 package org.eclipse.cdt.debug.mi.core.output;
 
 import java.util.ArrayList;
 import java.util.List;
 
 
-
 /**
+ * GDB/MI stack list frames info.
  */
 public class MIStackListFramesInfo extends MIInfo {
 
diff --git a/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/output/MIStackListLocalsInfo.java b/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/output/MIStackListLocalsInfo.java
index 73129e3c905..c3dd0c64917 100644
--- a/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/output/MIStackListLocalsInfo.java
+++ b/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/output/MIStackListLocalsInfo.java
@@ -1,8 +1,12 @@
+/*
+ * (c) Copyright QNX Software Systems Ltd. 2002.
+ * All Rights Reserved.
+ */
+
 package org.eclipse.cdt.debug.mi.core.output;
 
-
-
 /**
+ * GDB/MI stack list locals parsing.
  */
 public class MIStackListLocalsInfo extends MIInfo {
 
diff --git a/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/output/MIStatusAsyncOutput.java b/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/output/MIStatusAsyncOutput.java
index 90160397b50..5bfa0d8a31c 100644
--- a/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/output/MIStatusAsyncOutput.java
+++ b/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/output/MIStatusAsyncOutput.java
@@ -1,6 +1,11 @@
+/*
+ * (c) Copyright QNX Software Systems Ltd. 2002.
+ * All Rights Reserved.
+ */
 package org.eclipse.cdt.debug.mi.core.output;
 
 /**
+ * @see MIAsyncRecord
  */
 public class MIStatusAsyncOutput extends MIAsyncRecord {
 
diff --git a/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/output/MIStreamRecord.java b/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/output/MIStreamRecord.java
index 9649b34edb7..7a357c54c70 100644
--- a/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/output/MIStreamRecord.java
+++ b/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/output/MIStreamRecord.java
@@ -1,6 +1,11 @@
+/*
+ * (c) Copyright QNX Software Systems Ltd. 2002.
+ * All Rights Reserved.
+ */
 package org.eclipse.cdt.debug.mi.core.output;
 
 /**
+ * GDB/MI stream record response.
  */
 public abstract class MIStreamRecord extends MIOOBRecord {
 
diff --git a/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/output/MITargetStreamOutput.java b/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/output/MITargetStreamOutput.java
index 8520a4ab827..2b6d25626b7 100644
--- a/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/output/MITargetStreamOutput.java
+++ b/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/output/MITargetStreamOutput.java
@@ -1,6 +1,11 @@
+/*
+ * (c) Copyright QNX Software Systems Ltd. 2002.
+ * All Rights Reserved.
+ */
 package org.eclipse.cdt.debug.mi.core.output;
 
 /**
+ * @see MIStreamRecord
  */
 public class MITargetStreamOutput extends MIStreamRecord {
 }
diff --git a/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/output/MIThreadListIdsInfo.java b/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/output/MIThreadListIdsInfo.java
index 93a87d6c910..0b2dc359a41 100644
--- a/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/output/MIThreadListIdsInfo.java
+++ b/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/output/MIThreadListIdsInfo.java
@@ -1,6 +1,11 @@
+/*
+ * (c) Copyright QNX Software Systems Ltd. 2002.
+ * All Rights Reserved.
+ */
 package org.eclipse.cdt.debug.mi.core.output;
 
 /**
+ * GDB/MI thread list parsing.
  */
 public class MIThreadListIdsInfo extends MIInfo {
 
diff --git a/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/output/MIThreadSelectInfo.java b/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/output/MIThreadSelectInfo.java
index 2216b590b91..289fcb05ed8 100644
--- a/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/output/MIThreadSelectInfo.java
+++ b/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/output/MIThreadSelectInfo.java
@@ -1,8 +1,11 @@
+/*
+ * (c) Copyright QNX Software Systems Ltd. 2002.
+ * All Rights Reserved.
+ */
 package org.eclipse.cdt.debug.mi.core.output;
 
-
-
 /**
+ * GDB/MI thread select parsing.
  */
 public class MIThreadSelectInfo extends MIInfo {
 
diff --git a/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/output/MITuple.java b/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/output/MITuple.java
index 8f0bf1f6271..6547d02b17e 100644
--- a/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/output/MITuple.java
+++ b/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/output/MITuple.java
@@ -1,6 +1,11 @@
+/*
+ * (c) Copyright QNX Software Systems Ltd. 2002.
+ * All Rights Reserved.
+ */
 package org.eclipse.cdt.debug.mi.core.output;
 
 /**
+ * GDB/MI tuple value.
  */
 public class MITuple extends MIValue {
 
diff --git a/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/output/MIValue.java b/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/output/MIValue.java
index c769f51199c..a44e98f80fe 100644
--- a/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/output/MIValue.java
+++ b/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/output/MIValue.java
@@ -1,12 +1,11 @@
+/*
+ * (c) Copyright QNX Software Systems Ltd. 2002.
+ * All Rights Reserved.
+ */
 package org.eclipse.cdt.debug.mi.core.output;
 
 /**
- * @author alain
- *
- * To change this generated comment edit the template variable "typecomment":
- * Window>Preferences>Java>Templates.
- * To enable and disable the creation of type comments go to
- * Window>Preferences>Java>Code Generation.
+ * GDB/MI value.
  */
 public abstract class MIValue {
 }
diff --git a/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/output/MIVarCreateInfo.java b/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/output/MIVarCreateInfo.java
index cddd217cd17..3258d2ecbfc 100644
--- a/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/output/MIVarCreateInfo.java
+++ b/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/output/MIVarCreateInfo.java
@@ -1,24 +1,64 @@
+/*
+ * (c) Copyright QNX Software Systems Ltd. 2002.
+ * All Rights Reserved.
+ */
 package org.eclipse.cdt.debug.mi.core.output;
 
 
-
 /**
+ * GDB/MI var-create.
+ * -var-create "-" * buf3
+ * ^done,name="var1",numchild="6",type="char [6]"
  */
 public class MIVarCreateInfo extends MIInfo {
 
+	String name = "";
+	int children;
+	String type = "";
+
 	public MIVarCreateInfo(MIOutput record) {
 		super(record);
+		parse();
 	}
 
 	public String getName () {
-		return "";
+		return name;
 	}
 
 	public int getChildNumber() {
-		return 0;
+		return children;
 	}
 
 	public String getType() {
-		return "";
+		return type;
+	}
+
+	void parse() {
+		if (isDone()) {
+			MIOutput out = getMIOutput();
+			MIResultRecord rr = out.getMIResultRecord();
+			if (rr != null) {
+				MIResult[] results =  rr.getMIResults();
+				for (int i = 0; i < results.length; i++) {
+					String var = results[i].getVariable();
+					MIValue value = results[i].getMIValue();
+					String str = "";
+					if (value instanceof MIConst) {
+						str = ((MIConst)value).getString();
+					}
+
+					if (var.equals("name")) {
+						name = str;
+					} else if (var.equals("numchild")) {
+						try {
+							children = Integer.parseInt(str.trim());
+						} catch (NumberFormatException e) {
+						}
+					} else if (var.equals("type")) {
+						type = str;
+					}
+				}
+			}
+		}
 	}
 }
diff --git a/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/output/MIVarDeleteInfo.java b/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/output/MIVarDeleteInfo.java
index 2d088b08e49..cf373773d72 100644
--- a/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/output/MIVarDeleteInfo.java
+++ b/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/output/MIVarDeleteInfo.java
@@ -1,16 +1,46 @@
+/*
+ * (c) Copyright QNX Software Systems Ltd. 2002.
+ * All Rights Reserved.
+ */
 package org.eclipse.cdt.debug.mi.core.output;
 
 
-
 /**
+ * GDB/MI var-delete.
  */
 public class MIVarDeleteInfo extends MIInfo {
 
+	int ndeleted;
+
 	public MIVarDeleteInfo(MIOutput record) {
 		super(record);
+		parse();
 	}
 
 	public int getNumberDeleted () {
-		return 0;
+		return ndeleted;
+	}
+
+	void parse() {
+		if (isDone()) {
+			MIOutput out = getMIOutput();
+			MIResultRecord rr = out.getMIResultRecord();
+			if (rr != null) {
+				MIResult[] results =  rr.getMIResults();
+				for (int i = 0; i < results.length; i++) {
+					String var = results[i].getVariable();
+					if (var.equals("ndeleted")) {
+						MIValue value = results[i].getMIValue();
+						if (value instanceof MIConst) {
+							String str = ((MIConst)value).getString();
+							try {
+								ndeleted = Integer.parseInt(str.trim());
+							} catch (NumberFormatException e) {
+							}
+						}
+					}
+				}
+			}
+		}
 	}
 }
diff --git a/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/output/MIVarEvaluateExpressionInfo.java b/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/output/MIVarEvaluateExpressionInfo.java
index 5ea806374af..6161ba8c2c8 100644
--- a/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/output/MIVarEvaluateExpressionInfo.java
+++ b/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/output/MIVarEvaluateExpressionInfo.java
@@ -1,16 +1,41 @@
+/*
+ * (c) Copyright QNX Software Systems Ltd. 2002.
+ * All Rights Reserved.
+ */
 package org.eclipse.cdt.debug.mi.core.output;
 
-
-
 /**
+ * GDB/MI var-evalute-expression
  */
 public class MIVarEvaluateExpressionInfo extends MIInfo {
 
+	String value = "";
+
 	public MIVarEvaluateExpressionInfo(MIOutput record) {
 		super(record);
+		parse();
 	}
 
 	public String getValue () {
-		return "";
+		return value;
+	}
+
+	void parse() {
+		if (isDone()) {
+			MIOutput out = getMIOutput();
+			MIResultRecord rr = out.getMIResultRecord();
+			if (rr != null) {
+				MIResult[] results =  rr.getMIResults();
+				for (int i = 0; i < results.length; i++) {
+					String var = results[i].getVariable();
+					if (var.equals("name")) {
+						MIValue val = results[i].getMIValue();
+						if (val instanceof MIConst) {
+							value = ((MIConst)val).getString();
+						}
+					}
+				}
+			}
+		}
 	}
 }
diff --git a/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/output/MIVarInfoExpressionInfo.java b/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/output/MIVarInfoExpressionInfo.java
index fa67693b6b7..3df7772a9a0 100644
--- a/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/output/MIVarInfoExpressionInfo.java
+++ b/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/output/MIVarInfoExpressionInfo.java
@@ -1,20 +1,51 @@
+/*
+ * (c) Copyright QNX Software Systems Ltd. 2002.
+ * All Rights Reserved.
+ */
 package org.eclipse.cdt.debug.mi.core.output;
 
-
-
 /**
+ * GDB/MI var-info-expression.
  */
 public class MIVarInfoExpressionInfo extends MIInfo {
 
+	String lang = "";
+	String exp = "";
+
 	public MIVarInfoExpressionInfo(MIOutput record) {
 		super(record);
+		parse();
 	}
 
 	public String getLanguage () {
-		return "";
+		return lang;
 	}
 
 	public String getExpression() {
-		return "";
+		return exp;
+	}
+
+	void parse() {
+		if (isDone()) {
+			MIOutput out = getMIOutput();
+			MIResultRecord rr = out.getMIResultRecord();
+			if (rr != null) {
+				MIResult[] results =  rr.getMIResults();
+				for (int i = 0; i < results.length; i++) {
+					String var = results[i].getVariable();
+					MIValue value = results[i].getMIValue();
+					String str = "";
+					if (value instanceof MIConst) {
+						str = ((MIConst)value).getString();
+					}
+
+					if (var.equals("lang")) {
+						lang = str;
+					} else if (var.equals("exp")) {
+						exp = str;
+					}
+				}
+			}
+		}
 	}
 }
diff --git a/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/output/MIVarInfoNumChildrenInfo.java b/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/output/MIVarInfoNumChildrenInfo.java
index b2ec19826d7..c6d88a27558 100644
--- a/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/output/MIVarInfoNumChildrenInfo.java
+++ b/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/output/MIVarInfoNumChildrenInfo.java
@@ -1,16 +1,48 @@
+/*
+ * (c) Copyright QNX Software Systems Ltd. 2002.
+ * All Rights Reserved.
+ */
+
 package org.eclipse.cdt.debug.mi.core.output;
 
 
-
 /**
+ * GDB/MI var-info-num-children.
  */
 public class MIVarInfoNumChildrenInfo extends MIInfo {
 
+	int children;
+
 	public MIVarInfoNumChildrenInfo(MIOutput record) {
 		super(record);
+		parse();
 	}
 
 	public int getChildNumber() {
-		return 0;
+		return children;
+	}
+
+	void parse() {
+		if (isDone()) {
+			MIOutput out = getMIOutput();
+			MIResultRecord rr = out.getMIResultRecord();
+			if (rr != null) {
+				MIResult[] results =  rr.getMIResults();
+				for (int i = 0; i < results.length; i++) {
+					String var = results[i].getVariable();
+
+					if (var.equals("numchild")) {
+						MIValue value = results[i].getMIValue();
+						if (value instanceof MIConst) {
+							String str = ((MIConst)value).getString();
+							try {
+								children = Integer.parseInt(str.trim());
+							} catch (NumberFormatException e) {
+							}
+						}
+					}
+				}
+			}
+		}
 	}
 }
diff --git a/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/output/MIVarInfoTypeInfo.java b/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/output/MIVarInfoTypeInfo.java
index 60e90229d1d..81b79e2ad18 100644
--- a/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/output/MIVarInfoTypeInfo.java
+++ b/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/output/MIVarInfoTypeInfo.java
@@ -1,16 +1,42 @@
+/*
+ * (c) Copyright QNX Software Systems Ltd. 2002.
+ * All Rights Reserved.
+ */
 package org.eclipse.cdt.debug.mi.core.output;
 
 
-
 /**
+ * GDB/MI var-info-type
  */
 public class MIVarInfoTypeInfo extends MIInfo {
 
+	String type = "";
+
 	public MIVarInfoTypeInfo(MIOutput record) {
 		super(record);
+		parse();
 	}
 
 	public String getType() {
-		return "";
+		return type;
+	}
+
+	void parse() {
+		if (isDone()) {
+			MIOutput out = getMIOutput();
+			MIResultRecord rr = out.getMIResultRecord();
+			if (rr != null) {
+				MIResult[] results =  rr.getMIResults();
+				for (int i = 0; i < results.length; i++) {
+					String var = results[i].getVariable();
+					if (var.equals("type")) {
+						MIValue value = results[i].getMIValue();
+						if (value instanceof MIConst) {
+							type = ((MIConst)value).getString();
+						}
+					}
+				}
+			}
+		}
 	}
 }
diff --git a/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/output/MIVarListChildrenInfo.java b/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/output/MIVarListChildrenInfo.java
index 3dff669d0f0..545573b84cb 100644
--- a/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/output/MIVarListChildrenInfo.java
+++ b/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/output/MIVarListChildrenInfo.java
@@ -1,22 +1,72 @@
+/*
+ * (c) Copyright QNX Software Systems Ltd. 2002.
+ * All Rights Reserved.
+ */
 package org.eclipse.cdt.debug.mi.core.output;
 
-
+import java.util.ArrayList;
+import java.util.List;
 
 /**
+ * GDB/MI var-list-children
+ * -var-list-children var2
+ *  ^done,numchild="6",children={child={name="var2.0",exp="0",numchild="0",type="char"},child={name="var2.1",exp="1",numchild="0",type="char"},child={name="var2.2",exp="2",numchild="0",type="char"},child={name="var2.3",exp="3",numchild="0",type="char"},child={name="var2.4",exp="4",numchild="0",type="char"},child={name="var2.5",exp="5",numchild="0",type="char"}}
+ *
  */
 public class MIVarListChildrenInfo extends MIInfo {
 
-	public class Children {
-		String name;
-		int numchild;
-		String type;
-	}
+	MIChild[] children = new MIChild[0];
+	int numchild;
 
 	public MIVarListChildrenInfo(MIOutput record) {
 		super(record);
+		parse();
 	}
 
-	public Children[] getChildren() {
-		return null;
+	public MIChild[] getChildren() {
+		return children;
+	}
+
+	void parse() {
+		List aList = new ArrayList();
+		if (isDone()) {
+			MIOutput out = getMIOutput();
+			MIResultRecord rr = out.getMIResultRecord();
+			if (rr != null) {
+				MIResult[] results =  rr.getMIResults();
+				for (int i = 0; i < results.length; i++) {
+					String var = results[i].getVariable();
+					MIValue value = results[i].getMIValue();
+
+					if (var.equals("numchild")) {
+						if (value instanceof MIConst) {
+							String str = ((MIConst)value).getString();
+							try {
+								numchild = Integer.parseInt(str.trim());
+							} catch (NumberFormatException e) {
+							}
+						}
+					} else if (var.equals("children")) {
+						if (value instanceof MITuple) {
+							parseChildren((MITuple)value, aList);
+						}
+					}
+				}
+			}
+		}
+		children = (MIChild[])aList.toArray(new MIChild[aList.size()]);
+	}
+
+	void parseChildren(MITuple tuple, List aList) {
+		MIResult[] results = tuple.getMIResults();
+		for (int i = 0; i < results.length; i++) {
+			String var = results[i].getVariable();
+			if (var.equals("child")) {
+				MIValue value = results[i].getMIValue();
+				if (value instanceof MITuple) {
+					aList.add(new MIChild((MITuple)value));
+				}
+			}
+		}
 	}
 }
diff --git a/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/output/MIVarShowAttributesInfo.java b/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/output/MIVarShowAttributesInfo.java
index b806e863ecf..206ad6edac6 100644
--- a/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/output/MIVarShowAttributesInfo.java
+++ b/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/output/MIVarShowAttributesInfo.java
@@ -1,16 +1,41 @@
+/*
+ * (c) Copyright QNX Software Systems Ltd. 2002.
+ * All Rights Reserved.
+ */
 package org.eclipse.cdt.debug.mi.core.output;
 
-
-
 /**
+ * GDB/MI var-show-attributes
  */
 public class MIVarShowAttributesInfo extends MIInfo {
 
+	String attr = "";
+
 	public MIVarShowAttributesInfo(MIOutput record) {
 		super(record);
+		parse();
 	}
 
-	public String[] getAttributes () {
-		return null;
+	public String getAttributes () {
+		return attr;
+	}
+
+	void parse() {
+		if (isDone()) {
+			MIOutput out = getMIOutput();
+			MIResultRecord rr = out.getMIResultRecord();
+			if (rr != null) {
+				MIResult[] results =  rr.getMIResults();
+				for (int i = 0; i < results.length; i++) {
+					String var = results[i].getVariable();
+					if (var.equals("attr")) {
+						MIValue value = results[i].getMIValue();
+						if (value instanceof MIConst) {
+							attr = ((MIConst)value).getString();
+						}
+					}
+				}
+			}
+		}
 	}
 }
diff --git a/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/output/MIVarShowFormatInfo.java b/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/output/MIVarShowFormatInfo.java
index 6f11a205f13..c1cf409503a 100644
--- a/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/output/MIVarShowFormatInfo.java
+++ b/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/output/MIVarShowFormatInfo.java
@@ -1,16 +1,54 @@
+/*
+ * (c) Copyright QNX Software Systems Ltd. 2002.
+ * All Rights Reserved.
+ */
 package org.eclipse.cdt.debug.mi.core.output;
 
-
+import org.eclipse.cdt.debug.mi.core.MIFormat;
 
 /**
+ * GDB/MI var-show-format
  */
 public class MIVarShowFormatInfo extends MIInfo {
 
+	int format = MIFormat.NATURAL;
+
 	public MIVarShowFormatInfo(MIOutput record) {
 		super(record);
+		parse();
 	}
 
 	public int getFormat() {
-		return 0;
+		return format;
+	}
+
+	void parse() {
+		if (isDone()) {
+			MIOutput out = getMIOutput();
+			MIResultRecord rr = out.getMIResultRecord();
+			if (rr != null) {
+				MIResult[] results =  rr.getMIResults();
+				for (int i = 0; i < results.length; i++) {
+					String var = results[i].getVariable();
+					if (var.equals("name")) {
+						MIValue value = results[i].getMIValue();
+						if (value instanceof MIConst) {
+							String str = ((MIConst)value).getString();
+							if ("binary".equals(str)) {
+								format = MIFormat.BINARY;
+							} else if ("decimal".equals(str)) {
+								format = MIFormat.DECIMAL;
+							} else if ("hexadecimal".equals(str)) {
+								format = MIFormat.HEXADECIMAL;
+							} else if ("octal".equals(str)) {
+								format = MIFormat.OCTAL;
+							} else if ("natural".equals(str)) {
+								format = MIFormat.NATURAL;
+							}
+						}
+					}
+				}
+			}
+		}
 	}
 }
diff --git a/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/output/MIVarUpdateInfo.java b/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/output/MIVarUpdateInfo.java
index dd6de3fd110..2b553c99af0 100644
--- a/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/output/MIVarUpdateInfo.java
+++ b/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/output/MIVarUpdateInfo.java
@@ -1,8 +1,16 @@
+/*
+ * (c) Copyright QNX Software Systems Ltd. 2002.
+ * All Rights Reserved.
+ */
 package org.eclipse.cdt.debug.mi.core.output;
 
-
+import java.util.ArrayList;
+import java.util.List;
 
 /**
+ * GDB/MI var-update.
+ * -var-update *
+ * ^done,changelist={name="var3",in_scope="true",type_changed="false",name="var2",in_scope="true",type_changed="false"}
  */
 public class MIVarUpdateInfo extends MIInfo {
 
@@ -12,11 +20,60 @@ public class MIVarUpdateInfo extends MIInfo {
 		boolean changed;
 	}
 
+	MIChange[] changeList;
+
 	public MIVarUpdateInfo(MIOutput record) {
 		super(record);
+		parse();
 	}
 
-	public Change[] getChangeList () {
-		return null;
+	public MIChange[] getChangeList () {
+		return changeList;
+	}
+
+	void parse() {
+		List aList = new ArrayList();
+		if (isDone()) {
+			MIOutput out = getMIOutput();
+			MIResultRecord rr = out.getMIResultRecord();
+			if (rr != null) {
+				MIResult[] results =  rr.getMIResults();
+				for (int i = 0; i < results.length; i++) {
+					String var = results[i].getVariable();
+					if (var.equals("changelist")) {
+						MIValue value = results[i].getMIValue();
+						if (value instanceof MITuple) {
+							parseChangeList((MITuple)value, aList);
+						}
+					}
+				}
+			}
+		}
+		changeList = (MIChange[])aList.toArray(new MIChange[aList.size()]);
+	}
+
+	void parseChangeList(MITuple tuple, List aList) {
+		MIResult[] results = tuple.getMIResults();
+		MIChange change = null;
+		for (int i = 0; i < results.length; i++) {
+			String var = results[i].getVariable();
+			MIValue value = results[i].getMIValue();
+			String str = "";
+			if (value instanceof MIConst) {
+				str = ((MIConst)value).getString();
+			}
+			if (var.equals("name")) {
+				change = new MIChange(str);
+				aList.add(change);
+			} else if (var.equals("in_scope")) {
+				if (change != null) {
+					change.setInScope("true".equals(str));
+				}
+			} else if (var.equals("type_changed")) {
+				if (change != null) {
+					change.setChanged("true".equals(str));
+				}
+			}
+		}
 	}
 }