Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
Re: [cdt-patch] Setting Project Nature in Parser


Hi Hoda,

Could you update and resent this patch.

Thanks,
Doug Schaefer
Rational Software - IBM Software Group
Ottawa, Ontario, Canada



"Amer, Hoda" <hamer@xxxxxxxxxxxx>
Sent by: cdt-patch-admin@xxxxxxxxxxx

04/14/2003 11:31 AM
Please respond to cdt-patch

       
        To:        "'cdt-patch@xxxxxxxxxxx'" <cdt-patch@xxxxxxxxxxx>
        cc:        
        Subject:        [cdt-patch] Setting Project Nature in Parser



This patch:

-determines the project nature before calling the parser.

-sets the visibility of member template methods.

Thanks,

Hoda

 

Index: parser/org/eclipse/cdt/internal/core/model/CModelBuilder.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/model/CModelBuilder.java,v
retrieving revision 1.7
diff -u -r1.7 CModelBuilder.java
--- parser/org/eclipse/cdt/internal/core/model/CModelBuilder.java	13 Apr 2003 22:01:29 -0000	1.7
+++ parser/org/eclipse/cdt/internal/core/model/CModelBuilder.java	14 Apr 2003 14:30:13 -0000
@@ -15,6 +15,7 @@
 import java.util.Iterator;
 import java.util.List;
 
+import org.eclipse.cdt.core.model.CoreModel;
 import org.eclipse.cdt.core.model.ICElement;
 import org.eclipse.cdt.core.model.INamespace;
 import org.eclipse.cdt.core.model.IParent;
@@ -44,7 +45,7 @@
 import org.eclipse.cdt.internal.core.dom.TranslationUnit;
 import org.eclipse.cdt.internal.core.dom.TypeSpecifier;
 import org.eclipse.cdt.internal.core.parser.Parser;
-import org.eclipse.cdt.internal.core.parser.ParserException;
+import org.eclipse.core.resources.IProject;
 
 public class CModelBuilder {
 	
@@ -54,9 +55,13 @@
 	}
 
 	public TranslationUnit parse() throws Exception {
+
 		DOMBuilder domBuilder = new DOMBuilder();
 		String code = translationUnit.getBuffer().getContents();
 		Parser parser = new Parser(code, domBuilder, true);
+		IProject currentProject = translationUnit.getCProject().getProject();
+		boolean hasCppNature = CoreModel.getDefault().hasCCNature(currentProject);
+		parser.setCppNature(hasCppNature);
 		parser.parse();
 		long startTime = System.currentTimeMillis(); 
 		generateModelElements(domBuilder.getTranslationUnit());
@@ -179,21 +184,7 @@
 			ITemplate template = (ITemplate) createFunctionSpecification(parent, simpleDeclaration, declarator, pdc, true);
 			String[] parameterTypes = getTemplateParameters(templateDeclaration);	
 			template.setTemplateParameterTypes(parameterTypes);				
-
 		}
-/*// typedef
-		if(simpleDeclaration.getDeclSpecifier().isTypedef()){
-			createTypeDef(parent, declarator, simpleDeclaration);
-		} else {
-			ParameterDeclarationClause pdc = declarator.getParms();
-			if (pdc == null){
-				createVariableSpecification(parent, simpleDeclaration, declarator); 
-			}
-			else{
-				createFunctionSpecification(parent, simpleDeclaration, declarator, pdc);
-			}
-		}
-*/
 	}
 	private void createInclusion(Parent parent, Inclusion inclusion){
 		// create element
@@ -398,7 +389,7 @@
 					element = newElement;				
 				}else {
 					MethodTemplate newElement = new MethodTemplate(parent, declaratorName);
-				//	newElement.setVisibility(simpleDeclaration.getAccessSpecifier().getAccess());
+					newElement.setVisibility(simpleDeclaration.getAccessSpecifier().getAccess());
 					element = newElement;				
 				}
 				
Index: parser/org/eclipse/cdt/internal/core/parser/Parser.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/Parser.java,v
retrieving revision 1.28
diff -u -r1.28 Parser.java
--- parser/org/eclipse/cdt/internal/core/parser/Parser.java	13 Apr 2003 22:01:29 -0000	1.28
+++ parser/org/eclipse/cdt/internal/core/parser/Parser.java	14 Apr 2003 14:30:15 -0000
@@ -22,6 +22,7 @@
 	private IParserCallback callback;
 	private boolean quickParse = false;
 	private boolean parsePassed = true;
+	private boolean cppNature = true;
 	
 	// TO DO: convert to a real symbol table
 	private Map currRegion = new HashMap();
@@ -2240,6 +2241,20 @@
 	protected void backup(Token mark) {
 		currToken = mark;
 		lastToken = null; 
+	}
+
+	/**
+	 * @return
+	 */
+	public boolean isCppNature() {
+		return cppNature;
+	}
+
+	/**
+	 * @param b
+	 */
+	public void setCppNature(boolean b) {
+		cppNature = b;
 	}
 
 }

Back to the top