/***************************************************************** * Copyright (c) 2010 Texas Instruments 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: * Patrick Chuong (Texas Instruments) - Initial API and implementation (Bug 300053) *****************************************************************/ package org.eclipse.cdt.dsf.debug.internal.ui.disassembly.provisional; import org.eclipse.cdt.core.IAddress; import org.eclipse.cdt.debug.core.model.ICAddressBreakpoint; import org.eclipse.debug.core.model.IBreakpoint; import org.eclipse.debug.core.model.ILineBreakpoint; /** * <p> * This interface provides location information for a breakpoint to * determine its visual annotation position in the disassembly viewer document. * If a breakpoint adapts to this interface, its position in the viewer is * determined by the information provided by the location provider. * </p> * * <p> * Breakpoints implementing either {@link ICAddressBreakpoint} or {@link ILineBreakpoint} * need not provide a location provider but may do so in order to override default * location retrieval. * </p> * * <p> * The annotation position will be determined with the following ordering: * <ol> * <li>If there is source info, than source marker will be use by the viewer.</li> * <li>If there is label info, than label marker will be use by the viewer.</li> * <li>If there is address info, than address marker will be use by the viewer.</li> * <li>Otherwise, nothing will be created.</li> * </ol> * </p> * <br> * @since 2.1 */ public interface IBreakpointLocationProvider { /** * Returns the line number of the breakpoint or -1 if no line number is * available. * * @param breakpoint * the breakpoint * @return the line number or -1 */ int getLineNumber(IBreakpoint breakpoint); /** * Returns the source file path of the breakpoint or <code>null</code> if no * source file is associated with this breakpoint. * * @param breakpoint * the breakpoint * @return the file path, can be <code>null</code> */ String getSourceFile(IBreakpoint breakpoint); /** * Returns the label address of the breakpoint or <code>null</code> if no * label is associated with this breakpoint. * * @param breakpoint * the breakpoint * @return the label address, can be <code>null</code> */ IAddress getLabelAddress(IBreakpoint breakpoint); /** * Returns the addresses of the breakpoint. * * <p> * <i>Currently there can only be one annotation per breakpoint. Therefore * an annotation is created only for the first valid address. Support for * multiple annotations per breakpoint is up for future enhancements. </i> * </p> * * @param breakpoint * the breakpoint * @return the addresses, can be <code>null</code> */ IAddress[] getAddresses(IBreakpoint breakpoint); }