diff --git a/debug/org.eclipse.cdt.debug.mi.core/design.txt b/debug/org.eclipse.cdt.debug.mi.core/design.txt new file mode 100644 index 00000000000..54664f41905 --- /dev/null +++ b/debug/org.eclipse.cdt.debug.mi.core/design.txt @@ -0,0 +1,36 @@ + + + + +
+Note this is an interim the document and subject to changes.
+
+
+****
+This MI implementation is base on GDB/MI 5.2.1.
+
+To create an MISession an InputStream and OutputStream are
+needed(assuming this the pipe connected to gdb).
+	MISession MIPlugin.createSession(InputStream, OutputStream);
+During initialisation of the session(MISession) two threads
+are created(TxThread, RxThread). MI Commands created via the CommandFactory
+are added to the TxQueue, the TxThread will then wake up
+generate a token(ID) for the command and send it the pipe(gdb), after
+transmission the command is then move to the RxQueue waiting for the 
+result(MIResultRecord).
+
+Any responses will wake the RxThread, the thread would parse
+the response constructing an MIOutput then search the RxQueue
+for any commands with the same token waking any thread waiting
+for a synchronous response(MIResultRecord).  Any out-of-band
+responses(MIOOBRecord) are dispatch, clients interested in those
+notifications should register to MISession.
+
+
+****
+MI <==> CDI Adapters
+
+ To do.
+
+ + \ No newline at end of file diff --git a/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/CommandFactory.java b/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/CommandFactory.java new file mode 100644 index 00000000000..4614271041f --- /dev/null +++ b/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/CommandFactory.java @@ -0,0 +1,90 @@ +package org.eclipse.cdt.debug.mi.core; + +import org.eclipse.cdt.debug.mi.core.command.MIBreakAfter; +import org.eclipse.cdt.debug.mi.core.command.MIBreakCondition; +import org.eclipse.cdt.debug.mi.core.command.MIBreakDelete; +import org.eclipse.cdt.debug.mi.core.command.MIBreakDisable; +import org.eclipse.cdt.debug.mi.core.command.MIBreakEnable; +import org.eclipse.cdt.debug.mi.core.command.MIBreakInsert; +import org.eclipse.cdt.debug.mi.core.command.MIBreakList; +import org.eclipse.cdt.debug.mi.core.command.MIBreakWatch; +import org.eclipse.cdt.debug.mi.core.command.MIDataDisassemble; +import org.eclipse.cdt.debug.mi.core.command.MIDataEvaluateExpression; +import org.eclipse.cdt.debug.mi.core.command.MIDataListChangedRegisters; +import org.eclipse.cdt.debug.mi.core.command.MIDataListRegisterNames; +import org.eclipse.cdt.debug.mi.core.command.MIDataListRegisterValues; +import org.eclipse.cdt.debug.mi.core.command.MIDataReadMemory; + +/** + * + */ +public class CommandFactory { + + public MIBreakAfter createMIBreakAfter(int brknum, int count) { + return new MIBreakAfter(brknum, count); + } + + public MIBreakCondition createMIBreakCondition (int brknum, String expr) { + return new MIBreakCondition(brknum, expr); + } + + public MIBreakDelete createMIBreakDelete (int[] brknum) { + return new MIBreakDelete(brknum); + } + + public MIBreakDisable createMIBreakDisable(int[] brknum) { + return new MIBreakDisable(brknum); + } + + public MIBreakEnable createMIBreakEnable(int[] brknum) { + return new MIBreakEnable(brknum); + } + + public MIBreakInsert createMIBreakInsert(boolean isTemporary, boolean isHardware, + String condition, int ignoreCount, String line) { + return new MIBreakInsert(isTemporary, isHardware, condition, ignoreCount, line); + } + + public MIBreakInsert createMIBreakInsert(String regex) { + return new MIBreakInsert(regex); + } + + public MIBreakList createMIBreakList() { + return new MIBreakList(); + } + + public MIBreakWatch createMIBreakWatch(boolean access, boolean read, String expression) { + return new MIBreakWatch(access, read, expression); + } + + public MIDataDisassemble createMIDataDisassemble(String start, String end, boolean mixed) { + return new MIDataDisassemble(start, end, mixed); + } + + public MIDataDisassemble createMIDataDisassemble(String file, int linenum, int lines, boolean mixed) { + return new MIDataDisassemble(file, linenum, lines, mixed); + } + + public MIDataEvaluateExpression createMIDataEvaluateExpression(String expression) { + return new MIDataEvaluateExpression(expression); + } + + public MIDataListChangedRegisters createMIDataListChangedRegisters() { + return new MIDataListChangedRegisters(); + } + + public MIDataListRegisterNames createMIDataListRegisterNames(int[] regno) { + return new MIDataListRegisterNames(regno); + } + + public MIDataListRegisterValues createMIDataLIstRegisterValues(int fmt, int[] regno) { + return new MIDataListRegisterValues(fmt, regno); + } + + public MIDataReadMemory createMIDataReadMemory(int offset, String address, + String wordFormat, int wordSize, + int rows, int cols, Character asChar) { + return new MIDataReadMemory(offset, address, wordFormat, wordSize, + rows, cols, asChar); + } +} diff --git a/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/MIBreakListInfo.java b/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/MIBreakListInfo.java new file mode 100644 index 00000000000..5ef1eefbd5d --- /dev/null +++ b/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/MIBreakListInfo.java @@ -0,0 +1,30 @@ +package org.eclipse.cdt.debug.mi.core; + +import org.eclipse.cdt.debug.mi.core.output.MIResultRecord; + +/** + */ +public class MIBreakListInfo extends MIInfo { + + public class BreakPoint { + int number; + String type; + String disposition; + boolean enabled; + int address; + String what; + int times; + } + + public MIBreakListInfo(MIResultRecord rr) { + super(rr); + } + + int getCount() { + return 0; + } + + BreakPoint[] getBreakPoints() { + return null; + } +} diff --git a/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/MIBreakWatchInfo.java b/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/MIBreakWatchInfo.java new file mode 100644 index 00000000000..ccf789dc84c --- /dev/null +++ b/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/MIBreakWatchInfo.java @@ -0,0 +1,20 @@ +package org.eclipse.cdt.debug.mi.core; + +import org.eclipse.cdt.debug.mi.core.output.MIResultRecord; + +/** + */ +public class MIBreakWatchInfo extends MIInfo { + + public MIBreakWatchInfo(MIResultRecord rr) { + super(rr); + } + + public int getNumber () { + return 0; + } + + public String getExpression() { + return null; + } +} diff --git a/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/MIBreakpointHitInfo.java b/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/MIBreakpointHitInfo.java new file mode 100644 index 00000000000..8cff4ac483b --- /dev/null +++ b/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/MIBreakpointHitInfo.java @@ -0,0 +1,36 @@ +package org.eclipse.cdt.debug.mi.core; + +import org.eclipse.cdt.debug.mi.core.output.MIResultRecord; + +/** + */ +public class MIBreakpointHitInfo extends MIInfo { + + public MIBreakpointHitInfo(MIResultRecord record) { + super(record); + } + + int getBreakNumber() { + return 0; + } + + String getFunction() { + return null; + } + + int getAddress() { + return 0; + } + + String getFileName() { + return null; + } + + int getLineNumber() { + return 0; + } + + String[] getArguments () { + return null; + } +} diff --git a/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/MIBreakpointInfo.java b/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/MIBreakpointInfo.java index c305ac10a32..7b4a6eb9bad 100644 --- a/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/MIBreakpointInfo.java +++ b/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/MIBreakpointInfo.java @@ -1,34 +1,32 @@ package org.eclipse.cdt.debug.mi.core; +import org.eclipse.cdt.debug.mi.core.output.MIResultRecord; + /** - * @author alain - * */ public class MIBreakpointInfo extends MIInfo { - int line, number; - String function, file; - - public MIBreakpointInfo(int no, String func, String filename, int lineno) { - number = no; - function = func; - file = filename; - line = lineno; + public MIBreakpointInfo(MIResultRecord record) { + super(record); } - public int getNumber() { - return number; + int getBreakNumber() { + return 0; } - public String getFunction() { - return function; + String getFunction() { + return null; } - public String getFile() { - return file; + int getAddress() { + return 0; } - public int getLineNumber() { - return line; + String getFileName() { + return null; + } + + int getLineNumber() { + return 0; } } diff --git a/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/MIDataDisassembleInfo.java b/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/MIDataDisassembleInfo.java new file mode 100644 index 00000000000..70a4f687c5e --- /dev/null +++ b/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/MIDataDisassembleInfo.java @@ -0,0 +1,29 @@ +package org.eclipse.cdt.debug.mi.core; + +import org.eclipse.cdt.debug.mi.core.output.MIResultRecord; + +/** + */ +public class MIDataDisassembleInfo extends MIInfo { + + public class ASM { + int address; + String function; + int offset; + String instruction; + int line; + String file; + } + + public MIDataDisassembleInfo(MIResultRecord rr) { + super(rr); + } + + public int getCount() { + return 0; + } + + public ASM[] getData() { + return null; + } +} diff --git a/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/MIDataEvaluateExpressionInfo.java b/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/MIDataEvaluateExpressionInfo.java new file mode 100644 index 00000000000..ea90d116ca7 --- /dev/null +++ b/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/MIDataEvaluateExpressionInfo.java @@ -0,0 +1,16 @@ +package org.eclipse.cdt.debug.mi.core; + +import org.eclipse.cdt.debug.mi.core.output.MIResultRecord; + +/** + */ +public class MIDataEvaluateExpressionInfo extends MIInfo{ + + public MIDataEvaluateExpressionInfo(MIResultRecord rr) { + super(rr); + } + + public String getValue() { + return null; + } +} diff --git a/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/MIDataListChangedRegistersInfo.java b/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/MIDataListChangedRegistersInfo.java new file mode 100644 index 00000000000..5d610938ada --- /dev/null +++ b/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/MIDataListChangedRegistersInfo.java @@ -0,0 +1,16 @@ +package org.eclipse.cdt.debug.mi.core; + +import org.eclipse.cdt.debug.mi.core.output.MIResultRecord; + +/** + */ +public class MIDataListChangedRegistersInfo extends MIInfo { + + public MIDataListChangedRegistersInfo(MIResultRecord rr) { + super(rr); + } + + int [] getRegisters () { + return null; + } +} diff --git a/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/MIDataListRegisterValuesInfo.java b/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/MIDataListRegisterValuesInfo.java new file mode 100644 index 00000000000..7bf33405580 --- /dev/null +++ b/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/MIDataListRegisterValuesInfo.java @@ -0,0 +1,21 @@ +package org.eclipse.cdt.debug.mi.core; + +import org.eclipse.cdt.debug.mi.core.output.MIResultRecord; + +/** + */ +public class MIDataListRegisterValuesInfo extends MIInfo { + + public class Register { + int number; + int value; + } + + public MIDataListRegisterValuesInfo(MIResultRecord rr) { + super(rr); + } + + Register [] getRegistersValues () { + return null; + } +} diff --git a/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/MIDataListRegistersNamesInfo.java b/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/MIDataListRegistersNamesInfo.java new file mode 100644 index 00000000000..8c246a030ec --- /dev/null +++ b/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/MIDataListRegistersNamesInfo.java @@ -0,0 +1,16 @@ +package org.eclipse.cdt.debug.mi.core; + +import org.eclipse.cdt.debug.mi.core.output.MIResultRecord; + +/** + */ +public class MIDataListRegistersNamesInfo extends MIInfo { + + public MIDataListRegistersNamesInfo(MIResultRecord rr) { + super(rr); + } + + String[] getRegistersNames () { + return null; + } +} diff --git a/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/MIDataReadMemoryInfo.java b/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/MIDataReadMemoryInfo.java new file mode 100644 index 00000000000..7c41516ff9d --- /dev/null +++ b/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/MIDataReadMemoryInfo.java @@ -0,0 +1,50 @@ +package org.eclipse.cdt.debug.mi.core; + +import org.eclipse.cdt.debug.mi.core.output.MIResultRecord; + +/** + */ +public class MIDataReadMemoryInfo extends MIInfo { + + public class Memory { + int addr; + int [] data; + String ascii; + } + + public MIDataReadMemoryInfo(MIResultRecord rr) { + super(rr); + } + + int getAddress() { + return 0; + } + + int getBytesNumber() { + return 0; + } + + int getTotalBytes() { + return 0; + } + + int getNextRow() { + return 0; + } + + int getPreviousRow() { + return 0; + } + + int getNextPage() { + return 0; + } + + int getPreviousPage() { + return 0; + } + + Memory[] getMemories() { + return null; + } +} diff --git a/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/MIException.java b/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/MIException.java index 8adbb48955b..5ef361eb4c4 100644 --- a/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/MIException.java +++ b/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/MIException.java @@ -12,17 +12,14 @@ import org.eclipse.core.runtime.IStatus; /** * * A checked exception representing a failure. - * - * @author Mikhail Khodjaiants - * @since Jul 11, 2002 + * */ public class MIException extends CoreException { /** * Constructor for MIException. */ - public MIException( IStatus status ) - { - super( status ); + public MIException(IStatus status) { + super(status); } } diff --git a/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/MIInfo.java b/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/MIInfo.java index 115479b60e3..7af50b24c49 100644 --- a/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/MIInfo.java +++ b/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/MIInfo.java @@ -1,12 +1,18 @@ package org.eclipse.cdt.debug.mi.core; +import org.eclipse.cdt.debug.mi.core.output.MIResultRecord; + /** - * @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 MIInfo { + + MIResultRecord resultRecord; + + public MIInfo(MIResultRecord record) { + resultRecord = record; + } + + MIResultRecord getResultRecord () { + return resultRecord; + } } 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 60a06400482..9dc16dfaec2 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,5 +1,8 @@ package org.eclipse.cdt.debug.mi.core; +import java.io.InputStream; +import java.io.OutputStream; + import org.eclipse.core.runtime.IPluginDescriptor; import org.eclipse.core.runtime.Plugin; @@ -34,7 +37,7 @@ public class MIPlugin extends Plugin { /** * Create a MI Session. */ - public MISession createSession(Process proc) { - return new MISession(proc); + public MISession createMISession(InputStream in, OutputStream out) { + return new MISession(in, out); } } 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 e3eca7b3a97..3ea49688371 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 @@ -2,7 +2,7 @@ package org.eclipse.cdt.debug.mi.core; import java.io.InputStream; import java.io.OutputStream; -import java.io.Writer; +import java.io.Reader; import org.eclipse.cdt.debug.mi.core.output.MIOutput; @@ -11,54 +11,42 @@ import org.eclipse.cdt.debug.mi.core.output.MIOutput; */ public class MISession { - Process process; - Writer consoleStreamOutput = null; - Writer targetStreamOutput = null; - Writer logStreamOutput = null; + InputStream in; + OutputStream out; + Reader consoleStream = null; + Reader targetStream = null; + Reader logStream = null; /** * The constructor. */ - MISession(Process proc) { - process = proc; + MISession(InputStream i, OutputStream o) { + in = i; + out = o; } /** * Set Console Stream. */ - public void setConsoleStreamOutput(Writer consoleOutput) { - consoleStreamOutput = consoleOutput; + public void setConsoleStream(Reader console) { + consoleStream = console; } /** * Set Target Stream. */ - public void setTargetStreamOutput(Writer targetOutput) { - targetStreamOutput = targetOutput; + public void setTargetStreamOutput(Reader target) { + targetStream = target; } /** * Set Log Stream */ - public void setLogStreamOutput(Writer logOutput) { - logStreamOutput = logOutput; + public void setLogStreamOutput(Reader log) { + logStream = log; } MIOutput parse(String buffer) { return null; } - - OutputStream getSessionInputStream() { - if (process != null) { - process.getOutputStream(); - } - return null; - } - - InputStream getSessionOutputStream() { - if (process != null) { - process.getInputStream(); - } - 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 db82a80d524..8dba4b980c0 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 @@ -7,7 +7,7 @@ package org.eclipse.cdt.debug.mi.core.command; import org.eclipse.cdt.debug.mi.core.MIInfo; -import org.eclipse.cdt.debug.mi.core.output.MIOutput; +import org.eclipse.cdt.debug.mi.core.output.MIResultRecord; /** * @@ -31,7 +31,7 @@ public class CLICommand extends Command return ""; } - public MIInfo parse (MIOutput out) { - return new MIInfo(); + public MIInfo getInfo (MIResultRecord rr) { + return new MIInfo(rr); } } 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 87bddcb5a20..687b4b7a5e4 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 @@ -7,7 +7,7 @@ package org.eclipse.cdt.debug.mi.core.command; import org.eclipse.cdt.debug.mi.core.MIInfo; -import org.eclipse.cdt.debug.mi.core.output.MIOutput; +import org.eclipse.cdt.debug.mi.core.output.MIResultRecord; /** * @@ -27,5 +27,5 @@ public abstract class Command public abstract String toString(); - public abstract MIInfo parse(MIOutput out); + public abstract MIInfo getInfo(MIResultRecord rr); } diff --git a/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/command/MIBreakInsert.java b/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/command/MIBreakInsert.java index 7682c3f7def..fc2e29edace 100644 --- a/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/command/MIBreakInsert.java +++ b/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/command/MIBreakInsert.java @@ -50,11 +50,51 @@ package org.eclipse.cdt.debug.mi.core.command; */ public class MIBreakInsert extends MICommand { - public MIBreakInsert(String[] params) { - super("-break-insert", params); + public MIBreakInsert(boolean isTemporary, boolean isHardware, + String condition, int ignoreCount, String line) { + super("-break-insert"); + + int i = 0; + if (isTemporary || isHardware) { + i++; + } + if (condition != null) { + i += 2; + } + if (ignoreCount > 0) { + i += 2; + } + + String[] opts = new String[i]; + + i = 0; + if (isTemporary) { + opts[i] = "-t"; + i++; + } else if (isHardware) { + opts[i] = "-h"; + i++; + } + if (condition != null) { + opts[i] = "-c"; + i++; + opts[i] = condition; + i++; + } + if (ignoreCount > 0) { + opts[i] = "-i"; + i++; + opts[i] = Integer.toString(ignoreCount); + i++; + } + + if (opts.length > 0) { + setOptions(opts); + } + setParameters(new String[]{line}); } - public MIBreakInsert(String[] opts, String[] params) { - super("-break-insert", opts, params); + public MIBreakInsert(String regex) { + super("-break-insert", new String[]{"-r"}, new String[]{regex}); } } diff --git a/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/command/MIBreakWatch.java b/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/command/MIBreakWatch.java index 43560a3d986..fac34183b24 100644 --- a/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/command/MIBreakWatch.java +++ b/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/command/MIBreakWatch.java @@ -21,10 +21,17 @@ package org.eclipse.cdt.debug.mi.core.command; */ public class MIBreakWatch extends MICommand { - public MIBreakWatch (String[] opts, String expr) { - super("-break-watch", opts, new String[]{expr}); - } - public MIBreakWatch (String expr) { - super("-break-watch", new String[]{expr}); + public MIBreakWatch (boolean access, boolean read, String expr) { + super("-break-watch"); + String[] opts = null; + if (access) { + opts = new String[] {"-a"}; + } else if (read) { + opts = new String[] {"-r"}; + } + if (opts != null) { + setOptions(opts); + } + setParameters(new String[]{expr}); } } diff --git a/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/command/MICommand.java b/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/command/MICommand.java index c4e197cda8b..0eb68ee25df 100644 --- a/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/command/MICommand.java +++ b/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/command/MICommand.java @@ -7,7 +7,7 @@ package org.eclipse.cdt.debug.mi.core.command; import org.eclipse.cdt.debug.mi.core.MIInfo; -import org.eclipse.cdt.debug.mi.core.output.MIOutput; +import org.eclipse.cdt.debug.mi.core.output.MIResultRecord; /** * @@ -102,7 +102,7 @@ public class MICommand extends Command token = t; } - public MIInfo parse (MIOutput out) { - return new MIInfo(); + public MIInfo getInfo (MIResultRecord rr) { + return new MIInfo(rr); } } diff --git a/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/command/MICommandManager.java b/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/command/MICommandManager.java deleted file mode 100644 index f8bc495fb05..00000000000 --- a/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/command/MICommandManager.java +++ /dev/null @@ -1,28 +0,0 @@ -/* - *(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; - -/** - * - * Allows clients to communicate with the debug engine by posting - * MI requests. - * - * @author Mikhail Khodjaiants - * @since Jul 11, 2002 - */ -public interface MICommandManager -{ - /** - * Posts request to the debug engine. - * - * @param request - the request to post - * @throws MIException if this method fails. Reasons include: - */ - void postRequest (Command request) throws MIException; -} diff --git a/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/command/MIDataDisassemble.java b/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/command/MIDataDisassemble.java index e1fcb984c4b..7000165dc5e 100644 --- a/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/command/MIDataDisassemble.java +++ b/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/command/MIDataDisassemble.java @@ -61,11 +61,24 @@ package org.eclipse.cdt.debug.mi.core.command; */ public class MIDataDisassemble extends MICommand { - public MIDataDisassemble(String[] params) { - super("-data-disassemble", params); + public MIDataDisassemble(String start, String end, boolean mode) { + super("-data-disassemble"); + setOptions(new String[]{"-s", start, "-e", end}); + String mixed = "0"; + if (mode) { + mixed = "1"; + } + setParameters(new String[]{mixed}); } - public MIDataDisassemble(String[] opts, String[] params) { - super("-data-disassemble", opts, params); + public MIDataDisassemble(String file, int linenum, int lines, boolean mode) { + super("-data-disassemble"); + setOptions(new String[]{"-f", file, "-l", + Integer.toString(linenum), "-n", Integer.toString(lines)}); + String mixed = "0"; + if (mode) { + mixed = "1"; + } + setParameters(new String[]{mixed}); } } 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 9663779ea77..e7bd3a9b645 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 @@ -47,11 +47,20 @@ package org.eclipse.cdt.debug.mi.core.command; public class MIDataReadMemory extends MICommand { - public MIDataReadMemory(String[] params) { - super("-data-read-memory", params); - } - - public MIDataReadMemory(String[] opts, String[] params) { - super("-data-read-memory", opts, params); + public MIDataReadMemory (int offset, String address, + String wordFormat, int wordSize, + int rows, int cols, Character asChar) { + super("-data-read-memory"); + if (offset != 0) { + setOptions(new String[]{"-o", Integer.toString(offset)}); + } + if (asChar != null) { + setParameters(new String[]{wordFormat, Integer.toString(wordSize), + Integer.toString(rows), Integer.toString(cols)}); + } else { + setParameters(new String[]{wordFormat, 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/MIRequestManager.java b/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/command/MIRequestManager.java deleted file mode 100644 index 75bddd749d3..00000000000 --- a/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/command/MIRequestManager.java +++ /dev/null @@ -1,28 +0,0 @@ -/* - *(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; - -/** - * - * Allows clients to communicate with the debug engine by posting - * MI requests. - * - * @author Mikhail Khodjaiants - * @since Jul 11, 2002 - */ -public interface MIRequestManager -{ - /** - * Posts request to the debug engine. - * - * @param request - the request to post - * @throws MIException if this method fails. Reasons include: - */ - void postRequest (Command request) throws MIException; -}