Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
[cdt-patch] Applied [ HEAD ] Line #s among other Parser updates


Create new interface and support for calculating lineNumber/offset mapping.  
Updated IASTClassSpecifier for qualified name query.  
Began structuring expressions and declarators in Parser for ISourceElementRequestor.  
Updated other packages to use new interfaces.
Updated automatedtests/torture test to use new line number information.  

JohnC


Index: ChangeLog
===================================================================
RCS file: /home/tools/org.eclipse.cdt.ui.tests/ChangeLog,v
retrieving revision 1.71
diff -u -r1.71 ChangeLog
--- ChangeLog	24 Jun 2003 20:18:13 -0000	1.71
+++ ChangeLog	25 Jun 2003 22:46:26 -0000
@@ -1,3 +1,10 @@
+2003-06-25 John Camelon
+	Create new interface and support for calculating lineNumber/offset mapping.  
+	Updated IASTClassSpecifier for qualified name query.  
+	Began structuring expressions and declarators in Parser for ISourceElementRequestor.  
+	Updated other packages to use new interfaces.
+	Updated automatedtests/torture test to use new line number information.  
+
 2003-06-24 John Camelon
 	Updates for ISourceElementRequestor - elaborated types & enumerations.  
 
Index: parser/org/eclipse/cdt/core/parser/tests/AutomatedTest.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.ui.tests/parser/org/eclipse/cdt/core/parser/tests/AutomatedTest.java,v
retrieving revision 1.9
diff -u -r1.9 AutomatedTest.java
--- parser/org/eclipse/cdt/core/parser/tests/AutomatedTest.java	23 Jun 2003 18:05:30 -0000	1.9
+++ parser/org/eclipse/cdt/core/parser/tests/AutomatedTest.java	25 Jun 2003 22:46:27 -0000
@@ -21,6 +21,7 @@
 import junit.framework.AssertionFailedError;
 import junit.framework.Test;
 
+import org.eclipse.cdt.core.parser.ILineOffsetReconciler;
 import org.eclipse.cdt.core.parser.IParser;
 import org.eclipse.cdt.core.parser.ParserFactory;
 import org.eclipse.cdt.core.parser.ParserMode;
@@ -47,6 +48,7 @@
 		
 		File file = null;
 		IParser parser = null;
+		ILineOffsetReconciler mapping = null; 
 		
 		try{
 			file = (File)fileList.removeFirst();
@@ -55,7 +57,8 @@
 			String filePath = file.getCanonicalPath();
 			parser = ParserFactory.createParser( ParserFactory.createScanner( new InputStreamReader (stream), filePath, null, null, ParserMode.QUICK_PARSE ), nullCallback, ParserMode.QUICK_PARSE);
 			parser.setCppNature( ((String)natures.get( filePath )).equalsIgnoreCase("cpp") );
-			parser.mapLineNumbers(true);
+			
+			mapping = ParserFactory.createLineOffsetReconciler( new InputStreamReader( stream ) );
 		
 			assertTrue( parser.parse() );
 		} 
@@ -64,10 +67,10 @@
 			String output = null;
 			if( e instanceof AssertionFailedError ){
 				output = file.getCanonicalPath() + ": Parse failed on line ";
-				output += parser.getLineNumberForOffset(parser.getLastErrorOffset()) + "\n";
+				output += mapping.getLineNumberForOffset(parser.getLastErrorOffset()) + "\n";
 			} else {
 				output = file.getCanonicalPath() + ": " + e.getClass().toString();
-				output += " on line " + parser.getLineNumberForOffset(parser.getLastErrorOffset()) + "\n";
+				output += " on line " + mapping.getLineNumberForOffset(parser.getLastErrorOffset()) + "\n";
 			}
 			if( report != null ){
 				report.write( output.getBytes() );
Index: parser/org/eclipse/cdt/core/parser/tests/FractionalAutomatedTest.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.ui.tests/parser/org/eclipse/cdt/core/parser/tests/FractionalAutomatedTest.java,v
retrieving revision 1.5
diff -u -r1.5 FractionalAutomatedTest.java
--- parser/org/eclipse/cdt/core/parser/tests/FractionalAutomatedTest.java	23 Jun 2003 18:05:30 -0000	1.5
+++ parser/org/eclipse/cdt/core/parser/tests/FractionalAutomatedTest.java	25 Jun 2003 22:46:27 -0000
@@ -240,7 +240,6 @@
 				IParser parser = ParserFactory.createParser( 
 						ParserFactory.createScanner( new StringReader( code ), null, null, null, ParserMode.QUICK_PARSE ), nullCallback, ParserMode.QUICK_PARSE);
 				parser.setCppNature( cppNature );
-				parser.mapLineNumbers(true);
 				parser.parse();
 			} catch ( Exception e ){
 				result = e.getClass().toString();
Index: parser/org/eclipse/cdt/core/parser/tests/LineNumberTest.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.ui.tests/parser/org/eclipse/cdt/core/parser/tests/LineNumberTest.java,v
retrieving revision 1.7
diff -u -r1.7 LineNumberTest.java
--- parser/org/eclipse/cdt/core/parser/tests/LineNumberTest.java	23 Jun 2003 18:05:30 -0000	1.7
+++ parser/org/eclipse/cdt/core/parser/tests/LineNumberTest.java	25 Jun 2003 22:46:27 -0000
@@ -53,47 +53,12 @@
 		fileIn = new FileInputStream(fileName);
 	}
 	
-	public void testLineNos() throws Exception
-	{
-		IScanner scanner = ParserFactory.createScanner( new StringReader( "int x = 3;\n foo\nfire\nfoe " ), "string", null, null, null );
-		scanner.mapLineNumbers(true);
-		IToken t = scanner.nextToken(); 
-		assertEquals( t.getType(), IToken.t_int );
-		assertEquals( scanner.getLineNumberForOffset(t.getOffset()), 1 );
-		t = scanner.nextToken(); 
-		assertEquals( t.getImage(), "x");
-		assertEquals( scanner.getLineNumberForOffset(t.getOffset()), 1 );
-		t = scanner.nextToken(); 
-		assertEquals( t.getType(), IToken.tASSIGN );
-		assertEquals( scanner.getLineNumberForOffset(t.getOffset()), 1 );
-		t = scanner.nextToken(); 
-		assertEquals( t.getImage(), "3" );
-		assertEquals( scanner.getLineNumberForOffset(t.getOffset()), 1 );
-		t = scanner.nextToken(); 
-		assertEquals( t.getType(), IToken.tSEMI);
-		assertEquals( scanner.getLineNumberForOffset(t.getOffset()), 1 );
-		for( int i = 2; i < 5; ++i )
-		{ 
-			t = scanner.nextToken(); 
-			assertEquals( t.getType(), IToken.tIDENTIFIER);
-			assertEquals( scanner.getLineNumberForOffset(t.getOffset()), i );
-		}
-
-		try {
-			t = scanner.nextToken();
-			fail( "EOF");
-		} 
-		catch (Parser.EndOfFile e) {
-			assertEquals( scanner.getLineNumberForOffset(29), 4 ); 
-		}
-
-	}
 	
 	public void testDOMLineNos() throws Exception
 	{
 		DOMBuilder domBuilder = new DOMBuilder();
 		IParser parser = ParserFactory.createParser( ParserFactory.createScanner( new InputStreamReader( fileIn ), null, null, null, ParserMode.QUICK_PARSE ), domBuilder, ParserMode.QUICK_PARSE ); 
-		parser.mapLineNumbers(true); 
+		//parser.mapLineNumbers(true); 
 		if( ! parser.parse() ) fail( "Parse of file failed");
 		
 		List macros = domBuilder.getTranslationUnit().getMacros();
Index: parser/org/eclipse/cdt/core/parser/tests/TortureTest.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.ui.tests/parser/org/eclipse/cdt/core/parser/tests/TortureTest.java,v
retrieving revision 1.3
diff -u -r1.3 TortureTest.java
--- parser/org/eclipse/cdt/core/parser/tests/TortureTest.java	23 Jun 2003 18:05:30 -0000	1.3
+++ parser/org/eclipse/cdt/core/parser/tests/TortureTest.java	25 Jun 2003 22:46:28 -0000
@@ -22,6 +22,7 @@
 import junit.framework.AssertionFailedError;
 import junit.framework.Test;
 
+import org.eclipse.cdt.core.parser.ILineOffsetReconciler;
 import org.eclipse.cdt.core.parser.IParser;
 import org.eclipse.cdt.core.parser.ParserFactory;
 import org.eclipse.cdt.core.parser.ParserMode;
@@ -102,12 +103,12 @@
 	}
 	
 	
-	static protected void reportException (Throwable e, String file, IParser parser){
+	static protected void reportException (Throwable e, String file, IParser parser, ILineOffsetReconciler mapping){
 		String output = null;
 		int lineNumber = -1;
 		
 		try {
-			lineNumber = parser.getLineNumberForOffset(parser.getLastErrorOffset());
+			lineNumber = mapping.getLineNumberForOffset(parser.getLastErrorOffset());
 		} catch (Exception ex) {}
 		
 		if (e instanceof AssertionFailedError) {
@@ -178,7 +179,7 @@
 				thread.stop();
 				reportHang(testCode, filePath);
 			} else if (thread.result != null) {
-				reportException(thread.result, filePath, thread.parser);
+				reportException(thread.result, filePath, thread.parser, thread.mapping );
 			}
 		} else {
 			// gcc probably didn't expect this test to pass.
@@ -198,15 +199,16 @@
 		public Throwable 	result = null;
 		public IParser 		parser = null;
 		public boolean 		quickParse = true;
+		public ILineOffsetReconciler mapping = null;
 	
 		public void run(){
 			try {           
 				DOMBuilder domBuilder = new DOMBuilder(); 
 				IParser parser = ParserFactory.createParser( 
 					ParserFactory.createScanner( new StringReader( code ), null, null, null, ParserMode.QUICK_PARSE ), nullCallback, ParserMode.QUICK_PARSE);
+				mapping = ParserFactory.createLineOffsetReconciler( new StringReader( code ) );
 	
 				parser.setCppNature(cppNature);
-				parser.mapLineNumbers(true);
 	            
 				assertTrue(parser.parse());
 			} 
Index: ChangeLog
===================================================================
RCS file: /home/tools/org.eclipse.cdt.ui/ChangeLog,v
retrieving revision 1.109
diff -u -r1.109 ChangeLog
--- ChangeLog	24 Jun 2003 14:22:14 -0000	1.109
+++ ChangeLog	25 Jun 2003 22:46:09 -0000
@@ -1,3 +1,9 @@
+2003-06-25 John Camelon
+	Create new interface and support for calculating lineNumber/offset mapping.  
+	Updated IASTClassSpecifier for qualified name query.  
+	Began structuring expressions and declarators in Parser for ISourceElementRequestor.  
+	Updated other packages to use new interfaces.  
+
 2003-06-24 Thomas Fletcher
 
 	- Proposals will now include additional help information with them
Index: src/org/eclipse/cdt/internal/ui/CFileElementWorkingCopy.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/CFileElementWorkingCopy.java,v
retrieving revision 1.4
diff -u -r1.4 CFileElementWorkingCopy.java
--- src/org/eclipse/cdt/internal/ui/CFileElementWorkingCopy.java	21 Apr 2003 18:34:44 -0000	1.4
+++ src/org/eclipse/cdt/internal/ui/CFileElementWorkingCopy.java	25 Jun 2003 22:46:10 -0000
@@ -51,7 +51,7 @@
 		if (doc != null) {
 			DocumentInputStream dis= new DocumentInputStream(doc);
 			try {
-				parse(dis, false); // we do not believe we require line numbers
+				parse(dis); 
 			} finally {
 				try { dis.close(); } catch (IOException e) {}
 			}
Index: ChangeLog
===================================================================
RCS file: /home/tools/org.eclipse.cdt.core.tests/ChangeLog,v
retrieving revision 1.6
diff -u -r1.6 ChangeLog
--- ChangeLog	24 Jun 2003 20:18:16 -0000	1.6
+++ ChangeLog	25 Jun 2003 22:45:47 -0000
@@ -1,3 +1,10 @@
+2003-06-25 John Camelon
+	Create new interface and support for calculating lineNumber/offset mapping.  
+	Updated IASTClassSpecifier for qualified name query.  
+	Began structuring expressions and declarators in Parser for ISourceElementRequestor.  
+	Updated other packages to use new interfaces.  
+	Updated automatedtests/torture test to use new line number information.  
+
 2003-06-24 John Camelon
 	Updates for ISourceElementRequestor - elaborated types & enumerations.  
 
Index: parser/org/eclipse/cdt/core/parser/tests/AutomatedTest.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/AutomatedTest.java,v
retrieving revision 1.2
diff -u -r1.2 AutomatedTest.java
--- parser/org/eclipse/cdt/core/parser/tests/AutomatedTest.java	23 Jun 2003 18:05:26 -0000	1.2
+++ parser/org/eclipse/cdt/core/parser/tests/AutomatedTest.java	25 Jun 2003 22:45:47 -0000
@@ -21,6 +21,7 @@
 import junit.framework.AssertionFailedError;
 import junit.framework.Test;
 
+import org.eclipse.cdt.core.parser.ILineOffsetReconciler;
 import org.eclipse.cdt.core.parser.IParser;
 import org.eclipse.cdt.core.parser.ParserFactory;
 import org.eclipse.cdt.core.parser.ParserMode;
@@ -47,6 +48,7 @@
 		
 		File file = null;
 		IParser parser = null;
+		ILineOffsetReconciler mapping = null; 
 		
 		try{
 			file = (File)fileList.removeFirst();
@@ -55,7 +57,8 @@
 			String filePath = file.getCanonicalPath();
 			parser = ParserFactory.createParser( ParserFactory.createScanner( new InputStreamReader (stream), filePath, null, null, ParserMode.QUICK_PARSE ), nullCallback, ParserMode.QUICK_PARSE);
 			parser.setCppNature( ((String)natures.get( filePath )).equalsIgnoreCase("cpp") );
-			parser.mapLineNumbers(true);
+			
+			mapping = ParserFactory.createLineOffsetReconciler( new InputStreamReader( stream ) );
 			
 			assertTrue( parser.parse() );
 		} 
@@ -64,10 +67,10 @@
 			String output = null;
 			if( e instanceof AssertionFailedError ){
 				output = file.getCanonicalPath() + ": Parse failed on line ";
-				output += parser.getLineNumberForOffset(parser.getLastErrorOffset()) + "\n";
+				output += mapping.getLineNumberForOffset(parser.getLastErrorOffset()) + "\n";
 			} else {
 				output = file.getCanonicalPath() + ": " + e.getClass().toString();
-				output += " on line " + parser.getLineNumberForOffset(parser.getLastErrorOffset()) + "\n";
+				output += " on line " + mapping.getLineNumberForOffset(parser.getLastErrorOffset()) + "\n";
 			}
 			if( report != null ){
 				report.write( output.getBytes() );
Index: parser/org/eclipse/cdt/core/parser/tests/FractionalAutomatedTest.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/FractionalAutomatedTest.java,v
retrieving revision 1.2
diff -u -r1.2 FractionalAutomatedTest.java
--- parser/org/eclipse/cdt/core/parser/tests/FractionalAutomatedTest.java	23 Jun 2003 18:05:26 -0000	1.2
+++ parser/org/eclipse/cdt/core/parser/tests/FractionalAutomatedTest.java	25 Jun 2003 22:45:48 -0000
@@ -240,7 +240,6 @@
 				IParser parser = ParserFactory.createParser( 
 					ParserFactory.createScanner( new StringReader( code ), null, null, null, ParserMode.QUICK_PARSE ), nullCallback, ParserMode.QUICK_PARSE);
 				parser.setCppNature( cppNature );
-				parser.mapLineNumbers(true);
 				parser.parse();
 			} catch ( Exception e ){
 				result = e.getClass().toString();
Index: parser/org/eclipse/cdt/core/parser/tests/LineNumberTest.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/LineNumberTest.java,v
retrieving revision 1.2
diff -u -r1.2 LineNumberTest.java
--- parser/org/eclipse/cdt/core/parser/tests/LineNumberTest.java	23 Jun 2003 18:05:26 -0000	1.2
+++ parser/org/eclipse/cdt/core/parser/tests/LineNumberTest.java	25 Jun 2003 22:45:48 -0000
@@ -14,14 +14,11 @@
 import java.io.FileInputStream;
 import java.io.InputStream;
 import java.io.InputStreamReader;
-import java.io.StringReader;
 import java.util.List;
 
 import junit.framework.TestCase;
 
 import org.eclipse.cdt.core.parser.IParser;
-import org.eclipse.cdt.core.parser.IScanner;
-import org.eclipse.cdt.core.parser.IToken;
 import org.eclipse.cdt.core.parser.ParserFactory;
 import org.eclipse.cdt.core.parser.ParserMode;
 import org.eclipse.cdt.internal.core.dom.ClassSpecifier;
@@ -31,7 +28,6 @@
 import org.eclipse.cdt.internal.core.dom.NamespaceDefinition;
 import org.eclipse.cdt.internal.core.dom.SimpleDeclaration;
 import org.eclipse.cdt.internal.core.dom.TemplateDeclaration;
-import org.eclipse.cdt.internal.core.parser.Parser;
 import org.eclipse.core.runtime.Path;
 
 /**
@@ -53,47 +49,12 @@
 		fileIn = new FileInputStream(fileName);
 	}
 	
-	public void testLineNos() throws Exception
-	{
-		IScanner scanner = ParserFactory.createScanner( new StringReader( "int x = 3;\n foo\nfire\nfoe " ), "string", null, null, null );
-		scanner.mapLineNumbers(true);
-		IToken t = scanner.nextToken(); 
-		assertEquals( t.getType(), IToken.t_int );
-		assertEquals( scanner.getLineNumberForOffset(t.getOffset()), 1 );
-		t = scanner.nextToken(); 
-		assertEquals( t.getImage(), "x");
-		assertEquals( scanner.getLineNumberForOffset(t.getOffset()), 1 );
-		t = scanner.nextToken(); 
-		assertEquals( t.getType(), IToken.tASSIGN );
-		assertEquals( scanner.getLineNumberForOffset(t.getOffset()), 1 );
-		t = scanner.nextToken(); 
-		assertEquals( t.getImage(), "3" );
-		assertEquals( scanner.getLineNumberForOffset(t.getOffset()), 1 );
-		t = scanner.nextToken(); 
-		assertEquals( t.getType(), IToken.tSEMI);
-		assertEquals( scanner.getLineNumberForOffset(t.getOffset()), 1 );
-		for( int i = 2; i < 5; ++i )
-		{ 
-			t = scanner.nextToken(); 
-			assertEquals( t.getType(), IToken.tIDENTIFIER);
-			assertEquals( scanner.getLineNumberForOffset(t.getOffset()), i );
-		}
-
-		try {
-			t = scanner.nextToken();
-			fail( "EOF");
-		} 
-		catch (Parser.EndOfFile e) {
-			assertEquals( scanner.getLineNumberForOffset(29), 4 ); 
-		}
-
-	}
 	
 	public void testDOMLineNos() throws Exception
 	{
 		DOMBuilder domBuilder = new DOMBuilder();
 		IParser parser = ParserFactory.createParser( ParserFactory.createScanner( new InputStreamReader( fileIn ), null, null, null, ParserMode.QUICK_PARSE ), domBuilder, ParserMode.QUICK_PARSE ); 
-		parser.mapLineNumbers(true); 
+		//parser.mapLineNumbers(true); 
 		if( ! parser.parse() ) fail( "Parse of file failed");
 		
 		List macros = domBuilder.getTranslationUnit().getMacros();
Index: parser/org/eclipse/cdt/core/parser/tests/PreprocessorTest.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/PreprocessorTest.java,v
retrieving revision 1.2
diff -u -r1.2 PreprocessorTest.java
--- parser/org/eclipse/cdt/core/parser/tests/PreprocessorTest.java	24 Jun 2003 20:18:16 -0000	1.2
+++ parser/org/eclipse/cdt/core/parser/tests/PreprocessorTest.java	25 Jun 2003 22:45:48 -0000
@@ -72,7 +72,7 @@
 	
 	public IPreprocessor setupPreprocessor( String text, List includePaths, Map defns, ISourceElementRequestor rq )
 	{
-		IPreprocessor p = ParserFactory.createPreprocesor( new StringReader( text ), "test", defns, includePaths, ParserMode.COMPLETE_PARSE );
+		IPreprocessor p = ParserFactory.createPreprocessor( new StringReader( text ), "test", defns, includePaths, ParserMode.COMPLETE_PARSE );
 		p.setRequestor( rq );
 		return p; 
 	}
Index: parser/org/eclipse/cdt/core/parser/tests/TortureTest.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/TortureTest.java,v
retrieving revision 1.2
diff -u -r1.2 TortureTest.java
--- parser/org/eclipse/cdt/core/parser/tests/TortureTest.java	23 Jun 2003 18:05:26 -0000	1.2
+++ parser/org/eclipse/cdt/core/parser/tests/TortureTest.java	25 Jun 2003 22:45:48 -0000
@@ -22,6 +22,7 @@
 import junit.framework.AssertionFailedError;
 import junit.framework.Test;
 
+import org.eclipse.cdt.core.parser.ILineOffsetReconciler;
 import org.eclipse.cdt.core.parser.IParser;
 import org.eclipse.cdt.core.parser.ParserFactory;
 import org.eclipse.cdt.core.parser.ParserMode;
@@ -102,12 +103,12 @@
 	}
 	
 	
-	static protected void reportException (Throwable e, String file, IParser parser){
+	static protected void reportException (Throwable e, String file, IParser parser, ILineOffsetReconciler mapping){
 		String output = null;
 		int lineNumber = -1;
 		
 		try {
-			lineNumber = parser.getLineNumberForOffset(parser.getLastErrorOffset());
+			lineNumber = mapping.getLineNumberForOffset(parser.getLastErrorOffset());
 		} catch (Exception ex) {}
 		
 		if (e instanceof AssertionFailedError) {
@@ -178,7 +179,7 @@
 				thread.stop();
 				reportHang(testCode, filePath);
 			} else if (thread.result != null) {
-				reportException(thread.result, filePath, thread.parser);
+				reportException(thread.result, filePath, thread.parser, thread.mapping);
 			}
 		} else {
 			// gcc probably didn't expect this test to pass.
@@ -192,7 +193,8 @@
 			
 	
 	static class ParseThread extends Thread {
-		public String 		code;
+		public ILineOffsetReconciler mapping = null;
+        public String 		code;
 		public boolean 		cppNature;
 		public String 		file;
 		public Throwable 	result = null;
@@ -202,11 +204,11 @@
 		public void run(){
 			try {           
 				DOMBuilder domBuilder = new DOMBuilder(); 
-				IParser parser = ParserFactory.createParser( 
+				parser = ParserFactory.createParser( 
 						ParserFactory.createScanner( new StringReader( code ), null, null, null, ParserMode.QUICK_PARSE ), nullCallback, ParserMode.QUICK_PARSE);
 		
 				parser.setCppNature(cppNature);
-				parser.mapLineNumbers(true);
+				mapping = ParserFactory.createLineOffsetReconciler( new StringReader( code ) );
 	            
 				assertTrue(parser.parse());
 			} 
Index: dom/org/eclipse/cdt/internal/core/dom/DOMBuilder.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.core/dom/org/eclipse/cdt/internal/core/dom/DOMBuilder.java,v
retrieving revision 1.37
diff -u -r1.37 DOMBuilder.java
--- dom/org/eclipse/cdt/internal/core/dom/DOMBuilder.java	24 Jun 2003 20:18:11 -0000	1.37
+++ dom/org/eclipse/cdt/internal/core/dom/DOMBuilder.java	25 Jun 2003 22:44:16 -0000
@@ -458,7 +458,8 @@
 	public void pointerOperatorEnd(Object ptrOperator) {
 		PointerOperator ptrOp = (PointerOperator)ptrOperator;
 		Declarator owner = ptrOp.getOwnerDeclarator();
-		owner.addPointerOperator( ptrOp );
+		if( owner != null ) // can be since operator * 
+			owner.addPointerOperator( ptrOp );
 	}
 
 	/* (non-Javadoc)
Index: model/org/eclipse/cdt/internal/core/model/CModelBuilder.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/CModelBuilder.java,v
retrieving revision 1.1
diff -u -r1.1 CModelBuilder.java
--- model/org/eclipse/cdt/internal/core/model/CModelBuilder.java	23 Jun 2003 18:05:24 -0000	1.1
+++ model/org/eclipse/cdt/internal/core/model/CModelBuilder.java	25 Jun 2003 22:44:17 -0000
@@ -66,12 +66,10 @@
 		this.newElements = new HashMap();
 	}
 
-	public Map parse(boolean requiresLineNumbers) throws Exception {
-		// Note - if a CModel client wishes to have a CModel with valid line numbers
-		// DOMFactory.createDOMBuilder should be given the parameter 'true'
+	public Map parse() throws Exception {
 		DOMBuilder domBuilder = new DOMBuilder();  
 		IParser parser = ParserFactory.createParser(ParserFactory.createScanner( new StringReader( translationUnit.getBuffer().getContents() ), null, null, null, ParserMode.QUICK_PARSE ), domBuilder, ParserMode.QUICK_PARSE);
-		parser.mapLineNumbers(requiresLineNumbers);
+
 		if( translationUnit.getCProject() != null )
 		{
 			IProject currentProject = translationUnit.getCProject().getProject();
Index: model/org/eclipse/cdt/internal/core/model/TranslationUnit.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/TranslationUnit.java,v
retrieving revision 1.7
diff -u -r1.7 TranslationUnit.java
--- model/org/eclipse/cdt/internal/core/model/TranslationUnit.java	21 Apr 2003 18:34:39 -0000	1.7
+++ model/org/eclipse/cdt/internal/core/model/TranslationUnit.java	25 Jun 2003 22:44:17 -0000
@@ -206,13 +206,13 @@
 		}
 		return sourceManipulationInfo;
 	}
-	protected Map parse(InputStream in, boolean requiresLineNumbers) {
+	protected Map parse(InputStream in) {
 		try {
 			removeChildren();
 			if (CCorePlugin.getDefault().useNewParser()) {
 				// new parser
 				CModelBuilder modelBuilder = new CModelBuilder(this);
-				return (modelBuilder.parse(requiresLineNumbers));
+				return (modelBuilder.parse());
 
 			} else {
 				// cdt 1.0 parser
@@ -483,7 +483,7 @@
 			String buf =this.getBuffer().getContents();
 			if (buf != null) {
 				StringBufferInputStream in = new StringBufferInputStream (buf);
-				return (parse (in, requireLineNumbers));
+				return (parse (in));
 			}
 			return null;
 
Index: parser/ChangeLog
===================================================================
RCS file: /home/tools/org.eclipse.cdt.core/parser/ChangeLog,v
retrieving revision 1.64
diff -u -r1.64 ChangeLog
--- parser/ChangeLog	24 Jun 2003 20:18:11 -0000	1.64
+++ parser/ChangeLog	25 Jun 2003 22:44:17 -0000
@@ -1,3 +1,9 @@
+2003-06-25 John Camelon
+	Create new interface and support for calculating lineNumber/offset mapping.  
+	Updated IASTClassSpecifier for qualified name query.  
+	Began structuring expressions and declarators in Parser for ISourceElementRequestor.  
+	Updated other packages to use new interfaces.  
+
 2003-06-24 John Camelon
 	Updates for ISourceElementRequestor - elaborated types & enumerations.  
 
Index: parser/org/eclipse/cdt/core/parser/ILineOffsetReconciler.java
===================================================================
RCS file: parser/org/eclipse/cdt/core/parser/ILineOffsetReconciler.java
diff -N parser/org/eclipse/cdt/core/parser/ILineOffsetReconciler.java
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ parser/org/eclipse/cdt/core/parser/ILineOffsetReconciler.java	25 Jun 2003 22:44:17 -0000
@@ -0,0 +1,21 @@
+/**********************************************************************
+ * Copyright (c) 2002,2003 Rational Software Corporation and others.
+ * All rights reserved.   This program and the accompanying materials
+ * are made available under the terms of the Common Public License v0.5
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/cpl-v05.html
+ * 
+ * Contributors: 
+ * IBM Rational Software - Initial API and implementation
+***********************************************************************/
+package org.eclipse.cdt.core.parser;
+
+/**
+ * @author jcamelon
+ *
+ */
+public interface ILineOffsetReconciler
+{
+	public int getLineNumberForOffset( int offset ); 
+	public IOffsetDuple getOffsetRangeForLineNumber( int LineNumber );
+}
Index: parser/org/eclipse/cdt/core/parser/IOffsetDuple.java
===================================================================
RCS file: parser/org/eclipse/cdt/core/parser/IOffsetDuple.java
diff -N parser/org/eclipse/cdt/core/parser/IOffsetDuple.java
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ parser/org/eclipse/cdt/core/parser/IOffsetDuple.java	25 Jun 2003 22:44:17 -0000
@@ -0,0 +1,21 @@
+/**********************************************************************
+ * Copyright (c) 2002,2003 Rational Software Corporation and others.
+ * All rights reserved.   This program and the accompanying materials
+ * are made available under the terms of the Common Public License v0.5
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/cpl-v05.html
+ * 
+ * Contributors: 
+ * IBM Rational Software - Initial API and implementation
+***********************************************************************/
+package org.eclipse.cdt.core.parser;
+
+/**
+ * @author jcamelon
+ *
+ */
+public interface IOffsetDuple
+{
+	public int getCeilingOffset(); 
+	public int getFloorOffset();
+}
Index: parser/org/eclipse/cdt/core/parser/IParser.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/IParser.java,v
retrieving revision 1.2
diff -u -r1.2 IParser.java
--- parser/org/eclipse/cdt/core/parser/IParser.java	13 Jun 2003 15:01:23 -0000	1.2
+++ parser/org/eclipse/cdt/core/parser/IParser.java	25 Jun 2003 22:44:17 -0000
@@ -56,25 +56,6 @@
 	public void setCppNature(boolean b);
 	
 	/**
-	 * Do we wish to keep track of the lineNumbers/Offset mapping? 
-	 * 
-	 * By default, the value is false.  Setting it to true impacts performance but 
-	 * provides that feature.  
-	 * 
-	 * @param value		true for the feature, false for improved performance
-	 */
-	public void mapLineNumbers( boolean value );
-	
-	/**
-	 * Given an character offset into the file, return the lineNumber this offset maps to.  
-	 * 
-	 * @param offset	character offset in the file
-	 * @return			lineNumber this offset maps to
-	 * @throws NoSuchMethodException	if mapLineNumbers( true ) was not previously called
-	 */
-	public int getLineNumberForOffset(int offset) throws NoSuchMethodException;
-	
-	/**
 	 * If an error was encountered, give us the offset of the token that caused the error.  
 	 * 
 	 * @return		-1 for no error, otherwise the character offset where we encountered 
Index: parser/org/eclipse/cdt/core/parser/IScanner.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/IScanner.java,v
retrieving revision 1.4
diff -u -r1.4 IScanner.java
--- parser/org/eclipse/cdt/core/parser/IScanner.java	23 Jun 2003 18:05:23 -0000	1.4
+++ parser/org/eclipse/cdt/core/parser/IScanner.java	25 Jun 2003 22:44:17 -0000
@@ -26,9 +26,9 @@
 	
 	public IToken nextToken() throws ScannerException, Parser.EndOfFile;
 	public IToken nextToken( boolean next ) throws ScannerException, Parser.EndOfFile;
-	public int getLineNumberForOffset(int offset) throws NoSuchMethodException; 
+	 
 	public void setCppNature( boolean value );
-	public void mapLineNumbers( boolean value );
+	
 	public void setMode(ParserMode mode);
 	public void setCallback(IParserCallback c);
 	
Index: parser/org/eclipse/cdt/core/parser/ParserFactory.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/ParserFactory.java,v
retrieving revision 1.2
diff -u -r1.2 ParserFactory.java
--- parser/org/eclipse/cdt/core/parser/ParserFactory.java	24 Jun 2003 20:18:11 -0000	1.2
+++ parser/org/eclipse/cdt/core/parser/ParserFactory.java	25 Jun 2003 22:44:17 -0000
@@ -15,6 +15,7 @@
 import java.util.Map;
 
 import org.eclipse.cdt.core.parser.ast.IASTFactory;
+import org.eclipse.cdt.internal.core.parser.LineOffsetReconciler;
 import org.eclipse.cdt.internal.core.parser.NullSourceElementRequestor;
 import org.eclipse.cdt.internal.core.parser.Parser;
 import org.eclipse.cdt.internal.core.parser.Preprocessor;
@@ -52,7 +53,7 @@
 		return s; 
 	}
 	
-	public static IPreprocessor createPreprocesor( Reader input, String fileName, Map defns, List inclusions, ParserMode mode )
+	public static IPreprocessor createPreprocessor( Reader input, String fileName, Map defns, List inclusions, ParserMode mode )
 	{
 		ParserMode ourMode = ( (mode == null )? ParserMode.COMPLETE_PARSE : mode ); 
 		IPreprocessor s = new Preprocessor( input, fileName, defns );
@@ -60,4 +61,10 @@
 		s.overwriteIncludePath(inclusions); 
 		return s; 
 	}
+	
+	public static ILineOffsetReconciler createLineOffsetReconciler( Reader input )
+	{
+		return new LineOffsetReconciler( input ); 
+	}
+	
 }
Index: parser/org/eclipse/cdt/core/parser/ast/IASTClassSpecifier.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/ast/IASTClassSpecifier.java,v
retrieving revision 1.4
diff -u -r1.4 IASTClassSpecifier.java
--- parser/org/eclipse/cdt/core/parser/ast/IASTClassSpecifier.java	23 Jun 2003 18:05:23 -0000	1.4
+++ parser/org/eclipse/cdt/core/parser/ast/IASTClassSpecifier.java	25 Jun 2003 22:44:17 -0000
@@ -25,5 +25,7 @@
 	public Iterator getBaseClauses();
 	
 	public AccessVisibility getCurrentVisibilityMode(); 
+	
+	public String[] getFullyQualifiedName();
 	 
 }
Index: parser/org/eclipse/cdt/core/parser/ast/IASTConstantExpression.java
===================================================================
RCS file: parser/org/eclipse/cdt/core/parser/ast/IASTConstantExpression.java
diff -N parser/org/eclipse/cdt/core/parser/ast/IASTConstantExpression.java
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ parser/org/eclipse/cdt/core/parser/ast/IASTConstantExpression.java	25 Jun 2003 22:44:17 -0000
@@ -0,0 +1,20 @@
+/**********************************************************************
+ * Copyright (c) 2002,2003 Rational Software Corporation and others.
+ * All rights reserved.   This program and the accompanying materials
+ * are made available under the terms of the Common Public License v0.5
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/cpl-v05.html
+ * 
+ * Contributors: 
+ * IBM Rational Software - Initial API and implementation
+***********************************************************************/
+package org.eclipse.cdt.core.parser.ast;
+
+/**
+ * @author jcamelon
+ *
+ */
+public interface IASTConstantExpression extends IASTExpression
+{
+	public int evaluate();
+}
Index: parser/org/eclipse/cdt/core/parser/ast/IASTExpression.java
===================================================================
RCS file: parser/org/eclipse/cdt/core/parser/ast/IASTExpression.java
diff -N parser/org/eclipse/cdt/core/parser/ast/IASTExpression.java
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ parser/org/eclipse/cdt/core/parser/ast/IASTExpression.java	25 Jun 2003 22:44:17 -0000
@@ -0,0 +1,20 @@
+/**********************************************************************
+ * Copyright (c) 2002,2003 Rational Software Corporation and others.
+ * All rights reserved.   This program and the accompanying materials
+ * are made available under the terms of the Common Public License v0.5
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/cpl-v05.html
+ * 
+ * Contributors: 
+ * IBM Rational Software - Initial API and implementation
+***********************************************************************/
+package org.eclipse.cdt.core.parser.ast;
+
+/**
+ * @author jcamelon
+ *
+ */
+public interface IASTExpression
+{
+	
+}
Index: parser/org/eclipse/cdt/internal/core/parser/ContextStack.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/ContextStack.java,v
retrieving revision 1.6
diff -u -r1.6 ContextStack.java
--- parser/org/eclipse/cdt/internal/core/parser/ContextStack.java	20 Jun 2003 17:15:59 -0000	1.6
+++ parser/org/eclipse/cdt/internal/core/parser/ContextStack.java	25 Jun 2003 22:44:17 -0000
@@ -148,7 +148,6 @@
 	private LinkedList undoStack = new LinkedList();
 	private Set inclusions = new HashSet(); 
 	private Set defines = new HashSet();
-	private OffsetToLineMapping offsetLineMap = new OffsetToLineMapping(); 
 	
 	/**
 	 * @return
@@ -157,21 +156,4 @@
 		return topContext;
 	}
 	
-	public int mapOffsetToLineNumber( int offset )
-	{
-		return offsetLineMap.getLineNo(offset);
-	}
-	
-	public void newLine()
-	{
-		if( currentContext == topContext )
-			offsetLineMap.newLine( topContext.getOffset() );
-	}
-
-	public void recantNewline()
-	{
-		if( currentContext == topContext )
-			offsetLineMap.recantLastNewLine();
-		
-	}
 }
Index: parser/org/eclipse/cdt/internal/core/parser/Declarator.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/Declarator.java,v
retrieving revision 1.1
diff -u -r1.1 Declarator.java
--- parser/org/eclipse/cdt/internal/core/parser/Declarator.java	23 Jun 2003 21:28:14 -0000	1.1
+++ parser/org/eclipse/cdt/internal/core/parser/Declarator.java	25 Jun 2003 22:44:17 -0000
@@ -14,16 +14,20 @@
 import java.util.Collections;
 import java.util.List;
 
+import org.eclipse.cdt.core.parser.ast.IASTExpression;
+
 /**
  * @author jcamelon
  *
  */
-public class Declarator
+public class Declarator implements IParameterCollection 
 {
 	private final DeclarationWrapper owner1;
 	private final Declarator owner2;
 	private String name; 
-	private List ptrOps = new ArrayList(); 
+	private IASTExpression initialValueExpression;
+	private List ptrOps = new ArrayList();
+	private List parameters = new ArrayList();  
 	
 	private int nameStartOffset, nameEndOffset; 
 
@@ -114,4 +118,32 @@
 	{
 		ptrOps.add( ptrOp ); 
 	}
+    /**
+     * @return
+     */
+    public List getParameters()
+    {
+        return parameters;
+    }
+
+	public void addParameter( DeclarationWrapper param )
+	{
+		parameters.add( param );
+	}
+    /**
+     * @return
+     */
+    public IASTExpression getInitialValueExpression()
+    {
+        return initialValueExpression;
+    }
+
+    /**
+     * @param expression
+     */
+    public void setInitialValueExpression(IASTExpression expression)
+    {
+        initialValueExpression = expression;
+    }
+
 }
Index: parser/org/eclipse/cdt/internal/core/parser/IOffsetToLineMapping.java
===================================================================
RCS file: parser/org/eclipse/cdt/internal/core/parser/IOffsetToLineMapping.java
diff -N parser/org/eclipse/cdt/internal/core/parser/IOffsetToLineMapping.java
--- parser/org/eclipse/cdt/internal/core/parser/IOffsetToLineMapping.java	21 Apr 2003 18:34:39 -0000	1.1
+++ /dev/null	1 Jan 1970 00:00:00 -0000
@@ -1,21 +0,0 @@
-/**********************************************************************
- * Copyright (c) 2002,2003 Rational Software Corporation and others.
- * All rights reserved.   This program and the accompanying materials
- * are made available under the terms of the Common Public License v0.5
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v05.html
- * 
- * Contributors: 
- * IBM Rational Software - Initial API and implementation
-***********************************************************************/
-package org.eclipse.cdt.internal.core.parser;
-
-/**
- * @author jcamelon
- *
- * To change the template for this generated type comment go to
- * Window>Preferences>Java>Code Generation>Code and Comments
- */
-public interface IOffsetToLineMapping {
-	public abstract int getLineNo(int offset);
-}
\ No newline at end of file
Index: parser/org/eclipse/cdt/internal/core/parser/IParameterCollection.java
===================================================================
RCS file: parser/org/eclipse/cdt/internal/core/parser/IParameterCollection.java
diff -N parser/org/eclipse/cdt/internal/core/parser/IParameterCollection.java
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ parser/org/eclipse/cdt/internal/core/parser/IParameterCollection.java	25 Jun 2003 22:44:18 -0000
@@ -0,0 +1,23 @@
+/**********************************************************************
+ * Copyright (c) 2002,2003 Rational Software Corporation and others.
+ * All rights reserved.   This program and the accompanying materials
+ * are made available under the terms of the Common Public License v0.5
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/cpl-v05.html
+ * 
+ * Contributors: 
+ * IBM Rational Software - Initial API and implementation
+***********************************************************************/
+package org.eclipse.cdt.internal.core.parser;
+
+import java.util.List;
+
+/**
+ * @author jcamelon
+ *
+ */
+public interface IParameterCollection
+{
+	public List getParameters();
+	public void addParameter( DeclarationWrapper param );
+}
Index: parser/org/eclipse/cdt/internal/core/parser/LineOffsetReconciler.java
===================================================================
RCS file: parser/org/eclipse/cdt/internal/core/parser/LineOffsetReconciler.java
diff -N parser/org/eclipse/cdt/internal/core/parser/LineOffsetReconciler.java
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ parser/org/eclipse/cdt/internal/core/parser/LineOffsetReconciler.java	25 Jun 2003 22:44:18 -0000
@@ -0,0 +1,99 @@
+/**********************************************************************
+ * Copyright (c) 2002,2003 Rational Software Corporation and others.
+ * All rights reserved.   This program and the accompanying materials
+ * are made available under the terms of the Common Public License v0.5
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/cpl-v05.html
+ * 
+ * Contributors: 
+ * IBM Rational Software - Initial API and implementation
+***********************************************************************/
+package org.eclipse.cdt.internal.core.parser;
+
+import java.io.IOException;
+import java.io.Reader;
+
+import org.eclipse.cdt.core.parser.ILineOffsetReconciler;
+import org.eclipse.cdt.core.parser.IOffsetDuple;
+
+/**
+ * @author jcamelon
+ *
+ */
+public class LineOffsetReconciler implements ILineOffsetReconciler
+{
+	private Reader ourReader; 
+    /**
+     * @param input
+     */
+    public LineOffsetReconciler(Reader input)
+    {
+        ourReader = input; 
+    }
+    
+    /* (non-Javadoc)
+     * @see org.eclipse.cdt.core.parser.ILineOffsetReconciler#getLineNumberForOffset(int)
+     */
+    public int getLineNumberForOffset(int offset)
+    {
+        resetReader();
+        int lineNumber = 1; 
+        for( int i = 0; i < offset; ++i )
+        {
+            int c = getChar();
+        	if( c == '\n' )
+        		++lineNumber;
+        }
+        return lineNumber;
+    }
+    
+    private int getChar()
+    {
+        int c;
+        try
+        {
+           c = ourReader.read();
+        }
+        catch (IOException e)
+        {
+           throw new Error( "Could not read");
+               
+        }
+        return c;
+    }
+    private void resetReader()
+    {
+        try
+        {
+            ourReader.reset();
+        }
+        catch (IOException e)
+        {
+            throw new Error( "Could not reset Reader" ); 
+        } 
+    }
+    /* (non-Javadoc)
+     * @see org.eclipse.cdt.core.parser.ILineOffsetReconciler#getOffsetRangeForLineNumber(int)
+     */
+    public IOffsetDuple getOffsetRangeForLineNumber(int LineNumber)
+    {
+        int lineNumber = 1;
+        int floor= -1, ceiling = -1; 
+        int offset = 0; 
+        while( lineNumber != LineNumber )
+        {
+        	int c = getChar();
+        	++offset;  
+        	if( c == '\n' ) ++lineNumber;
+        }
+        floor = offset; 
+		while( lineNumber == LineNumber )
+		{
+			int c = getChar();
+			++offset;  
+			if( c == '\n' ) ++lineNumber;
+		}        
+        ceiling = offset;
+        return new OffsetDuple( floor, ceiling );
+    }
+}
Index: parser/org/eclipse/cdt/internal/core/parser/OffsetDuple.java
===================================================================
RCS file: parser/org/eclipse/cdt/internal/core/parser/OffsetDuple.java
diff -N parser/org/eclipse/cdt/internal/core/parser/OffsetDuple.java
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ parser/org/eclipse/cdt/internal/core/parser/OffsetDuple.java	25 Jun 2003 22:44:18 -0000
@@ -0,0 +1,45 @@
+/**********************************************************************
+ * Copyright (c) 2002,2003 Rational Software Corporation and others.
+ * All rights reserved.   This program and the accompanying materials
+ * are made available under the terms of the Common Public License v0.5
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/cpl-v05.html
+ * 
+ * Contributors: 
+ * IBM Rational Software - Initial API and implementation
+***********************************************************************/
+package org.eclipse.cdt.internal.core.parser;
+
+import org.eclipse.cdt.core.parser.IOffsetDuple;
+
+/**
+ * @author jcamelon
+ *
+ */
+public class OffsetDuple implements IOffsetDuple
+{
+	private final int lineFloor, lineCeiling;
+    /**
+     * @param floor
+     * @param ceiling
+     */
+    public OffsetDuple(int floor, int ceiling)
+    {
+        lineFloor = floor; 
+        lineCeiling = ceiling;
+    }
+    /* (non-Javadoc)
+     * @see org.eclipse.cdt.core.parser.IOffsetDuple#getCeilingOffset()
+     */
+    public int getCeilingOffset()
+    {
+        return lineCeiling;
+    }
+    /* (non-Javadoc)
+     * @see org.eclipse.cdt.core.parser.IOffsetDuple#getFloorOffset()
+     */
+    public int getFloorOffset()
+    {
+        return lineFloor;
+    }
+}
Index: parser/org/eclipse/cdt/internal/core/parser/OffsetToLineMapping.java
===================================================================
RCS file: parser/org/eclipse/cdt/internal/core/parser/OffsetToLineMapping.java
diff -N parser/org/eclipse/cdt/internal/core/parser/OffsetToLineMapping.java
--- parser/org/eclipse/cdt/internal/core/parser/OffsetToLineMapping.java	21 Apr 2003 18:34:39 -0000	1.1
+++ /dev/null	1 Jan 1970 00:00:00 -0000
@@ -1,75 +0,0 @@
-/**********************************************************************
- * Copyright (c) 2002,2003 Rational Software Corporation and others.
- * All rights reserved.   This program and the accompanying materials
- * are made available under the terms of the Common Public License v0.5
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v05.html
- * 
- * Contributors: 
- * IBM Rational Software - Initial API and implementation
-***********************************************************************/
-package org.eclipse.cdt.internal.core.parser;
-
-import java.util.Iterator;
-import java.util.SortedMap;
-import java.util.TreeMap;
-
-
-
-/**
- * @author jcamelon
- *
- * To change the template for this generated type comment go to
- * Window>Preferences>Java>Code Generation>Code and Comments
- */
-public class OffsetToLineMapping implements IOffsetToLineMapping  {
-
-	public OffsetToLineMapping()
-	{
-	}
-	
-	public void newLine( int offset )
-	{
-		lastOffset = offset;
-		store.put( new Integer( offset ), new Integer( ++lineCounter ) );
-	}
-	
-	public void recantLastNewLine()
-	{
-		if( store.remove( new Integer( lastOffset ) ) != null ) 
-		{
-			--lineCounter;
-			lastOffset = -1;
-		}
-	}
-	
-	public int getLineNo( int offset )
-	{
-		Iterator iter = store.keySet().iterator();
-		int first = -1, second = -1; 
-		if( ! iter.hasNext() ) return 1; 
-		first = ((Integer)iter.next()).intValue();
-		if( ( offset <= first ) ||  ! iter.hasNext() ) 
-			return ((Integer)store.get( new Integer( first ))).intValue();
-
-		while( true )
-		{
-			second = ((Integer)iter.next()).intValue();
-			if( offset > first && offset <= second )
-				return ((Integer)store.get( new Integer( second ))).intValue();
-			if( ! iter.hasNext() ) break;
-			first = second; 
-		}
-		
-		return lineCounter;
-	}
-	
-	public int getCurrentLineNumber()
-	{
-		return lineCounter;
-	}
-	
-	private int lineCounter = 1;
-	private int lastOffset = -1;  
-	private SortedMap store = new TreeMap();
-}
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.57
diff -u -r1.57 Parser.java
--- parser/org/eclipse/cdt/internal/core/parser/Parser.java	24 Jun 2003 20:18:11 -0000	1.57
+++ parser/org/eclipse/cdt/internal/core/parser/Parser.java	25 Jun 2003 22:44:19 -0000
@@ -712,7 +712,7 @@
             }
             else
             {
-                parameterDeclaration(templateParameterList);
+                parameterDeclaration(templateParameterList, null); // this should be something real
             }
         }
     }
@@ -1147,7 +1147,7 @@
      * @param containerObject	The IParserCallback object representing the parameterDeclarationClause owning the parm. 
      * @throws Backtrack		request a backtrack
      */
-    protected void parameterDeclaration(Object containerObject)
+    protected void parameterDeclaration(Object containerObject, IParameterCollection collection)
         throws Backtrack
     {
         IToken current = LA(1);
@@ -1178,6 +1178,10 @@
             }
         if (current == LA(1))
             throw backtrack;
+        
+        if ( collection != null ) 
+        	collection.addParameter( sdw );
+        	
         try
         {
             callback.parameterDeclarationEnd(parameterDecl);
@@ -1914,6 +1918,7 @@
                 catch (Exception e)
                 {
                 }
+                //TODO add in expression information here
             }
             catch (Backtrack b)
             {
@@ -1928,6 +1933,7 @@
             }
             if (LT(1) == IToken.tLBRACE)
             {
+            	//TODO do this for real
                 // for now, just consume to matching brace
                 consume();
                 int depth = 1;
@@ -2134,7 +2140,7 @@
                                     default :
                                         if (seenParameter)
                                             throw backtrack;
-                                        parameterDeclaration(clause);
+                                        parameterDeclaration(clause, d);
                                         seenParameter = true;
                                 }
                             }
@@ -2187,8 +2193,7 @@
                                             done = true;
                                             break;
                                         case IToken.tIDENTIFIER :
-                                            //TODO this is not exactly right - should be type-id rather than just a name
-                                            name(); 
+                                            typeId(); 
                                             try
                                             {
                                                 callback
@@ -2226,8 +2231,8 @@
                                 {
                                 }
                             }
-                            if (afterCVModifier != LA(1)
-                                || LT(1) == IToken.tSEMI)
+ 
+                            if ( ( afterCVModifier != LA(1) ||  LT(1) == IToken.tSEMI ) && cvModifier != null  )
                             {
                                 // There were C++-specific clauses after const/volatile modifier
                                 // Then it is a marker for the method
@@ -2488,14 +2493,7 @@
             try
             {
                 callback.pointerOperatorType(ptrOp, consume(IToken.tAMPER));
-      
-            }
-            catch (Exception e)
-            {
-            }
-            try
-            {
-                callback.pointerOperatorEnd(ptrOp);
+				callback.pointerOperatorEnd(ptrOp);
             }
             catch (Exception e)
             {
@@ -4289,20 +4287,7 @@
         if (scanner != null)
             scanner.setCppNature(b);
     }
-    /* (non-Javadoc)
-     * @see org.eclipse.cdt.internal.core.parser.IParser#getLineNumberForOffset(int)
-     */
-    public int getLineNumberForOffset(int offset) throws NoSuchMethodException
-    {
-        return scanner.getLineNumberForOffset(offset);
-    }
-    /* (non-Javadoc)
-     * @see org.eclipse.cdt.internal.core.parser.IParser#mapLineNumbers(boolean)
-     */
-    public void mapLineNumbers(boolean value)
-    {
-        scanner.mapLineNumbers(value);
-    }
+
     /* (non-Javadoc)
      * @see org.eclipse.cdt.internal.core.parser.IParser#getLastErrorOffset()
      */
@@ -4310,6 +4295,7 @@
     {
         return firstErrorOffset;
     }
+    
     /* (non-Javadoc)
      * @see org.eclipse.cdt.core.parser.IParser#setRequestor(org.eclipse.cdt.core.parser.ISourceElementRequestor)
      */
Index: parser/org/eclipse/cdt/internal/core/parser/Scanner.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/Scanner.java,v
retrieving revision 1.33
diff -u -r1.33 Scanner.java
--- parser/org/eclipse/cdt/internal/core/parser/Scanner.java	23 Jun 2003 18:05:24 -0000	1.33
+++ parser/org/eclipse/cdt/internal/core/parser/Scanner.java	25 Jun 2003 22:44:20 -0000
@@ -425,29 +425,22 @@
 					}
 				} else if (c == '\n')
 				{
-					contextStack.newLine();
 					c = getChar(false);
-					if( c == '\n')
-						contextStack.newLine(); 
+ 
 				} else // '\' is not the last character on the line
 				{
 					ungetChar(c);
 					c = '\\';
 				}
 			}
-			else if( c == '\n' )
-				contextStack.newLine();
 
 		}
-		else if( c == '\n' )
-			contextStack.newLine();
 			
 		return c;
 	}
 
 	private void ungetChar(int c) throws ScannerException{
 		contextStack.getCurrentContext().pushUndo(c);
-		if( c == '\n' ) contextStack.recantNewline();
 		contextStack.undoRollback( lastContext, requestor );
 	}
 
@@ -2186,14 +2179,7 @@
 		return "0";
 	}
 	
-	/**
-	 * @return
-	 */
-	public int getLineNumberForOffset(int offset) throws NoSuchMethodException {
-		if( this.mapLineNumbers )
-			return contextStack.mapOffsetToLineNumber(offset);
-		throw new NoSuchMethodException();
-	}
+	
 
 	private boolean cppNature = true; 
 	/* (non-Javadoc)
@@ -2203,14 +2189,6 @@
 		cppNature = value; 
 	}
 
-	/* (non-Javadoc)
-	 * @see org.eclipse.cdt.internal.core.parser.IScanner#mapLineNumbers(boolean)
-	 */
-	public void mapLineNumbers(boolean value) {
-		mapLineNumbers = value; 
-	}
-
-	private boolean mapLineNumbers = false;
 
 	/* (non-Javadoc)
 	 * @see org.eclipse.cdt.internal.core.parser.IScanner#setRequestor(org.eclipse.cdt.core.parser.ISourceElementRequestor)
Index: parser/org/eclipse/cdt/internal/core/parser/ast/full/ASTClassSpecifier.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/ast/full/ASTClassSpecifier.java,v
retrieving revision 1.4
diff -u -r1.4 ASTClassSpecifier.java
--- parser/org/eclipse/cdt/internal/core/parser/ast/full/ASTClassSpecifier.java	23 Jun 2003 18:05:23 -0000	1.4
+++ parser/org/eclipse/cdt/internal/core/parser/ast/full/ASTClassSpecifier.java	25 Jun 2003 22:44:20 -0000
@@ -143,4 +143,13 @@
 		return null;
 	}
 
+    /* (non-Javadoc)
+     * @see org.eclipse.cdt.core.parser.ast.IASTClassSpecifier#getFullyQualifiedName()
+     */
+    public String[] getFullyQualifiedName()
+    {
+        // TODO Auto-generated method stub
+        return null;
+    }
+
 }
Index: parser/org/eclipse/cdt/internal/core/parser/ast/quick/ASTClassSpecifier.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/ast/quick/ASTClassSpecifier.java,v
retrieving revision 1.2
diff -u -r1.2 ASTClassSpecifier.java
--- parser/org/eclipse/cdt/internal/core/parser/ast/quick/ASTClassSpecifier.java	23 Jun 2003 18:05:23 -0000	1.2
+++ parser/org/eclipse/cdt/internal/core/parser/ast/quick/ASTClassSpecifier.java	25 Jun 2003 22:44:20 -0000
@@ -9,152 +9,186 @@
  * IBM Rational Software - Initial API and implementation
 ***********************************************************************/
 package org.eclipse.cdt.internal.core.parser.ast.quick;
-
 import java.util.ArrayList;
 import java.util.Iterator;
 import java.util.List;
+import java.util.Stack;
 
 import org.eclipse.cdt.core.parser.ast.AccessVisibility;
 import org.eclipse.cdt.core.parser.ast.ClassKind;
 import org.eclipse.cdt.core.parser.ast.ClassNameType;
 import org.eclipse.cdt.core.parser.ast.IASTBaseSpecifier;
+import org.eclipse.cdt.core.parser.ast.IASTClassSpecifier;
 import org.eclipse.cdt.core.parser.ast.IASTDeclaration;
+import org.eclipse.cdt.core.parser.ast.IASTNamespaceDefinition;
+import org.eclipse.cdt.core.parser.ast.IASTOffsetableNamedElement;
 import org.eclipse.cdt.core.parser.ast.IASTScope;
 import org.eclipse.cdt.core.parser.ast.IASTTemplateDeclaration;
 import org.eclipse.cdt.internal.core.parser.ast.NamedOffsets;
-
 /**
  * @author jcamelon
  *
  */
-public class ASTClassSpecifier extends ASTDeclaration implements IASTQClassSpecifier, IASTQScope {
-
-	public ASTClassSpecifier(IASTScope scope,
-			String name,  
-			ClassKind kind, 
-			ClassNameType type, 
-			AccessVisibility access, 
-			IASTTemplateDeclaration ownerTemplateDeclaration )
-	{
-		super(scope);
-		classNameType = type;
-		classKind = kind;
-		this.access = access;
-		this.name = name;
-		templateOwner = ownerTemplateDeclaration; 
-	}
-
-	private IASTTemplateDeclaration templateOwner = null;
-	private final String name; 
-	private List declarations = new ArrayList(); 
-	private List baseClauses = new ArrayList();
-	private AccessVisibility access;
-	private NamedOffsets offsets = new NamedOffsets(); 
-	private final ClassNameType classNameType; 
-	private final ClassKind classKind; 
-	/* (non-Javadoc)
-	 * @see org.eclipse.cdt.core.parser.ast.IASTClassSpecifier#getClassNameType()
-	 */
-	public ClassNameType getClassNameType() {
-		return classNameType;
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.cdt.core.parser.ast.IASTClassSpecifier#getClassKind()
-	 */
-	public ClassKind getClassKind() {
-		return classKind;
-	}
- 
-	/* (non-Javadoc)
-	 * @see org.eclipse.cdt.core.parser.ast.IASTClassSpecifier#getBaseClauses()
-	 */
-	public Iterator getBaseClauses() {
-		return baseClauses.iterator();
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.cdt.core.parser.ast.IASTClassSpecifier#getCurrentVisiblity()
-	 */
-	public AccessVisibility getCurrentVisibilityMode() {
-		return access;
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.cdt.core.parser.ast.IASTScope#getDeclarations()
-	 */
-	public Iterator getDeclarations() {
-		return declarations.iterator();
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.cdt.core.parser.ast.IASTOffsetableNamedElement#getName()
-	 */
-	public String getName() {
-		return name;
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.cdt.core.parser.ast.IASTOffsetableNamedElement#getElementNameOffset()
-	 */
-	public int getElementNameOffset() {
-		return offsets.getElementNameOffset();
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.cdt.core.parser.ast.IASTOffsetableNamedElement#setNameOffset(int)
-	 */
-	public void setNameOffset(int o) {
-		offsets.setNameOffset(o);
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.cdt.core.parser.ast.IASTTemplatedDeclaration#getOwnerTemplateDeclaration()
-	 */
-	public IASTTemplateDeclaration getOwnerTemplateDeclaration() {
-		return templateOwner;
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.cdt.core.parser.ast.IASTOffsetableElement#setStartingOffset(int)
-	 */
-	public void setStartingOffset(int o) {
-		offsets.setStartingOffset(o);
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.cdt.core.parser.ast.IASTOffsetableElement#setEndingOffset(int)
-	 */
-	public void setEndingOffset(int o) {
-		offsets.setEndingOffset(o);
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.cdt.core.parser.ast.IASTOffsetableElement#getElementStartingOffset()
-	 */
-	public int getElementStartingOffset() {
-		return offsets.getElementStartingOffset();
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.cdt.core.parser.ast.IASTOffsetableElement#getElementEndingOffset()
-	 */
-	public int getElementEndingOffset() {
-		return offsets.getElementEndingOffset();
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.cdt.internal.core.parser.ast.quick.IASTQScope#addDeclaration(org.eclipse.cdt.core.parser.ast.IASTDeclaration)
-	 */
-	public void addDeclaration(IASTDeclaration declaration) {
-		declarations.add( declaration );
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.cdt.internal.core.parser.ast.quick.IASTQClassSpecifier#addBaseClass(org.eclipse.cdt.core.parser.ast.IASTBaseSpecifier)
-	 */
-	public void addBaseClass(IASTBaseSpecifier baseSpecifier) {
-		baseClauses.add( baseSpecifier );
-	}
-
+public class ASTClassSpecifier
+    extends ASTDeclaration
+    implements IASTQClassSpecifier, IASTQScope
+{
+    public ASTClassSpecifier(
+        IASTScope scope,
+        String name,
+        ClassKind kind,
+        ClassNameType type,
+        AccessVisibility access,
+        IASTTemplateDeclaration ownerTemplateDeclaration)
+    {
+        super(scope);
+        classNameType = type;
+        classKind = kind;
+        this.access = access;
+        this.name = name;
+        templateOwner = ownerTemplateDeclaration;
+        
+        Stack names = new Stack();
+        IASTScope parent = getOwnerScope();
+        while (parent != null)
+        {
+            if (parent instanceof IASTNamespaceDefinition
+                || parent instanceof IASTClassSpecifier)
+            {
+                names.push(((IASTOffsetableNamedElement)parent).getName());
+                parent = ((IASTDeclaration)parent).getOwnerScope();
+            }
+            break;
+        }
+        if (names.size() != 0)
+        {
+            qualifiedNames = new String[names.size()];
+            int counter = 0;
+            while (!names.empty())
+                qualifiedNames[counter++] = (String)names.pop();
+        }
+        else 
+        	qualifiedNames = null;
+    }
+    private final String[] qualifiedNames;
+    private IASTTemplateDeclaration templateOwner = null;
+    private final String name;
+    private List declarations = new ArrayList();
+    private List baseClauses = new ArrayList();
+    private AccessVisibility access;
+    private NamedOffsets offsets = new NamedOffsets();
+    private final ClassNameType classNameType;
+    private final ClassKind classKind;
+    /* (non-Javadoc)
+     * @see org.eclipse.cdt.core.parser.ast.IASTClassSpecifier#getClassNameType()
+     */
+    public ClassNameType getClassNameType()
+    {
+        return classNameType;
+    }
+    /* (non-Javadoc)
+     * @see org.eclipse.cdt.core.parser.ast.IASTClassSpecifier#getClassKind()
+     */
+    public ClassKind getClassKind()
+    {
+        return classKind;
+    }
+    /* (non-Javadoc)
+     * @see org.eclipse.cdt.core.parser.ast.IASTClassSpecifier#getBaseClauses()
+     */
+    public Iterator getBaseClauses()
+    {
+        return baseClauses.iterator();
+    }
+    /* (non-Javadoc)
+     * @see org.eclipse.cdt.core.parser.ast.IASTClassSpecifier#getCurrentVisiblity()
+     */
+    public AccessVisibility getCurrentVisibilityMode()
+    {
+        return access;
+    }
+    /* (non-Javadoc)
+     * @see org.eclipse.cdt.core.parser.ast.IASTScope#getDeclarations()
+     */
+    public Iterator getDeclarations()
+    {
+        return declarations.iterator();
+    }
+    /* (non-Javadoc)
+     * @see org.eclipse.cdt.core.parser.ast.IASTOffsetableNamedElement#getName()
+     */
+    public String getName()
+    {
+        return name;
+    }
+    /* (non-Javadoc)
+     * @see org.eclipse.cdt.core.parser.ast.IASTOffsetableNamedElement#getElementNameOffset()
+     */
+    public int getElementNameOffset()
+    {
+        return offsets.getElementNameOffset();
+    }
+    /* (non-Javadoc)
+     * @see org.eclipse.cdt.core.parser.ast.IASTOffsetableNamedElement#setNameOffset(int)
+     */
+    public void setNameOffset(int o)
+    {
+        offsets.setNameOffset(o);
+    }
+    /* (non-Javadoc)
+     * @see org.eclipse.cdt.core.parser.ast.IASTTemplatedDeclaration#getOwnerTemplateDeclaration()
+     */
+    public IASTTemplateDeclaration getOwnerTemplateDeclaration()
+    {
+        return templateOwner;
+    }
+    /* (non-Javadoc)
+     * @see org.eclipse.cdt.core.parser.ast.IASTOffsetableElement#setStartingOffset(int)
+     */
+    public void setStartingOffset(int o)
+    {
+        offsets.setStartingOffset(o);
+    }
+    /* (non-Javadoc)
+     * @see org.eclipse.cdt.core.parser.ast.IASTOffsetableElement#setEndingOffset(int)
+     */
+    public void setEndingOffset(int o)
+    {
+        offsets.setEndingOffset(o);
+    }
+    /* (non-Javadoc)
+     * @see org.eclipse.cdt.core.parser.ast.IASTOffsetableElement#getElementStartingOffset()
+     */
+    public int getElementStartingOffset()
+    {
+        return offsets.getElementStartingOffset();
+    }
+    /* (non-Javadoc)
+     * @see org.eclipse.cdt.core.parser.ast.IASTOffsetableElement#getElementEndingOffset()
+     */
+    public int getElementEndingOffset()
+    {
+        return offsets.getElementEndingOffset();
+    }
+    /* (non-Javadoc)
+     * @see org.eclipse.cdt.internal.core.parser.ast.quick.IASTQScope#addDeclaration(org.eclipse.cdt.core.parser.ast.IASTDeclaration)
+     */
+    public void addDeclaration(IASTDeclaration declaration)
+    {
+        declarations.add(declaration);
+    }
+    /* (non-Javadoc)
+     * @see org.eclipse.cdt.internal.core.parser.ast.quick.IASTQClassSpecifier#addBaseClass(org.eclipse.cdt.core.parser.ast.IASTBaseSpecifier)
+     */
+    public void addBaseClass(IASTBaseSpecifier baseSpecifier)
+    {
+        baseClauses.add(baseSpecifier);
+    }
+    /* (non-Javadoc)
+     * @see org.eclipse.cdt.core.parser.ast.IASTClassSpecifier#getFullyQualifiedName()
+     */
+    public String[] getFullyQualifiedName()
+    {
+        return qualifiedNames;
+    }
 }

Back to the top