Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorVladimir Hirsl2005-05-19 20:08:18 +0000
committerVladimir Hirsl2005-05-19 20:08:18 +0000
commitd92ccd3e385474c8a50f9fa429698028627f9cb7 (patch)
tree52c44ecb8fbbe34b714202072e1d76e1a1ce1572 /build/org.eclipse.cdt.make.core/src
parent68e0514086b79945408509ad3a37e8cc36acebe1 (diff)
downloadorg.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')
-rw-r--r--build/org.eclipse.cdt.make.core/src/org/eclipse/cdt/make/core/scannerconfig/IDiscoveredPathManager.java4
-rw-r--r--build/org.eclipse.cdt.make.core/src/org/eclipse/cdt/make/internal/core/scannerconfig/PerFileDiscoveredPathContainer.java16
-rw-r--r--build/org.eclipse.cdt.make.core/src/org/eclipse/cdt/make/internal/core/scannerconfig2/PerFileSICollector.java24
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;
+ }
+
}
/**

Back to the top