diff options
Diffstat (limited to 'core/org.eclipse.cdt.core')
5 files changed, 442 insertions, 331 deletions
diff --git a/core/org.eclipse.cdt.core/build/org/eclipse/cdt/internal/core/build/managed/Configuration.java b/core/org.eclipse.cdt.core/build/org/eclipse/cdt/internal/core/build/managed/Configuration.java index 6ed0d47ee61..7538a4e9e7a 100644 --- a/core/org.eclipse.cdt.core/build/org/eclipse/cdt/internal/core/build/managed/Configuration.java +++ b/core/org.eclipse.cdt.core/build/org/eclipse/cdt/internal/core/build/managed/Configuration.java @@ -22,6 +22,8 @@ import org.eclipse.core.resources.IResource; import org.eclipse.core.runtime.IConfigurationElement; import org.w3c.dom.Document; import org.w3c.dom.Element; +import org.w3c.dom.Node; +import org.w3c.dom.NodeList; /** * @@ -88,6 +90,15 @@ public class Configuration extends BuildObject implements IConfiguration { if (element.hasAttribute("parent")) parent = target.getParent().getConfiguration(element.getAttribute("parent")); + + NodeList configElements = element.getChildNodes(); + for (int i = 0; i < configElements.getLength(); ++i) { + Node configElement = configElements.item(i); + if (configElement.getNodeName().equals("toolRef")) { + new ToolReference(this, (Element)configElement); + } + } + } public void serealize(Document doc, Element element) { @@ -103,6 +114,7 @@ public class Configuration extends BuildObject implements IConfiguration { for (int i = 0; i < toolReferences.size(); ++i) { ToolReference toolRef = (ToolReference)toolReferences.get(i); Element toolRefElement = doc.createElement("toolRef"); + element.appendChild(toolRefElement); toolRef.serealize(doc, toolRefElement); } } diff --git a/core/org.eclipse.cdt.core/build/org/eclipse/cdt/internal/core/build/managed/Option.java b/core/org.eclipse.cdt.core/build/org/eclipse/cdt/internal/core/build/managed/Option.java index e444c505526..ecb36ff2cc1 100644 --- a/core/org.eclipse.cdt.core/build/org/eclipse/cdt/internal/core/build/managed/Option.java +++ b/core/org.eclipse.cdt.core/build/org/eclipse/cdt/internal/core/build/managed/Option.java @@ -10,6 +10,7 @@ **********************************************************************/ package org.eclipse.cdt.internal.core.build.managed; +import java.util.ArrayList; import java.util.List; import org.eclipse.cdt.core.build.managed.BuildException; @@ -53,6 +54,28 @@ public class Option extends BuildObject implements IOption { String categoryId = element.getAttribute("category"); if (categoryId != null) setCategory(tool.getOptionCategory(categoryId)); + + // valueType + String valueTypeStr = element.getAttribute("valueType"); + if (valueTypeStr == null || valueTypeStr.equals("string")) + valueType = IOption.STRING; + else if (valueTypeStr.equals("stringList")) + valueType = IOption.STRING_LIST; + + // value + switch (valueType) { + case IOption.STRING: + value = element.getAttribute("value"); + break; + case IOption.STRING_LIST: + List valueList = new ArrayList(); + value = valueList; + IConfigurationElement[] valueElements = element.getChildren("optionValue"); + for (int i = 0; i < valueElements.length; ++i) { + valueList.add(valueElements[i].getAttribute("value")); + } + break; + } } /* (non-Javadoc) diff --git a/core/org.eclipse.cdt.core/build/org/eclipse/cdt/internal/core/build/managed/OptionReference.java b/core/org.eclipse.cdt.core/build/org/eclipse/cdt/internal/core/build/managed/OptionReference.java index cfbb3f8c9e5..d02eb34e688 100644 --- a/core/org.eclipse.cdt.core/build/org/eclipse/cdt/internal/core/build/managed/OptionReference.java +++ b/core/org.eclipse.cdt.core/build/org/eclipse/cdt/internal/core/build/managed/OptionReference.java @@ -10,6 +10,9 @@ **********************************************************************/ package org.eclipse.cdt.internal.core.build.managed; +import java.util.ArrayList; +import java.util.List; + import org.eclipse.cdt.core.build.managed.BuildException; import org.eclipse.cdt.core.build.managed.IOption; import org.eclipse.cdt.core.build.managed.IOptionCategory; @@ -17,6 +20,7 @@ import org.eclipse.cdt.core.build.managed.ITool; import org.eclipse.core.runtime.IConfigurationElement; import org.w3c.dom.Document; import org.w3c.dom.Element; +import org.w3c.dom.NodeList; /** * @@ -51,6 +55,20 @@ public class OptionReference implements IOption { option = owner.getTool().getOption(element.getAttribute("id")); owner.addOptionReference(this); + + // value + switch (option.getValueType()) { + case IOption.STRING: + value = element.getAttribute("value"); + break; + case IOption.STRING_LIST: + List valueList = new ArrayList(); + IConfigurationElement[] valueElements = element.getChildren("optionValue"); + for (int i = 0; i < valueElements.length; ++i) { + valueList.add(valueElements[i].getAttribute("value")); + } + break; + } } /** @@ -64,6 +82,21 @@ public class OptionReference implements IOption { option = owner.getTool().getOption(element.getAttribute("id")); owner.addOptionReference(this); + + // value + switch (option.getValueType()) { + case IOption.STRING: + value = element.getAttribute("value"); + break; + case IOption.STRING_LIST: + List valueList = new ArrayList(); + NodeList nodes = element.getElementsByTagName("optionValue"); + for (int i = 0; i < nodes.getLength(); ++i) { + valueList.add(((Element)nodes.item(i)).getAttribute("value")); + } + break; + } + } /** @@ -74,7 +107,20 @@ public class OptionReference implements IOption { */ public void serealize(Document doc, Element element) { element.setAttribute("id", option.getId()); - option = owner.getOption(element.getAttribute("id")); + + // value + switch (option.getValueType()) { + case IOption.STRING: + element.setAttribute("value", (String)value); + break; + case IOption.STRING_LIST: + List valueList = (List)value; + for (int i = 0; i < valueList.size(); ++i) { + Element valueElement = doc.createElement("optionValue"); + valueElement.setAttribute("value", (String)valueList.get(i)); + element.appendChild(valueElement); + } + } } /* (non-Javadoc) diff --git a/core/org.eclipse.cdt.core/build/org/eclipse/cdt/internal/core/build/managed/ToolReference.java b/core/org.eclipse.cdt.core/build/org/eclipse/cdt/internal/core/build/managed/ToolReference.java index ff1efc8761f..ff77920d260 100644 --- a/core/org.eclipse.cdt.core/build/org/eclipse/cdt/internal/core/build/managed/ToolReference.java +++ b/core/org.eclipse.cdt.core/build/org/eclipse/cdt/internal/core/build/managed/ToolReference.java @@ -22,6 +22,8 @@ import org.eclipse.cdt.core.build.managed.ITool; import org.eclipse.core.runtime.IConfigurationElement; import org.w3c.dom.Document; import org.w3c.dom.Element; +import org.w3c.dom.Node; +import org.w3c.dom.NodeList; /** * @@ -69,6 +71,20 @@ public class ToolReference implements ITool { } public ToolReference(Configuration owner, Element element) { + this.owner = owner; + + Target parentTarget = (Target)owner.getTarget(); + parent = ((Target)parentTarget.getParent()).getTool(element.getAttribute("id")); + + owner.addToolReference(this); + + NodeList configElements = element.getChildNodes(); + for (int i = 0; i < configElements.getLength(); ++i) { + Node configElement = configElements.item(i); + if (configElement.getNodeName().equals("optionRef")) { + new OptionReference(this, (Element)configElement); + } + } } public void serealize(Document doc, Element element) { @@ -78,6 +94,7 @@ public class ToolReference implements ITool { for (int i = 0; i < optionReferences.size(); ++i) { OptionReference optionRef = (OptionReference)optionReferences.get(i); Element optionRefElement = doc.createElement("optionRef"); + element.appendChild(optionRefElement); optionRef.serealize(doc, optionRefElement); } } diff --git a/core/org.eclipse.cdt.core/schema/ManagedBuildTools.exsd b/core/org.eclipse.cdt.core/schema/ManagedBuildTools.exsd index 3f80815b64b..dc77d15fc5f 100644 --- a/core/org.eclipse.cdt.core/schema/ManagedBuildTools.exsd +++ b/core/org.eclipse.cdt.core/schema/ManagedBuildTools.exsd @@ -1,330 +1,343 @@ -<?xml version='1.0' encoding='UTF-8'?>
-<!-- Schema file written by PDE -->
-<schema targetNamespace="org.eclipse.cdt.core">
-<annotation>
- <appInfo>
- <meta.schema plugin="org.eclipse.cdt.core" id="ManagedBuildTools" name="Managed Build Tools"/>
- </appInfo>
- <documentation>
- [Enter description of this extension point.]
- </documentation>
- </annotation>
-
- <element name="extension">
- <complexType>
- <sequence>
- <element ref="target"/>
- <element ref="tool"/>
- <element ref="configuration"/>
- </sequence>
- <attribute name="point" type="string" use="required">
- <annotation>
- <documentation>
-
- </documentation>
- </annotation>
- </attribute>
- <attribute name="id" type="string">
- <annotation>
- <documentation>
-
- </documentation>
- </annotation>
- </attribute>
- <attribute name="name" type="string">
- <annotation>
- <documentation>
-
- </documentation>
- </annotation>
- </attribute>
- </complexType>
- </element>
-
- <element name="tool">
- <complexType>
- <sequence>
- <element ref="option"/>
- <element ref="optionCategory"/>
- </sequence>
- <attribute name="id" type="string" use="required">
- <annotation>
- <documentation>
-
- </documentation>
- </annotation>
- </attribute>
- <attribute name="name" type="string" use="required">
- <annotation>
- <documentation>
-
- </documentation>
- </annotation>
- </attribute>
- <attribute name="sources" type="string">
- <annotation>
- <documentation>
-
- </documentation>
- </annotation>
- </attribute>
- <attribute name="outputs" type="string">
- <annotation>
- <documentation>
-
- </documentation>
- </annotation>
- </attribute>
- <attribute name="dependencyCalculator" type="string">
- <annotation>
- <documentation>
-
- </documentation>
- <appInfo>
- <meta.attribute kind="java"/>
- </appInfo>
- </annotation>
- </attribute>
- </complexType>
- </element>
-
- <element name="option">
- <complexType>
- <sequence>
- <element ref="optionEnum"/>
- </sequence>
- <attribute name="id" type="string" use="required">
- <annotation>
- <documentation>
-
- </documentation>
- </annotation>
- </attribute>
- <attribute name="name" type="string" use="required">
- <annotation>
- <documentation>
-
- </documentation>
- </annotation>
- </attribute>
- <attribute name="type" use="default" value="string">
- <annotation>
- <documentation>
-
- </documentation>
- </annotation>
- <simpleType>
- <restriction base="string">
- <enumeration value="string">
- </enumeration>
- <enumeration value="enumeration">
- </enumeration>
- </restriction>
- </simpleType>
- </attribute>
- <attribute name="default" type="string">
- <annotation>
- <documentation>
-
- </documentation>
- </annotation>
- </attribute>
- <attribute name="category" type="string">
- <annotation>
- <documentation>
- This is the id of the option category for this option. The id can be the id of the tool which is also a category.
- </documentation>
- </annotation>
- </attribute>
- </complexType>
- </element>
-
- <element name="optionEnum">
- <complexType>
- <attribute name="id" type="string" use="required">
- <annotation>
- <documentation>
-
- </documentation>
- </annotation>
- </attribute>
- <attribute name="name" type="string" use="required">
- <annotation>
- <documentation>
-
- </documentation>
- </annotation>
- </attribute>
- </complexType>
- </element>
-
- <element name="configuration">
- <complexType>
- <sequence>
- <element ref="toolRef"/>
- </sequence>
- <attribute name="id" type="string" use="required">
- <annotation>
- <documentation>
-
- </documentation>
- </annotation>
- </attribute>
- <attribute name="name" type="string" use="required">
- <annotation>
- <documentation>
-
- </documentation>
- </annotation>
- </attribute>
- </complexType>
- </element>
-
- <element name="toolRef">
- <complexType>
- <sequence>
- <element ref="optionRef"/>
- </sequence>
- <attribute name="id" type="string" use="required">
- <annotation>
- <documentation>
-
- </documentation>
- </annotation>
- </attribute>
- </complexType>
- </element>
-
- <element name="optionRef">
- <complexType>
- <attribute name="id" type="string" use="required">
- <annotation>
- <documentation>
-
- </documentation>
- </annotation>
- </attribute>
- <attribute name="value" type="string" use="required">
- <annotation>
- <documentation>
-
- </documentation>
- </annotation>
- </attribute>
- </complexType>
- </element>
-
- <element name="target">
- <annotation>
- <documentation>
- Represents a type of resource that is the target of the build process, for example, a Linux Library. A target contains a sequence of tool definitions and configurations. Targets are arranged in an inheritance hierarchy where a target inherits the list of tools from it's parent and can add to or override tools in this list.
- </documentation>
- </annotation>
- <complexType>
- <sequence>
- <element ref="tool"/>
- <element ref="configuration"/>
- </sequence>
- <attribute name="id" type="string" use="required">
- <annotation>
- <documentation>
-
- </documentation>
- </annotation>
- </attribute>
- <attribute name="name" type="string" use="required">
- <annotation>
- <documentation>
-
- </documentation>
- </annotation>
- </attribute>
- <attribute name="isAbstract" type="boolean" use="default" value="false">
- <annotation>
- <documentation>
- This is a UI property. If set to true, users should not be able to create project configurations targeted at this target.
- </documentation>
- </annotation>
- </attribute>
- <attribute name="parent" type="string">
- <annotation>
- <documentation>
- The id of a target that this tool inherits from.
- </documentation>
- </annotation>
- </attribute>
- </complexType>
- </element>
-
- <element name="optionCategory">
- <complexType>
- <attribute name="id" type="string">
- <annotation>
- <documentation>
-
- </documentation>
- </annotation>
- </attribute>
- <attribute name="name" type="string">
- <annotation>
- <documentation>
-
- </documentation>
- </annotation>
- </attribute>
- <attribute name="owner" type="string">
- <annotation>
- <documentation>
-
- </documentation>
- </annotation>
- </attribute>
- </complexType>
- </element>
-
- <annotation>
- <appInfo>
- <meta.section type="since"/>
- </appInfo>
- <documentation>
- [Enter the first release in which this extension point appears.]
- </documentation>
- </annotation>
-
- <annotation>
- <appInfo>
- <meta.section type="examples"/>
- </appInfo>
- <documentation>
- [Enter extension point usage example here.]
- </documentation>
- </annotation>
-
- <annotation>
- <appInfo>
- <meta.section type="apiInfo"/>
- </appInfo>
- <documentation>
- [Enter API information here.]
- </documentation>
- </annotation>
-
- <annotation>
- <appInfo>
- <meta.section type="implementation"/>
- </appInfo>
- <documentation>
- [Enter information about supplied implementation of this extension point.]
- </documentation>
- </annotation>
-
- <annotation>
- <appInfo>
- <meta.section type="copyright"/>
- </appInfo>
- <documentation>
-
- </documentation>
- </annotation>
-
-</schema>
+<?xml version='1.0' encoding='UTF-8'?> +<!-- Schema file written by PDE --> +<schema targetNamespace="org.eclipse.cdt.core"> +<annotation> + <appInfo> + <meta.schema plugin="org.eclipse.cdt.core" id="ManagedBuildTools" name="Managed Build Tools"/> + </appInfo> + <documentation> + [Enter description of this extension point.] + </documentation> + </annotation> + + <element name="extension"> + <complexType> + <sequence> + <element ref="target"/> + <element ref="tool"/> + <element ref="configuration"/> + </sequence> + <attribute name="point" type="string" use="required"> + <annotation> + <documentation> + + </documentation> + </annotation> + </attribute> + <attribute name="id" type="string"> + <annotation> + <documentation> + + </documentation> + </annotation> + </attribute> + <attribute name="name" type="string"> + <annotation> + <documentation> + + </documentation> + </annotation> + </attribute> + </complexType> + </element> + + <element name="tool"> + <complexType> + <sequence> + <element ref="option"/> + <element ref="optionCategory"/> + </sequence> + <attribute name="id" type="string" use="required"> + <annotation> + <documentation> + + </documentation> + </annotation> + </attribute> + <attribute name="name" type="string" use="required"> + <annotation> + <documentation> + + </documentation> + </annotation> + </attribute> + <attribute name="sources" type="string"> + <annotation> + <documentation> + + </documentation> + </annotation> + </attribute> + <attribute name="outputs" type="string"> + <annotation> + <documentation> + + </documentation> + </annotation> + </attribute> + <attribute name="dependencyCalculator" type="string"> + <annotation> + <documentation> + + </documentation> + <appInfo> + <meta.attribute kind="java"/> + </appInfo> + </annotation> + </attribute> + </complexType> + </element> + + <element name="option"> + <complexType> + <sequence> + <element ref="optionEnum"/> + <element ref="optionValue"/> + </sequence> + <attribute name="id" type="string" use="required"> + <annotation> + <documentation> + + </documentation> + </annotation> + </attribute> + <attribute name="name" type="string" use="required"> + <annotation> + <documentation> + + </documentation> + </annotation> + </attribute> + <attribute name="valueType" use="default" value="string"> + <annotation> + <documentation> + + </documentation> + </annotation> + <simpleType> + <restriction base="string"> + <enumeration value="string"> + </enumeration> + <enumeration value="stringList"> + </enumeration> + </restriction> + </simpleType> + </attribute> + <attribute name="value" type="string"> + <annotation> + <documentation> + + </documentation> + </annotation> + </attribute> + <attribute name="category" type="string"> + <annotation> + <documentation> + This is the id of the option category for this option. The id can be the id of the tool which is also a category. + </documentation> + </annotation> + </attribute> + </complexType> + </element> + + <element name="optionEnum"> + <complexType> + <attribute name="id" type="string" use="required"> + <annotation> + <documentation> + + </documentation> + </annotation> + </attribute> + <attribute name="name" type="string" use="required"> + <annotation> + <documentation> + + </documentation> + </annotation> + </attribute> + </complexType> + </element> + + <element name="configuration"> + <complexType> + <sequence> + <element ref="toolRef"/> + </sequence> + <attribute name="id" type="string" use="required"> + <annotation> + <documentation> + + </documentation> + </annotation> + </attribute> + <attribute name="name" type="string" use="required"> + <annotation> + <documentation> + + </documentation> + </annotation> + </attribute> + </complexType> + </element> + + <element name="toolRef"> + <complexType> + <sequence> + <element ref="optionRef"/> + </sequence> + <attribute name="id" type="string" use="required"> + <annotation> + <documentation> + + </documentation> + </annotation> + </attribute> + </complexType> + </element> + + <element name="optionRef"> + <complexType> + <attribute name="id" type="string" use="required"> + <annotation> + <documentation> + + </documentation> + </annotation> + </attribute> + <attribute name="value" type="string"> + <annotation> + <documentation> + + </documentation> + </annotation> + </attribute> + </complexType> + </element> + + <element name="target"> + <annotation> + <documentation> + Represents a type of resource that is the target of the build process, for example, a Linux Library. A target contains a sequence of tool definitions and configurations. Targets are arranged in an inheritance hierarchy where a target inherits the list of tools from it's parent and can add to or override tools in this list. + </documentation> + </annotation> + <complexType> + <sequence> + <element ref="tool"/> + <element ref="configuration"/> + </sequence> + <attribute name="id" type="string" use="required"> + <annotation> + <documentation> + + </documentation> + </annotation> + </attribute> + <attribute name="name" type="string" use="required"> + <annotation> + <documentation> + + </documentation> + </annotation> + </attribute> + <attribute name="isAbstract" type="boolean" use="default" value="false"> + <annotation> + <documentation> + This is a UI property. If set to true, users should not be able to create project configurations targeted at this target. + </documentation> + </annotation> + </attribute> + <attribute name="parent" type="string"> + <annotation> + <documentation> + The id of a target that this tool inherits from. + </documentation> + </annotation> + </attribute> + </complexType> + </element> + + <element name="optionCategory"> + <complexType> + <attribute name="id" type="string"> + <annotation> + <documentation> + + </documentation> + </annotation> + </attribute> + <attribute name="name" type="string"> + <annotation> + <documentation> + + </documentation> + </annotation> + </attribute> + <attribute name="owner" type="string"> + <annotation> + <documentation> + + </documentation> + </annotation> + </attribute> + </complexType> + </element> + + <element name="optionValue"> + <complexType> + <attribute name="value" type="string" use="required"> + <annotation> + <documentation> + + </documentation> + </annotation> + </attribute> + </complexType> + </element> + + <annotation> + <appInfo> + <meta.section type="since"/> + </appInfo> + <documentation> + [Enter the first release in which this extension point appears.] + </documentation> + </annotation> + + <annotation> + <appInfo> + <meta.section type="examples"/> + </appInfo> + <documentation> + [Enter extension point usage example here.] + </documentation> + </annotation> + + <annotation> + <appInfo> + <meta.section type="apiInfo"/> + </appInfo> + <documentation> + [Enter API information here.] + </documentation> + </annotation> + + <annotation> + <appInfo> + <meta.section type="implementation"/> + </appInfo> + <documentation> + [Enter information about supplied implementation of this extension point.] + </documentation> + </annotation> + + <annotation> + <appInfo> + <meta.section type="copyright"/> + </appInfo> + <documentation> + + </documentation> + </annotation> + +</schema> |