diff options
author | Leo Treggiari | 2005-11-13 23:28:42 +0000 |
---|---|---|
committer | Leo Treggiari | 2005-11-13 23:28:42 +0000 |
commit | d58486e66db1521318786da70a39d5b6d012483d (patch) | |
tree | b55b9c7981b3ce17e1fdbac48db34ab34e24810b /build | |
parent | b8b795c2fb6002dc95b6037069a603fbd339a697 (diff) | |
download | org.eclipse.cdt-d58486e66db1521318786da70a39d5b6d012483d.tar.gz org.eclipse.cdt-d58486e66db1521318786da70a39d5b6d012483d.tar.xz org.eclipse.cdt-d58486e66db1521318786da70a39d5b6d012483d.zip |
Add getToolBySuperClassId convenience method
Diffstat (limited to 'build')
4 files changed, 58 insertions, 0 deletions
diff --git a/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/core/IConfiguration.java b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/core/IConfiguration.java index 453fde57045..598bba51fba 100644 --- a/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/core/IConfiguration.java +++ b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/core/IConfiguration.java @@ -221,6 +221,20 @@ public interface IConfiguration extends IBuildObject { * @return ITool */ public ITool getTool(String id); + + /** + * Returns the <code>ITool</code> in this configuration's tool-chain with + * the specified ID, or a tool with a superclass with this id. + * + * <p>If the tool-chain does not have a tool with that ID, the method + * returns <code>null</code>. It is the responsibility of the caller to + * verify the return value. + * + * @param id unique identifier of the tool to search for + * @return <code>ITool</code> + * @since 3.0.2 + */ + public ITool getToolBySuperClassId(String id); /** * Returns the <code>IToolChain</code> child of this configuration. diff --git a/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/core/IToolChain.java b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/core/IToolChain.java index 536caee3a00..70158fc58ab 100644 --- a/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/core/IToolChain.java +++ b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/core/IToolChain.java @@ -162,6 +162,20 @@ public interface IToolChain extends IBuildObject, IHoldsOptions { public ITool getTool(String id); /** + * Returns the <code>ITool</code> in the tool-chain with the specified + * ID, or a tool with a superclass with this id. + * + * <p>If the tool-chain does not have a tool with that ID, the method + * returns <code>null</code>. It is the responsibility of the caller to + * verify the return value. + * + * @param id unique identifier of the tool to search for + * @return <code>ITool</code> + * @since 3.0.2 + */ + public ITool getToolBySuperClassId(String id); + + /** * Returns the <code>IToolChain</code> that is the superclass of this * tool-chain, or <code>null</code> if the attribute was not specified. * diff --git a/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/core/Configuration.java b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/core/Configuration.java index 07d2a1cea47..04d73b2555c 100644 --- a/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/core/Configuration.java +++ b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/core/Configuration.java @@ -661,6 +661,13 @@ public class Configuration extends BuildObject implements IConfiguration { } /* (non-Javadoc) + * @see org.eclipse.cdt.managedbuilder.core.IConfiguration#getToolBySuperClassId(java.lang.String) + */ + public ITool getToolBySuperClassId(String id) { + return toolChain.getToolBySuperClassId(id); + } + + /* (non-Javadoc) * @see org.eclipse.cdt.managedbuilder.core.IConfiguration#getTargetTool() */ public ITool getTargetTool() { diff --git a/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/core/ToolChain.java b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/core/ToolChain.java index 0d2442d3c05..5d70a50d1f2 100644 --- a/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/core/ToolChain.java +++ b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/core/ToolChain.java @@ -24,6 +24,7 @@ import org.eclipse.cdt.managedbuilder.core.IConfiguration; import org.eclipse.cdt.managedbuilder.core.IManagedConfigElement; import org.eclipse.cdt.managedbuilder.core.IManagedIsToolChainSupported; import org.eclipse.cdt.managedbuilder.core.IManagedProject; +import org.eclipse.cdt.managedbuilder.core.IOption; import org.eclipse.cdt.managedbuilder.core.IOutputType; import org.eclipse.cdt.managedbuilder.core.IProjectType; import org.eclipse.cdt.managedbuilder.core.ITargetPlatform; @@ -820,6 +821,28 @@ public class ToolChain extends HoldsOptions implements IToolChain { Tool tool = (Tool)getToolMap().get(id); return (ITool)tool; } + + /* (non-Javadoc) + * @see org.eclipse.cdt.managedbuilder.core.IToolChain#getToolBySuperClassId(java.lang.String) + */ + public ITool getToolBySuperClassId(String id) { + if (id == null) return null; + + // Look for a tool with this ID, or a tool with a superclass with this id + ITool[] tools = getTools(); + for (int i = 0; i < tools.length; i++) { + ITool targetTool = tools[i]; + ITool tool = targetTool; + do { + if (id.equals(tool.getId())) { + return targetTool; + } + tool = tool.getSuperClass(); + } while (tool != null); + } + + return null; + } /* (non-Javadoc) * Safe accessor for the list of tools. |