[
Date Prev][
Date Next][
Thread Prev][
Thread Next][
Date Index][
Thread Index]
[
List Home]
[cdt-patch] CDT/Core Error Parsers extension point
|
Index: ChangeLog
===================================================================
RCS file: /home/tools/org.eclipse.cdt.core/ChangeLog,v
retrieving revision 1.135
diff -u -r1.135 ChangeLog
--- ChangeLog 28 Aug 2003 19:49:37 -0000 1.135
+++ ChangeLog 31 Aug 2003 04:38:42 -0000
@@ -1,3 +1,12 @@
+2003-08-31 Alain Magloire
+
+ Add method to retrieve the Error Parsers in the CCorePlugin.
+ Add extension point for the ErrorParser.
+
+ * src/org/eclipse/cdt/core/CCorePlugin.java
+ * plugin.xml
+ * plugin.properties
+
2003-08-28 Alain Magloire
Change the TranslationUnit to not always assume that it has a valid
Index: plugin.properties
===================================================================
RCS file: /home/tools/org.eclipse.cdt.core/plugin.properties,v
retrieving revision 1.10
diff -u -r1.10 plugin.properties
--- plugin.properties 28 Jun 2003 19:48:12 -0000 1.10
+++ plugin.properties 31 Aug 2003 04:38:42 -0000
@@ -10,6 +10,7 @@
CProject.name=C Project
CBuilder.name=C Build Model
ProcessList.name=Process List
+ErrorParser.name=Error Parser
makeproject.name=Make Project
genericmake.name=Generic Make
Index: plugin.xml
===================================================================
RCS file: /home/tools/org.eclipse.cdt.core/plugin.xml,v
retrieving revision 1.26
diff -u -r1.26 plugin.xml
--- plugin.xml 13 Aug 2003 17:45:30 -0000 1.26
+++ plugin.xml 31 Aug 2003 04:38:42 -0000
@@ -21,12 +21,48 @@
</requires>
- <extension-point id="CBuildCommand" name="%CBuildCommand.name"/>
- <extension-point id="CBuildConsole" name="%CBuildConsole.name"/>
<extension-point id="CProject" name="%CProject.name"/>
+
+<!-- =================================================================================== -->
+<!-- Extension Point:(Deprecated, to be removed) -->
+<!-- =================================================================================== -->
+
<extension-point id="CBuildModel" name="%CBuilder.name"/>
+
+<!-- =================================================================================== -->
+<!-- Extension Point:(Deprecated, to be removed) Default command for the MakeBuilder -->
+<!-- =================================================================================== -->
+
+ <extension-point id="CBuildCommand" name="%CBuildCommand.name"/>
+
+<!-- =================================================================================== -->
+<!-- Extension Point:(work in progress) IConsole, customize a C Build console output -->
+<!-- =================================================================================== -->
+
+ <extension-point id="CBuildConsole" name="%CBuildConsole.name"/>
+
+<!-- =================================================================================== -->
+<!-- Extension Point: IProcessList, returns a list of running processes -->
+<!-- =================================================================================== -->
+
<extension-point id="ProcessList" name="%ProcessList.name" schema="schema/ProcessList.exsd"/>
+
+<!-- =================================================================================== -->
+<!-- Extension Point: IErrorParser, error parsers use when building -->
+<!-- =================================================================================== -->
+
+ <extension-point id="ErrorParser" name="%ErrorParser.name"/>
+
+<!-- =================================================================================== -->
+<!-- Extension Point: IBinaryParser, use to detect wheter an IFile is a binary -->
+<!-- =================================================================================== -->
+
<extension-point id="BinaryParser" name="BinaryParser"/>
+
+<!-- =================================================================================== -->
+<!-- Extension Point: ???????????????? -->
+<!-- =================================================================================== -->
+
<extension-point id="CToolchain" name="C/C++ Toolchain Provider" schema="schema/CToolchain.exsd"/>
<extension-point id="CBuildConfiguration" name="C/C++ Build Configuration" schema="schema/CBuildConfiguration.exsd"/>
<extension-point id="CTool" name="C/C++ Tool" schema="schema/CTool.exsd"/>
@@ -35,6 +71,11 @@
<extension-point id="ManagedBuildInfo" name="Managed Build Tools" schema="schema/ManagedBuildTools.exsd"/>
<extension-point id="ScannerInfoProvider" name="Scanner Information Provider"/>
+
+<!-- =================================================================================== -->
+<!-- Extension Point: ???????????????? -->
+<!-- =================================================================================== -->
+
<extension
point="org.eclipse.cdt.core.CToolType">
<type
@@ -74,7 +115,10 @@
id="org.eclipse.cdt.core.tool.strip">
</type>
</extension>
-<!-- Define the list of the Binary Parser provided by the CDT -->
+
+<!-- =================================================================================== -->
+<!-- Define the list of the Binary Parser provided by the CDT -->
+<!-- =================================================================================== -->
<extension
id="ELF"
name="Elf Parser"
@@ -95,6 +139,59 @@
</run>
</cextension>
</extension>
+
+<!-- =================================================================================== -->
+<!-- Define the list of Error Parser provided by the CDT -->
+<!-- =================================================================================== -->
+ <extension
+ id="GCCErrorParser"
+ name="CDT GNU C/C++ Error Parser"
+ point="org.eclipse.cdt.core.ErrorParser">
+ <errorparser
+ class="org.eclipse.cdt.internal.errorparsers.GCCErrorParser">
+ </errorparser>
+ </extension>
+
+ <extension
+ id="GASErrorParser"
+ name="CDT GNU Assembler Error Parser"
+ point="org.eclipse.cdt.core.ErrorParser">
+ <errorparser
+ class="org.eclipse.cdt.internal.errorparsers.GASErrorParser">
+ </errorparser>
+ </extension>
+
+ <extension
+ id="GLDErrorParser"
+ name="CDT GNU Linker Error Parser"
+ point="org.eclipse.cdt.core.ErrorParser">
+ <errorparser
+ class="org.eclipse.cdt.internal.errorparsers.GLDErrorParser">
+ </errorparser>
+ </extension>
+
+ <extension
+ id="MakeErrorParser"
+ name="CDT GNU Make Error Parser"
+ point="org.eclipse.cdt.core.ErrorParser">
+ <errorparser
+ class="org.eclipse.cdt.internal.errorparsers.MakeErrorParser">
+ </errorparser>
+ </extension>
+
+ <extension
+ id="VCErrorParser"
+ name="CDT Visual C Error Parser"
+ point="org.eclipse.cdt.core.ErrorParser">
+ <errorparser
+ class="org.eclipse.cdt.internal.core.linux.VCErrorParser">
+ </errorparser>
+ </extension>
+
+<!-- =================================================================================== -->
+<!-- Eclipse Builder provided by the CDT, to be removed to the MakePlugin -->
+<!-- =================================================================================== -->
+
<extension
id="cbuilder"
name="C Builder"
@@ -105,6 +202,11 @@
</run>
</builder>
</extension>
+
+<!-- =================================================================================== -->
+<!-- Extension Point: ???????????????? -->
+<!-- =================================================================================== -->
+
<extension
id="newcbuilder"
name="C Builder"
@@ -115,6 +217,11 @@
</run>
</builder>
</extension>
+
+<!-- =================================================================================== -->
+<!-- Extension Point: ???????????????? -->
+<!-- =================================================================================== -->
+
<extension
id="genmakebuilder"
name="%GeneratedMakefileCBuilder.name"
@@ -126,6 +233,11 @@
</run>
</builder>
</extension>
+
+<!-- =================================================================================== -->
+<!-- CDT customized problem markers: C Problem markers -->
+<!-- =================================================================================== -->
+
<extension
id="problem"
name="%CProblemMarker.name"
@@ -137,6 +249,11 @@
type="org.eclipse.core.resources.textmarker">
</super>
</extension>
+
+<!-- =================================================================================== -->
+<!-- CDT C Nature -->
+<!-- =================================================================================== -->
+
<extension
id="cnature"
name="%cnature.name"
@@ -147,6 +264,11 @@
</run>
</runtime>
</extension>
+
+<!-- =================================================================================== -->
+<!-- CDT C++ Nature -->
+<!-- =================================================================================== -->
+
<extension
id="ccnature"
name="%cnature.name"
@@ -157,6 +279,11 @@
</run>
</runtime>
</extension>
+
+<!-- =================================================================================== -->
+<!-- Extension Point: ???????????????? -->
+<!-- =================================================================================== -->
+
<extension
id="managedBuildNature"
name="%ManagedBuildNature.name"
@@ -173,12 +300,22 @@
id="org.eclipse.cdt.core.genmakebuilder">
</builder>
</extension>
+
+<!-- =================================================================================== -->
+<!-- Deprecated Make default command, will be removed. -->
+<!-- =================================================================================== -->
+
<extension
point="org.eclipse.cdt.core.CBuildCommand">
<buildcommand
command="make">
</buildcommand>
</extension>
+
+<!-- =================================================================================== -->
+<!-- Deprecated Make owner, will be removed. -->
+<!-- =================================================================================== -->
+
<extension
id="make"
name="%makeproject.name"
@@ -187,6 +324,11 @@
class="org.eclipse.cdt.internal.core.make.MakeProject">
</cproject>
</extension>
+
+<!-- =================================================================================== -->
+<!-- Deprecated Make builder, will be removed. -->
+<!-- =================================================================================== -->
+
<extension
id="makeBuilder"
name="%makebuildmodel.name"
@@ -195,9 +337,11 @@
class="org.eclipse.cdt.internal.core.make.MakeBuilder">
</run>
</extension>
-<!-- ================================================== -->
-<!-- Some well known C file extensions -->
-<!-- ================================================== -->
+
+<!-- =================================================================================== -->
+<!-- Some well known C file extensions override for the team plugins -->
+<!-- =================================================================================== -->
+
<extension
point="org.eclipse.team.core.fileTypes">
<fileTypes
@@ -253,6 +397,11 @@
extension=".cdtproject">
</fileTypes>
</extension>
+
+<!-- =================================================================================== -->
+<!-- Some well known C file extensions override for the team plugins -->
+<!-- =================================================================================== -->
+
<extension
point="org.eclipse.team.core.ignore">
<ignore
@@ -280,6 +429,11 @@
pattern="*.exe">
</ignore>
</extension>
+
+<!-- =================================================================================== -->
+<!-- Extension Point(Note:Temporary): IScannerInfoProvider for the managed Builder -->
+<!-- =================================================================================== -->
+
<extension
id="ManagedBuildManager"
point="org.eclipse.cdt.core.ScannerInfoProvider">
@@ -290,6 +444,10 @@
</cextension>
</extension>
+<!-- =================================================================================== -->
+<!-- Extension Point(Note:Temporary): IScannerInfoProvider for the standard Builder -->
+<!-- =================================================================================== -->
+
<extension
id="StandardBuildManager"
point="org.eclipse.cdt.core.ScannerInfoProvider">
@@ -299,6 +457,10 @@
</run>
</cextension>
</extension>
+
+<!-- =================================================================================== -->
+<!-- =================================================================================== -->
+
<extension id="task" name="%CTaskName" point="org.eclipse.core.resources.markers">
<super type="org.eclipse.core.resources.taskmarker"/>
<persistent value="true"/>
Index: src/org/eclipse/cdt/core/CCorePlugin.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.core/src/org/eclipse/cdt/core/CCorePlugin.java,v
retrieving revision 1.24
diff -u -r1.24 CCorePlugin.java
--- src/org/eclipse/cdt/core/CCorePlugin.java 26 Aug 2003 19:15:58 -0000 1.24
+++ src/org/eclipse/cdt/core/CCorePlugin.java 31 Aug 2003 04:38:42 -0000
@@ -6,13 +6,16 @@
*/
import java.text.MessageFormat;
+import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
+import java.util.List;
import java.util.Map;
import java.util.MissingResourceException;
import java.util.ResourceBundle;
+import java.util.StringTokenizer;
import org.eclipse.cdt.core.index.IndexModel;
import org.eclipse.cdt.core.model.CoreModel;
@@ -64,7 +67,11 @@
public final static String PREF_BINARY_PARSER = "binaryparser";
public final static String DEFAULT_BINARY_PARSER_SIMPLE_ID = "ELF";
public final static String DEFAULT_BINARY_PARSER_UNIQ_ID = PLUGIN_ID + "." + DEFAULT_BINARY_PARSER_SIMPLE_ID;
+
public final static String PREF_USE_NEW_PARSER = "useNewParser";
+
+ public final static String ERROR_PARSER_SIMPLE_ID = "ErrorParser"; //$NON-NLS-1$
+ public final static String PREF_ERROR_PARSER = "errorOutputParser"; // $NON-NLS-1$
// Build Model Interface Discovery
public final static String BUILD_SCANNER_INFO_SIMPLE_ID = "ScannerInfoProvider";
@@ -690,14 +697,11 @@
this.convertProjectToCC(projectHandle, monitor, projectID, true);
}
- // Extract the builder from the .cdtproject.
- // public ICBuilder[] getBuilders(IProject project) throws CoreException {
- // ICExtension extensions[] = fDescriptorManager.createExtensions(BUILDER_MODEL_ID, project);
- // ICBuilder builders[] = new ICBuilder[extensions.length];
- // System.arraycopy(extensions, 0, builders, 0, extensions.length);
- // return builders;
- // }
-
+ /**
+ * Instanciate the class from the extension point "ProcessList"
+ * responsable of returning a list of process for this platform.
+ * @return
+ */
public IProcessList getProcessList() {
IExtensionPoint extension = getDescriptor().getExtensionPoint("ProcessList");
if (extension != null) {
@@ -713,7 +717,67 @@
return null;
}
-
+ /**
+ * Array of error parsers extensions.
+ * @return
+ */
+ public IErrorParser[] getErrorParsers() {
+ IExtensionPoint extension = getDescriptor().getExtensionPoint(ERROR_PARSER_SIMPLE_ID);
+ IErrorParser[] empty = new IErrorParser[0];
+ if (extension != null) {
+ IExtension[] extensions = extension.getExtensions();
+ IConfigurationElement[] configElements = extensions[0].getConfigurationElements();
+ ArrayList list = new ArrayList(configElements.length);
+ for (int i = 0; i < configElements.length; i++) {
+ try {
+ IErrorParser parser = (IErrorParser) configElements[i].createExecutableExtension("class");
+ list.add(parser);
+ } catch (CoreException e) {
+ }
+ }
+ return (IErrorParser[]) list.toArray(empty);
+ }
+ return empty;
+ }
+
+ public IErrorParser[] getErrorParser(String id) {
+ IErrorParser[] empty = new IErrorParser[0];
+ try {
+ IExtensionPoint extension = getDescriptor().getExtensionPoint(ERROR_PARSER_SIMPLE_ID);
+ if (extension != null) {
+ IExtension[] extensions = extension.getExtensions();
+ List list = new ArrayList(extensions.length);
+ for (int i = 0; i < extensions.length; i++) {
+ String parserID = extensions[i].getUniqueIdentifier();
+ if ((id == null && parserID == null) || (id != null && parserID.equals(id))) {
+ IConfigurationElement[] configElements = extensions[i]. getConfigurationElements();
+ for (int j = 0; j < configElements.length; j++) {
+ IErrorParser parser = (IErrorParser)configElements[j].createExecutableExtension("class");
+ list.add(parser);
+ }
+ }
+ }
+ return (IErrorParser[]) list.toArray(empty);
+ }
+ } catch (CoreException e) {
+ }
+ return empty;
+ }
+
+ public String[] getPreferenceErrorParserIDs() {
+ String parserIDs = CCorePlugin.getDefault().getPluginPreferences().getString(PREF_USE_NEW_PARSER);
+ String[] empty = new String[0];
+ if (parserIDs != null && parserIDs.length() > 0) {
+ StringTokenizer tok = new StringTokenizer(parserIDs, ";");
+ List list = new ArrayList(tok.countTokens());
+ while (tok.hasMoreElements()) {
+ list.add(tok.nextToken());
+ }
+ return (String[]) list.toArray(empty);
+ }
+ return empty;
+ }
+
public IScannerInfoProvider getScannerInfoProvider(IProject project) {
IScannerInfoProvider provider = null;
if (project != null) {