/******************************************************************************* * Copyright (c) 2007, 2010 Intel Corporation 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: * Intel Corporation - Initial API and implementation *******************************************************************************/ package org.eclipse.cdt.managedbuilder.internal.dataprovider; import java.util.Arrays; import java.util.HashSet; import java.util.Map; import java.util.Set; import org.eclipse.cdt.core.cdtvariables.CdtVariableException; import org.eclipse.cdt.managedbuilder.internal.macros.MbsMacroSupplier; import org.eclipse.cdt.managedbuilder.macros.IBuildMacroProvider; import org.eclipse.cdt.utils.cdtvariables.CdtVariableResolver; import org.eclipse.cdt.utils.cdtvariables.IVariableContextInfo; import org.eclipse.cdt.utils.cdtvariables.SupplierBasedCdtVariableSubstitutor; public class BuildSystemSpecificVariableSubstitutor extends SupplierBasedCdtVariableSubstitutor{ private static final Set<String> fFileVarsSet = new HashSet<String>(Arrays.asList(MbsMacroSupplier.getInstance().getMacroNames(IBuildMacroProvider.CONTEXT_FILE))); private static final Set<String> fOptionVarsSet = new HashSet<String>(Arrays.asList(MbsMacroSupplier.getInstance().getMacroNames(IBuildMacroProvider.CONTEXT_OPTION))); private static final Set<String> fToolVarsSet = new HashSet<String>(Arrays.asList(MbsMacroSupplier.getInstance().getMacroNames(IBuildMacroProvider.CONTEXT_TOOL))); public BuildSystemSpecificVariableSubstitutor( IVariableContextInfo contextInfo, String inexistentMacroValue, String listDelimiter, Map<String, String> delimiterMap, String incorrectlyReferencedMacroValue) { super(contextInfo, inexistentMacroValue, listDelimiter, delimiterMap, incorrectlyReferencedMacroValue); } public BuildSystemSpecificVariableSubstitutor(IVariableContextInfo contextInfo){ this(contextInfo, "", " "); //$NON-NLS-1$ //$NON-NLS-2$ } public BuildSystemSpecificVariableSubstitutor( IVariableContextInfo contextInfo, String inexistentMacroValue, String listDelimiter) { super(contextInfo, inexistentMacroValue, listDelimiter); } @Override protected ResolvedMacro resolveMacro(String macroName) throws CdtVariableException { if(fFileVarsSet.contains(macroName) || fOptionVarsSet.contains(macroName) || fToolVarsSet.contains(macroName)) return super.resolveMacro(macroName); return new ResolvedMacro(macroName, CdtVariableResolver.createVariableReference(macroName)); } }