/******************************************************************************* * Copyright (c) 2010 Wind River Systems, Inc. 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 * Freescale Semiconductor - refactoring *******************************************************************************/ package org.eclipse.cdt.debug.internal.ui.disassembly.dsf; import java.math.BigInteger; import org.eclipse.ui.IWorkbenchPartSite; /** * Implementations of {@link IDisassemblyBackend} are given this access back * into the part (editor/view) that created them. Except where noted, methods * must be invoked on the GUI thread. A disassembly backend has to call back * into the editor/view to carry out its duties. * * <p> * This interface was born of the refactoring which allowed the DSF Disassembly * view to work with both DSF and CDI. Before that, the functionality of * IDisasssemblyBackend was built into DisassemblyPart and thus there was no * need for this interface. This interface merely exposes model (DSF/CDI) * agnostic access to DisassemblyPart. It exposes methods that have been in * DisassemblyPart all along. Documentation for those methods were sparse, and * thus this interface is likewise. See the DisassemblyPart for any available * documentation. * * @noextend This interface is not intended to be extended by clients. * @noimplement This interface is not intended to be implemented by clients. */ public interface IDisassemblyPartCallback { void gotoFrame(int frame); void gotoFrameIfActive(int frame); void updateVisibleArea(); void updateInvalidSource(); void retrieveDisassembly(final BigInteger startAddress, BigInteger endAddress, final int linesHint, boolean mixed, boolean ignoreFile); void insertError(BigInteger address, String message); int getAddressSize(); void addressSizeChanged(int addressSize); AddressRangePosition getPositionOfAddress(BigInteger address); void gotoFrame(int frame, BigInteger address); void updatePC(BigInteger pc); void doPending(); void doScrollLocked(final Runnable doit); void lockScroller(); void unlockScroller(); void insertSource(AddressRangePosition pos); AddressRangePosition insertSource(AddressRangePosition pos, BigInteger address, final String file, int lineNumber); AddressRangePosition insertSource(AddressRangePosition pos, BigInteger address, final String file, int firstLine, int lastLine); void setUpdatePending(boolean pending); boolean getUpdatePending(); void setGotoAddressPending(BigInteger address); BigInteger getGotoAddressPending(); IDisassemblyDocument getDocument(); Object getStorageForFile(String file); void gotoAddress(BigInteger address); IWorkbenchPartSite getSite(); boolean hasViewer(); /** Thread-safe */ void handleTargetSuspended(); /** Thread-safe */ void handleTargetResumed(); /** Thread-safe */ void handleTargetEnded(); /** Thread-safe */ void asyncExec(Runnable runnable); }