blob: 3eacf0c91b257720b7543252435af1519292a465 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2012 Wind River 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:
* Wind River Systems - initial API and implementation
*******************************************************************************/
package org.eclipse.cdt.debug.core.model;
import org.eclipse.core.resources.IMarker;
import org.eclipse.core.runtime.CoreException;
/**
* Line breakpoint extension that allows a breakpoint to be relocated by a
* debugger to a valid source line.
* <p>Clients which can determine a valid source based on debuggers symbol
* information should call the various <code>setInstalled...</code> methods with
* the corrected location attributes. Note, there is no <code>setInstalledSourceHandle</code>,
* clients should call {@link ICBreakpoint#setSourceHandle(String)}. If multiple
* clients try to change the installed breakpoint location, the last call will
* take precedence. This way debuggers may update the location upon active debug
* context change. <br/>
* The original breakpoint location as configured by the user can always be
* retrieved using the <code>getRequested...</code> methods.
* </p>
* @since 7.2
* @noimplement This interface is not intended to be implemented by clients.
* @noextend This interface is not intended to be extended by clients.
*/
public interface ICLineBreakpoint2 extends ICLineBreakpoint, ICBreakpoint2 {
/**
* Breakpoint attribute storing the original requested line for this breakpoint
* This attribute is a <code>int</code>.
*/
public static final String REQUESTED_LINE = "requestedLine"; //$NON-NLS-1$
/**
* Breakpoint attribute storing the original requested column for this breakpoint
* This attribute is a <code>int</code>.
*/
public static final String REQUESTED_CHAR_START = "requestedCharStart"; //$NON-NLS-1$
/**
* Breakpoint attribute storing the original requested column for this breakpoint
* This attribute is a <code>int</code>.
*/
public static final String REQUESTED_CHAR_END = "requestedCharEnd"; //$NON-NLS-1$
/**
* Breakpoint attribute storing the original requested file name this breakpoint
* is set in.
* This attribute is a <code>String</code>.
*/
public static final String REQUESTED_SOURCE_HANDLE = "requestedSourceHandle"; //$NON-NLS-1$
/**
* Breakpoint attribute which is set if the installed line number of a
* breakpoint is changed.
*
* Triggers an update of the installed location, if set.
*
* This attribute is a <code>Boolean</code>.
*
* @since 8.0
*/
public static final String RESET_INSTALLED_LOCATION = "resetInstalledLocation"; //$NON-NLS-1$
/**
* Returns the line number where the breakpoint was set before it was relocated to a
* valid source line.
*
* @return Returns the requested line number attribute.
* @exception CoreException if unable to access the property on this breakpoint's
* underlying marker
*/
public int getRequestedLine() throws CoreException;
/**
* Sets the line number where the breakpoint should be set.
*
* @param The requested line number attribute.
* @exception CoreException if unable to access the property on this breakpoint's
* underlying marker
*/
public void setRequestedLine(int line) throws CoreException;
/**
* Returns starting source index where the breakpoint was set before it
* was moved to a valid source location.
*
* @return Returns the requested start index attribute.
* @exception CoreException if unable to access the property on this breakpoint's
* underlying marker
*/
public int getRequestedCharStart() throws CoreException;
/**
* Sets the starting source index where the breakpoint should be set.
*
* @param The requested start index attribute.
* @exception CoreException if unable to access the property on this breakpoint's
* underlying marker
*/
public void setRequestedCharStart(int charStart) throws CoreException;
/**
* Returns ending source index where the breakpoint was set before it
* was moved to a valid source location.
*
* @return Returns the requested end index attribute.
* @exception CoreException if unable to access the property on this breakpoint's
* underlying marker
*/
public int getRequestedCharEnd() throws CoreException;
/**
* Sets the staring source index where the breakpoint should be set.
*
* @param The requested end index attribute.
* @exception CoreException if unable to access the property on this breakpoint's
* underlying marker
*/
public void setRequestedCharEnd(int charEnd) throws CoreException;
/**
* Returns the file name where the breakpoint was set before it was relocated to a
* valid file.
*
* @return Returns the requested file name.
* @exception CoreException if unable to access the property on this breakpoint's
* underlying marker
*/
public String getRequestedSourceHandle() throws CoreException;
/**
* Sets the file name where the breakpoint should be set. May be an empty string
* if the file is not known.
*
* @param Requested file name.
* @exception CoreException if unable to access the property on this breakpoint's
* underlying marker
*/
public void setRequestedSourceHandle(String fileName) throws CoreException;
/**
* Sets the line number where the breakpoint is actually installed. This
* method only updates the {@link IMarker#LINE_NUMBER} attribute and the
* breakpoint message.
*
* @param line Installed line number
* @throws CoreException if unable to access the property
* on this breakpoint's underlying marker
*/
public void setInstalledLineNumber(int line) throws CoreException;
/**
* Sets the start index where the breakpoint is actually installed. This method
* only updates the {@link IMarker#CHAR_START} attribute and the breakpoint
* message.
*
* @param charStart Installed char start
* @throws CoreException
*/
public void setInstalledCharStart(int charStart) throws CoreException;
/**
* Sets the end index where the breakpoint is actually installed. This method
* only updates the {@link IMarker#CHAR_END} attribute and the breakpoint
* message.
*
* @param charEnd Installed char start
* @throws CoreException
*/
public void setInstalledCharEnd(int charStart) throws CoreException;
/**
* Resets the breakpoint location back to the values specified by the
* REQUESTED_* attributes. This operation should be called automatically
* by the implementation when the install count is reset to 0, and does
* not need to be called by the client at that time.
*
* @throws CoreException
*/
public void resetInstalledLocation() throws CoreException;
}