/*******************************************************************************
* Copyright (c) 2004, 2010 QNX Software 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:
* QNX Software Systems - initial API and implementation
*******************************************************************************/
package org.eclipse.cdt.make.core.scannerconfig;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import org.eclipse.cdt.make.internal.core.scannerconfig.util.SymbolEntry;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.resources.IResource;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IPath;
import org.w3c.dom.Element;
/**
* @noextend This class is not intended to be subclassed by clients.
* @noimplement This interface is not intended to be implemented by clients.
*/
public interface IDiscoveredPathManager {
interface IDiscoveredPathInfo {
IProject getProject();
/**
* Get include paths for the whole project
*/
IPath[] getIncludePaths();
/**
* Get defined symbols for the whole project
*/
Map<String, String> getSymbols();
IDiscoveredScannerInfoSerializable getSerializable();
}
interface IPerProjectDiscoveredPathInfo extends IDiscoveredPathInfo {
void setIncludeMap(LinkedHashMap<String, Boolean> map);
void setSymbolMap(LinkedHashMap<String, SymbolEntry> map);
LinkedHashMap<String, Boolean> getIncludeMap();
LinkedHashMap<String, SymbolEntry> getSymbolMap();
}
interface IPerFileDiscoveredPathInfo extends IDiscoveredPathInfo {
/**
* Get include paths for the specific path (file)
*/
IPath[] getIncludePaths(IPath path);
/**
* Get quote include paths (for #include "...") for the specific path (file)
*/
IPath[] getQuoteIncludePaths(IPath path);
/**
* Get defined symbols for the specific path (file)
*/
Map<String, String> getSymbols(IPath path);
/**
* Get include files (gcc option -include) for the specific path (file)
*/
IPath[] getIncludeFiles(IPath path);
/**
* Get macro files (gcc option -imacros) for the specific path (file)
*/
IPath[] getMacroFiles(IPath path);
/**
* Returns if there is any discovered scanner info for the path
*/
boolean isEmpty(IPath path);
}
interface IPerFileDiscoveredPathInfo2 extends IPerFileDiscoveredPathInfo {
/**
* returns the map containing {@link IResource} - to - {@link PathInfo} pairs representing
* complete set of discovered information for the whole project
*
* @return Map
*/
Map<IResource, PathInfo> getPathInfoMap();
}
interface IDiscoveredScannerInfoSerializable {
/**
* Serialize discovered scanner info to an XML element
*/
public void serialize(Element root);
/**
* Deserialize discovered scanner info from an XML element
*/
public void deserialize(Element root);
/**
* @return an id of the collector
*/
public String getCollectorId();
}
interface IDiscoveredInfoListener {
void infoChanged(IDiscoveredPathInfo info);
void infoRemoved(IDiscoveredPathInfo info);
}
IDiscoveredPathInfo getDiscoveredInfo(IProject project, InfoContext context) throws CoreException;
IDiscoveredPathInfo getDiscoveredInfo(IProject project, InfoContext context, boolean defaultToProjectSettings) throws CoreException;
IDiscoveredPathInfo getDiscoveredInfo(IProject project) throws CoreException;
void removeDiscoveredInfo(IProject project);
void removeDiscoveredInfo(IProject project, InfoContext context);
void updateDiscoveredInfo(InfoContext context, IDiscoveredPathInfo info, boolean updateContainer, List<IResource> changedResources) throws CoreException;
void updateDiscoveredInfo(IDiscoveredPathInfo info, List<IResource> changedResources) throws CoreException;
void changeDiscoveredContainer(IProject project, ScannerConfigScope profileScope, List<IResource> changedResources);
void addDiscoveredInfoListener(IDiscoveredInfoListener listener);
void removeDiscoveredInfoListener(IDiscoveredInfoListener listener);
}