diff options
author | Vladimir Hirsl | 2005-05-19 20:08:18 +0000 |
---|---|---|
committer | Vladimir Hirsl | 2005-05-19 20:08:18 +0000 |
commit | d92ccd3e385474c8a50f9fa429698028627f9cb7 (patch) | |
tree | 52c44ecb8fbbe34b714202072e1d76e1a1ce1572 /build/org.eclipse.cdt.make.core/src | |
parent | 68e0514086b79945408509ad3a37e8cc36acebe1 (diff) | |
download | org.eclipse.cdt-d92ccd3e385474c8a50f9fa429698028627f9cb7.tar.gz org.eclipse.cdt-d92ccd3e385474c8a50f9fa429698028627f9cb7.tar.xz org.eclipse.cdt-d92ccd3e385474c8a50f9fa429698028627f9cb7.zip |
Final fix for 95641: [Scanner Config] Per file scanner info not available for header files and not compiled source files.
- For include files and source files that are not compiled per file discovered scanner info defaults to project's discovered scanner info.
- A new method is added to CoreModel to determine if per resource scanner info is empty. This method will take into account effective per file discovered scanner info.
Diffstat (limited to 'build/org.eclipse.cdt.make.core/src')
3 files changed, 44 insertions, 0 deletions
diff --git a/build/org.eclipse.cdt.make.core/src/org/eclipse/cdt/make/core/scannerconfig/IDiscoveredPathManager.java b/build/org.eclipse.cdt.make.core/src/org/eclipse/cdt/make/core/scannerconfig/IDiscoveredPathManager.java index 3070870424f..4297233ba64 100644 --- a/build/org.eclipse.cdt.make.core/src/org/eclipse/cdt/make/core/scannerconfig/IDiscoveredPathManager.java +++ b/build/org.eclipse.cdt.make.core/src/org/eclipse/cdt/make/core/scannerconfig/IDiscoveredPathManager.java @@ -65,6 +65,10 @@ public interface IDiscoveredPathManager { * 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 IDiscoveredScannerInfoSerializable { diff --git a/build/org.eclipse.cdt.make.core/src/org/eclipse/cdt/make/internal/core/scannerconfig/PerFileDiscoveredPathContainer.java b/build/org.eclipse.cdt.make.core/src/org/eclipse/cdt/make/internal/core/scannerconfig/PerFileDiscoveredPathContainer.java index 676431726ab..bcf6b5a3b75 100644 --- a/build/org.eclipse.cdt.make.core/src/org/eclipse/cdt/make/internal/core/scannerconfig/PerFileDiscoveredPathContainer.java +++ b/build/org.eclipse.cdt.make.core/src/org/eclipse/cdt/make/internal/core/scannerconfig/PerFileDiscoveredPathContainer.java @@ -82,4 +82,20 @@ public class PerFileDiscoveredPathContainer extends DiscoveredPathContainer return (IPathEntry[]) entries.toArray(new IPathEntry[entries.size()]); } + /* (non-Javadoc) + * @see org.eclipse.cdt.core.model.IPathEntryContainerExtension#isEmpty(org.eclipse.core.runtime.IPath) + */ + public boolean isEmpty(IPath path) { + IDiscoveredPathInfo info; + try { + info = MakeCorePlugin.getDefault().getDiscoveryManager().getDiscoveredInfo(fProject); + if (info instanceof IPerFileDiscoveredPathInfo) { + IPerFileDiscoveredPathInfo filePathInfo = (IPerFileDiscoveredPathInfo) info; + return filePathInfo.isEmpty(path); + } + } catch (CoreException e) { + } + return false; + } + } diff --git a/build/org.eclipse.cdt.make.core/src/org/eclipse/cdt/make/internal/core/scannerconfig2/PerFileSICollector.java b/build/org.eclipse.cdt.make.core/src/org/eclipse/cdt/make/internal/core/scannerconfig2/PerFileSICollector.java index 9057bda4264..5390d59d4a6 100644 --- a/build/org.eclipse.cdt.make.core/src/org/eclipse/cdt/make/internal/core/scannerconfig2/PerFileSICollector.java +++ b/build/org.eclipse.cdt.make.core/src/org/eclipse/cdt/make/internal/core/scannerconfig2/PerFileSICollector.java @@ -149,6 +149,13 @@ public class PerFileSICollector implements IScannerInfoCollector2, IScannerInfoC IPath[] includeFiles; IPath[] macrosFiles; Map definedSymbols; + public boolean isEmpty() { + return (includePaths.length == 0 && + quoteIncludePaths.length == 0 && + includeFiles.length == 0 && + macrosFiles.length == 0 && + definedSymbols.size() == 0); + } } public static final String COLLECTOR_ID = MakeCorePlugin.getUniqueIdentifier() + ".PerFileSICollector"; //$NON-NLS-1$ @@ -676,6 +683,23 @@ public class PerFileSICollector implements IScannerInfoCollector2, IScannerInfoC return sid; } + /* (non-Javadoc) + * @see org.eclipse.cdt.make.core.scannerconfig.IDiscoveredPathManager.IPerFileDiscoveredPathInfo#isEmpty(org.eclipse.core.runtime.IPath) + */ + public boolean isEmpty(IPath path) { + boolean rc = true; + IResource resource = project.getWorkspace().getRoot().findMember(path); + if (resource != null) { + if (resource instanceof IFile) { + rc = (getCommand((IFile)resource) == null); + } + else if (resource instanceof IProject) { + rc = (psi == null || psi.isEmpty()); + } + } + return rc; + } + } /** |