/*******************************************************************************
* Copyright (c) 2010 IBM Corporation 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:
* IBM Corporation - initial API and implementation
*******************************************************************************/
package org.eclipse.cdt.dsf.debug.service;
import org.eclipse.cdt.core.IAddress;
import org.eclipse.cdt.dsf.concurrent.DataRequestMonitor;
import org.eclipse.cdt.dsf.concurrent.RequestMonitor;
/**
* This interface extends IRunControl to let a service support the
* "Run to Line," "Move to Line," and "Resume at Line" commands.
* @since 2.1
*/
public interface IRunControl2 extends IRunControl {
/**
* Returns whether the service can run the specified context to
* a source file and line number.
*
* @param context the execution DM context
* @param sourceFile the source file path, mapped to a debugger path if possible.
* @param lineNumber the line number offset (one-based) into the source file
* @param rm the DataRequestMonitor that will return the result
*/
void canRunToLine(IExecutionDMContext context, String sourceFile, int lineNumber, DataRequestMonitor<Boolean> rm );
/**
* Request to run the program up to the specified location.
* If skipBreakpoints is false, any other breakpoint will stop this
* command; while if skipBreakpoints is true, the operation will ignore
* other breakpoints and continue until the specified location.
*
* @param context the execution DM context
* @param sourceFile the source file path, mapped to a debugger path if possible.
* @param lineNumber the line number offset into (one-based) the source file
* @param skipBreakpoints skip breakpoints while performing this operation
* @param rm the Request Monitor
*/
void runToLine(IExecutionDMContext context, String sourceFile, int lineNumber, boolean skipBreakpoints, RequestMonitor rm);
/**
* Returns whether the service can run the specified context to
* a specified address.
*
* @param context the execution DM context
* @param address the address specifier
* @param rm the DataRequestMonitor that will return the result
*/
void canRunToAddress(IExecutionDMContext context, IAddress address, DataRequestMonitor<Boolean> rm );
/**
* Request to run the program up to the specified address.
* If skipBreakpoints is false, any other breakpoint will stop this
* command; while if skipBreakpoints is true, the operation will ignore
* other breakpoints and continue until the specified location.
*
* @param context the execution DM context
* @param address the address specifier
* @param skipBreakpoints the skip breakpoints
* @param rm the Request Monitor
*/
void runToAddress(IExecutionDMContext context, IAddress address, boolean skipBreakpoints, RequestMonitor rm);
/**
* Determines if the service can move the program counter to the specified
* source location.
*
* @param context the execution DM context
* @param sourceFile the source file path, mapped to a debugger path if possible.
* @param lineNumber the line number offset (one-based) into the source file
* @param resume resume execution after moving the PC
* @param rm the DataRequestMonitor that will return the result
*/
void canMoveToLine(IExecutionDMContext context, String sourceFile, int lineNumber, boolean resume, DataRequestMonitor<Boolean> rm );
/**
* Moves the program counter for the specified context to the specified
* source location.
*
* @param context the execution DM context
* @param sourceFile the source file path, mapped to a debugger path if possible.
* @param lineNumber the line number offset (one-based) into the source file
* @param resume resume execution after moving the PC
* @param rm the Request Monitor
*/
void moveToLine(IExecutionDMContext context, String sourceFile, int lineNumber, boolean resume, RequestMonitor rm );
/**
* Determines if the service can move the program counter to the specified
* address.
*
* @param context the execution DM context
* @param address the address specifier
* @param resume resume execution after moving the PC
* @param rm the DataRequestMonitor that will return the result
*/
void canMoveToAddress(IExecutionDMContext context, IAddress address, boolean resume, DataRequestMonitor<Boolean> rm );
/**
* Moves the program counter for the specified context to the specified
* address.
*
* @param context the execution DM context
* @param address the address specifier
* @param resume resume execution after moving the PC
* @param rm the Request Monitor
*/
void moveToAddress(IExecutionDMContext context, IAddress address, boolean resume, RequestMonitor rm );
}