From a7cc2f119cdaeb6b65adebf2234cdb6e4966332f Mon Sep 17 00:00:00 2001 From: Markus Schorn Date: Tue, 15 Apr 2008 15:46:06 +0000 Subject: [PATCH] Updating values for macro definitions found by the scanner discovery, bug 227108. --- .../core/scannerconfig/util/SymbolEntry.java | 82 ++++++------------- .../scannerconfig2/PerProjectSICollector.java | 2 +- 2 files changed, 26 insertions(+), 58 deletions(-) diff --git a/build/org.eclipse.cdt.make.core/src/org/eclipse/cdt/make/internal/core/scannerconfig/util/SymbolEntry.java b/build/org.eclipse.cdt.make.core/src/org/eclipse/cdt/make/internal/core/scannerconfig/util/SymbolEntry.java index 65a425bfbc0..716927340f1 100644 --- a/build/org.eclipse.cdt.make.core/src/org/eclipse/cdt/make/internal/core/scannerconfig/util/SymbolEntry.java +++ b/build/org.eclipse.cdt.make.core/src/org/eclipse/cdt/make/internal/core/scannerconfig/util/SymbolEntry.java @@ -12,7 +12,6 @@ package org.eclipse.cdt.make.internal.core.scannerconfig.util; import java.util.ArrayList; -import java.util.Iterator; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; @@ -29,77 +28,47 @@ import java.util.Map; public class SymbolEntry { private static final String UNSPECIFIED_VALUE = "1"; //$NON-NLS-1$ private String name; - private Map values; // Values can be either in the active (selected) group or in the removed group + private Map values; // Values can be either in the active (selected) group or in the removed group -// public SymbolEntry(String name) { -// this.name = name; -// } - - public SymbolEntry(String name, String value) { - this(name, value, true); - } public SymbolEntry(String name, String value, boolean active) { this.name = name; if (values == null) { - values = new LinkedHashMap(1); + values = new LinkedHashMap(1); } values.put(value, Boolean.valueOf(active)); } - public SymbolEntry(SymbolEntry se) { - name = se.name; - // deep copy - values = new LinkedHashMap(se.values.size()); - for (Iterator i = se.values.keySet().iterator(); i.hasNext(); ) { - String key = (String) i.next(); - Boolean value = (Boolean) se.values.get(key); - values.put(key, Boolean.valueOf(value.booleanValue())); - } - } - public boolean add(String value) { - return add(value, true); - } public boolean add(String value, boolean active) { - boolean rc = false; - if (!values.containsKey(value)) { - values.put(value, Boolean.valueOf(active)); - rc = true; - } - return rc; + Boolean old= values.put(value, Boolean.valueOf(active)); + return old == null || old.booleanValue() != active; } - public void replace(String value, boolean active) { - values.put(value, Boolean.valueOf(active)); - } - -// private void addAll(SymbolEntry se) { -// values.putAll(se.values); -// } - + public void remove(String value) { values.remove(value); } + public void removeAll() { values = null; } - public List getActive() { + public List getActive() { return get(true, true, true); } - public List getActiveRaw() { + public List getActiveRaw() { return get(false, true, true); } - public List getRemoved() { + public List getRemoved() { return get(true, true, false); } - public List getRemovedRaw() { + public List getRemovedRaw() { return get(false, true, false); } - public List getAll() { + public List getAll() { return get(true, false, true /*don't care*/); } - public List getAllRaw() { + public List getAllRaw() { return get(false, false, true /*don't care*/); } @@ -111,11 +80,10 @@ public class SymbolEntry { * @param active - false = removed * @return List */ - private List get(boolean format, boolean subset, boolean active) { - List rv = new ArrayList(values.size()); - for (Iterator i = values.keySet().iterator(); i.hasNext(); ) { - String val = (String) i.next(); - if (subset && ((Boolean) values.get(val)).booleanValue() != active) + private List get(boolean format, boolean subset, boolean active) { + List rv = new ArrayList(values.size()); + for (String val : values.keySet()) { + if (subset && (values.get(val)).booleanValue() != active) continue; if (format) { rv.add(name + "=" + (val == null ? UNSPECIFIED_VALUE : val));//$NON-NLS-1$ @@ -130,11 +98,11 @@ public class SymbolEntry { * Returns only value part of all active entries * @return List */ - public List getValuesOnly(boolean active) { - List rv = new ArrayList(values.size()); - for (Iterator i = values.keySet().iterator(); i.hasNext(); ) { - String val = (String) i.next(); - if (((Boolean) values.get(val)).booleanValue() == active) { + public List getValuesOnly(boolean active) { + List rv = new ArrayList(values.size()); + for (Object element : values.keySet()) { + String val = (String) element; + if ((values.get(val)).booleanValue() == active) { rv.add(val == null ? UNSPECIFIED_VALUE : val); } } @@ -145,14 +113,14 @@ public class SymbolEntry { return values.size(); } + @Override public String toString() { - StringBuffer buffer = new StringBuffer(name); + StringBuilder buffer = new StringBuilder(name); buffer.append(':'); - for (Iterator i = values.keySet().iterator(); i.hasNext(); ) { - String val = (String) i.next(); + for (String val : values.keySet()) { buffer.append('\t'); buffer.append((val == null) ? "null" : val);//$NON-NLS-1$ - if (((Boolean) values.get(val)).booleanValue() == true) { + if ((values.get(val)).booleanValue() == true) { buffer.append("(active)");//$NON-NLS-1$ } buffer.append('\n'); diff --git a/build/org.eclipse.cdt.make.core/src/org/eclipse/cdt/make/internal/core/scannerconfig2/PerProjectSICollector.java b/build/org.eclipse.cdt.make.core/src/org/eclipse/cdt/make/internal/core/scannerconfig2/PerProjectSICollector.java index 2927e2dce20..7ce39d28744 100644 --- a/build/org.eclipse.cdt.make.core/src/org/eclipse/cdt/make/internal/core/scannerconfig2/PerProjectSICollector.java +++ b/build/org.eclipse.cdt.make.core/src/org/eclipse/cdt/make/internal/core/scannerconfig2/PerProjectSICollector.java @@ -306,7 +306,7 @@ public class PerProjectSICollector implements IScannerInfoCollector3, IScannerIn // if (sumDiscoveredSymbols == null) { // sumDiscoveredSymbols = new LinkedHashMap(); // } - addedSymbols = ScannerConfigUtil.scAddSymbolsList2SymbolEntryMap(sumDiscoveredSymbols, discoveredSymbols, false); + addedSymbols = ScannerConfigUtil.scAddSymbolsList2SymbolEntryMap(sumDiscoveredSymbols, discoveredSymbols, true); // Step 2. Get project's scanner config LinkedHashMap persistedSymbols = discPathInfo.getSymbolMap();