Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/core/ToolReference.java')
-rw-r--r--build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/core/ToolReference.java2505
1 files changed, 1254 insertions, 1251 deletions
diff --git a/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/core/ToolReference.java b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/core/ToolReference.java
index d5df38aa97d..34feff3a9cd 100644
--- a/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/core/ToolReference.java
+++ b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/core/ToolReference.java
@@ -1,1251 +1,1254 @@
-/*******************************************************************************
- * Copyright (c) 2003, 2005 IBM 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:
- * IBM - Initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.managedbuilder.internal.core;
-
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Iterator;
-import java.util.List;
-
-import org.eclipse.cdt.managedbuilder.core.BuildException;
-import org.eclipse.cdt.managedbuilder.core.IBuildObject;
-import org.eclipse.cdt.managedbuilder.core.IConfigurationV2;
-import org.eclipse.cdt.managedbuilder.core.IHoldsOptions;
-import org.eclipse.cdt.managedbuilder.core.IInputType;
-import org.eclipse.cdt.managedbuilder.core.IEnvVarBuildPath;
-import org.eclipse.cdt.managedbuilder.core.IOptionApplicability;
-import org.eclipse.cdt.managedbuilder.core.IManagedConfigElement;
-import org.eclipse.cdt.managedbuilder.core.IOption;
-import org.eclipse.cdt.managedbuilder.core.IOptionCategory;
-import org.eclipse.cdt.managedbuilder.core.IOutputType;
-import org.eclipse.cdt.managedbuilder.core.IResourceConfiguration;
-import org.eclipse.cdt.managedbuilder.core.ITool;
-import org.eclipse.cdt.managedbuilder.core.IToolChain;
-import org.eclipse.cdt.managedbuilder.core.IToolReference;
-import org.eclipse.cdt.managedbuilder.core.ManagedBuildManager;
-import org.eclipse.cdt.managedbuilder.core.IManagedCommandLineGenerator;
-import org.eclipse.cdt.managedbuilder.makegen.IManagedDependencyGenerator;
-import org.eclipse.core.runtime.IConfigurationElement;
-import org.eclipse.core.runtime.IPath;
-import org.eclipse.core.runtime.PluginVersionIdentifier;
-import org.w3c.dom.Document;
-import org.w3c.dom.Element;
-import org.w3c.dom.Node;
-import org.w3c.dom.NodeList;
-
-public class ToolReference implements IToolReference {
- private static final String DEFAULT_SEPARATOR = ","; //$NON-NLS-1$
-
- private String command;
- private boolean isDirty = false;
- private List optionReferences;
- private IBuildObject owner;
- private String outputExtensions;
- private String outputFlag;
- private String outputPrefix;
- protected ITool parent;
- private boolean resolved = true;
- private String versionsSupported;
- private String convertToId;
-
- /**
- * Create a new tool reference based on information contained in
- * a project file.
- *
- * @param owner The <code>ConfigurationV2</code> the receiver will be added to.
- * @param element The element defined in the project file containing build information
- * for the receiver.
- */
- public ToolReference(BuildObject owner, Element element) {
- this.owner = owner;
-
- if (owner instanceof ConfigurationV2) {
- if (parent == null) {
- Target parentTarget = (Target) ((ConfigurationV2)owner).getTarget();
- try {
- parent = ((Target)parentTarget.getParent()).getTool(element.getAttribute(ID));
- } catch (NullPointerException e) {
- parent = null;
- }
- }
- ((ConfigurationV2)owner).addToolReference(this);
- } else if (owner instanceof Target) {
- if (parent == null) {
- try {
- parent = ((Target)((Target)owner).getParent()).getTool(element.getAttribute(ID));
- } catch (NullPointerException e) {
- parent = null;
- }
- }
- ((Target)owner).addToolReference(this);
- }
-
- // Get the overridden tool command (if any)
- if (element.hasAttribute(ITool.COMMAND)) {
- command = element.getAttribute(ITool.COMMAND);
- }
-
- // Get the overridden output prefix (if any)
- if (element.hasAttribute(ITool.OUTPUT_PREFIX)) {
- outputPrefix = element.getAttribute(ITool.OUTPUT_PREFIX);
- }
-
- // Get the output extensions the reference produces
- if (element.hasAttribute(ITool.OUTPUTS)) {
- outputExtensions = element.getAttribute(ITool.OUTPUTS);
- }
- // Get the flag to control output
- if (element.hasAttribute(ITool.OUTPUT_FLAG))
- outputFlag = element.getAttribute(ITool.OUTPUT_FLAG);
-
- NodeList configElements = element.getChildNodes();
- for (int i = 0; i < configElements.getLength(); ++i) {
- Node configElement = configElements.item(i);
- if (configElement.getNodeName().equals(ITool.OPTION_REF)) {
- new OptionReference(this, (Element)configElement);
- }
- }
- }
-
- /**
- * Created tool reference from an extension defined in a plugin manifest.
- *
- * @param owner The <code>BuildObject</code> the receiver will be added to.
- * @param element The element containing build information for the reference.
- */
- public ToolReference(BuildObject owner, IManagedConfigElement element) {
- // setup for resolving
- ManagedBuildManager.putConfigElement(this, element);
- resolved = false;
-
- this.owner = owner;
-
- // hook me up
- if (owner instanceof ConfigurationV2) {
- ((ConfigurationV2)owner).addToolReference(this);
- } else if (owner instanceof Target) {
- ((Target)owner).addToolReference(this);
- }
-
- // Get the overridden tool command (if any)
- command = element.getAttribute(ITool.COMMAND);
-
- // Get the overridden output prefix, if any
- outputPrefix = element.getAttribute(ITool.OUTPUT_PREFIX);
-
- // Get the overridden output extensions (if any)
- String output = element.getAttribute(ITool.OUTPUTS);
- if (output != null) {
- outputExtensions = output;
- }
-
- // Get the flag to control output
- outputFlag = element.getAttribute(ITool.OUTPUT_FLAG);
-
- IManagedConfigElement[] toolElements = element.getChildren();
- for (int m = 0; m < toolElements.length; ++m) {
- IManagedConfigElement toolElement = toolElements[m];
- if (toolElement.getName().equals(ITool.OPTION_REF)) {
- new OptionReference(this, toolElement);
- }
- }
- }
-
- /**
- * Created a tool reference on the fly based on an existing tool or tool reference.
- *
- * @param owner The <code>BuildObject</code> the receiver will be added to.
- * @param tool The <code>ITool</code>tool the reference will be based on.
- */
- public ToolReference(BuildObject owner, ITool tool) {
- this.owner = owner;
- if (tool instanceof ToolReference) {
- parent = ((ToolReference)tool).getTool();
- } else {
- parent = tool;
- }
- command = tool.getToolCommand();
- outputFlag = tool.getOutputFlag();
- outputPrefix = tool.getOutputPrefix();
- String[] extensions = tool.getOutputsAttribute();
- outputExtensions = new String();
- if (extensions != null) {
- for (int index = 0; index < extensions.length; ++index) {
- if (extensions[index] == null) continue;
- outputExtensions += extensions[index];
- if (index < extensions.length - 1) {
- outputExtensions += DEFAULT_SEPARATOR;
- }
- }
- }
-
- // Create a copy of the option references of the parent in the receiver
- if (tool instanceof ToolReference) {
- List parentRefs = ((ToolReference)tool).getOptionReferenceList();
- Iterator iter = parentRefs.iterator();
- while (iter.hasNext()) {
- IOption parent = (IOption)iter.next();
- OptionReference clone = createOptionReference(parent);
- try {
- switch (parent.getValueType()) {
- case IOption.BOOLEAN:
- clone.setValue(parent.getBooleanValue());
- break;
- case IOption.STRING:
- clone.setValue(parent.getStringValue());
- case IOption.ENUMERATED:
- clone.setValue(parent.getSelectedEnum());
- break;
- default:
- clone.setValue(parent.getStringListValue());
- break;
- }
- } catch (BuildException e) {
- // Likely a mismatch between the value and option type
- continue;
- }
- }
- }
-
- if (owner instanceof ConfigurationV2) {
- ((ConfigurationV2)owner).addToolReference(this);
- } else if (owner instanceof Target) {
- ((Target)owner).addToolReference(this);
- }
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.managedbuilder.core.IToolReference#references(org.eclipse.cdt.managedbuilder.core.ITool)
- */
- public boolean references(ITool target) {
- if (equals(target)) {
- // we are the target
- return true;
- } else if (parent == null) {
- // basic sanity before proceeding
- return false;
- } else if (parent instanceof IToolReference) {
- // check the reference we are overriding
- return ((IToolReference)parent).references(target);
- } else if (target instanceof IToolReference) {
- return parent.equals(((IToolReference)target).getTool());
- } else {
- // the real reference
- return parent.equals(target);
- }
- }
-
- public void resolveReferences() {
- if (!resolved) {
- resolved = true;
- IManagedConfigElement element = ManagedBuildManager.getConfigElement(this);
- // resolve my parent
- if (owner instanceof ConfigurationV2) {
- Target target = (Target) ((ConfigurationV2)owner).getTarget();
- parent = target.getTool(element.getAttribute(ID));
- } else if (owner instanceof Target) {
- parent = ((Target)owner).getTool(element.getAttribute(ID));
- }
- // recursively resolve my parent
- if (parent instanceof Tool) {
- ((Tool)parent).resolveReferences();
- } else if (parent instanceof ToolReference) {
- ((ToolReference)parent).resolveReferences();
- }
-
- Iterator it = getOptionReferenceList().iterator();
- while (it.hasNext()) {
- OptionReference optRef = (OptionReference)it.next();
- optRef.resolveReferences();
- }
- }
- }
-
- /**
- * Adds the option reference specified in the argument to the receiver.
- *
- * @param optionRef
- */
- public void addOptionReference(OptionReference optionRef) {
- getOptionReferenceList().add(optionRef);
- isDirty = true;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.managedbuilder.core.ITool#buildsFileType(java.lang.String)
- */
- public boolean buildsFileType(String extension) {
- if (parent == null) {
- // bad reference
- return false;
- }
- return parent.buildsFileType(extension);
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.managedbuilder.core.ITool#buildsFileType(java.lang.String)
- */
- public boolean isInputFileType(String extension) {
- if (parent == null) {
- // bad reference
- return false;
- }
- return parent.isInputFileType(extension);
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.managedbuilder.core.IToolReference#createOptionReference(org.eclipse.cdt.managedbuilder.core.IOption)
- */
- public OptionReference createOptionReference(IOption option) {
- // Check if the option reference already exists
- OptionReference ref = getOptionReference(option);
- // It is possible that the search will return an option reference
- // that is supplied by another element of the build model, not the caller.
- // For example, if the search is starated by a configuration and the target
- // the caller belongs to has an option reference for the option, it
- // will be returned. While this is correct behaviour for a search, the
- // caller will need to create a clone for itself, so make sure the tool
- // reference of the search result is owned by the caller
- if (ref == null || !ref.getToolReference().owner.equals(this.owner)) {
- ref = new OptionReference(this, option);
- }
- return ref;
- }
-
- /* (non-Javadoc)
- * @return
- */
- protected List getAllOptionRefs() {
- // First get all the option references this tool reference contains
- if (owner instanceof ConfigurationV2) {
- return ((ConfigurationV2)owner).getOptionReferences(parent);
- } else if (owner instanceof Target) {
- return ((Target)owner).getOptionReferences(parent);
- } else {
- // this shouldn't happen
- return null;
- }
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.managedbuilder.core.IBuildObject#getId()
- */
- public String getId() {
- if (parent == null) {
- // bad reference
- return new String();
- }
- return parent.getId();
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.managedbuilder.core.IBuildObject#getBaseId()
- */
- public String getBaseId() {
- if (parent == null) {
- // bad reference
- return new String();
- }
- return parent.getBaseId();
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.managedbuilder.core.ITool#getInputExtensions()
- */
- public List getInputExtensions() {
- String[] exts = getPrimaryInputExtensions();
- List extList = new ArrayList();
- for (int i=0; i<exts.length; i++) {
- extList.add(exts[i]);
- }
- return extList;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.managedbuilder.core.IBuildObject#getName()
- */
- public String getName() {
- if (parent == null) {
- // bad reference
- return new String();
- }
- return parent.getName();
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.managedbuilder.core.ITool#getNatureFilter()
- */
- public int getNatureFilter() {
- if (parent == null) {
- // bad reference
- return ITool.FILTER_BOTH;
- }
- return parent.getNatureFilter();
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.managedbuilder.core.ITool#getOption(java.lang.String)
- */
- public IOption getOption(String id) {
- return getOptionById(id);
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.build.managed.ITool#getOption(java.lang.String)
- */
- public IOption getOptionById(String id) {
- IOption[] options = getOptions();
- for (int i = 0; i < options.length; i++) {
- IOption current = options[i];
- if (current.getId().equals(id)) {
- return current;
- }
- }
- return null;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.managedbuilder.core.ITool#producesFileType(java.lang.String)
- */
- public boolean producesFileType(String outputExtension) {
- // Check if the reference produces this type of file
- if (!getOutputsList().contains(outputExtension)) {
- return parent.producesFileType(outputExtension);
- } else {
- return true;
- }
-
- }
-
- /* (non-Javadoc)
- * @return
- */
- private List getOutputsList() {
- ArrayList answer = new ArrayList();
- if (outputExtensions != null) {
- String[] exts = outputExtensions.split(DEFAULT_SEPARATOR);
- answer.addAll(Arrays.asList(exts));
- }
- return answer;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.managedbuilder.core.IToolReference#getTool()
- */
- public ITool getTool() {
- return parent;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.build.managed.ITool#getToolCommand()
- */
- public String getToolCommand() {
- if (command == null) {
- // see if the parent has one
- if (parent != null) {
- return parent.getToolCommand();
- }
- return new String(); // bad reference
- }
- return command;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.build.managed.ITool#getToolFlags()
- */
- public String getToolFlags() throws BuildException {
- // Get all of the options
- StringBuffer buf = new StringBuffer();
- IOption[] opts = getOptions();
- for (int index = 0; index < opts.length; index++) {
- IOption option = opts[index];
-
- // check to see if the option has an applicability calculator
- IOptionApplicability applicabilityCalculator = option.getApplicabilityCalculator();
-
- boolean optionIsApplicable = true;
- if (applicabilityCalculator != null) {
- ITool tool = getTool();
- IBuildObject config;
- if( tool.getParent() instanceof IResourceConfiguration ) {
- config = tool.getParent();
- } else {
- config = ((IToolChain)tool.getParent()).getParent();
- }
- optionIsApplicable =
- applicabilityCalculator.isOptionUsedInCommandLine(config, tool, option);
- }
- if (optionIsApplicable) {
- switch (option.getValueType()) {
- case IOption.BOOLEAN :
- String boolCmd;
- if (option.getBooleanValue()) {
- boolCmd = option.getCommand();
- } else {
- // Note: getCommandFalse is new with CDT 2.0
- boolCmd = option.getCommandFalse();
- }
- if (boolCmd != null && boolCmd.length() > 0) {
- buf.append(boolCmd + WHITE_SPACE);
- }
- break;
-
- case IOption.ENUMERATED :
- String enumVal = option.getEnumCommand(option.getSelectedEnum());
- if (enumVal.length() > 0) {
- buf.append(enumVal + WHITE_SPACE);
- }
- break;
-
- case IOption.STRING :
- String strCmd = option.getCommand();
- String val = option.getStringValue();
- if (val.length() > 0) {
- if (strCmd != null) buf.append(strCmd);
- buf.append(val + WHITE_SPACE);
- }
- break;
-
- case IOption.STRING_LIST :
- String cmd = option.getCommand();
- String[] list = option.getStringListValue();
- for (int j = 0; j < list.length; j++) {
- String temp = list[j];
- if (cmd != null) buf.append(cmd);
- buf.append(temp + WHITE_SPACE);
- }
- break;
-
- case IOption.INCLUDE_PATH :
- String incCmd = option.getCommand();
- String[] paths = option.getIncludePaths();
- for (int j = 0; j < paths.length; j++) {
- String temp = paths[j];
- buf.append(incCmd + temp + WHITE_SPACE);
- }
- break;
-
- case IOption.PREPROCESSOR_SYMBOLS :
- String defCmd = option.getCommand();
- String[] symbols = option.getDefinedSymbols();
- for (int j = 0; j < symbols.length; j++) {
- String temp = symbols[j];
- buf.append(defCmd + temp + WHITE_SPACE);
- }
- break;
-
- default :
- break;
- }
- }
- }
-
- return buf.toString().trim();
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.managedbuilder.core.ITool#getTopOptionCategory()
- */
- public IOptionCategory getTopOptionCategory() {
- try {
- return parent.getTopOptionCategory();
- } catch (NullPointerException e) {
- return null;
- }
- }
-
- /* (non-Javadoc)
- * Answers an option reference that overrides the option, or <code>null</code>
- *
- * @param option
- * @return OptionReference
- */
- private OptionReference getOptionReference(IOption option) {
- // Get all the option references for this option
- Iterator iter = getAllOptionRefs().listIterator();
- while (iter.hasNext()) {
- OptionReference optionRef = (OptionReference) iter.next();
- if (optionRef.references(option))
- return optionRef;
- }
-
- return null;
- }
-
- /* (non-Javadoc)
- *
- * @param id
- * @return
- */
- private OptionReference getOptionReference(String id) {
- Iterator it = getOptionReferenceList().iterator();
- while (it.hasNext()) {
- OptionReference current = (OptionReference)it.next();
- if (current.getId().equals(id)) {
- return current;
- }
- }
- return null;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.managedbuilder.core.IToolReference#getOptionReferenceList()
- */
- public List getOptionReferenceList() {
- if (optionReferences == null) {
- optionReferences = new ArrayList();
- }
- return optionReferences;
- }
-
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.build.managed.ITool#getOptions()
- */
- public IOption[] getOptions() {
- IOption[] options = parent.getOptions();
-
- // Replace with our references
- for (int i = 0; i < options.length; ++i) {
- OptionReference ref = getOptionReference(options[i]);
- if (ref != null)
- options[i] = ref;
- }
-
- return options;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.managedbuilder.core.ITool#getOutputExtensions()
- */
- public String[] getOutputExtensions() {
- if (outputExtensions == null){
- if (parent != null) {
- return parent.getOutputsAttribute();
- } else {
- return new String[0];
- }
- }
- return outputExtensions.split(DEFAULT_SEPARATOR);
- }
-
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.managedbuilder.core.ITool#getOutputExtension(java.lang.String)
- */
- public String getOutputExtension(String inputExtension) {
- if (parent == null) {
- // bad reference
- return new String();
- }
- return parent.getOutputExtension(inputExtension);
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.managedbuilder.core.ITool#getOutputFlag()
- */
- public String getOutputFlag() {
- if (outputFlag == null) {
- if (parent != null) {
- return parent.getOutputFlag();
- } else {
- // We never should be here
- return new String();
- }
- }
- return outputFlag;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.managedbuilder.core.ITool#getOutputPrefix()
- */
- public String getOutputPrefix() {
- if (outputPrefix == null) {
- if (parent != null) {
- return parent.getOutputPrefix();
- }
- return new String(); // bad reference
- }
- return outputPrefix;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.managedbuilder.core.IToolReference#isDirty()
- */
- public boolean isDirty() {
- return isDirty;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.managedbuilder.core.ITool#isHeaderFile(java.lang.String)
- */
- public boolean isHeaderFile(String ext) {
- if (parent == null) {
- // bad reference
- return false;
- }
- return parent.isHeaderFile(ext);
- }
-
- /**
- * Answers <code>true</code> if the owner of the receiver matches
- * the argument.
- *
- * @param config
- * @return
- */
- public boolean ownedByConfiguration(IConfigurationV2 config) {
- if (owner instanceof ConfigurationV2) {
- return ((IConfigurationV2)owner).equals(config);
- }
- return false;
- }
-
- /**
- * Persist receiver to project file.
- *
- * @param doc The persistent store for the reference information.
- * @param element The root element in the store the receiver must use
- * to persist settings.
- */
- public void serialize(Document doc, Element element) {
- if (parent == null) return; // This is a bad reference
- element.setAttribute(ITool.ID, parent.getId());
-
- // Output the command
- if (command != null) {
- element.setAttribute(ITool.COMMAND, getToolCommand());
- }
-
- // Save output prefix
- if (outputPrefix != null) {
- element.setAttribute(ITool.OUTPUT_PREFIX, getOutputPrefix());
- }
-
- // Save the output flag
- if (outputFlag != null) {
- element.setAttribute(ITool.OUTPUT_FLAG, getOutputFlag());
- }
-
- // Save the outputs
- if (outputExtensions != null) {
- element.setAttribute(ITool.OUTPUTS, outputExtensions);
- }
-
- // Output the option references
- Iterator iter = getOptionReferenceList().listIterator();
- while (iter.hasNext()) {
- OptionReference optionRef = (OptionReference) iter.next();
- Element optionRefElement = doc.createElement(ITool.OPTION_REF);
- element.appendChild(optionRefElement);
- optionRef.serialize(doc, optionRefElement);
- }
-
- // Set the reference to clean
- isDirty = false;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.managedbuilder.core.IToolReference#setDirty(boolean)
- */
- public void setDirty(boolean isDirty) {
- // Override the local flag
- this.isDirty = isDirty;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.managedbuilder.core.IToolReference#setToolCommand(java.lang.String)
- */
- public boolean setToolCommand(String cmd) {
- if (cmd != null && !cmd.equals(command)) {
- command = cmd;
- isDirty = true;
- return true;
- } else {
- return false;
- }
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.managedbuilder.core.ITool#setOutputFlag(java.lang.String)
- */
- public void setOutputFlag(String flag) {
- if (flag == null) return;
- if (outputFlag == null || !(flag.equals(outputFlag))) {
- outputFlag = flag;
- isDirty = true;
- }
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.managedbuilder.core.ITool#setOutputPrefix(java.lang.String)
- */
- public void setOutputPrefix(String prefix) {
- if (prefix == null) return;
- if (outputPrefix == null || !(prefix.equals(outputPrefix))) {
- outputPrefix = prefix;
- isDirty = true;
- }
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.managedbuilder.core.ITool#setOutputExtensions(java.lang.String)
- */
- public void setOutputExtensions(String ext) {
- if (ext == null) return;
- if (outputExtensions == null || !(ext.equals(outputExtensions))) {
- outputExtensions = ext;
- isDirty = true;
- }
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.managedbuilder.core.ITool#setParent(IBuildObject)
- */
- public void setToolParent(IBuildObject newParent) {
- if (parent == null) {
- // bad reference
- return;
- }
- // Set the parent in the parent of this ToolRefernce, the tool
- ((Tool)parent).setToolParent(newParent);
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.build.managed.ITool#getParent()
- */
- public IBuildObject getParent() {
- return owner;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.build.managed.ITool#getCommandLinePattern()
- */
- public String getCommandLinePattern() {
- if( parent == null ) return new String();
- return parent.getCommandLinePattern();
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.build.managed.ITool#getCommandLineGenerator()
- */
- public IManagedCommandLineGenerator getCommandLineGenerator() {
- if( parent == null ) return null;
- return parent.getCommandLineGenerator();
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.build.managed.ITool#getDependencyGenerator()
- */
- public IManagedDependencyGenerator getDependencyGenerator() {
- if( parent == null ) return null;
- return parent.getDependencyGenerator();
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.build.managed.ITool#getCommandFlags()
- */
- public String[] getCommandFlags() throws BuildException {
- if( parent == null ) return null;
- return parent.getToolCommandFlags(null, null);
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.managedbuilder.core.ITool#getToolCommandFlags(org.eclipse.core.runtime.IPath, org.eclipse.core.runtime.IPath)
- */
- public String[] getToolCommandFlags(IPath inputFileLocation, IPath outputFileLocation) throws BuildException{
- return getCommandFlags();
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.managedbuilder.core.ITool#getToolCommandFlagsString(org.eclipse.core.runtime.IPath, org.eclipse.core.runtime.IPath)
- */
- public String getToolCommandFlagsString(IPath inputFileLocation, IPath outputFileLocation) throws BuildException{
- return getToolFlags();
-
- }
-
- /* (non-Javadoc)
- * @see java.lang.Object#toString()
- */
- public String toString() {
- String answer = new String();
- if (parent != null) {
- answer += "Reference to " + parent.getName(); //$NON-NLS-1$
- }
-
- if (answer.length() > 0) {
- return answer;
- } else {
- return super.toString();
- }
- }
-
- /*
- * The following methods are here in order to implement the new ITool methods.
- * They should never be called.
- */
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.managedbuilder.core.ITool#getSuperClass()
- */
- public ITool getSuperClass() {
- return null;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.build.managed.ITool#isAbstract()
- */
- public boolean isAbstract() {
- return false;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.build.managed.ITool#getUnusedChildren()
- */
- public String getUnusedChildren() {
- return null;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.managedbuilder.core.ITool#getErrorParserList()
- */
- public String[] getErrorParserList() {
- return null;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.managedbuilder.core.ITool#getErrorParserIds()
- */
- public String getErrorParserIds() {
- return null;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.managedbuilder.core.ITool#setErrorParserIds()
- */
- public void setErrorParserIds(String ids) {
- }
-
- public List getInterfaceExtensions() {
- return null;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.managedbuilder.core.ITool#isExtensionElement()
- */
- public boolean isExtensionElement() {
- return false;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.managedbuilder.core.ITool#createOption()
- */
- public IOption createOption(IOption superClass, String Id, String name, boolean b) {
- return null;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.managedbuilder.core.IHoldsOptions#createOptions()
- */
- public void createOptions(IHoldsOptions options) {
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.managedbuilder.core.ITool#removeOption()
- */
- public void removeOption(IOption o) {
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.build.managed.IOptionCategory#getChildCategories()
- */
- public IOptionCategory[] getChildCategories() {
- return null;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.managedbuilder.core.ITool#setIsAbstract(boolean)
- */
- public void setIsAbstract(boolean b) {
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.build.managed.ITool#getCommandLinePattern()
- */
- public void setCommandLinePattern(String pattern) {
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.build.managed.ITool#setCommandLineGenerator(IConfigurationElement)
- */
- public void setCommandLineGeneratorElement(IConfigurationElement element) {
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.build.managed.ITool#getCommandLineGenerator()
- */
- public IConfigurationElement getDependencyGeneratorElement() {
- return null;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.build.managed.ITool#setCommandLineGenerator(IConfigurationElement)
- */
- public void setDependencyGeneratorElement(IConfigurationElement element) {
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.build.managed.ITool#getCommandLineGeneratorElement()
- */
- public IConfigurationElement getCommandLineGeneratorElement() {
- return null;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.build.managed.ITool#getAdvancedInputCategory()
- */
- public boolean getAdvancedInputCategory() {
- return false;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.build.managed.ITool#setAdvancedInputCategory()
- */
- public void setAdvancedInputCategory(boolean display) {
- }
-
- public IInputType createInputType(IInputType superClass, String Id, String name, boolean isExtensionElement) {
- return null;
- }
-
- public IOutputType createOutputType(IOutputType superClass, String Id, String name, boolean isExtensionElement) {
- return null;
- }
-
- public String getAnnouncement() {
- return null;
- }
-
- public IInputType getInputTypeById(String id) {
- return null;
- }
-
- public IInputType[] getInputTypes() {
- return null;
- }
-
- public IOutputType getOutputTypeById(String id) {
- return null;
- }
-
- public IOutputType[] getOutputTypes() {
- return null;
- }
-
- public void removeInputType(IInputType type) {
- }
-
- public void removeOutputType(IOutputType type) {
- }
-
- public void setAnnouncement(String announcement) {
- }
-
- public String getDefaultInputExtension() {
- return null;
- }
-
- public String[] getAllInputExtensions() {
- return null;
- }
-
- public String[] getPrimaryInputExtensions() {
- return null;
- }
-
- public IInputType getInputType(String inputExtension) {
- return null;
- }
-
- public String[] getOutputsAttribute() {
- return null;
- }
-
- public IOutputType getOutputType(String outputExtension) {
- return null;
- }
-
- public void setOutputsAttribute(String extensions) {
- }
-
- public String[] getAllOutputExtensions() {
- return null;
- }
-
- public String[] getAllDependencyExtensions() {
- return null;
- }
-
- public IInputType getPrimaryInputType() {
- return null;
- }
-
- public IOutputType getPrimaryOutputType() {
- return null;
- }
-
- public IPath[] getAdditionalDependencies() {
- return null;
- }
-
- public IPath[] getAdditionalResources() {
- return null;
- }
-
- public IConfigurationElement getDependencyGeneratorElementForExtension(String sourceExt) {
- return null;
- }
-
- public IManagedDependencyGenerator getDependencyGeneratorForExtension(String sourceExt) {
- return null;
- }
-
- public boolean getCustomBuildStep() {
- return false;
- }
-
- public void setCustomBuildStep(boolean customBuildStep) {
- }
-
- public IOption getOptionBySuperClassId(String id) {
- return null;
- }
-
- public IOptionCategory getOptionCategory(String id) {
- // return null as class is deprecated
- return null;
- }
-
- public void addOptionCategory(IOptionCategory category) {
- }
-
- /*
- * The following methods are added to allow the converter from ToolReference -> Tool
- * to retrieve the actual value of attributes. These routines do not go to the
- * referenced Tool for a value if the ToolReference does not have a value.
- */
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.managedbuilder.core.IToolReference#getRawOutputExtensions()
- */
- public String getRawOutputExtensions() {
- return outputExtensions;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.managedbuilder.core.IToolReference#getRawOutputFlag()
- */
- public String getRawOutputFlag() {
- return outputFlag;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.managedbuilder.core.IToolReference#getRawOutputPrefix()
- */
- public String getRawOutputPrefix() {
- return outputPrefix;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.managedbuilder.core.IToolReference#getRawToolCommand()
- */
- public String getRawToolCommand() {
- return command;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.managedbuilder.core.ITool#getConvertToId()
- */
- public String getConvertToId() {
- if (convertToId == null) {
- // If I have a superClass, ask it
- if (parent != null) {
- return parent.getConvertToId();
- } else {
- return new String();
- }
- }
- return convertToId;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.managedbuilder.core.ITool#setConvertToId(String)
- */
- public void setConvertToId(String convertToId) {
- if (convertToId == null && this.convertToId == null) return;
- if (convertToId == null || this.convertToId == null || !convertToId.equals(this.convertToId)) {
- this.convertToId = convertToId;
- setDirty(true);
- }
- return;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.managedbuilder.core.ITool#getVersionsSupported()
- */
- public String getVersionsSupported() {
- if (versionsSupported == null) {
- // If I have a superClass, ask it
- if (parent != null) {
- return parent.getVersionsSupported();
- } else {
- return new String();
- }
- }
- return versionsSupported;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.managedbuilder.core.ITool#setVersionsSupported(String)
- */
- public void setVersionsSupported(String versionsSupported) {
- if (versionsSupported == null && this.versionsSupported == null) return;
- if (versionsSupported == null || this.versionsSupported == null || !versionsSupported.equals(this.versionsSupported)) {
- this.versionsSupported = versionsSupported;
- setDirty(true);
- }
- return;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.build.managed.ITool#getEnvVarBuildPaths()
- */
- public IEnvVarBuildPath[] getEnvVarBuildPaths(){
- return null;
- }
-
- public PluginVersionIdentifier getVersion() {
- return null;
- }
-
- public void setVersion(PluginVersionIdentifier version) {
- // TODO Auto-generated method stub
- }
-
- public String getManagedBuildRevision() {
- return null;
- }
-
- public IOption getOptionToSet(IOption option, boolean adjustExtension){
- return null;
- }
-}
+/*******************************************************************************
+ * Copyright (c) 2003, 2006 IBM 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:
+ * IBM - Initial API and implementation
+ *******************************************************************************/
+package org.eclipse.cdt.managedbuilder.internal.core;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Iterator;
+import java.util.List;
+
+import org.eclipse.cdt.managedbuilder.core.BuildException;
+import org.eclipse.cdt.managedbuilder.core.IBuildObject;
+import org.eclipse.cdt.managedbuilder.core.IConfigurationV2;
+import org.eclipse.cdt.managedbuilder.core.IHoldsOptions;
+import org.eclipse.cdt.managedbuilder.core.IInputType;
+import org.eclipse.cdt.managedbuilder.core.IEnvVarBuildPath;
+import org.eclipse.cdt.managedbuilder.core.IOptionApplicability;
+import org.eclipse.cdt.managedbuilder.core.IManagedConfigElement;
+import org.eclipse.cdt.managedbuilder.core.IOption;
+import org.eclipse.cdt.managedbuilder.core.IOptionCategory;
+import org.eclipse.cdt.managedbuilder.core.IOutputType;
+import org.eclipse.cdt.managedbuilder.core.IResourceConfiguration;
+import org.eclipse.cdt.managedbuilder.core.ITool;
+import org.eclipse.cdt.managedbuilder.core.IToolChain;
+import org.eclipse.cdt.managedbuilder.core.IToolReference;
+import org.eclipse.cdt.managedbuilder.core.ManagedBuildManager;
+import org.eclipse.cdt.managedbuilder.core.IManagedCommandLineGenerator;
+import org.eclipse.cdt.managedbuilder.makegen.IManagedDependencyGenerator;
+import org.eclipse.cdt.managedbuilder.makegen.IManagedDependencyGeneratorType;
+import org.eclipse.core.runtime.IConfigurationElement;
+import org.eclipse.core.runtime.IPath;
+import org.eclipse.core.runtime.PluginVersionIdentifier;
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+import org.w3c.dom.Node;
+import org.w3c.dom.NodeList;
+
+public class ToolReference implements IToolReference {
+ private static final String DEFAULT_SEPARATOR = ","; //$NON-NLS-1$
+
+ private String command;
+ private boolean isDirty = false;
+ private List optionReferences;
+ private IBuildObject owner;
+ private String outputExtensions;
+ private String outputFlag;
+ private String outputPrefix;
+ protected ITool parent;
+ private boolean resolved = true;
+ private String versionsSupported;
+ private String convertToId;
+
+ /**
+ * Create a new tool reference based on information contained in
+ * a project file.
+ *
+ * @param owner The <code>ConfigurationV2</code> the receiver will be added to.
+ * @param element The element defined in the project file containing build information
+ * for the receiver.
+ */
+ public ToolReference(BuildObject owner, Element element) {
+ this.owner = owner;
+
+ if (owner instanceof ConfigurationV2) {
+ if (parent == null) {
+ Target parentTarget = (Target) ((ConfigurationV2)owner).getTarget();
+ try {
+ parent = ((Target)parentTarget.getParent()).getTool(element.getAttribute(ID));
+ } catch (NullPointerException e) {
+ parent = null;
+ }
+ }
+ ((ConfigurationV2)owner).addToolReference(this);
+ } else if (owner instanceof Target) {
+ if (parent == null) {
+ try {
+ parent = ((Target)((Target)owner).getParent()).getTool(element.getAttribute(ID));
+ } catch (NullPointerException e) {
+ parent = null;
+ }
+ }
+ ((Target)owner).addToolReference(this);
+ }
+
+ // Get the overridden tool command (if any)
+ if (element.hasAttribute(ITool.COMMAND)) {
+ command = element.getAttribute(ITool.COMMAND);
+ }
+
+ // Get the overridden output prefix (if any)
+ if (element.hasAttribute(ITool.OUTPUT_PREFIX)) {
+ outputPrefix = element.getAttribute(ITool.OUTPUT_PREFIX);
+ }
+
+ // Get the output extensions the reference produces
+ if (element.hasAttribute(ITool.OUTPUTS)) {
+ outputExtensions = element.getAttribute(ITool.OUTPUTS);
+ }
+ // Get the flag to control output
+ if (element.hasAttribute(ITool.OUTPUT_FLAG))
+ outputFlag = element.getAttribute(ITool.OUTPUT_FLAG);
+
+ NodeList configElements = element.getChildNodes();
+ for (int i = 0; i < configElements.getLength(); ++i) {
+ Node configElement = configElements.item(i);
+ if (configElement.getNodeName().equals(ITool.OPTION_REF)) {
+ new OptionReference(this, (Element)configElement);
+ }
+ }
+ }
+
+ /**
+ * Created tool reference from an extension defined in a plugin manifest.
+ *
+ * @param owner The <code>BuildObject</code> the receiver will be added to.
+ * @param element The element containing build information for the reference.
+ */
+ public ToolReference(BuildObject owner, IManagedConfigElement element) {
+ // setup for resolving
+ ManagedBuildManager.putConfigElement(this, element);
+ resolved = false;
+
+ this.owner = owner;
+
+ // hook me up
+ if (owner instanceof ConfigurationV2) {
+ ((ConfigurationV2)owner).addToolReference(this);
+ } else if (owner instanceof Target) {
+ ((Target)owner).addToolReference(this);
+ }
+
+ // Get the overridden tool command (if any)
+ command = element.getAttribute(ITool.COMMAND);
+
+ // Get the overridden output prefix, if any
+ outputPrefix = element.getAttribute(ITool.OUTPUT_PREFIX);
+
+ // Get the overridden output extensions (if any)
+ String output = element.getAttribute(ITool.OUTPUTS);
+ if (output != null) {
+ outputExtensions = output;
+ }
+
+ // Get the flag to control output
+ outputFlag = element.getAttribute(ITool.OUTPUT_FLAG);
+
+ IManagedConfigElement[] toolElements = element.getChildren();
+ for (int m = 0; m < toolElements.length; ++m) {
+ IManagedConfigElement toolElement = toolElements[m];
+ if (toolElement.getName().equals(ITool.OPTION_REF)) {
+ new OptionReference(this, toolElement);
+ }
+ }
+ }
+
+ /**
+ * Created a tool reference on the fly based on an existing tool or tool reference.
+ *
+ * @param owner The <code>BuildObject</code> the receiver will be added to.
+ * @param tool The <code>ITool</code>tool the reference will be based on.
+ */
+ public ToolReference(BuildObject owner, ITool tool) {
+ this.owner = owner;
+ if (tool instanceof ToolReference) {
+ parent = ((ToolReference)tool).getTool();
+ } else {
+ parent = tool;
+ }
+ command = tool.getToolCommand();
+ outputFlag = tool.getOutputFlag();
+ outputPrefix = tool.getOutputPrefix();
+ String[] extensions = tool.getOutputsAttribute();
+ outputExtensions = new String();
+ if (extensions != null) {
+ for (int index = 0; index < extensions.length; ++index) {
+ if (extensions[index] == null) continue;
+ outputExtensions += extensions[index];
+ if (index < extensions.length - 1) {
+ outputExtensions += DEFAULT_SEPARATOR;
+ }
+ }
+ }
+
+ // Create a copy of the option references of the parent in the receiver
+ if (tool instanceof ToolReference) {
+ List parentRefs = ((ToolReference)tool).getOptionReferenceList();
+ Iterator iter = parentRefs.iterator();
+ while (iter.hasNext()) {
+ IOption parent = (IOption)iter.next();
+ OptionReference clone = createOptionReference(parent);
+ try {
+ switch (parent.getValueType()) {
+ case IOption.BOOLEAN:
+ clone.setValue(parent.getBooleanValue());
+ break;
+ case IOption.STRING:
+ clone.setValue(parent.getStringValue());
+ case IOption.ENUMERATED:
+ clone.setValue(parent.getSelectedEnum());
+ break;
+ default:
+ clone.setValue(parent.getStringListValue());
+ break;
+ }
+ } catch (BuildException e) {
+ // Likely a mismatch between the value and option type
+ continue;
+ }
+ }
+ }
+
+ if (owner instanceof ConfigurationV2) {
+ ((ConfigurationV2)owner).addToolReference(this);
+ } else if (owner instanceof Target) {
+ ((Target)owner).addToolReference(this);
+ }
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.managedbuilder.core.IToolReference#references(org.eclipse.cdt.managedbuilder.core.ITool)
+ */
+ public boolean references(ITool target) {
+ if (equals(target)) {
+ // we are the target
+ return true;
+ } else if (parent == null) {
+ // basic sanity before proceeding
+ return false;
+ } else if (parent instanceof IToolReference) {
+ // check the reference we are overriding
+ return ((IToolReference)parent).references(target);
+ } else if (target instanceof IToolReference) {
+ return parent.equals(((IToolReference)target).getTool());
+ } else {
+ // the real reference
+ return parent.equals(target);
+ }
+ }
+
+ public void resolveReferences() {
+ if (!resolved) {
+ resolved = true;
+ IManagedConfigElement element = ManagedBuildManager.getConfigElement(this);
+ // resolve my parent
+ if (owner instanceof ConfigurationV2) {
+ Target target = (Target) ((ConfigurationV2)owner).getTarget();
+ parent = target.getTool(element.getAttribute(ID));
+ } else if (owner instanceof Target) {
+ parent = ((Target)owner).getTool(element.getAttribute(ID));
+ }
+ // recursively resolve my parent
+ if (parent instanceof Tool) {
+ ((Tool)parent).resolveReferences();
+ } else if (parent instanceof ToolReference) {
+ ((ToolReference)parent).resolveReferences();
+ }
+
+ Iterator it = getOptionReferenceList().iterator();
+ while (it.hasNext()) {
+ OptionReference optRef = (OptionReference)it.next();
+ optRef.resolveReferences();
+ }
+ }
+ }
+
+ /**
+ * Adds the option reference specified in the argument to the receiver.
+ *
+ * @param optionRef
+ */
+ public void addOptionReference(OptionReference optionRef) {
+ getOptionReferenceList().add(optionRef);
+ isDirty = true;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.managedbuilder.core.ITool#buildsFileType(java.lang.String)
+ */
+ public boolean buildsFileType(String extension) {
+ if (parent == null) {
+ // bad reference
+ return false;
+ }
+ return parent.buildsFileType(extension);
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.managedbuilder.core.ITool#buildsFileType(java.lang.String)
+ */
+ public boolean isInputFileType(String extension) {
+ if (parent == null) {
+ // bad reference
+ return false;
+ }
+ return parent.isInputFileType(extension);
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.managedbuilder.core.IToolReference#createOptionReference(org.eclipse.cdt.managedbuilder.core.IOption)
+ */
+ public OptionReference createOptionReference(IOption option) {
+ // Check if the option reference already exists
+ OptionReference ref = getOptionReference(option);
+ // It is possible that the search will return an option reference
+ // that is supplied by another element of the build model, not the caller.
+ // For example, if the search is starated by a configuration and the target
+ // the caller belongs to has an option reference for the option, it
+ // will be returned. While this is correct behaviour for a search, the
+ // caller will need to create a clone for itself, so make sure the tool
+ // reference of the search result is owned by the caller
+ if (ref == null || !ref.getToolReference().owner.equals(this.owner)) {
+ ref = new OptionReference(this, option);
+ }
+ return ref;
+ }
+
+ /* (non-Javadoc)
+ * @return
+ */
+ protected List getAllOptionRefs() {
+ // First get all the option references this tool reference contains
+ if (owner instanceof ConfigurationV2) {
+ return ((ConfigurationV2)owner).getOptionReferences(parent);
+ } else if (owner instanceof Target) {
+ return ((Target)owner).getOptionReferences(parent);
+ } else {
+ // this shouldn't happen
+ return null;
+ }
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.managedbuilder.core.IBuildObject#getId()
+ */
+ public String getId() {
+ if (parent == null) {
+ // bad reference
+ return new String();
+ }
+ return parent.getId();
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.managedbuilder.core.IBuildObject#getBaseId()
+ */
+ public String getBaseId() {
+ if (parent == null) {
+ // bad reference
+ return new String();
+ }
+ return parent.getBaseId();
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.managedbuilder.core.ITool#getInputExtensions()
+ */
+ public List getInputExtensions() {
+ String[] exts = getPrimaryInputExtensions();
+ List extList = new ArrayList();
+ for (int i=0; i<exts.length; i++) {
+ extList.add(exts[i]);
+ }
+ return extList;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.managedbuilder.core.IBuildObject#getName()
+ */
+ public String getName() {
+ if (parent == null) {
+ // bad reference
+ return new String();
+ }
+ return parent.getName();
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.managedbuilder.core.ITool#getNatureFilter()
+ */
+ public int getNatureFilter() {
+ if (parent == null) {
+ // bad reference
+ return ITool.FILTER_BOTH;
+ }
+ return parent.getNatureFilter();
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.managedbuilder.core.ITool#getOption(java.lang.String)
+ */
+ public IOption getOption(String id) {
+ return getOptionById(id);
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.core.build.managed.ITool#getOption(java.lang.String)
+ */
+ public IOption getOptionById(String id) {
+ IOption[] options = getOptions();
+ for (int i = 0; i < options.length; i++) {
+ IOption current = options[i];
+ if (current.getId().equals(id)) {
+ return current;
+ }
+ }
+ return null;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.managedbuilder.core.ITool#producesFileType(java.lang.String)
+ */
+ public boolean producesFileType(String outputExtension) {
+ // Check if the reference produces this type of file
+ if (!getOutputsList().contains(outputExtension)) {
+ return parent.producesFileType(outputExtension);
+ } else {
+ return true;
+ }
+
+ }
+
+ /* (non-Javadoc)
+ * @return
+ */
+ private List getOutputsList() {
+ ArrayList answer = new ArrayList();
+ if (outputExtensions != null) {
+ String[] exts = outputExtensions.split(DEFAULT_SEPARATOR);
+ answer.addAll(Arrays.asList(exts));
+ }
+ return answer;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.managedbuilder.core.IToolReference#getTool()
+ */
+ public ITool getTool() {
+ return parent;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.core.build.managed.ITool#getToolCommand()
+ */
+ public String getToolCommand() {
+ if (command == null) {
+ // see if the parent has one
+ if (parent != null) {
+ return parent.getToolCommand();
+ }
+ return new String(); // bad reference
+ }
+ return command;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.core.build.managed.ITool#getToolFlags()
+ */
+ public String getToolFlags() throws BuildException {
+ // Get all of the options
+ StringBuffer buf = new StringBuffer();
+ IOption[] opts = getOptions();
+ for (int index = 0; index < opts.length; index++) {
+ IOption option = opts[index];
+
+ // check to see if the option has an applicability calculator
+ IOptionApplicability applicabilityCalculator = option.getApplicabilityCalculator();
+
+ boolean optionIsApplicable = true;
+ if (applicabilityCalculator != null) {
+ ITool tool = getTool();
+ IBuildObject config;
+ if( tool.getParent() instanceof IResourceConfiguration ) {
+ config = tool.getParent();
+ } else {
+ config = ((IToolChain)tool.getParent()).getParent();
+ }
+ optionIsApplicable =
+ applicabilityCalculator.isOptionUsedInCommandLine(config, tool, option);
+ }
+ if (optionIsApplicable) {
+ switch (option.getValueType()) {
+ case IOption.BOOLEAN :
+ String boolCmd;
+ if (option.getBooleanValue()) {
+ boolCmd = option.getCommand();
+ } else {
+ // Note: getCommandFalse is new with CDT 2.0
+ boolCmd = option.getCommandFalse();
+ }
+ if (boolCmd != null && boolCmd.length() > 0) {
+ buf.append(boolCmd + WHITE_SPACE);
+ }
+ break;
+
+ case IOption.ENUMERATED :
+ String enumVal = option.getEnumCommand(option.getSelectedEnum());
+ if (enumVal.length() > 0) {
+ buf.append(enumVal + WHITE_SPACE);
+ }
+ break;
+
+ case IOption.STRING :
+ String strCmd = option.getCommand();
+ String val = option.getStringValue();
+ if (val.length() > 0) {
+ if (strCmd != null) buf.append(strCmd);
+ buf.append(val + WHITE_SPACE);
+ }
+ break;
+
+ case IOption.STRING_LIST :
+ String cmd = option.getCommand();
+ String[] list = option.getStringListValue();
+ for (int j = 0; j < list.length; j++) {
+ String temp = list[j];
+ if (cmd != null) buf.append(cmd);
+ buf.append(temp + WHITE_SPACE);
+ }
+ break;
+
+ case IOption.INCLUDE_PATH :
+ String incCmd = option.getCommand();
+ String[] paths = option.getIncludePaths();
+ for (int j = 0; j < paths.length; j++) {
+ String temp = paths[j];
+ buf.append(incCmd + temp + WHITE_SPACE);
+ }
+ break;
+
+ case IOption.PREPROCESSOR_SYMBOLS :
+ String defCmd = option.getCommand();
+ String[] symbols = option.getDefinedSymbols();
+ for (int j = 0; j < symbols.length; j++) {
+ String temp = symbols[j];
+ buf.append(defCmd + temp + WHITE_SPACE);
+ }
+ break;
+
+ default :
+ break;
+ }
+ }
+ }
+
+ return buf.toString().trim();
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.managedbuilder.core.ITool#getTopOptionCategory()
+ */
+ public IOptionCategory getTopOptionCategory() {
+ try {
+ return parent.getTopOptionCategory();
+ } catch (NullPointerException e) {
+ return null;
+ }
+ }
+
+ /* (non-Javadoc)
+ * Answers an option reference that overrides the option, or <code>null</code>
+ *
+ * @param option
+ * @return OptionReference
+ */
+ private OptionReference getOptionReference(IOption option) {
+ // Get all the option references for this option
+ Iterator iter = getAllOptionRefs().listIterator();
+ while (iter.hasNext()) {
+ OptionReference optionRef = (OptionReference) iter.next();
+ if (optionRef.references(option))
+ return optionRef;
+ }
+
+ return null;
+ }
+
+ /* (non-Javadoc)
+ *
+ * @param id
+ * @return
+ */
+ /*
+ private OptionReference getOptionReference(String id) {
+ Iterator it = getOptionReferenceList().iterator();
+ while (it.hasNext()) {
+ OptionReference current = (OptionReference)it.next();
+ if (current.getId().equals(id)) {
+ return current;
+ }
+ }
+ return null;
+ }
+ */
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.managedbuilder.core.IToolReference#getOptionReferenceList()
+ */
+ public List getOptionReferenceList() {
+ if (optionReferences == null) {
+ optionReferences = new ArrayList();
+ }
+ return optionReferences;
+ }
+
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.core.build.managed.ITool#getOptions()
+ */
+ public IOption[] getOptions() {
+ IOption[] options = parent.getOptions();
+
+ // Replace with our references
+ for (int i = 0; i < options.length; ++i) {
+ OptionReference ref = getOptionReference(options[i]);
+ if (ref != null)
+ options[i] = ref;
+ }
+
+ return options;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.managedbuilder.core.ITool#getOutputExtensions()
+ */
+ public String[] getOutputExtensions() {
+ if (outputExtensions == null){
+ if (parent != null) {
+ return parent.getOutputsAttribute();
+ } else {
+ return new String[0];
+ }
+ }
+ return outputExtensions.split(DEFAULT_SEPARATOR);
+ }
+
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.managedbuilder.core.ITool#getOutputExtension(java.lang.String)
+ */
+ public String getOutputExtension(String inputExtension) {
+ if (parent == null) {
+ // bad reference
+ return new String();
+ }
+ return parent.getOutputExtension(inputExtension);
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.managedbuilder.core.ITool#getOutputFlag()
+ */
+ public String getOutputFlag() {
+ if (outputFlag == null) {
+ if (parent != null) {
+ return parent.getOutputFlag();
+ } else {
+ // We never should be here
+ return new String();
+ }
+ }
+ return outputFlag;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.managedbuilder.core.ITool#getOutputPrefix()
+ */
+ public String getOutputPrefix() {
+ if (outputPrefix == null) {
+ if (parent != null) {
+ return parent.getOutputPrefix();
+ }
+ return new String(); // bad reference
+ }
+ return outputPrefix;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.managedbuilder.core.IToolReference#isDirty()
+ */
+ public boolean isDirty() {
+ return isDirty;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.managedbuilder.core.ITool#isHeaderFile(java.lang.String)
+ */
+ public boolean isHeaderFile(String ext) {
+ if (parent == null) {
+ // bad reference
+ return false;
+ }
+ return parent.isHeaderFile(ext);
+ }
+
+ /**
+ * Answers <code>true</code> if the owner of the receiver matches
+ * the argument.
+ *
+ * @param config
+ * @return
+ */
+ public boolean ownedByConfiguration(IConfigurationV2 config) {
+ if (owner instanceof ConfigurationV2) {
+ return ((IConfigurationV2)owner).equals(config);
+ }
+ return false;
+ }
+
+ /**
+ * Persist receiver to project file.
+ *
+ * @param doc The persistent store for the reference information.
+ * @param element The root element in the store the receiver must use
+ * to persist settings.
+ */
+ public void serialize(Document doc, Element element) {
+ if (parent == null) return; // This is a bad reference
+ element.setAttribute(ITool.ID, parent.getId());
+
+ // Output the command
+ if (command != null) {
+ element.setAttribute(ITool.COMMAND, getToolCommand());
+ }
+
+ // Save output prefix
+ if (outputPrefix != null) {
+ element.setAttribute(ITool.OUTPUT_PREFIX, getOutputPrefix());
+ }
+
+ // Save the output flag
+ if (outputFlag != null) {
+ element.setAttribute(ITool.OUTPUT_FLAG, getOutputFlag());
+ }
+
+ // Save the outputs
+ if (outputExtensions != null) {
+ element.setAttribute(ITool.OUTPUTS, outputExtensions);
+ }
+
+ // Output the option references
+ Iterator iter = getOptionReferenceList().listIterator();
+ while (iter.hasNext()) {
+ OptionReference optionRef = (OptionReference) iter.next();
+ Element optionRefElement = doc.createElement(ITool.OPTION_REF);
+ element.appendChild(optionRefElement);
+ optionRef.serialize(doc, optionRefElement);
+ }
+
+ // Set the reference to clean
+ isDirty = false;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.managedbuilder.core.IToolReference#setDirty(boolean)
+ */
+ public void setDirty(boolean isDirty) {
+ // Override the local flag
+ this.isDirty = isDirty;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.managedbuilder.core.IToolReference#setToolCommand(java.lang.String)
+ */
+ public boolean setToolCommand(String cmd) {
+ if (cmd != null && !cmd.equals(command)) {
+ command = cmd;
+ isDirty = true;
+ return true;
+ } else {
+ return false;
+ }
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.managedbuilder.core.ITool#setOutputFlag(java.lang.String)
+ */
+ public void setOutputFlag(String flag) {
+ if (flag == null) return;
+ if (outputFlag == null || !(flag.equals(outputFlag))) {
+ outputFlag = flag;
+ isDirty = true;
+ }
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.managedbuilder.core.ITool#setOutputPrefix(java.lang.String)
+ */
+ public void setOutputPrefix(String prefix) {
+ if (prefix == null) return;
+ if (outputPrefix == null || !(prefix.equals(outputPrefix))) {
+ outputPrefix = prefix;
+ isDirty = true;
+ }
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.managedbuilder.core.ITool#setOutputExtensions(java.lang.String)
+ */
+ public void setOutputExtensions(String ext) {
+ if (ext == null) return;
+ if (outputExtensions == null || !(ext.equals(outputExtensions))) {
+ outputExtensions = ext;
+ isDirty = true;
+ }
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.managedbuilder.core.ITool#setParent(IBuildObject)
+ */
+ public void setToolParent(IBuildObject newParent) {
+ if (parent == null) {
+ // bad reference
+ return;
+ }
+ // Set the parent in the parent of this ToolRefernce, the tool
+ ((Tool)parent).setToolParent(newParent);
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.core.build.managed.ITool#getParent()
+ */
+ public IBuildObject getParent() {
+ return owner;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.core.build.managed.ITool#getCommandLinePattern()
+ */
+ public String getCommandLinePattern() {
+ if( parent == null ) return new String();
+ return parent.getCommandLinePattern();
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.core.build.managed.ITool#getCommandLineGenerator()
+ */
+ public IManagedCommandLineGenerator getCommandLineGenerator() {
+ if( parent == null ) return null;
+ return parent.getCommandLineGenerator();
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.core.build.managed.ITool#getDependencyGenerator()
+ */
+ public IManagedDependencyGenerator getDependencyGenerator() {
+ if( parent == null ) return null;
+ return parent.getDependencyGenerator();
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.core.build.managed.ITool#getCommandFlags()
+ */
+ public String[] getCommandFlags() throws BuildException {
+ if( parent == null ) return null;
+ return parent.getToolCommandFlags(null, null);
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.managedbuilder.core.ITool#getToolCommandFlags(org.eclipse.core.runtime.IPath, org.eclipse.core.runtime.IPath)
+ */
+ public String[] getToolCommandFlags(IPath inputFileLocation, IPath outputFileLocation) throws BuildException{
+ return getCommandFlags();
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.managedbuilder.core.ITool#getToolCommandFlagsString(org.eclipse.core.runtime.IPath, org.eclipse.core.runtime.IPath)
+ */
+ public String getToolCommandFlagsString(IPath inputFileLocation, IPath outputFileLocation) throws BuildException{
+ return getToolFlags();
+
+ }
+
+ /* (non-Javadoc)
+ * @see java.lang.Object#toString()
+ */
+ public String toString() {
+ String answer = new String();
+ if (parent != null) {
+ answer += "Reference to " + parent.getName(); //$NON-NLS-1$
+ }
+
+ if (answer.length() > 0) {
+ return answer;
+ } else {
+ return super.toString();
+ }
+ }
+
+ /*
+ * The following methods are here in order to implement the new ITool methods.
+ * They should never be called.
+ */
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.managedbuilder.core.ITool#getSuperClass()
+ */
+ public ITool getSuperClass() {
+ return null;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.core.build.managed.ITool#isAbstract()
+ */
+ public boolean isAbstract() {
+ return false;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.core.build.managed.ITool#getUnusedChildren()
+ */
+ public String getUnusedChildren() {
+ return null;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.managedbuilder.core.ITool#getErrorParserList()
+ */
+ public String[] getErrorParserList() {
+ return null;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.managedbuilder.core.ITool#getErrorParserIds()
+ */
+ public String getErrorParserIds() {
+ return null;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.managedbuilder.core.ITool#setErrorParserIds()
+ */
+ public void setErrorParserIds(String ids) {
+ }
+
+ public List getInterfaceExtensions() {
+ return null;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.managedbuilder.core.ITool#isExtensionElement()
+ */
+ public boolean isExtensionElement() {
+ return false;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.managedbuilder.core.ITool#createOption()
+ */
+ public IOption createOption(IOption superClass, String Id, String name, boolean b) {
+ return null;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.managedbuilder.core.IHoldsOptions#createOptions()
+ */
+ public void createOptions(IHoldsOptions options) {
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.managedbuilder.core.ITool#removeOption()
+ */
+ public void removeOption(IOption o) {
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.core.build.managed.IOptionCategory#getChildCategories()
+ */
+ public IOptionCategory[] getChildCategories() {
+ return null;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.managedbuilder.core.ITool#setIsAbstract(boolean)
+ */
+ public void setIsAbstract(boolean b) {
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.core.build.managed.ITool#getCommandLinePattern()
+ */
+ public void setCommandLinePattern(String pattern) {
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.core.build.managed.ITool#setCommandLineGenerator(IConfigurationElement)
+ */
+ public void setCommandLineGeneratorElement(IConfigurationElement element) {
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.core.build.managed.ITool#getCommandLineGenerator()
+ */
+ public IConfigurationElement getDependencyGeneratorElement() {
+ return null;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.core.build.managed.ITool#setCommandLineGenerator(IConfigurationElement)
+ */
+ public void setDependencyGeneratorElement(IConfigurationElement element) {
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.core.build.managed.ITool#getCommandLineGeneratorElement()
+ */
+ public IConfigurationElement getCommandLineGeneratorElement() {
+ return null;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.core.build.managed.ITool#getAdvancedInputCategory()
+ */
+ public boolean getAdvancedInputCategory() {
+ return false;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.core.build.managed.ITool#setAdvancedInputCategory()
+ */
+ public void setAdvancedInputCategory(boolean display) {
+ }
+
+ public IInputType createInputType(IInputType superClass, String Id, String name, boolean isExtensionElement) {
+ return null;
+ }
+
+ public IOutputType createOutputType(IOutputType superClass, String Id, String name, boolean isExtensionElement) {
+ return null;
+ }
+
+ public String getAnnouncement() {
+ return null;
+ }
+
+ public IInputType getInputTypeById(String id) {
+ return null;
+ }
+
+ public IInputType[] getInputTypes() {
+ return null;
+ }
+
+ public IOutputType getOutputTypeById(String id) {
+ return null;
+ }
+
+ public IOutputType[] getOutputTypes() {
+ return null;
+ }
+
+ public void removeInputType(IInputType type) {
+ }
+
+ public void removeOutputType(IOutputType type) {
+ }
+
+ public void setAnnouncement(String announcement) {
+ }
+
+ public String getDefaultInputExtension() {
+ return null;
+ }
+
+ public String[] getAllInputExtensions() {
+ return null;
+ }
+
+ public String[] getPrimaryInputExtensions() {
+ return null;
+ }
+
+ public IInputType getInputType(String inputExtension) {
+ return null;
+ }
+
+ public String[] getOutputsAttribute() {
+ return null;
+ }
+
+ public IOutputType getOutputType(String outputExtension) {
+ return null;
+ }
+
+ public void setOutputsAttribute(String extensions) {
+ }
+
+ public String[] getAllOutputExtensions() {
+ return null;
+ }
+
+ public String[] getAllDependencyExtensions() {
+ return null;
+ }
+
+ public IInputType getPrimaryInputType() {
+ return null;
+ }
+
+ public IOutputType getPrimaryOutputType() {
+ return null;
+ }
+
+ public IPath[] getAdditionalDependencies() {
+ return null;
+ }
+
+ public IPath[] getAdditionalResources() {
+ return null;
+ }
+
+ public IConfigurationElement getDependencyGeneratorElementForExtension(String sourceExt) {
+ return null;
+ }
+
+ public IManagedDependencyGeneratorType getDependencyGeneratorForExtension(String sourceExt) {
+ return null;
+ }
+
+ public boolean getCustomBuildStep() {
+ return false;
+ }
+
+ public void setCustomBuildStep(boolean customBuildStep) {
+ }
+
+ public IOption getOptionBySuperClassId(String id) {
+ return null;
+ }
+
+ public IOptionCategory getOptionCategory(String id) {
+ // return null as class is deprecated
+ return null;
+ }
+
+ public void addOptionCategory(IOptionCategory category) {
+ }
+
+ /*
+ * The following methods are added to allow the converter from ToolReference -> Tool
+ * to retrieve the actual value of attributes. These routines do not go to the
+ * referenced Tool for a value if the ToolReference does not have a value.
+ */
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.managedbuilder.core.IToolReference#getRawOutputExtensions()
+ */
+ public String getRawOutputExtensions() {
+ return outputExtensions;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.managedbuilder.core.IToolReference#getRawOutputFlag()
+ */
+ public String getRawOutputFlag() {
+ return outputFlag;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.managedbuilder.core.IToolReference#getRawOutputPrefix()
+ */
+ public String getRawOutputPrefix() {
+ return outputPrefix;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.managedbuilder.core.IToolReference#getRawToolCommand()
+ */
+ public String getRawToolCommand() {
+ return command;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.managedbuilder.core.ITool#getConvertToId()
+ */
+ public String getConvertToId() {
+ if (convertToId == null) {
+ // If I have a superClass, ask it
+ if (parent != null) {
+ return parent.getConvertToId();
+ } else {
+ return new String();
+ }
+ }
+ return convertToId;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.managedbuilder.core.ITool#setConvertToId(String)
+ */
+ public void setConvertToId(String convertToId) {
+ if (convertToId == null && this.convertToId == null) return;
+ if (convertToId == null || this.convertToId == null || !convertToId.equals(this.convertToId)) {
+ this.convertToId = convertToId;
+ setDirty(true);
+ }
+ return;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.managedbuilder.core.ITool#getVersionsSupported()
+ */
+ public String getVersionsSupported() {
+ if (versionsSupported == null) {
+ // If I have a superClass, ask it
+ if (parent != null) {
+ return parent.getVersionsSupported();
+ } else {
+ return new String();
+ }
+ }
+ return versionsSupported;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.managedbuilder.core.ITool#setVersionsSupported(String)
+ */
+ public void setVersionsSupported(String versionsSupported) {
+ if (versionsSupported == null && this.versionsSupported == null) return;
+ if (versionsSupported == null || this.versionsSupported == null || !versionsSupported.equals(this.versionsSupported)) {
+ this.versionsSupported = versionsSupported;
+ setDirty(true);
+ }
+ return;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.core.build.managed.ITool#getEnvVarBuildPaths()
+ */
+ public IEnvVarBuildPath[] getEnvVarBuildPaths(){
+ return null;
+ }
+
+ public PluginVersionIdentifier getVersion() {
+ return null;
+ }
+
+ public void setVersion(PluginVersionIdentifier version) {
+ // TODO Auto-generated method stub
+ }
+
+ public String getManagedBuildRevision() {
+ return null;
+ }
+
+ public IOption getOptionToSet(IOption option, boolean adjustExtension){
+ return null;
+ }
+}

Back to the top