Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/language/settings/providers/PathEntryScannerInfoLanguageSettingsProvider.java')
-rw-r--r--core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/language/settings/providers/PathEntryScannerInfoLanguageSettingsProvider.java330
1 files changed, 165 insertions, 165 deletions
diff --git a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/language/settings/providers/PathEntryScannerInfoLanguageSettingsProvider.java b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/language/settings/providers/PathEntryScannerInfoLanguageSettingsProvider.java
index ee3ae24a027..8e390c88644 100644
--- a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/language/settings/providers/PathEntryScannerInfoLanguageSettingsProvider.java
+++ b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/language/settings/providers/PathEntryScannerInfoLanguageSettingsProvider.java
@@ -1,165 +1,165 @@
-/*******************************************************************************
- * Copyright (c) 2013, 2013 Andrew Gvozdev 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:
- * Andrew Gvozdev - Initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.internal.core.language.settings.providers;
-
-import java.util.ArrayList;
-import java.util.Comparator;
-import java.util.LinkedHashMap;
-import java.util.LinkedHashSet;
-import java.util.List;
-import java.util.Map.Entry;
-import java.util.Set;
-import java.util.TreeSet;
-
-import org.eclipse.cdt.core.CCorePlugin;
-import org.eclipse.cdt.core.language.settings.providers.LanguageSettingsBaseProvider;
-import org.eclipse.cdt.core.model.ICProject;
-import org.eclipse.cdt.core.model.IContainerEntry;
-import org.eclipse.cdt.core.model.IIncludeEntry;
-import org.eclipse.cdt.core.model.IIncludeFileEntry;
-import org.eclipse.cdt.core.model.ILibraryEntry;
-import org.eclipse.cdt.core.model.IMacroEntry;
-import org.eclipse.cdt.core.model.IMacroFileEntry;
-import org.eclipse.cdt.core.model.IPathEntry;
-import org.eclipse.cdt.core.model.IPathEntryContainer;
-import org.eclipse.cdt.core.model.IPathEntryContainerExtension;
-import org.eclipse.cdt.core.resources.IPathEntryStore;
-import org.eclipse.cdt.core.settings.model.ICConfigurationDescription;
-import org.eclipse.cdt.core.settings.model.ICLanguageSettingEntry;
-import org.eclipse.cdt.core.settings.model.ICProjectDescription;
-import org.eclipse.cdt.core.settings.model.ICSettingEntry;
-import org.eclipse.cdt.core.settings.model.util.CDataUtil;
-import org.eclipse.cdt.internal.core.model.CModelManager;
-import org.eclipse.cdt.internal.core.model.DefaultPathEntryStore;
-import org.eclipse.cdt.internal.core.model.PathEntryManager;
-import org.eclipse.cdt.internal.core.model.PathEntryUtil;
-import org.eclipse.core.resources.IProject;
-import org.eclipse.core.resources.IResource;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IPath;
-
-/**
- * Wrapper class intended to provide backward compatibility with ScannerInfo supplied by {@link PathEntryManager}.
- */
-public class PathEntryScannerInfoLanguageSettingsProvider extends LanguageSettingsBaseProvider {
- @Override
- public List<ICLanguageSettingEntry> getSettingEntries(ICConfigurationDescription cfgDescription, IResource rc, String languageId) {
- if (cfgDescription == null) {
- return null;
- }
- ICProjectDescription prjDescription = cfgDescription.getProjectDescription();
- if (prjDescription == null) {
- return null;
- }
-
- IProject project = prjDescription.getProject();
- ICProject cproject = CModelManager.getDefault().getCModel().getCProject(project);
- IPath projectPath = cproject.getPath();
-
- // using map of sets to support specific ordering of entries
- LinkedHashMap<Integer, Set<IPathEntry>> pathEntriesMap = new LinkedHashMap<Integer, Set<IPathEntry>>();
- pathEntriesMap.put(IPathEntry.CDT_INCLUDE, new LinkedHashSet<IPathEntry>());
- // keep macros sorted
- pathEntriesMap.put(IPathEntry.CDT_MACRO, new TreeSet<IPathEntry>(new Comparator<IPathEntry>() {
- @Override
- public int compare(IPathEntry macro1, IPathEntry macro2) {
- if (macro1 instanceof IMacroEntry && macro2 instanceof IMacroEntry) {
- return ((IMacroEntry)macro1).getMacroName().compareTo(((IMacroEntry)macro2).getMacroName());
- }
- return 0;
- }
- }));
- pathEntriesMap.put(IPathEntry.CDT_INCLUDE_FILE, new LinkedHashSet<IPathEntry>());
- pathEntriesMap.put(IPathEntry.CDT_MACRO_FILE, new LinkedHashSet<IPathEntry>());
- pathEntriesMap.put(IPathEntry.CDT_LIBRARY, new LinkedHashSet<IPathEntry>());
-
- IPathEntryStore pathEntryStore = new DefaultPathEntryStore(project);
- int typesMask = IPathEntry.CDT_INCLUDE | IPathEntry.CDT_MACRO | IPathEntry.CDT_INCLUDE_FILE | IPathEntry.CDT_MACRO_FILE | IPathEntry.CDT_LIBRARY;
- try {
- IPathEntry[] storePathEntries = pathEntryStore.getRawPathEntries();
- for (IPathEntry storePathEntry : storePathEntries) {
- if (storePathEntry instanceof IContainerEntry) {
- try {
- IPathEntryContainer container = PathEntryManager.getDefault().getPathEntryContainer((IContainerEntry) storePathEntry, cproject);
- if (container != null) {
- IPathEntry[] pathEntries = null;
- if (container instanceof IPathEntryContainerExtension) {
- pathEntries = ((IPathEntryContainerExtension)container).getPathEntries(rc.getFullPath(), typesMask);
- } else {
- pathEntries = container.getPathEntries();
- }
- if (pathEntries != null) {
- for (IPathEntry pathEntry : pathEntries) {
- collectPathEntry(pathEntriesMap, projectPath, pathEntry);
- }
- }
- }
- } catch (CoreException e) {
- CCorePlugin.log(e);
- }
- } else {
- collectPathEntry(pathEntriesMap, projectPath, storePathEntry);
- }
- }
- } catch (CoreException e) {
- CCorePlugin.log(e);
- }
-
- Set<ICLanguageSettingEntry> lsEntries = new LinkedHashSet<ICLanguageSettingEntry>();
- for (Entry<Integer, Set<IPathEntry>> entrySet : pathEntriesMap.entrySet()) {
- Set<IPathEntry> pathEntries = entrySet.getValue();
- for (IPathEntry pathEntry : pathEntries) {
- ICLanguageSettingEntry lsEntry = toLanguageSettingsEntry(pathEntry);
- if (lsEntry != null) {
- lsEntries.add(lsEntry);
- }
- }
- }
-
- return LanguageSettingsSerializableStorage.getPooledList(new ArrayList<ICLanguageSettingEntry>(lsEntries));
- }
-
- private void collectPathEntry(LinkedHashMap<Integer, Set<IPathEntry>> pathEntriesMap, IPath projectPath, IPathEntry pathEntry) {
- switch (pathEntry.getEntryKind()) {
- case IPathEntry.CDT_INCLUDE:
- case IPathEntry.CDT_MACRO:
- case IPathEntry.CDT_INCLUDE_FILE:
- case IPathEntry.CDT_MACRO_FILE:
- case IPathEntry.CDT_LIBRARY:
- IPathEntry resolvedPathEntry = PathEntryUtil.cloneEntryAndExpand(projectPath, pathEntry);
- Set<IPathEntry> set = pathEntriesMap.get(resolvedPathEntry.getEntryKind());
- if (set != null) {
- set.add(resolvedPathEntry);
- }
- }
- }
-
- private ICLanguageSettingEntry toLanguageSettingsEntry(IPathEntry pathEntry) {
- switch (pathEntry.getEntryKind()) {
- case IPathEntry.CDT_INCLUDE:
- IIncludeEntry includeEntry = (IIncludeEntry)pathEntry;
- return CDataUtil.createCIncludePathEntry(includeEntry.getFullIncludePath().toOSString(), includeEntry.isSystemInclude() ? 0 : ICSettingEntry.LOCAL);
- case IPathEntry.CDT_MACRO:
- IMacroEntry macroEntry = (IMacroEntry) pathEntry;
- return CDataUtil.createCMacroEntry(macroEntry.getMacroName(), macroEntry.getMacroValue(), 0);
- case IPathEntry.CDT_INCLUDE_FILE:
- IIncludeFileEntry includeFileEntry = (IIncludeFileEntry) pathEntry;
- return CDataUtil.createCIncludeFileEntry(includeFileEntry.getFullIncludeFilePath().toOSString(), 0);
- case IPathEntry.CDT_MACRO_FILE:
- IMacroFileEntry macroFileEntry = (IMacroFileEntry) pathEntry;
- return CDataUtil.createCMacroFileEntry(macroFileEntry.getFullMacroFilePath().toOSString(), 0);
- case IPathEntry.CDT_LIBRARY:
- ILibraryEntry libraryEntry = (ILibraryEntry) pathEntry;
- return CDataUtil.createCLibraryFileEntry(libraryEntry.getFullLibraryPath().toOSString(), 0);
- }
- return null;
- }
-}
+/*******************************************************************************
+ * Copyright (c) 2013, 2013 Andrew Gvozdev 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:
+ * Andrew Gvozdev - Initial API and implementation
+ *******************************************************************************/
+package org.eclipse.cdt.internal.core.language.settings.providers;
+
+import java.util.ArrayList;
+import java.util.Comparator;
+import java.util.LinkedHashMap;
+import java.util.LinkedHashSet;
+import java.util.List;
+import java.util.Map.Entry;
+import java.util.Set;
+import java.util.TreeSet;
+
+import org.eclipse.cdt.core.CCorePlugin;
+import org.eclipse.cdt.core.language.settings.providers.LanguageSettingsBaseProvider;
+import org.eclipse.cdt.core.model.ICProject;
+import org.eclipse.cdt.core.model.IContainerEntry;
+import org.eclipse.cdt.core.model.IIncludeEntry;
+import org.eclipse.cdt.core.model.IIncludeFileEntry;
+import org.eclipse.cdt.core.model.ILibraryEntry;
+import org.eclipse.cdt.core.model.IMacroEntry;
+import org.eclipse.cdt.core.model.IMacroFileEntry;
+import org.eclipse.cdt.core.model.IPathEntry;
+import org.eclipse.cdt.core.model.IPathEntryContainer;
+import org.eclipse.cdt.core.model.IPathEntryContainerExtension;
+import org.eclipse.cdt.core.resources.IPathEntryStore;
+import org.eclipse.cdt.core.settings.model.ICConfigurationDescription;
+import org.eclipse.cdt.core.settings.model.ICLanguageSettingEntry;
+import org.eclipse.cdt.core.settings.model.ICProjectDescription;
+import org.eclipse.cdt.core.settings.model.ICSettingEntry;
+import org.eclipse.cdt.core.settings.model.util.CDataUtil;
+import org.eclipse.cdt.internal.core.model.CModelManager;
+import org.eclipse.cdt.internal.core.model.DefaultPathEntryStore;
+import org.eclipse.cdt.internal.core.model.PathEntryManager;
+import org.eclipse.cdt.internal.core.model.PathEntryUtil;
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.resources.IResource;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IPath;
+
+/**
+ * Wrapper class intended to provide backward compatibility with ScannerInfo supplied by {@link PathEntryManager}.
+ */
+public class PathEntryScannerInfoLanguageSettingsProvider extends LanguageSettingsBaseProvider {
+ @Override
+ public List<ICLanguageSettingEntry> getSettingEntries(ICConfigurationDescription cfgDescription, IResource rc, String languageId) {
+ if (cfgDescription == null) {
+ return null;
+ }
+ ICProjectDescription prjDescription = cfgDescription.getProjectDescription();
+ if (prjDescription == null) {
+ return null;
+ }
+
+ IProject project = prjDescription.getProject();
+ ICProject cproject = CModelManager.getDefault().getCModel().getCProject(project);
+ IPath projectPath = cproject.getPath();
+
+ // using map of sets to support specific ordering of entries
+ LinkedHashMap<Integer, Set<IPathEntry>> pathEntriesMap = new LinkedHashMap<Integer, Set<IPathEntry>>();
+ pathEntriesMap.put(IPathEntry.CDT_INCLUDE, new LinkedHashSet<IPathEntry>());
+ // keep macros sorted
+ pathEntriesMap.put(IPathEntry.CDT_MACRO, new TreeSet<IPathEntry>(new Comparator<IPathEntry>() {
+ @Override
+ public int compare(IPathEntry macro1, IPathEntry macro2) {
+ if (macro1 instanceof IMacroEntry && macro2 instanceof IMacroEntry) {
+ return ((IMacroEntry)macro1).getMacroName().compareTo(((IMacroEntry)macro2).getMacroName());
+ }
+ return 0;
+ }
+ }));
+ pathEntriesMap.put(IPathEntry.CDT_INCLUDE_FILE, new LinkedHashSet<IPathEntry>());
+ pathEntriesMap.put(IPathEntry.CDT_MACRO_FILE, new LinkedHashSet<IPathEntry>());
+ pathEntriesMap.put(IPathEntry.CDT_LIBRARY, new LinkedHashSet<IPathEntry>());
+
+ IPathEntryStore pathEntryStore = new DefaultPathEntryStore(project);
+ int typesMask = IPathEntry.CDT_INCLUDE | IPathEntry.CDT_MACRO | IPathEntry.CDT_INCLUDE_FILE | IPathEntry.CDT_MACRO_FILE | IPathEntry.CDT_LIBRARY;
+ try {
+ IPathEntry[] storePathEntries = pathEntryStore.getRawPathEntries();
+ for (IPathEntry storePathEntry : storePathEntries) {
+ if (storePathEntry instanceof IContainerEntry) {
+ try {
+ IPathEntryContainer container = PathEntryManager.getDefault().getPathEntryContainer((IContainerEntry) storePathEntry, cproject);
+ if (container != null) {
+ IPathEntry[] pathEntries = null;
+ if (container instanceof IPathEntryContainerExtension) {
+ pathEntries = ((IPathEntryContainerExtension)container).getPathEntries(rc.getFullPath(), typesMask);
+ } else {
+ pathEntries = container.getPathEntries();
+ }
+ if (pathEntries != null) {
+ for (IPathEntry pathEntry : pathEntries) {
+ collectPathEntry(pathEntriesMap, projectPath, pathEntry);
+ }
+ }
+ }
+ } catch (CoreException e) {
+ CCorePlugin.log(e);
+ }
+ } else {
+ collectPathEntry(pathEntriesMap, projectPath, storePathEntry);
+ }
+ }
+ } catch (CoreException e) {
+ CCorePlugin.log(e);
+ }
+
+ Set<ICLanguageSettingEntry> lsEntries = new LinkedHashSet<ICLanguageSettingEntry>();
+ for (Entry<Integer, Set<IPathEntry>> entrySet : pathEntriesMap.entrySet()) {
+ Set<IPathEntry> pathEntries = entrySet.getValue();
+ for (IPathEntry pathEntry : pathEntries) {
+ ICLanguageSettingEntry lsEntry = toLanguageSettingsEntry(pathEntry);
+ if (lsEntry != null) {
+ lsEntries.add(lsEntry);
+ }
+ }
+ }
+
+ return LanguageSettingsSerializableStorage.getPooledList(new ArrayList<ICLanguageSettingEntry>(lsEntries));
+ }
+
+ private void collectPathEntry(LinkedHashMap<Integer, Set<IPathEntry>> pathEntriesMap, IPath projectPath, IPathEntry pathEntry) {
+ switch (pathEntry.getEntryKind()) {
+ case IPathEntry.CDT_INCLUDE:
+ case IPathEntry.CDT_MACRO:
+ case IPathEntry.CDT_INCLUDE_FILE:
+ case IPathEntry.CDT_MACRO_FILE:
+ case IPathEntry.CDT_LIBRARY:
+ IPathEntry resolvedPathEntry = PathEntryUtil.cloneEntryAndExpand(projectPath, pathEntry);
+ Set<IPathEntry> set = pathEntriesMap.get(resolvedPathEntry.getEntryKind());
+ if (set != null) {
+ set.add(resolvedPathEntry);
+ }
+ }
+ }
+
+ private ICLanguageSettingEntry toLanguageSettingsEntry(IPathEntry pathEntry) {
+ switch (pathEntry.getEntryKind()) {
+ case IPathEntry.CDT_INCLUDE:
+ IIncludeEntry includeEntry = (IIncludeEntry)pathEntry;
+ return CDataUtil.createCIncludePathEntry(includeEntry.getFullIncludePath().toOSString(), includeEntry.isSystemInclude() ? 0 : ICSettingEntry.LOCAL);
+ case IPathEntry.CDT_MACRO:
+ IMacroEntry macroEntry = (IMacroEntry) pathEntry;
+ return CDataUtil.createCMacroEntry(macroEntry.getMacroName(), macroEntry.getMacroValue(), 0);
+ case IPathEntry.CDT_INCLUDE_FILE:
+ IIncludeFileEntry includeFileEntry = (IIncludeFileEntry) pathEntry;
+ return CDataUtil.createCIncludeFileEntry(includeFileEntry.getFullIncludeFilePath().toOSString(), 0);
+ case IPathEntry.CDT_MACRO_FILE:
+ IMacroFileEntry macroFileEntry = (IMacroFileEntry) pathEntry;
+ return CDataUtil.createCMacroFileEntry(macroFileEntry.getFullMacroFilePath().toOSString(), 0);
+ case IPathEntry.CDT_LIBRARY:
+ ILibraryEntry libraryEntry = (ILibraryEntry) pathEntry;
+ return CDataUtil.createCLibraryFileEntry(libraryEntry.getFullLibraryPath().toOSString(), 0);
+ }
+ return null;
+ }
+}

Back to the top