/*******************************************************************************
* Copyright (c) 2000, 2011 QNX Software Systems and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* QNX Software Systems - Initial API and implementation
* ENEA Software AB - CLI command extension - fix for bug 190277
* Marc Khouzam (Ericsson) - New methods for new MIDataDisassemble (Bug 357073)
*******************************************************************************/
package org.eclipse.cdt.debug.mi.core.command;
import java.io.File;
import java.io.IOException;
import org.eclipse.cdt.core.IAddress;
import org.eclipse.cdt.debug.mi.core.MIProcess;
import org.eclipse.cdt.debug.mi.core.MIProcessAdapter;
import org.eclipse.core.runtime.IProgressMonitor;
/**
* Factory to create GDB commands.
*/
public class CommandFactory {
String fMIVersion;
protected CommandFactory() {
}
public CommandFactory(String miVersion) {
fMIVersion = miVersion;
}
public void setMIVersion(String miVersion) {
fMIVersion = miVersion;
}
public String getMIVersion() {
return fMIVersion;
}
public MIBreakAfter createMIBreakAfter(int brknum, int count) {
return new MIBreakAfter(getMIVersion(), brknum, count);
}
public MIBreakCondition createMIBreakCondition (int brknum, String expr) {
return new MIBreakCondition(getMIVersion(), brknum, expr);
}
public MIBreakDelete createMIBreakDelete (int[] brknum) {
return new MIBreakDelete(getMIVersion(), brknum);
}
public MIBreakDisable createMIBreakDisable(int[] brknum) {
return new MIBreakDisable(getMIVersion(), brknum);
}
public MIBreakEnable createMIBreakEnable(int[] brknum) {
return new MIBreakEnable(getMIVersion(), brknum);
}
public MIBreakInsert createMIBreakInsert(boolean isTemporary, boolean isHardware,
String condition, int ignoreCount, String line, int tid) {
return new MIBreakInsert(getMIVersion(), isTemporary, isHardware, condition, ignoreCount, line, tid);
}
public MIBreakInsert createMIBreakInsert(String func) {
return new MIBreakInsert(getMIVersion(), func);
}
public MIBreakList createMIBreakList() {
return new MIBreakList(getMIVersion());
}
public MIBreakWatch createMIBreakWatch(boolean access, boolean read, String expression) {
return new MIBreakWatch(getMIVersion(), access, read, expression);
}
public CLICatch createCLICatch(String event, String arg) {
return new CLICatch(event, arg);
}
public MIDataDisassemble createMIDataDisassemble(String start, String end, boolean mixed) {
return new MIDataDisassemble(getMIVersion(), start, end, mixed);
}
/** @since 7.2 */
public MIDataDisassemble createMIDataDisassemble(String start, String end, int mode) {
return new MIDataDisassemble(getMIVersion(), start, end, mode);
}
public MIDataDisassemble createMIDataDisassemble(String file, int linenum, int lines, boolean mixed) {
return new MIDataDisassemble(getMIVersion(), file, linenum, lines, mixed);
}
/** @since 7.2 */
public MIDataDisassemble createMIDataDisassemble(String file, int linenum, int lines, int mode) {
return new MIDataDisassemble(getMIVersion(), file, linenum, lines, mode);
}
public MIDataEvaluateExpression createMIDataEvaluateExpression(String expression) {
return new MIDataEvaluateExpression(getMIVersion(), expression);
}
public MIDataListChangedRegisters createMIDataListChangedRegisters() {
return new MIDataListChangedRegisters(getMIVersion());
}
public MIDataListRegisterNames createMIDataListRegisterNames() {
return new MIDataListRegisterNames(getMIVersion());
}
public MIDataListRegisterNames createMIDataListRegisterNames(int[] regnos) {
return new MIDataListRegisterNames(getMIVersion(), regnos);
}
public MIDataListRegisterValues createMIDataListRegisterValues(int fmt, int[] regnos) {
return new MIDataListRegisterValues(getMIVersion(), fmt, regnos);
}
public MIDataWriteRegisterValues createMIDataWriteRegisterValues(int fmt, int[] regnos, String[] values) {
return new MIDataWriteRegisterValues(getMIVersion(), fmt, regnos, values);
}
public MIDataReadMemory createMIDataReadMemory(long offset, String address,
int wordFormat, int wordSize,
int rows, int cols, Character asChar) {
return new MIDataReadMemory(getMIVersion(), offset, address, wordFormat, wordSize,
rows, cols, asChar);
}
public MIDataWriteMemory createMIDataWriteMemory(long offset, String address,
int wordFormat, int wordSize,
String value) {
return new MIDataWriteMemory(getMIVersion(), offset, address, wordFormat, wordSize, value);
}
public MIEnvironmentCD createMIEnvironmentCD(String pathdir) {
return new MIEnvironmentCD(getMIVersion(), pathdir);
}
public MIEnvironmentDirectory createMIEnvironmentDirectory(boolean reset, String[] pathdirs) {
return new MIEnvironmentDirectory(getMIVersion(), reset, pathdirs);
}
public MIEnvironmentPath createMIEnvironmentPath(String[] paths) {
return new MIEnvironmentPath(getMIVersion(), paths);
}
public MIEnvironmentPWD createMIEnvironmentPWD() {
return new MIEnvironmentPWD(getMIVersion());
}
/**
* @param params
* @return
*/
public MIGDBSetEnvironment createMIGDBSetEnvironment(String[] params) {
return new MIGDBSetEnvironment(getMIVersion(), params);
}
public CLIExecAbort createCLIExecAbort() {
return new CLIExecAbort();
}
public MIExecArguments createMIExecArguments(String[] args) {
return new MIExecArguments(getMIVersion(), args);
}
public MIExecContinue createMIExecContinue() {
return new MIExecContinue(getMIVersion());
}
public MIExecFinish createMIExecFinish() {
return new MIExecFinish(getMIVersion());
}
public MIExecInterrupt createMIExecInterrupt() {
// return null here to signal that we do not support
// -exec-interrupt and to use to drop a signal to gdb
// instead via the MIProcess class
return null;
}
public MIExecNext createMIExecNext(int count) {
return new MIExecNext(getMIVersion(), count);
}
public MIExecNextInstruction createMIExecNextInstruction(int count) {
return new MIExecNextInstruction(getMIVersion(), count);
}
public MIExecReturn createMIExecReturn() {
return new MIExecReturn(getMIVersion());
}
public MIExecReturn createMIExecReturn(String arg) {
return new MIExecReturn(getMIVersion(), arg);
}
public MIExecRun createMIExecRun(String[] args) {
return new MIExecRun(getMIVersion(), args);
}
public MIExecStep createMIExecStep(int count) {
return new MIExecStep(getMIVersion(), count);
}
public MIExecStepInstruction createMIExecStepInstruction(int count) {
return new MIExecStepInstruction(getMIVersion(), count);
}
public MIExecUntil createMIExecUntil(String location) {
return new MIExecUntil(getMIVersion(), location);
}
public CLIJump createCLIJump(String location) {
return new CLIJump(location);
}
public MIFileExecFile createMIFileExecFile(String file) {
return new MIFileExecFile(getMIVersion(), file);
}
public MIFileSymbolFile createMIFileSymbolFile(String file) {
return new MIFileSymbolFile(getMIVersion(), file);
}
public MIGDBExit createMIGDBExit() {
return new MIGDBExit(getMIVersion());
}
public MIGDBSet createMIGDBSet(String[] params) {
return new MIGDBSet(getMIVersion(), params);
}
public MIGDBSetAutoSolib createMIGDBSetAutoSolib(boolean set) {
return new MIGDBSetAutoSolib(getMIVersion(), set);
}
public MIGDBSetStopOnSolibEvents createMIGDBSetStopOnSolibEvents(boolean set) {
return new MIGDBSetStopOnSolibEvents(getMIVersion(), set);
}
public MIGDBSetSolibSearchPath createMIGDBSetSolibSearchPath(String[] params) {
return new MIGDBSetSolibSearchPath(getMIVersion(), params);
}
public MIGDBSetBreakpointPending createMIGDBSetBreakpointPending(boolean set) {
return new MIGDBSetBreakpointPending(getMIVersion(), set);
}
public MIGDBShow createMIGDBShow(String[] params) {
return new MIGDBShow(getMIVersion(), params);
}
public MIGDBShowPrompt createMIGDBShowPrompt() {
return new MIGDBShowPrompt(getMIVersion());
}
public MIGDBShowExitCode createMIGDBShowExitCode() {
return new MIGDBShowExitCode(getMIVersion());
}
public MIGDBShowDirectories createMIGDBShowDirectories() {
return new MIGDBShowDirectories(getMIVersion());
}
public MIGDBShowSolibSearchPath createMIGDBShowSolibSearchPath() {
return new MIGDBShowSolibSearchPath(getMIVersion());
}
public MIGDBShowAddressSize createMIGDBShowAddressSize() {
return new MIGDBShowAddressSize(getMIVersion());
}
public MIGDBShowEndian createMIGDBShowEndian() {
return new MIGDBShowEndian(getMIVersion());
}
public MIStackInfoDepth createMIStackInfoDepth() {
return new MIStackInfoDepth(getMIVersion());
}
public MIStackInfoDepth createMIStackInfoDepth(int depth) {
return new MIStackInfoDepth(getMIVersion(), depth);
}
public MIStackListArguments createMIStackListArguments(boolean showValue) {
return new MIStackListArguments(getMIVersion(), showValue);
}
public MIStackListArguments createMIStackListArguments(boolean showValue, int lowFrame, int highFrame) {
return new MIStackListArguments(getMIVersion(), showValue, lowFrame, highFrame);
}
public MIStackListFrames createMIStackListFrames() {
return new MIStackListFrames(getMIVersion());
}
public MIStackListFrames createMIStackListFrames(int lowFrame, int highFrame) {
return new MIStackListFrames(getMIVersion(), lowFrame, highFrame);
}
public MIStackListLocals createMIStackListLocals(boolean showValues) {
return new MIStackListLocals(getMIVersion(), showValues);
}
public MIStackSelectFrame createMIStackSelectFrame(int frameNum) {
return new MIStackSelectFrame(getMIVersion(), frameNum);
}
public CLITargetAttach createCLITargetAttach(int pid) {
return new CLITargetAttach(pid);
}
public MITargetDetach createMITargetDetach() {
return new MITargetDetach(getMIVersion());
}
public MITargetDownload createMITargetDownload(String file) {
return new MITargetDownload(getMIVersion(), file);
}
public MITargetSelect createMITargetSelect(String[] params) {
return new MITargetSelect(getMIVersion(), params);
}
public MIThreadListIds createMIThreadListIds() {
return new MIThreadListIds(getMIVersion());
}
public CLIInfoThreads createCLIInfoThreads() {
return new CLIInfoThreads();
}
public MIThreadSelect createMIThreadSelect(int threadNum) {
return new MIThreadSelect(getMIVersion(), threadNum);
}
public CLIInfoSharedLibrary createCLIInfoSharedLibrary() {
return new CLIInfoSharedLibrary();
}
public CLISharedLibrary createCLISharedLibrary() {
return new CLISharedLibrary();
}
public CLISharedLibrary createCLISharedLibrary(String name) {
return new CLISharedLibrary(name);
}
public CLIWhatis createCLIWhatis(String name) {
return new CLIWhatis(name);
}
public CLIInfoSignals createCLIInfoSignals() {
return new CLIInfoSignals();
}
public CLIInfoSignals createCLIInfoSignals(String name) {
return new CLIInfoSignals(name);
}
public CLIHandle createCLIHandle(String arg) {
return new CLIHandle(arg);
}
public CLISignal createCLISignal(String arg) {
return new CLISignal(arg);
}
public CLIPType createCLIPType(String name) {
return new CLIPType(name);
}
public CLIInfoProc createCLIInfoProc() {
return new CLIInfoProc();
}
public CLIInfoProgram createCLIInfoProgram() {
return new CLIInfoProgram();
}
public CLIInfoLine createCLIInfoLine(IAddress address) {
return new CLIInfoLine(address);
}
public MIVarCreate createMIVarCreate(String expression) {
return new MIVarCreate(getMIVersion(), expression);
}
public MIVarCreate createMIVarCreate(String name, String frameAddr, String expression) {
return new MIVarCreate(getMIVersion(), name, frameAddr, expression);
}
public MIVarDelete createMIVarDelete(String name) {
return new MIVarDelete(getMIVersion(), name);
}
public MIVarSetFormat createMIVarSetFormat(String name, int format) {
return new MIVarSetFormat(getMIVersion(), name, format);
}
public MIVarShowFormat createMIVarShowFormat(String name) {
return new MIVarShowFormat(getMIVersion(), name);
}
public MIVarInfoNumChildren createMIVarInfoNumChildren(String name) {
return new MIVarInfoNumChildren(getMIVersion(), name);
}
public MIVarListChildren createMIVarListChildren(String name) {
return new MIVarListChildren(getMIVersion(), name);
}
public MIVarInfoType createMIVarInfoType(String name) {
return new MIVarInfoType(getMIVersion(), name);
}
public MIVarInfoExpression createMIVarInfoExpression(String name) {
return new MIVarInfoExpression(getMIVersion(), name);
}
public MIVarShowAttributes createMIVarShowAttributes(String name) {
return new MIVarShowAttributes(getMIVersion(), name);
}
public MIVarEvaluateExpression createMIVarEvaluateExpression(String name) {
return new MIVarEvaluateExpression(getMIVersion(), name);
}
public MIVarAssign createMIVarAssign(String name, String expr) {
return new MIVarAssign(getMIVersion(), name, expr);
}
public MIVarUpdate createMIVarUpdate() {
return new MIVarUpdate(getMIVersion());
}
public MIVarUpdate createMIVarUpdate(String name) {
return new MIVarUpdate(getMIVersion(), name);
}
public MIInterpreterExecConsole createMIInterpreterExecConsole(String cmd) {
return new MIInterpreterExecConsole(getMIVersion(), cmd);
}
public MIGDBSetNewConsole createMIGDBSetNewConsole() {
return new MIGDBSetNewConsole(getMIVersion());
}
public MIInfoSharedLibrary createMIInfoSharedLibrary() {
return null;
}
public String getWorkingDirectory(File cwd) {
return "--cd=" + cwd.getAbsolutePath(); //$NON-NLS-1$
}
public MIProcess createMIProcess(String[] args, int launchTimeout, IProgressMonitor monitor) throws IOException {
return new MIProcessAdapter(args, launchTimeout, monitor);
}
}