1
0
Fork 0
mirror of https://github.com/eclipse-cdt/cdt synced 2025-08-05 23:35:48 +02:00

Some minor fixes for the build Environment and Macros: some extra-checks for null were added

This commit is contained in:
Mikhail Sennikovsky 2005-05-31 11:27:56 +00:00
parent 53358d181d
commit 78baded270
8 changed files with 85 additions and 93 deletions

View file

@ -248,4 +248,38 @@ public class EnvVarOperationProcessor {
name = name.toUpperCase(); name = name.toUpperCase();
return name; return name;
} }
static public IBuildEnvironmentVariable[] filterVariables(IBuildEnvironmentVariable variables[], String remove[]){
if(variables == null || variables.length == 0)
return variables;
IBuildEnvironmentVariable filtered[] = new IBuildEnvironmentVariable[variables.length];
int filteredNum = 0;
for(int i = 0; i < variables.length; i++){
IBuildEnvironmentVariable var = variables[i];
String name = null;
if(var != null && (name = normalizeName(var.getName())) != null){
boolean skip = false;
if(remove != null && remove.length > 0){
for(int j = 0; j < remove.length; j++){
if(remove[j] != null && remove[j].equals(name)){
skip = true;
break;
}
}
}
if(!skip)
filtered[filteredNum++] = var;
}
}
if(filteredNum != filtered.length){
IBuildEnvironmentVariable vars[] = new IBuildEnvironmentVariable[filteredNum];
for(int i = 0; i < filteredNum; i++)
vars[i] = filtered[i];
filtered = vars;
}
return filtered;
}
} }

View file

@ -209,22 +209,6 @@ public class ExternalExtensionEnvironmentSupplier implements
} }
protected IBuildEnvironmentVariable[] filterVariables(IBuildEnvironmentVariable variables[]){ protected IBuildEnvironmentVariable[] filterVariables(IBuildEnvironmentVariable variables[]){
if(variables == null || variables.length == 0) return EnvVarOperationProcessor.filterVariables(variables,fNonOverloadableVariables);
return variables;
IBuildEnvironmentVariable filtered[] = new IBuildEnvironmentVariable[variables.length];
int filteredNum = 0;
for(int i = 0; i < variables.length; i++){
if(getValidName(variables[i].getName()) != null)
filtered[filteredNum++] = variables[i];
}
if(filteredNum != filtered.length){
IBuildEnvironmentVariable vars[] = new IBuildEnvironmentVariable[filteredNum];
for(int i = 0; i < filteredNum; i++)
vars[i] = filtered[i];
filtered = vars;
}
return filtered;
} }
} }

View file

@ -326,23 +326,7 @@ public class UserDefinedEnvironmentSupplier extends
} }
protected IBuildEnvironmentVariable[] filterVariables(IBuildEnvironmentVariable variables[]){ protected IBuildEnvironmentVariable[] filterVariables(IBuildEnvironmentVariable variables[]){
if(variables == null || variables.length == 0) return EnvVarOperationProcessor.filterVariables(variables,fNonOverloadableVariables);
return variables;
IBuildEnvironmentVariable filtered[] = new IBuildEnvironmentVariable[variables.length];
int filteredNum = 0;
for(int i = 0; i < variables.length; i++){
if(getValidName(variables[i].getName()) != null)
filtered[filteredNum++] = variables[i];
}
if(filteredNum != filtered.length){
IBuildEnvironmentVariable vars[] = new IBuildEnvironmentVariable[filteredNum];
for(int i = 0; i < filteredNum; i++)
vars[i] = filtered[i];
filtered = vars;
}
return filtered;
} }
} }

View file

@ -177,23 +177,7 @@ public class ExternalExtensionMacroSupplier implements IBuildMacroSupplier {
} }
protected IBuildMacro[] filterMacros(IBuildMacro macros[]){ protected IBuildMacro[] filterMacros(IBuildMacro macros[]){
if(macros == null || macros.length == 0) return MacroResolver.filterMacros(macros,fNonOverloadableMacros);
return macros;
IBuildMacro filtered[] = new IBuildMacro[macros.length];
int filteredNum = 0;
for(int i = 0; i < macros.length; i++){
if(getValidName(macros[i].getName()) != null)
filtered[filteredNum++] = macros[i];
}
if(filteredNum != filtered.length){
IBuildMacro m[] = new IBuildMacro[filteredNum];
for(int i = 0; i < filteredNum; i++)
m[i] = filtered[i];
filtered = m;
}
return filtered;
} }
protected IBuildMacroSupplier[] filterValidSuppliers(IBuildMacroSupplier suppliers[]){ protected IBuildMacroSupplier[] filterValidSuppliers(IBuildMacroSupplier suppliers[]){

View file

@ -20,6 +20,7 @@ import org.eclipse.cdt.managedbuilder.core.IConfiguration;
import org.eclipse.cdt.managedbuilder.core.ITool; import org.eclipse.cdt.managedbuilder.core.ITool;
import org.eclipse.cdt.managedbuilder.core.IToolChain; import org.eclipse.cdt.managedbuilder.core.IToolChain;
import org.eclipse.cdt.managedbuilder.internal.core.Tool; import org.eclipse.cdt.managedbuilder.internal.core.Tool;
import org.eclipse.cdt.managedbuilder.internal.envvar.EnvVarOperationProcessor;
import org.eclipse.cdt.managedbuilder.macros.BuildMacroException; import org.eclipse.cdt.managedbuilder.macros.BuildMacroException;
import org.eclipse.cdt.managedbuilder.macros.IBuildMacro; import org.eclipse.cdt.managedbuilder.macros.IBuildMacro;
import org.eclipse.cdt.managedbuilder.macros.IBuildMacroStatus; import org.eclipse.cdt.managedbuilder.macros.IBuildMacroStatus;
@ -389,4 +390,38 @@ public class MacroResolver {
return collector.getExplicisFileMacros(); return collector.getExplicisFileMacros();
} }
static public IBuildMacro[] filterMacros(IBuildMacro macros[], String remove[]){
if(macros == null || macros.length == 0)
return macros;
IBuildMacro filtered[] = new IBuildMacro[macros.length];
int filteredNum = 0;
for(int i = 0; i < macros.length; i++){
IBuildMacro var = macros[i];
String name = null;
if(var != null && (name = EnvVarOperationProcessor.normalizeName(var.getName())) != null){
boolean skip = false;
if(remove != null && remove.length > 0){
for(int j = 0; j < remove.length; j++){
if(remove[j] != null && remove[j].equals(name)){
skip = true;
break;
}
}
}
if(!skip)
filtered[filteredNum++] = var;
}
}
if(filteredNum != filtered.length){
IBuildMacro m[] = new IBuildMacro[filteredNum];
for(int i = 0; i < filteredNum; i++)
m[i] = filtered[i];
filtered = m;
}
return filtered;
}
} }

View file

@ -494,10 +494,13 @@ public class MbsMacroSupplier implements IBuildMacroSupplier {
if(macro != null) if(macro != null)
macros[num++] = macro; macros[num++] = macro;
} }
IBuildMacro result[] = new IBuildMacro[num]; if(macros.length != num){
if(num > 0) IBuildMacro tmp[] = new IBuildMacro[num];
System.arraycopy(macros,0,result,0,num); if(num > 0)
return result; System.arraycopy(macros,0,tmp,0,num);
macros = tmp;
}
return macros;
} }
return null; return null;
} }

View file

@ -894,7 +894,7 @@ public class EnvironmentBlock extends AbstractCOptionPage {
EnvVarCollector variables = provider.getVariables(fSystemContextInfo,includeParentLevels); EnvVarCollector variables = provider.getVariables(fSystemContextInfo,includeParentLevels);
if(variables == null) if(variables == null)
return null; return null;
return filterDisplayedVariables(variables.toArray(false)); return filterVariables(variables.toArray(false));
} }
/* (non-Javadoc) /* (non-Javadoc)
@ -1054,24 +1054,8 @@ public class EnvironmentBlock extends AbstractCOptionPage {
/* /*
* filteres the names to be displayed * filteres the names to be displayed
*/ */
protected IBuildEnvironmentVariable[] filterDisplayedVariables(IBuildEnvironmentVariable variables[]){ protected IBuildEnvironmentVariable[] filterVariables(IBuildEnvironmentVariable variables[]){
if(variables == null || variables.length == 0) return EnvVarOperationProcessor.filterVariables(variables,fHiddenVariables);
return variables;
IBuildEnvironmentVariable filtered[] = new IBuildEnvironmentVariable[variables.length];
int filteredNum = 0;
for(int i = 0; i < variables.length; i++){
if(canDisplay(variables[i].getName()))
filtered[filteredNum++] = variables[i];
}
if(filteredNum != filtered.length){
IBuildEnvironmentVariable vars[] = new IBuildEnvironmentVariable[filteredNum];
for(int i = 0; i < filteredNum; i++)
vars[i] = filtered[i];
filtered = vars;
}
return filtered;
} }
private void updateState(BuildMacroException e){ private void updateState(BuildMacroException e){

View file

@ -982,7 +982,7 @@ public class MacrosBlock extends AbstractCOptionPage {
IBuildMacro macros[] = BuildMacroProvider.getMacros(fSystemContextInfo,includeParentLevels); IBuildMacro macros[] = BuildMacroProvider.getMacros(fSystemContextInfo,includeParentLevels);
if(macros == null) if(macros == null)
return null; return null;
return filterDisplayedMacros(macros); return filterMacros(macros);
} }
/* (non-Javadoc) /* (non-Javadoc)
@ -1146,24 +1146,8 @@ public class MacrosBlock extends AbstractCOptionPage {
/* /*
* filteres the macros to be displayed * filteres the macros to be displayed
*/ */
protected IBuildMacro[] filterDisplayedMacros(IBuildMacro macros[]){ protected IBuildMacro[] filterMacros(IBuildMacro macros[]){
if(macros == null || macros.length == 0) return MacroResolver.filterMacros(macros,fHiddenMacros);
return macros;
IBuildMacro filtered[] = new IBuildMacro[macros.length];
int filteredNum = 0;
for(int i = 0; i < macros.length; i++){
if(canDisplay(macros[i].getName()))
filtered[filteredNum++] = macros[i];
}
if(filteredNum != filtered.length){
IBuildMacro tmp[] = new IBuildMacro[filteredNum];
for(int i = 0; i < filteredNum; i++)
tmp[i] = filtered[i];
filtered = tmp;
}
return filtered;
} }
protected IEnvironmentVariableProvider obtainEnvironmentVariableProvider(){ protected IEnvironmentVariableProvider obtainEnvironmentVariableProvider(){