1
0
Fork 0
mirror of https://github.com/eclipse-cdt/cdt synced 2025-04-23 22:52:11 +02:00

Updating values for macro definitions found by the scanner discovery, bug 227108.

This commit is contained in:
Markus Schorn 2008-04-15 15:46:06 +00:00
parent a9ee6e4393
commit a7cc2f119c
2 changed files with 26 additions and 58 deletions

View file

@ -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<String, Boolean> 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<String, Boolean>(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<String> getActive() {
return get(true, true, true);
}
public List getActiveRaw() {
public List<String> getActiveRaw() {
return get(false, true, true);
}
public List getRemoved() {
public List<String> getRemoved() {
return get(true, true, false);
}
public List getRemovedRaw() {
public List<String> getRemovedRaw() {
return get(false, true, false);
}
public List getAll() {
public List<String> getAll() {
return get(true, false, true /*don't care*/);
}
public List getAllRaw() {
public List<String> 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<String> get(boolean format, boolean subset, boolean active) {
List<String> rv = new ArrayList<String>(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<String> getValuesOnly(boolean active) {
List<String> rv = new ArrayList<String>(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');

View file

@ -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();