/******************************************************************************* * Copyright (c) 2006, 2009 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.dsf.debug.service; import org.eclipse.cdt.core.IAddress; import org.eclipse.cdt.dsf.concurrent.DataRequestMonitor; import org.eclipse.cdt.dsf.datamodel.IDMContext; import org.eclipse.cdt.dsf.datamodel.IDMEvent; import org.eclipse.cdt.dsf.service.IDsfService; /** * Debugger service representing module handling logic of a debugger. * * @since 1.0 */ public interface IModules extends IDsfService { /** * Symbol context represents the space into which module symbols are loaded. * Traditionally symbols are loaded in context of a process, but for other * types of debugging, like kernel or no-OS debugging, it's useful to * separate the concept of a symbol context from a process. */ public interface ISymbolDMContext extends IDMContext {} /** * Module context represents a single module that is loaded. */ public interface IModuleDMContext extends IDMContext {} /** * Event indicating a change in the symbol information for given context. */ public interface ModulesChangedDMEvent extends IDMEvent<ISymbolDMContext> {} /** * Specific event identifying that a new module was loaded into a * symbol context. */ public interface ModuleLoadedDMEvent extends ModulesChangedDMEvent { /** Returns context of the module that was loaded */ IModuleDMContext getLoadedModuleContext(); } public interface ModuleUnloadedDMEvent extends ModulesChangedDMEvent { /** Returns context of the module that was un-loaded */ IModuleDMContext getUnloadedModuleContext(); } /** Module information. */ public interface IModuleDMData { String getName(); String getFile(); long getTimeStamp(); String getBaseAddress(); String getToAddress(); boolean isSymbolsLoaded(); long getSize(); } /** Line information about a particular address */ public interface LineInfo { IAddress getAddress(); String getSourceFile(); int getStartLine(); int getStartColumn(); int getEndLine(); int getEndColumn(); } /** Address information about a particular file/line */ public interface AddressRange { IAddress getStartAddress(); IAddress getEndAddress(); } void getModuleData(IModuleDMContext dmc, DataRequestMonitor<IModuleDMData> rm); /** * Retreives the list of modules loaded in given symbol context. */ void getModules(ISymbolDMContext symCtx, DataRequestMonitor<IModuleDMContext[]> rm); /** * Calculates the line numbers corresponding to the given address. */ void calcLineInfo(ISymbolDMContext symCtx, IAddress address, DataRequestMonitor<LineInfo[]> rm); /** * Calculates the addresses corresponding to the given source file location. */ void calcAddressInfo(ISymbolDMContext symCtx, String file, int line, int col, DataRequestMonitor<AddressRange[]> rm); }