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 ITool
in this configuration's tool-chain with
+ * the specified ID, or a tool with a superclass with this id.
+ *
+ *
If the tool-chain does not have a tool with that ID, the method
+ * returns null
. It is the responsibility of the caller to
+ * verify the return value.
+ *
+ * @param id unique identifier of the tool to search for
+ * @return ITool
+ * @since 3.0.2
+ */
+ public ITool getToolBySuperClassId(String id);
/**
* Returns the IToolChain
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
@@ -161,6 +161,20 @@ public interface IToolChain extends IBuildObject, IHoldsOptions {
*/
public ITool getTool(String id);
+ /**
+ * Returns the ITool
in the tool-chain with the specified
+ * ID, or a tool with a superclass with this id.
+ *
+ *
If the tool-chain does not have a tool with that ID, the method
+ * returns null
. It is the responsibility of the caller to
+ * verify the return value.
+ *
+ * @param id unique identifier of the tool to search for
+ * @return ITool
+ * @since 3.0.2
+ */
+ public ITool getToolBySuperClassId(String id);
+
/**
* Returns the IToolChain
that is the superclass of this
* tool-chain, or null
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
@@ -660,6 +660,13 @@ public class Configuration extends BuildObject implements IConfiguration {
return toolChain.getTool(id);
}
+ /* (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()
*/
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.