Skip to main content

[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) {



Back to the top