Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
[cdt-patch] Applied [HEAD] : Infrastructure for AST Cross-References

CORE & UI
        Added ISourceElementCallbackDelegate interface for AST constructs 
to allow the Parser to delegate callback's to the nodes themselves. 
        Got rid of ParserMode.STRUCTURAL_PARSE for the time being. 
        Removed org.eclipse.cdt.internal.core.parser.ast.full. 
        Created org.eclipse.cdt.internal.core.parser.ast.complete. 
        Updated ParserFactory.createScanner() to force the user to provide 
a callback and a ParserMode.
        Introduced ASTSemanticException for COMPLETE_PARSE mode. 
        Fleshed out preliminary IASTReference interfaces and added 
callbacks to ISourceElementRequestor.
        Removed acceptElaboratedTypeSpecifier() from 
ISourceElementRequestor.

TESTS
        Updated ParserSymbolTableTests to remove dependencies on 
parser.ast.full classes.
        Updated Parser test suites for updates to ParserFactory.
 
JohnC

Index: ChangeLog
===================================================================
RCS file: /home/tools/org.eclipse.cdt.ui/ChangeLog,v
retrieving revision 1.122
diff -u -r1.122 ChangeLog
--- ChangeLog	17 Jul 2003 20:15:18 -0000	1.122
+++ ChangeLog	18 Jul 2003 16:35:36 -0000
@@ -1,3 +1,7 @@
+2003-07-18  John Camelon
+	In the core, I updated ParserFactory.createScanner() to force the user to provide a callback and a ParserMode.
+	==> I had to update ComparatorModelBuilder.  
+
 2003-07-17  John Camelon
 	Partially converted DOM to ISourceElementRequestor (requires refactoring of CModelBuilder & StuctureComparator modules in near future).  
 
Index: src/org/eclipse/cdt/internal/ui/compare/ComparatorModelBuilder.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/compare/ComparatorModelBuilder.java,v
retrieving revision 1.7
diff -u -r1.7 ComparatorModelBuilder.java
--- src/org/eclipse/cdt/internal/ui/compare/ComparatorModelBuilder.java	17 Jul 2003 20:15:18 -0000	1.7
+++ src/org/eclipse/cdt/internal/ui/compare/ComparatorModelBuilder.java	18 Jul 2003 16:35:36 -0000
@@ -57,7 +57,7 @@
 	public void parse() {
 		DOMBuilder domBuilder = new DOMBuilder(); 
 		try {
-			IParser parser = ParserFactory.createParser(ParserFactory.createScanner( new StringReader( code ), null, new ScannerInfo(), ParserMode.QUICK_PARSE ), domBuilder, ParserMode.QUICK_PARSE);
+			IParser parser = ParserFactory.createParser(ParserFactory.createScanner( new StringReader( code ), "junk", new ScannerInfo(), ParserMode.QUICK_PARSE, domBuilder ), domBuilder, ParserMode.QUICK_PARSE);
 			parser.parse();
 		} catch (Exception e) {
 			callback.reportError(e);
Index: ChangeLog
===================================================================
RCS file: /home/tools/org.eclipse.cdt.core.tests/ChangeLog,v
retrieving revision 1.24
diff -u -r1.24 ChangeLog
--- ChangeLog	18 Jul 2003 12:40:43 -0000	1.24
+++ ChangeLog	18 Jul 2003 16:35:12 -0000
@@ -1,4 +1,8 @@
 2003-07-18 John Camelon
+	Updated ParserSymbolTableTests to remove dependencies on parser.ast.full classes.
+	Updated Parser test suites for updates to ParserFactory.
+
+2003-07-18 John Camelon
 	Wrote new tests in QuickParseASTQualifiedNameTest.java and added it to ParserTestSuite's suite.
 
 2003-07-18 Peter Graves	
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.4
diff -u -r1.4 AutomatedTest.java
--- parser/org/eclipse/cdt/core/parser/tests/AutomatedTest.java	9 Jul 2003 00:47:47 -0000	1.4
+++ parser/org/eclipse/cdt/core/parser/tests/AutomatedTest.java	18 Jul 2003 16:35:12 -0000
@@ -56,7 +56,7 @@
 			FileInputStream stream = new FileInputStream( file );
 
 			String filePath = file.getCanonicalPath();
-			parser = ParserFactory.createParser( ParserFactory.createScanner( new InputStreamReader (stream), filePath, new ScannerInfo(), ParserMode.QUICK_PARSE ), nullCallback, ParserMode.QUICK_PARSE);
+			parser = ParserFactory.createParser( ParserFactory.createScanner( new InputStreamReader (stream), filePath, new ScannerInfo(), ParserMode.QUICK_PARSE, nullCallback ), nullCallback, ParserMode.QUICK_PARSE);
 			parser.setCppNature( ((String)natures.get( filePath )).equalsIgnoreCase("cpp") );
 			
 			mapping = ParserFactory.createLineOffsetReconciler( new InputStreamReader( stream ) );
Index: parser/org/eclipse/cdt/core/parser/tests/BaseASTTest.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/BaseASTTest.java,v
retrieving revision 1.2
diff -u -r1.2 BaseASTTest.java
--- parser/org/eclipse/cdt/core/parser/tests/BaseASTTest.java	18 Jul 2003 12:40:43 -0000	1.2
+++ parser/org/eclipse/cdt/core/parser/tests/BaseASTTest.java	18 Jul 2003 16:35:12 -0000
@@ -45,7 +45,7 @@
 	{
 		ParserMode mode = quick ? ParserMode.QUICK_PARSE : ParserMode.COMPLETE_PARSE; 
 		quickParseCallback = ParserFactory.createQuickParseCallback(); 
-		parser = ParserFactory.createParser( ParserFactory.createScanner( new StringReader( code ), "code", new ScannerInfo(), mode), quickParseCallback, mode );
+		parser = ParserFactory.createParser( ParserFactory.createScanner( new StringReader( code ), "code", new ScannerInfo(), mode, quickParseCallback), quickParseCallback, mode );
 		if( ! parser.parse() && throwExceptionOnError )
 			throw new ParserException("Parse failure");
 		return quickParseCallback.getCompilationUnit(); 
Index: parser/org/eclipse/cdt/core/parser/tests/BaseScannerTest.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/BaseScannerTest.java,v
retrieving revision 1.5
diff -u -r1.5 BaseScannerTest.java
--- parser/org/eclipse/cdt/core/parser/tests/BaseScannerTest.java	9 Jul 2003 00:47:47 -0000	1.5
+++ parser/org/eclipse/cdt/core/parser/tests/BaseScannerTest.java	18 Jul 2003 16:35:12 -0000
@@ -19,7 +19,9 @@
 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.core.parser.ScannerException;
+import org.eclipse.cdt.internal.core.parser.NullSourceElementRequestor;
 import org.eclipse.cdt.internal.core.parser.ScannerInfo;
 
 /**
@@ -35,9 +37,15 @@
 		super(x);
 	}
 
+	protected void initializeScanner( String input, ParserMode mode )
+	{
+		scanner= ParserFactory.createScanner( new StringReader(input),"TEXT", new ScannerInfo(), mode, callback );
+	}
+
+
 	protected void initializeScanner(String input)
 	{
-		scanner= ParserFactory.createScanner( new StringReader(input),"TEXT", new ScannerInfo(), null );
+       initializeScanner( input, ParserMode.COMPLETE_PARSE );
 	}
 
 	public int fullyTokenize() throws Exception
@@ -194,6 +202,8 @@
 				+ "as we sent in bad preprocessor input to the scanner";
 
 	public static final boolean verbose = false;
+
+    protected NullSourceElementRequestor callback = new NullSourceElementRequestor();
 	
 
 }
Index: parser/org/eclipse/cdt/core/parser/tests/ExprEvalTest.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ExprEvalTest.java,v
retrieving revision 1.5
diff -u -r1.5 ExprEvalTest.java
--- parser/org/eclipse/cdt/core/parser/tests/ExprEvalTest.java	17 Jul 2003 20:15:03 -0000	1.5
+++ parser/org/eclipse/cdt/core/parser/tests/ExprEvalTest.java	18 Jul 2003 16:35:12 -0000
@@ -25,7 +25,8 @@
 	
 	public void runTest(String code, int expectedValue) throws Exception {
 		
-		IParser parser = ParserFactory.createParser(ParserFactory.createScanner( new StringReader( code ), null, new ScannerInfo(), null ), new NullSourceElementRequestor(), ParserMode.QUICK_PARSE);
+		final NullSourceElementRequestor nullCallback = new NullSourceElementRequestor();
+        IParser parser = ParserFactory.createParser(ParserFactory.createScanner( new StringReader( code ), null, new ScannerInfo(), null, nullCallback ), nullCallback, ParserMode.QUICK_PARSE);
 		IASTExpression expression = parser.expression();
 		assertEquals(expectedValue, expression.evaluateExpression());
 	}
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.4
diff -u -r1.4 FractionalAutomatedTest.java
--- parser/org/eclipse/cdt/core/parser/tests/FractionalAutomatedTest.java	9 Jul 2003 00:47:47 -0000	1.4
+++ parser/org/eclipse/cdt/core/parser/tests/FractionalAutomatedTest.java	18 Jul 2003 16:35:12 -0000
@@ -239,7 +239,7 @@
 			try{
 				result = null;
 				IParser parser = ParserFactory.createParser( 
-					ParserFactory.createScanner( new StringReader( code ), null, new ScannerInfo(), ParserMode.QUICK_PARSE ), nullCallback, ParserMode.QUICK_PARSE);
+					ParserFactory.createScanner( new StringReader( code ), null, new ScannerInfo(), ParserMode.QUICK_PARSE, nullCallback ), nullCallback, ParserMode.QUICK_PARSE);
 				parser.setCppNature( cppNature );
 				parser.parse();
 			} catch ( Exception e ){
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.4
diff -u -r1.4 LineNumberTest.java
--- parser/org/eclipse/cdt/core/parser/tests/LineNumberTest.java	9 Jul 2003 00:47:47 -0000	1.4
+++ parser/org/eclipse/cdt/core/parser/tests/LineNumberTest.java	18 Jul 2003 16:35:13 -0000
@@ -54,7 +54,7 @@
 	public void testDOMLineNos() throws Exception
 	{
 		DOMBuilder domBuilder = new DOMBuilder();
-		IParser parser = ParserFactory.createParser( ParserFactory.createScanner( new InputStreamReader( fileIn ), null, new ScannerInfo(), ParserMode.QUICK_PARSE ), domBuilder, ParserMode.QUICK_PARSE ); 
+		IParser parser = ParserFactory.createParser( ParserFactory.createScanner( new InputStreamReader( fileIn ), null, new ScannerInfo(), ParserMode.QUICK_PARSE, domBuilder ), domBuilder, ParserMode.QUICK_PARSE ); 
 		//parser.mapLineNumbers(true); 
 		if( ! parser.parse() ) fail( "Parse of file failed");
 		
Index: parser/org/eclipse/cdt/core/parser/tests/ParserSymbolTableTest.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ParserSymbolTableTest.java,v
retrieving revision 1.6
diff -u -r1.6 ParserSymbolTableTest.java
--- parser/org/eclipse/cdt/core/parser/tests/ParserSymbolTableTest.java	17 Jul 2003 20:15:03 -0000	1.6
+++ parser/org/eclipse/cdt/core/parser/tests/ParserSymbolTableTest.java	18 Jul 2003 16:35:13 -0000
@@ -18,9 +18,9 @@
 import junit.framework.TestCase;
 
 import org.eclipse.cdt.core.parser.ast.ASTAccessVisibility;
-import org.eclipse.cdt.internal.core.parser.ast.full.ASTCompilationUnit;
-import org.eclipse.cdt.internal.core.parser.ast.full.IASTFCompilationUnit;
+import org.eclipse.cdt.internal.core.parser.ast.complete.SymbolExtension;
 import org.eclipse.cdt.internal.core.parser.pst.IContainerSymbol;
+import org.eclipse.cdt.internal.core.parser.pst.ISymbolASTExtension;
 import org.eclipse.cdt.internal.core.parser.pst.IDerivableContainerSymbol;
 import org.eclipse.cdt.internal.core.parser.pst.IParameterizedSymbol;
 import org.eclipse.cdt.internal.core.parser.pst.ISymbol;
@@ -107,14 +107,15 @@
 		
 		IContainerSymbol x = table.new Declaration("x");
 		
-		IASTFCompilationUnit obj = new ASTCompilationUnit( x );
-		x.setASTNode( obj );
+		ISymbolASTExtension extension = new SymbolExtension( null, null ); // cheating! 
+		
+		x.setASTNode( extension );
 				
 		table.getCompilationUnit().addSymbol( x );
 		
 		ISymbol look = table.getCompilationUnit().Lookup( "x" );
 		
-		assertEquals( look.getASTNode(), obj );
+		assertEquals( look.getASTNode(), extension );
 	}
 	
 	/**
Index: parser/org/eclipse/cdt/core/parser/tests/PreprocessorConditionalTest.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/PreprocessorConditionalTest.java,v
retrieving revision 1.2
diff -u -r1.2 PreprocessorConditionalTest.java
--- parser/org/eclipse/cdt/core/parser/tests/PreprocessorConditionalTest.java	9 Jul 2003 00:47:47 -0000	1.2
+++ parser/org/eclipse/cdt/core/parser/tests/PreprocessorConditionalTest.java	18 Jul 2003 16:35:13 -0000
@@ -15,10 +15,12 @@
 import java.util.Map;
 
 import org.eclipse.cdt.core.parser.EndOfFile;
+import org.eclipse.cdt.core.parser.ISourceElementRequestor;
 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.core.parser.ScannerException;
+import org.eclipse.cdt.internal.core.parser.NullSourceElementRequestor;
 import org.eclipse.cdt.internal.core.parser.ScannerInfo;
 
 /**
@@ -28,9 +30,12 @@
 public class PreprocessorConditionalTest extends BaseScannerTest
 {
 
-	protected void initializeScanner(String input, Map definitions )
+	private ISourceElementRequestor nullSourceElementRequestor = new NullSourceElementRequestor();
+
+
+    protected void initializeScanner(String input, Map definitions )
 	{
-		scanner= ParserFactory.createScanner( new StringReader(input),"TEXT", new ScannerInfo( definitions, null), ParserMode.COMPLETE_PARSE );
+		scanner= ParserFactory.createScanner( new StringReader(input),"TEXT", new ScannerInfo( definitions, null), ParserMode.COMPLETE_PARSE, nullSourceElementRequestor );
 	}
 
 
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.4
diff -u -r1.4 PreprocessorTest.java
--- parser/org/eclipse/cdt/core/parser/tests/PreprocessorTest.java	9 Jul 2003 00:47:47 -0000	1.4
+++ parser/org/eclipse/cdt/core/parser/tests/PreprocessorTest.java	18 Jul 2003 16:35:13 -0000
@@ -31,7 +31,7 @@
  */
 public class PreprocessorTest extends TestCase {
 
-	public static class Callback extends NullSourceElementRequestor implements ISourceElementRequestor 
+	public static class Callback extends NullSourceElementRequestor
 	{
 		private List enteredInc = new ArrayList(), exitedInc = new ArrayList(); 
 		
@@ -73,8 +73,7 @@
 	
 	public IPreprocessor setupPreprocessor( String text, List includePaths, Map defns, ISourceElementRequestor rq )
 	{
-		IPreprocessor p = ParserFactory.createPreprocessor( new StringReader( text ), "test", new ScannerInfo(), ParserMode.COMPLETE_PARSE );
-		p.setRequestor( rq );
+		IPreprocessor p = ParserFactory.createPreprocessor( new StringReader( text ), "test", new ScannerInfo(), ParserMode.COMPLETE_PARSE, rq );
 		return p; 
 	}
 }
Index: parser/org/eclipse/cdt/core/parser/tests/ScannerTestCase.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ScannerTestCase.java,v
retrieving revision 1.4
diff -u -r1.4 ScannerTestCase.java
--- parser/org/eclipse/cdt/core/parser/tests/ScannerTestCase.java	27 Jun 2003 00:20:03 -0000	1.4
+++ parser/org/eclipse/cdt/core/parser/tests/ScannerTestCase.java	18 Jul 2003 16:35:14 -0000
@@ -851,8 +851,7 @@
 	{
 		try
 		{
-			initializeScanner( "#if X + 5 < 7\n  int found = 1;\n#endif" );
-			scanner.setMode( ParserMode.QUICK_PARSE );
+			initializeScanner( "#if X + 5 < 7\n  int found = 1;\n#endif", ParserMode.QUICK_PARSE );
 			validateToken( IToken.t_int ); 
 			validateIdentifier( "found" ); 
 			validateToken( IToken.tASSIGN ); 
@@ -869,7 +868,6 @@
 		try
 		{
 			initializeScanner( "#if 0\n  int error = 666;\n#endif" ); 
-			scanner.setMode( ParserMode.COMPLETE_PARSE ); 
 			validateEOF(); 
 		}
 		catch( ScannerException se )
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.5
diff -u -r1.5 TortureTest.java
--- parser/org/eclipse/cdt/core/parser/tests/TortureTest.java	9 Jul 2003 00:47:47 -0000	1.5
+++ parser/org/eclipse/cdt/core/parser/tests/TortureTest.java	18 Jul 2003 16:35:14 -0000
@@ -271,7 +271,7 @@
 			try {           
 				DOMBuilder domBuilder = new DOMBuilder(); 
 				parser = ParserFactory.createParser( 
-						ParserFactory.createScanner( new StringReader( code ), null, new ScannerInfo(), ParserMode.QUICK_PARSE ), nullCallback, ParserMode.QUICK_PARSE);
+						ParserFactory.createScanner( new StringReader( code ), null, new ScannerInfo(), ParserMode.QUICK_PARSE, nullCallback ), nullCallback, ParserMode.QUICK_PARSE);
 		
 				parser.setCppNature(cppNature);
 				mapping = ParserFactory.createLineOffsetReconciler( new StringReader( code ) );
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.42
diff -u -r1.42 DOMBuilder.java
--- dom/org/eclipse/cdt/internal/core/dom/DOMBuilder.java	17 Jul 2003 20:15:13 -0000	1.42
+++ dom/org/eclipse/cdt/internal/core/dom/DOMBuilder.java	18 Jul 2003 16:34:31 -0000
@@ -13,16 +13,21 @@
 import org.eclipse.cdt.core.parser.ast.IASTClassSpecifier;
 import org.eclipse.cdt.core.parser.ast.IASTCompilationUnit;
 import org.eclipse.cdt.core.parser.ast.IASTElaboratedTypeSpecifier;
+import org.eclipse.cdt.core.parser.ast.IASTEnumerationReference;
 import org.eclipse.cdt.core.parser.ast.IASTEnumerationSpecifier;
 import org.eclipse.cdt.core.parser.ast.IASTEnumerator;
 import org.eclipse.cdt.core.parser.ast.IASTExpression;
 import org.eclipse.cdt.core.parser.ast.IASTField;
+import org.eclipse.cdt.core.parser.ast.IASTFieldReference;
 import org.eclipse.cdt.core.parser.ast.IASTFunction;
+import org.eclipse.cdt.core.parser.ast.IASTFunctionReference;
 import org.eclipse.cdt.core.parser.ast.IASTInclusion;
 import org.eclipse.cdt.core.parser.ast.IASTLinkageSpecification;
 import org.eclipse.cdt.core.parser.ast.IASTMacro;
 import org.eclipse.cdt.core.parser.ast.IASTMethod;
+import org.eclipse.cdt.core.parser.ast.IASTMethodReference;
 import org.eclipse.cdt.core.parser.ast.IASTNamespaceDefinition;
+import org.eclipse.cdt.core.parser.ast.IASTNamespaceReference;
 import org.eclipse.cdt.core.parser.ast.IASTPointerToFunction;
 import org.eclipse.cdt.core.parser.ast.IASTPointerToMethod;
 import org.eclipse.cdt.core.parser.ast.IASTSimpleTypeSpecifier;
@@ -31,9 +36,11 @@
 import org.eclipse.cdt.core.parser.ast.IASTTemplateSpecialization;
 import org.eclipse.cdt.core.parser.ast.IASTTypeSpecifier;
 import org.eclipse.cdt.core.parser.ast.IASTTypedefDeclaration;
+import org.eclipse.cdt.core.parser.ast.IASTTypedefReference;
 import org.eclipse.cdt.core.parser.ast.IASTUsingDeclaration;
 import org.eclipse.cdt.core.parser.ast.IASTUsingDirective;
 import org.eclipse.cdt.core.parser.ast.IASTVariable;
+import org.eclipse.cdt.core.parser.ast.IASTVariableReference;
 import org.eclipse.cdt.internal.core.parser.ast.IASTArrayModifier;
 /**
  * This is the parser callback that creates objects in the DOM.
@@ -607,7 +614,7 @@
     /* (non-Javadoc)
      * @see org.eclipse.cdt.core.parser.ISourceElementRequestor#acceptTypedef(org.eclipse.cdt.core.parser.ast.IASTTypedef)
      */
-    public void acceptTypedef(IASTTypedefDeclaration typedef)
+    public void acceptTypedefDeclaration(IASTTypedefDeclaration typedef)
     {
         // TODO Auto-generated method stub
     }
@@ -731,7 +738,7 @@
     /* (non-Javadoc)
      * @see org.eclipse.cdt.core.parser.ISourceElementRequestor#enterTemplateExplicitInstantiation(org.eclipse.cdt.core.parser.ast.IASTTemplateInstantiation)
      */
-    public void enterTemplateExplicitInstantiation(IASTTemplateInstantiation instantiation)
+    public void enterTemplateInstantiation(IASTTemplateInstantiation instantiation)
     {
         // TODO Auto-generated method stub
     }
@@ -876,28 +883,7 @@
     {
         // ignore
     }
-    /* (non-Javadoc)
-     * @see org.eclipse.cdt.core.parser.ISourceElementRequestor#acceptElaboratedTypeSpecifier(org.eclipse.cdt.core.parser.ast.IASTElaboratedTypeSpecifier)
-     */
-    public void acceptElaboratedTypeSpecifier(IASTElaboratedTypeSpecifier elaboratedTypeSpec)
-    {
-		int kind = ClassKey.t_struct;
-				
-		if( elaboratedTypeSpec.getClassKind() == ASTClassKind.CLASS )
-			kind = ClassKey.t_class;
-		else if( elaboratedTypeSpec.getClassKind() == ASTClassKind.STRUCT )
-			kind = ClassKey.t_struct;
-		else if( elaboratedTypeSpec.getClassKind() == ASTClassKind.UNION )
-			kind = ClassKey.t_union;
-		else if( elaboratedTypeSpec.getClassKind() == ASTClassKind.ENUM )			
-			kind = ClassKey.t_enum; 
-		
-		SimpleDeclaration declaration = getTypeSpecOwner( getCurrentDOMScope(), elaboratedTypeSpec.getElementStartingOffset() );		
-		ElaboratedTypeSpecifier elab = null;
-		elab = new ElaboratedTypeSpecifier( kind, declaration );
-		declaration.setTypeSpecifier( elab );
-		((ElaboratedTypeSpecifier)elab).setName( elaboratedTypeSpec.getName() );
-    }
+ 
     /* (non-Javadoc)
      * @see org.eclipse.cdt.core.parser.ISourceElementRequestor#acceptAbstractTypeSpecDeclaration(org.eclipse.cdt.core.parser.ast.IASTAbstractTypeSpecifierDeclaration)
      */
@@ -918,6 +904,62 @@
      * @see org.eclipse.cdt.core.parser.ISourceElementRequestor#acceptPointerToMethod(org.eclipse.cdt.core.parser.ast.IASTPointerToMethod)
      */
     public void acceptPointerToMethod(IASTPointerToMethod method)
+    {
+        // TODO Auto-generated method stub
+        
+    }
+    /* (non-Javadoc)
+     * @see org.eclipse.cdt.core.parser.ISourceElementRequestor#acceptTypedefReference(org.eclipse.cdt.core.parser.ast.IASTTypedefReference)
+     */
+    public void acceptTypedefReference(IASTTypedefReference reference)
+    {
+        // TODO Auto-generated method stub
+        
+    }
+    /* (non-Javadoc)
+     * @see org.eclipse.cdt.core.parser.ISourceElementRequestor#acceptNamespaceReference(org.eclipse.cdt.core.parser.ast.IASTNamespaceReference)
+     */
+    public void acceptNamespaceReference(IASTNamespaceReference reference)
+    {
+        // TODO Auto-generated method stub
+        
+    }
+    /* (non-Javadoc)
+     * @see org.eclipse.cdt.core.parser.ISourceElementRequestor#acceptEnumerationReference(org.eclipse.cdt.core.parser.ast.IASTEnumerationReference)
+     */
+    public void acceptEnumerationReference(IASTEnumerationReference reference)
+    {
+        // TODO Auto-generated method stub
+        
+    }
+    /* (non-Javadoc)
+     * @see org.eclipse.cdt.core.parser.ISourceElementRequestor#acceptVariableReference(org.eclipse.cdt.core.parser.ast.IASTVariableReference)
+     */
+    public void acceptVariableReference(IASTVariableReference reference)
+    {
+        // TODO Auto-generated method stub
+        
+    }
+    /* (non-Javadoc)
+     * @see org.eclipse.cdt.core.parser.ISourceElementRequestor#acceptFunctionReference(org.eclipse.cdt.core.parser.ast.IASTFunctionReference)
+     */
+    public void acceptFunctionReference(IASTFunctionReference reference)
+    {
+        // TODO Auto-generated method stub
+        
+    }
+    /* (non-Javadoc)
+     * @see org.eclipse.cdt.core.parser.ISourceElementRequestor#acceptFieldReference(org.eclipse.cdt.core.parser.ast.IASTFieldReference)
+     */
+    public void acceptFieldReference(IASTFieldReference reference)
+    {
+        // TODO Auto-generated method stub
+        
+    }
+    /* (non-Javadoc)
+     * @see org.eclipse.cdt.core.parser.ISourceElementRequestor#acceptMethodReference(org.eclipse.cdt.core.parser.ast.IASTMethodReference)
+     */
+    public void acceptMethodReference(IASTMethodReference reference)
     {
         // TODO Auto-generated method stub
         
Index: index/org/eclipse/cdt/internal/core/search/indexing/SourceIndexer.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.core/index/org/eclipse/cdt/internal/core/search/indexing/SourceIndexer.java,v
retrieving revision 1.3
diff -u -r1.3 SourceIndexer.java
--- index/org/eclipse/cdt/internal/core/search/indexing/SourceIndexer.java	9 Jul 2003 00:47:42 -0000	1.3
+++ index/org/eclipse/cdt/internal/core/search/indexing/SourceIndexer.java	18 Jul 2003 16:34:31 -0000
@@ -59,7 +59,7 @@
 		// Create a new Parser
 		SourceIndexerRequestor requestor = new SourceIndexerRequestor(this, document);
 		IParser parser = ParserFactory.createParser( 
-							ParserFactory.createScanner( new StringReader( document.getStringContent() ), document.getName(), new ScannerInfo(), ParserMode.QUICK_PARSE ), 
+							ParserFactory.createScanner( new StringReader( document.getStringContent() ), document.getName(), new ScannerInfo(), ParserMode.QUICK_PARSE, requestor ), 
 							requestor, ParserMode.QUICK_PARSE);
 		try{
 			parser.parse();
Index: index/org/eclipse/cdt/internal/core/search/indexing/SourceIndexerRequestor.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.core/index/org/eclipse/cdt/internal/core/search/indexing/SourceIndexerRequestor.java,v
retrieving revision 1.5
diff -u -r1.5 SourceIndexerRequestor.java
--- index/org/eclipse/cdt/internal/core/search/indexing/SourceIndexerRequestor.java	17 Jul 2003 20:15:13 -0000	1.5
+++ index/org/eclipse/cdt/internal/core/search/indexing/SourceIndexerRequestor.java	18 Jul 2003 16:34:31 -0000
@@ -24,24 +24,30 @@
 import org.eclipse.cdt.core.parser.ast.IASTClassReference;
 import org.eclipse.cdt.core.parser.ast.IASTClassSpecifier;
 import org.eclipse.cdt.core.parser.ast.IASTCompilationUnit;
-import org.eclipse.cdt.core.parser.ast.IASTElaboratedTypeSpecifier;
+import org.eclipse.cdt.core.parser.ast.IASTEnumerationReference;
 import org.eclipse.cdt.core.parser.ast.IASTEnumerationSpecifier;
 import org.eclipse.cdt.core.parser.ast.IASTField;
+import org.eclipse.cdt.core.parser.ast.IASTFieldReference;
 import org.eclipse.cdt.core.parser.ast.IASTFunction;
+import org.eclipse.cdt.core.parser.ast.IASTFunctionReference;
 import org.eclipse.cdt.core.parser.ast.IASTInclusion;
 import org.eclipse.cdt.core.parser.ast.IASTLinkageSpecification;
 import org.eclipse.cdt.core.parser.ast.IASTMacro;
 import org.eclipse.cdt.core.parser.ast.IASTMethod;
+import org.eclipse.cdt.core.parser.ast.IASTMethodReference;
 import org.eclipse.cdt.core.parser.ast.IASTNamespaceDefinition;
+import org.eclipse.cdt.core.parser.ast.IASTNamespaceReference;
 import org.eclipse.cdt.core.parser.ast.IASTPointerToFunction;
 import org.eclipse.cdt.core.parser.ast.IASTPointerToMethod;
 import org.eclipse.cdt.core.parser.ast.IASTTemplateDeclaration;
 import org.eclipse.cdt.core.parser.ast.IASTTemplateInstantiation;
 import org.eclipse.cdt.core.parser.ast.IASTTemplateSpecialization;
 import org.eclipse.cdt.core.parser.ast.IASTTypedefDeclaration;
+import org.eclipse.cdt.core.parser.ast.IASTTypedefReference;
 import org.eclipse.cdt.core.parser.ast.IASTUsingDeclaration;
 import org.eclipse.cdt.core.parser.ast.IASTUsingDirective;
 import org.eclipse.cdt.core.parser.ast.IASTVariable;
+import org.eclipse.cdt.core.parser.ast.IASTVariableReference;
 import org.eclipse.cdt.internal.core.index.IDocument;
 
 /**
@@ -124,7 +130,7 @@
 	/* (non-Javadoc)
 	 * @see org.eclipse.cdt.core.parser.ISourceElementRequestor#acceptTypedef(org.eclipse.cdt.core.parser.ast.IASTTypedef)
 	 */
-	public void acceptTypedef(IASTTypedefDeclaration typedef) {
+	public void acceptTypedefDeclaration(IASTTypedefDeclaration typedef) {
 		// TODO Auto-generated method stub
 		//System.out.println("acceptTypedef");
 	}
@@ -219,7 +225,7 @@
 	/* (non-Javadoc)
 	 * @see org.eclipse.cdt.core.parser.ISourceElementRequestor#enterTemplateExplicitInstantiation(org.eclipse.cdt.core.parser.ast.IASTTemplateInstantiation)
 	 */
-	public void enterTemplateExplicitInstantiation(IASTTemplateInstantiation instantiation) {
+	public void enterTemplateInstantiation(IASTTemplateInstantiation instantiation) {
 		// TODO Auto-generated method stub
 		//System.out.println("enterTemplateExplicitInstantiation");
 	}
@@ -1045,13 +1051,7 @@
 		// TODO Auto-generated method stub
 		
 	}
-	/* (non-Javadoc)
-	 * @see org.eclipse.cdt.core.parser.ISourceElementRequestor#acceptElaboratedTypeSpecifier(org.eclipse.cdt.core.parser.ast.IASTElaboratedTypeSpecifier)
-	 */
-	public void acceptElaboratedTypeSpecifier(IASTElaboratedTypeSpecifier elaboratedTypeSpec) {
-		// TODO Auto-generated method stub
-		
-	}
+
     /* (non-Javadoc)
      * @see org.eclipse.cdt.core.parser.ISourceElementRequestor#acceptAbstractTypeSpecDeclaration(org.eclipse.cdt.core.parser.ast.IASTAbstractTypeSpecifierDeclaration)
      */
@@ -1072,6 +1072,62 @@
      * @see org.eclipse.cdt.core.parser.ISourceElementRequestor#acceptPointerToMethod(org.eclipse.cdt.core.parser.ast.IASTPointerToMethod)
      */
     public void acceptPointerToMethod(IASTPointerToMethod method)
+    {
+        // TODO Auto-generated method stub
+        
+    }
+    /* (non-Javadoc)
+     * @see org.eclipse.cdt.core.parser.ISourceElementRequestor#acceptTypedefReference(org.eclipse.cdt.core.parser.ast.IASTTypedefReference)
+     */
+    public void acceptTypedefReference(IASTTypedefReference reference)
+    {
+        // TODO Auto-generated method stub
+        
+    }
+    /* (non-Javadoc)
+     * @see org.eclipse.cdt.core.parser.ISourceElementRequestor#acceptNamespaceReference(org.eclipse.cdt.core.parser.ast.IASTNamespaceReference)
+     */
+    public void acceptNamespaceReference(IASTNamespaceReference reference)
+    {
+        // TODO Auto-generated method stub
+        
+    }
+    /* (non-Javadoc)
+     * @see org.eclipse.cdt.core.parser.ISourceElementRequestor#acceptEnumerationReference(org.eclipse.cdt.core.parser.ast.IASTEnumerationReference)
+     */
+    public void acceptEnumerationReference(IASTEnumerationReference reference)
+    {
+        // TODO Auto-generated method stub
+        
+    }
+    /* (non-Javadoc)
+     * @see org.eclipse.cdt.core.parser.ISourceElementRequestor#acceptVariableReference(org.eclipse.cdt.core.parser.ast.IASTVariableReference)
+     */
+    public void acceptVariableReference(IASTVariableReference reference)
+    {
+        // TODO Auto-generated method stub
+        
+    }
+    /* (non-Javadoc)
+     * @see org.eclipse.cdt.core.parser.ISourceElementRequestor#acceptFunctionReference(org.eclipse.cdt.core.parser.ast.IASTFunctionReference)
+     */
+    public void acceptFunctionReference(IASTFunctionReference reference)
+    {
+        // TODO Auto-generated method stub
+        
+    }
+    /* (non-Javadoc)
+     * @see org.eclipse.cdt.core.parser.ISourceElementRequestor#acceptFieldReference(org.eclipse.cdt.core.parser.ast.IASTFieldReference)
+     */
+    public void acceptFieldReference(IASTFieldReference reference)
+    {
+        // TODO Auto-generated method stub
+        
+    }
+    /* (non-Javadoc)
+     * @see org.eclipse.cdt.core.parser.ISourceElementRequestor#acceptMethodReference(org.eclipse.cdt.core.parser.ast.IASTMethodReference)
+     */
+    public void acceptMethodReference(IASTMethodReference reference)
     {
         // TODO Auto-generated method stub
         
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.6
diff -u -r1.6 CModelBuilder.java
--- model/org/eclipse/cdt/internal/core/model/CModelBuilder.java	17 Jul 2003 20:15:13 -0000	1.6
+++ model/org/eclipse/cdt/internal/core/model/CModelBuilder.java	18 Jul 2003 16:34:32 -0000
@@ -94,8 +94,8 @@
                                 translationUnit.getBuffer().getContents() 
                             ), 
                         null, new ScannerInfo(), ParserMode.QUICK_PARSE, 
-                        problemReporter, 
-                        unitResult 
+                        domBuilder, 
+                        problemReporter, unitResult 
                 ), 
                 domBuilder, 
                 ParserMode.QUICK_PARSE, 
Index: parser/ChangeLog
===================================================================
RCS file: /home/tools/org.eclipse.cdt.core/parser/ChangeLog,v
retrieving revision 1.79
diff -u -r1.79 ChangeLog
--- parser/ChangeLog	18 Jul 2003 12:40:48 -0000	1.79
+++ parser/ChangeLog	18 Jul 2003 16:34:32 -0000
@@ -1,4 +1,14 @@
 2003-07-18 John Camelon
+	Added ISourceElementCallbackDelegate interface for AST constructs to allow the Parser to delegate callback's to the nodes themselves.  
+	Got rid of ParserMode.STRUCTURAL_PARSE for the time being. 
+	Removed org.eclipse.cdt.internal.core.parser.ast.full. 
+	Created org.eclipse.cdt.internal.core.parser.ast.complete. 
+	Updated ParserFactory.createScanner() to force the user to provide a callback and a ParserMode.
+	Introduced ASTSemanticException for COMPLETE_PARSE mode. 
+	Fleshed out preliminary IASTReference interfaces and added callbacks to ISourceElementRequestor.
+	Removed acceptElaboratedTypeSpecifier() from ISourceElementRequestor.
+
+2003-07-18 John Camelon
 	Removed DeclaratorDuple as it was obsolete.
 	Fixed offsets in quickParse's IASTTypedefDeclaration implementation.
 	Fixed Bug 40436 - Fully Qualified Names Needed (for Indexer/Search features)
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.6
diff -u -r1.6 IParser.java
--- parser/org/eclipse/cdt/core/parser/IParser.java	17 Jul 2003 20:15:13 -0000	1.6
+++ parser/org/eclipse/cdt/core/parser/IParser.java	18 Jul 2003 16:34:32 -0000
@@ -65,6 +65,4 @@
 	public int getLastErrorOffset(); 
 	
 	
-	public void setRequestor( ISourceElementRequestor r );
-	
 }
Index: parser/org/eclipse/cdt/core/parser/IProblem.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/IProblem.java,v
retrieving revision 1.3
diff -u -r1.3 IProblem.java
--- parser/org/eclipse/cdt/core/parser/IProblem.java	28 Jun 2003 19:48:12 -0000	1.3
+++ parser/org/eclipse/cdt/core/parser/IProblem.java	18 Jul 2003 16:34:32 -0000
@@ -21,7 +21,7 @@
  * as constants on this interface. </li>
  * </ul>
  */
-public interface IProblem { 
+public interface IProblem extends ISourceElementCallbackDelegate { 
 	
 	/**
 	 * Answer back the original arguments recorded into the problem.
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.9
diff -u -r1.9 IScanner.java
--- parser/org/eclipse/cdt/core/parser/IScanner.java	17 Jul 2003 20:15:13 -0000	1.9
+++ parser/org/eclipse/cdt/core/parser/IScanner.java	18 Jul 2003 16:34:32 -0000
@@ -19,15 +19,12 @@
 	public String[] getIncludePaths();
 	public void addIncludePath(String includePath); 
 	public void overwriteIncludePath( String [] newIncludePaths );
-	public void setRequestor( ISourceElementRequestor r );
 	
 	public IToken nextToken() throws ScannerException, EndOfFile;
 	public IToken nextToken( boolean next ) throws ScannerException, EndOfFile;
 	 
 	public void setCppNature( boolean value );
-	
-	public void setMode(ParserMode mode);
-	
+		
 	public int  getCount();
 	public int  getDepth();
 
Index: parser/org/eclipse/cdt/core/parser/ISourceElementCallbackDelegate.java
===================================================================
RCS file: parser/org/eclipse/cdt/core/parser/ISourceElementCallbackDelegate.java
diff -N parser/org/eclipse/cdt/core/parser/ISourceElementCallbackDelegate.java
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ parser/org/eclipse/cdt/core/parser/ISourceElementCallbackDelegate.java	18 Jul 2003 16:34:32 -0000
@@ -0,0 +1,22 @@
+/**********************************************************************
+ * 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 ISourceElementCallbackDelegate
+{
+	public void acceptElement( ISourceElementRequestor requestor );
+	public void enterScope( ISourceElementRequestor requestor );
+	public void exitScope( ISourceElementRequestor requestor );
+}
Index: parser/org/eclipse/cdt/core/parser/ISourceElementRequestor.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/ISourceElementRequestor.java,v
retrieving revision 1.7
diff -u -r1.7 ISourceElementRequestor.java
--- parser/org/eclipse/cdt/core/parser/ISourceElementRequestor.java	17 Jul 2003 20:15:13 -0000	1.7
+++ parser/org/eclipse/cdt/core/parser/ISourceElementRequestor.java	18 Jul 2003 16:34:32 -0000
@@ -15,24 +15,30 @@
 import org.eclipse.cdt.core.parser.ast.IASTClassReference;
 import org.eclipse.cdt.core.parser.ast.IASTClassSpecifier;
 import org.eclipse.cdt.core.parser.ast.IASTCompilationUnit;
-import org.eclipse.cdt.core.parser.ast.IASTElaboratedTypeSpecifier;
+import org.eclipse.cdt.core.parser.ast.IASTEnumerationReference;
 import org.eclipse.cdt.core.parser.ast.IASTEnumerationSpecifier;
 import org.eclipse.cdt.core.parser.ast.IASTField;
+import org.eclipse.cdt.core.parser.ast.IASTFieldReference;
 import org.eclipse.cdt.core.parser.ast.IASTFunction;
+import org.eclipse.cdt.core.parser.ast.IASTFunctionReference;
 import org.eclipse.cdt.core.parser.ast.IASTInclusion;
 import org.eclipse.cdt.core.parser.ast.IASTLinkageSpecification;
 import org.eclipse.cdt.core.parser.ast.IASTMacro;
 import org.eclipse.cdt.core.parser.ast.IASTMethod;
+import org.eclipse.cdt.core.parser.ast.IASTMethodReference;
 import org.eclipse.cdt.core.parser.ast.IASTNamespaceDefinition;
+import org.eclipse.cdt.core.parser.ast.IASTNamespaceReference;
 import org.eclipse.cdt.core.parser.ast.IASTPointerToFunction;
 import org.eclipse.cdt.core.parser.ast.IASTPointerToMethod;
 import org.eclipse.cdt.core.parser.ast.IASTTemplateDeclaration;
 import org.eclipse.cdt.core.parser.ast.IASTTemplateInstantiation;
 import org.eclipse.cdt.core.parser.ast.IASTTemplateSpecialization;
 import org.eclipse.cdt.core.parser.ast.IASTTypedefDeclaration;
+import org.eclipse.cdt.core.parser.ast.IASTTypedefReference;
 import org.eclipse.cdt.core.parser.ast.IASTUsingDeclaration;
 import org.eclipse.cdt.core.parser.ast.IASTUsingDirective;
 import org.eclipse.cdt.core.parser.ast.IASTVariable;
+import org.eclipse.cdt.core.parser.ast.IASTVariableReference;
 
 /**
  * @author jcamelon
@@ -48,7 +54,7 @@
 	public void acceptUsingDirective( IASTUsingDirective usageDirective );
 	public void acceptUsingDeclaration( IASTUsingDeclaration usageDeclaration );
 	public void acceptASMDefinition( IASTASMDefinition asmDefinition );
-	public void acceptTypedef( IASTTypedefDeclaration typedef );
+	public void acceptTypedefDeclaration( IASTTypedefDeclaration typedef );
 	public void acceptEnumerationSpecifier( IASTEnumerationSpecifier enumeration );
 	public void acceptAbstractTypeSpecDeclaration( IASTAbstractTypeSpecifierDeclaration abstractDeclaration );
 
@@ -63,7 +69,7 @@
 	
 	public void enterTemplateDeclaration( IASTTemplateDeclaration declaration );
 	public void enterTemplateSpecialization( IASTTemplateSpecialization specialization );
-	public void enterTemplateExplicitInstantiation( IASTTemplateInstantiation instantiation );
+	public void enterTemplateInstantiation( IASTTemplateInstantiation instantiation );
 	
 	public void acceptMethodDeclaration( IASTMethod method );
 	public void enterMethodBody( IASTMethod method );
@@ -71,6 +77,13 @@
 	public void acceptField( IASTField field );
 
 	public void acceptClassReference( IASTClassReference reference );
+	public void acceptTypedefReference( IASTTypedefReference reference );
+	public void acceptNamespaceReference( IASTNamespaceReference reference );
+	public void acceptEnumerationReference( IASTEnumerationReference reference );
+	public void acceptVariableReference( IASTVariableReference reference );
+	public void acceptFunctionReference( IASTFunctionReference reference );
+	public void acceptFieldReference( IASTFieldReference reference );
+	public void acceptMethodReference( IASTMethodReference reference );
 	
 	public void exitTemplateDeclaration( IASTTemplateDeclaration declaration );
 	public void exitTemplateSpecialization( IASTTemplateSpecialization specialization );
@@ -81,8 +94,6 @@
 	public void exitNamespaceDefinition( IASTNamespaceDefinition namespaceDefinition ); 
 	public void exitInclusion( IASTInclusion inclusion ); 
 	public void exitCompilationUnit( IASTCompilationUnit compilationUnit );
-
-    public void acceptElaboratedTypeSpecifier(IASTElaboratedTypeSpecifier elaboratedTypeSpec);
 
     /**
      * @param function
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.8
diff -u -r1.8 ParserFactory.java
--- parser/org/eclipse/cdt/core/parser/ParserFactory.java	17 Jul 2003 20:15:13 -0000	1.8
+++ parser/org/eclipse/cdt/core/parser/ParserFactory.java	18 Jul 2003 16:34:32 -0000
@@ -23,7 +23,7 @@
 import org.eclipse.cdt.internal.core.parser.Scanner;
 import org.eclipse.cdt.internal.core.parser.TranslationOptions;
 import org.eclipse.cdt.internal.core.parser.TranslationResult;
-import org.eclipse.cdt.internal.core.parser.ast.full.FullParseASTFactory;
+import org.eclipse.cdt.internal.core.parser.ast.complete.CompleteParseASTFactory;
 import org.eclipse.cdt.internal.core.parser.ast.quick.QuickParseASTFactory;
 import org.eclipse.cdt.internal.core.parser.problem.DefaultProblemFactory;
 import org.eclipse.cdt.internal.core.parser.problem.ProblemReporter;
@@ -40,7 +40,7 @@
 		if( mode == ParserMode.QUICK_PARSE )
 			return new QuickParseASTFactory(); 
 		else
-			return new FullParseASTFactory(); 
+			return new CompleteParseASTFactory(); 
 	}
 	
     public static IParser createParser( IScanner scanner, ISourceElementRequestor callback, ParserMode mode )
@@ -55,29 +55,29 @@
 		return new Parser( scanner, ourCallback, ourMode, problemReporter, unitResult );
 	}
  	
-    public static IScanner createScanner( Reader input, String fileName, IScannerInfo config, ParserMode mode )
+    public static IScanner createScanner( Reader input, String fileName, IScannerInfo config, ParserMode mode, ISourceElementRequestor requestor )
     {
-        return createScanner(input, fileName, config, mode, null, null);
+        return createScanner(input, fileName, config, mode, requestor, null, null);
     }
     
-	public static IScanner createScanner( Reader input, String fileName, IScannerInfo config, ParserMode mode, IProblemReporter problemReporter, ITranslationResult unitResult ) 
+	public static IScanner createScanner( Reader input, String fileName, IScannerInfo config, ParserMode mode, ISourceElementRequestor requestor, IProblemReporter problemReporter, ITranslationResult unitResult ) 
 	{
-		ParserMode ourMode = ( (mode == null )? ParserMode.COMPLETE_PARSE : mode ); 
-		IScanner s = new Scanner( input, fileName, config, problemReporter, unitResult );
-		s.setMode( ourMode ); 
+		ParserMode ourMode = ( (mode == null )? ParserMode.COMPLETE_PARSE : mode );
+		ISourceElementRequestor ourRequestor = (( requestor == null) ? new NullSourceElementRequestor() : requestor ); 
+		IScanner s = new Scanner( input, fileName, config, problemReporter, unitResult, ourRequestor, ourMode );
 		return s; 
 	}
     
-    public static IPreprocessor createPreprocessor( Reader input, String fileName, IScannerInfo info, ParserMode mode )
+    public static IPreprocessor createPreprocessor( Reader input, String fileName, IScannerInfo info, ParserMode mode, ISourceElementRequestor requestor )
     {
-        return createPreprocessor(input, fileName, info, mode, null, null);
+        return createPreprocessor(input, fileName, info, mode, requestor, null, null);
     }
  	
-	public static IPreprocessor createPreprocessor( Reader input, String fileName, IScannerInfo info, ParserMode mode, IProblemReporter problemReporter, ITranslationResult unitResult )
+	public static IPreprocessor createPreprocessor( Reader input, String fileName, IScannerInfo info, ParserMode mode, ISourceElementRequestor requestor, IProblemReporter problemReporter, ITranslationResult unitResult )
 	{
 		ParserMode ourMode = ( (mode == null )? ParserMode.COMPLETE_PARSE : mode ); 
-		IPreprocessor s = new Preprocessor( input, fileName, info, problemReporter, unitResult );
-		s.setMode( ourMode );
+		ISourceElementRequestor ourRequestor = (( requestor == null) ? new NullSourceElementRequestor() : requestor );
+		IPreprocessor s = new Preprocessor( input, fileName, info, ourRequestor, problemReporter, unitResult, ourMode );
 		return s;
 	} 
 	
Index: parser/org/eclipse/cdt/core/parser/ParserMode.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/ParserMode.java,v
retrieving revision 1.2
diff -u -r1.2 ParserMode.java
--- parser/org/eclipse/cdt/core/parser/ParserMode.java	17 Jul 2003 20:15:13 -0000	1.2
+++ parser/org/eclipse/cdt/core/parser/ParserMode.java	18 Jul 2003 16:34:32 -0000
@@ -19,11 +19,8 @@
 	// follow inclusions, parse function/method bodies
 	public static final ParserMode COMPLETE_PARSE = new ParserMode( 1 );
 	
-	// follow inclusions, do not parse function/method bodies
-	public static final ParserMode STRUCTURAL_PARSE = new ParserMode( 2 );
-	
 	// do not follow inclusions, do not parse function/method bodies
-	public static final ParserMode QUICK_PARSE = new ParserMode( 3 );
+	public static final ParserMode QUICK_PARSE = new ParserMode( 2 );
 	
 	protected ParserMode( int value )
 	{
Index: parser/org/eclipse/cdt/core/parser/ast/ASTSemanticException.java
===================================================================
RCS file: parser/org/eclipse/cdt/core/parser/ast/ASTSemanticException.java
diff -N parser/org/eclipse/cdt/core/parser/ast/ASTSemanticException.java
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ parser/org/eclipse/cdt/core/parser/ast/ASTSemanticException.java	18 Jul 2003 16:34:32 -0000
@@ -0,0 +1,41 @@
+/**********************************************************************
+ * 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;
+
+import org.eclipse.cdt.core.parser.IProblem;
+
+/**
+ * @author jcamelon
+ *
+ */
+public class ASTSemanticException extends Exception
+{
+    private final IProblem theProblem;
+
+    /**
+     * 
+     */
+    public ASTSemanticException( IProblem reason )
+    {
+        super();
+        theProblem = reason;
+    }
+    
+    
+    /**
+     * @return
+     */
+    public IProblem getTheProblem()
+    {
+        return theProblem;
+    }
+
+}
Index: parser/org/eclipse/cdt/core/parser/ast/IASTASMDefinition.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/ast/IASTASMDefinition.java,v
retrieving revision 1.2
diff -u -r1.2 IASTASMDefinition.java
--- parser/org/eclipse/cdt/core/parser/ast/IASTASMDefinition.java	13 Jun 2003 15:01:22 -0000	1.2
+++ parser/org/eclipse/cdt/core/parser/ast/IASTASMDefinition.java	18 Jul 2003 16:34:33 -0000
@@ -10,6 +10,7 @@
 ***********************************************************************/
 package org.eclipse.cdt.core.parser.ast;
 
+
 /**
  * @author jcamelon
  *
Index: parser/org/eclipse/cdt/core/parser/ast/IASTClassReference.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/ast/IASTClassReference.java,v
retrieving revision 1.1
diff -u -r1.1 IASTClassReference.java
--- parser/org/eclipse/cdt/core/parser/ast/IASTClassReference.java	9 Jul 2003 00:47:42 -0000	1.1
+++ parser/org/eclipse/cdt/core/parser/ast/IASTClassReference.java	18 Jul 2003 16:34:33 -0000
@@ -14,8 +14,7 @@
  * @author jcamelon
  *
  */
-public interface IASTClassReference
+public interface IASTClassReference extends IASTReference
 {
-	public IASTClassSpecifier getClassSpecifier(); 
-	public int                getOffset();
+	
 }
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.9
diff -u -r1.9 IASTClassSpecifier.java
--- parser/org/eclipse/cdt/core/parser/ast/IASTClassSpecifier.java	18 Jul 2003 12:40:48 -0000	1.9
+++ parser/org/eclipse/cdt/core/parser/ast/IASTClassSpecifier.java	18 Jul 2003 16:34:33 -0000
@@ -13,12 +13,13 @@
 import java.util.Iterator;
 
 import org.eclipse.cdt.core.parser.Enum;
+import org.eclipse.cdt.core.parser.ISourceElementCallbackDelegate;
 
 /**
  * @author jcamelon
  *
  */
-public interface IASTClassSpecifier extends IASTTypeSpecifier, IASTScope, IASTOffsetableNamedElement, IASTScopedTypeSpecifier {
+public interface IASTClassSpecifier extends IASTTypeSpecifier, IASTScope, IASTOffsetableNamedElement, IASTScopedTypeSpecifier, ISourceElementCallbackDelegate {
 
 	public class ClassNameType extends Enum {
 
Index: parser/org/eclipse/cdt/core/parser/ast/IASTCompilationUnit.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/ast/IASTCompilationUnit.java,v
retrieving revision 1.2
diff -u -r1.2 IASTCompilationUnit.java
--- parser/org/eclipse/cdt/core/parser/ast/IASTCompilationUnit.java	13 Jun 2003 15:01:22 -0000	1.2
+++ parser/org/eclipse/cdt/core/parser/ast/IASTCompilationUnit.java	18 Jul 2003 16:34:33 -0000
@@ -10,10 +10,12 @@
 ***********************************************************************/
 package org.eclipse.cdt.core.parser.ast;
 
+import org.eclipse.cdt.core.parser.ISourceElementCallbackDelegate;
+
 /**
  * @author jcamelon
  *
  */
-public interface IASTCompilationUnit extends IASTScope {
+public interface IASTCompilationUnit extends IASTScope, ISourceElementCallbackDelegate {
 
 }
Index: parser/org/eclipse/cdt/core/parser/ast/IASTDeclaration.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/ast/IASTDeclaration.java,v
retrieving revision 1.3
diff -u -r1.3 IASTDeclaration.java
--- parser/org/eclipse/cdt/core/parser/ast/IASTDeclaration.java	17 Jul 2003 20:15:13 -0000	1.3
+++ parser/org/eclipse/cdt/core/parser/ast/IASTDeclaration.java	18 Jul 2003 16:34:33 -0000
@@ -10,11 +10,13 @@
 ***********************************************************************/
 package org.eclipse.cdt.core.parser.ast;
 
+import org.eclipse.cdt.core.parser.ISourceElementCallbackDelegate;
+
 /**
  * @author jcamelon
  *
  */
-public interface IASTDeclaration extends IASTScopedElement {
+public interface IASTDeclaration extends IASTScopedElement, ISourceElementCallbackDelegate {
 
 	
 }
Index: parser/org/eclipse/cdt/core/parser/ast/IASTElaboratedTypeSpecifier.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/ast/IASTElaboratedTypeSpecifier.java,v
retrieving revision 1.4
diff -u -r1.4 IASTElaboratedTypeSpecifier.java
--- parser/org/eclipse/cdt/core/parser/ast/IASTElaboratedTypeSpecifier.java	17 Jul 2003 20:15:13 -0000	1.4
+++ parser/org/eclipse/cdt/core/parser/ast/IASTElaboratedTypeSpecifier.java	18 Jul 2003 16:34:33 -0000
@@ -11,6 +11,7 @@
 package org.eclipse.cdt.core.parser.ast;
 
 
+
 /**
  * @author jcamelon
  *
Index: parser/org/eclipse/cdt/core/parser/ast/IASTEnumerationReference.java
===================================================================
RCS file: parser/org/eclipse/cdt/core/parser/ast/IASTEnumerationReference.java
diff -N parser/org/eclipse/cdt/core/parser/ast/IASTEnumerationReference.java
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ parser/org/eclipse/cdt/core/parser/ast/IASTEnumerationReference.java	18 Jul 2003 16:34:33 -0000
@@ -0,0 +1,19 @@
+/**********************************************************************
+ * 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 IASTEnumerationReference extends IASTReference
+{
+}
Index: parser/org/eclipse/cdt/core/parser/ast/IASTEnumerationSpecifier.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/ast/IASTEnumerationSpecifier.java,v
retrieving revision 1.3
diff -u -r1.3 IASTEnumerationSpecifier.java
--- parser/org/eclipse/cdt/core/parser/ast/IASTEnumerationSpecifier.java	18 Jul 2003 12:40:48 -0000	1.3
+++ parser/org/eclipse/cdt/core/parser/ast/IASTEnumerationSpecifier.java	18 Jul 2003 16:34:33 -0000
@@ -12,11 +12,13 @@
 
 import java.util.Iterator;
 
+import org.eclipse.cdt.core.parser.ISourceElementCallbackDelegate;
+
 /**
  * @author jcamelon
  *
  */
-public interface IASTEnumerationSpecifier extends IASTScopedTypeSpecifier, IASTOffsetableNamedElement {
+public interface IASTEnumerationSpecifier extends ISourceElementCallbackDelegate, IASTScopedTypeSpecifier, IASTOffsetableNamedElement {
 
 	public void addEnumerator( IASTEnumerator enumerator );
 	public Iterator getEnumerators(); 
Index: parser/org/eclipse/cdt/core/parser/ast/IASTFactory.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/ast/IASTFactory.java,v
retrieving revision 1.12
diff -u -r1.12 IASTFactory.java
--- parser/org/eclipse/cdt/core/parser/ast/IASTFactory.java	18 Jul 2003 12:40:48 -0000	1.12
+++ parser/org/eclipse/cdt/core/parser/ast/IASTFactory.java	18 Jul 2003 16:34:33 -0000
@@ -11,11 +11,11 @@
 package org.eclipse.cdt.core.parser.ast;
 import java.util.List;
 
-import org.eclipse.cdt.core.parser.Backtrack;
 import org.eclipse.cdt.core.parser.ITokenDuple;
 import org.eclipse.cdt.core.parser.ast.IASTClassSpecifier.ClassNameType;
 import org.eclipse.cdt.core.parser.ast.IASTExpression.IASTNewExpressionDescriptor;
 import org.eclipse.cdt.internal.core.parser.ast.IASTArrayModifier;
+import org.eclipse.cdt.internal.core.parser.pst.ISymbolASTExtension;
 /**
  * @author jcamelon
  *
@@ -37,7 +37,7 @@
     public IASTUsingDirective createUsingDirective(
         IASTScope scope,
         ITokenDuple duple, int startingOffset, int endingOffset)
-        throws Backtrack;
+        throws ASTSemanticException;
     public IASTUsingDeclaration createUsingDeclaration(
         IASTScope scope,
         boolean isTypeName,
@@ -215,4 +215,6 @@
 		boolean isExplicit,
 		boolean isPureVirtual,
 		ASTAccessVisibility visibility, ASTPointerOperator pointerOperator);
+		
+	public ISymbolASTExtension createSymbolTableDeclarationExtension( IASTDeclaration declaration, IASTDeclaration definition ) throws ASTNotImplementedException;
 }
Index: parser/org/eclipse/cdt/core/parser/ast/IASTField.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/ast/IASTField.java,v
retrieving revision 1.4
diff -u -r1.4 IASTField.java
--- parser/org/eclipse/cdt/core/parser/ast/IASTField.java	9 Jul 2003 00:47:42 -0000	1.4
+++ parser/org/eclipse/cdt/core/parser/ast/IASTField.java	18 Jul 2003 16:34:33 -0000
@@ -10,6 +10,7 @@
 ***********************************************************************/
 package org.eclipse.cdt.core.parser.ast;
 
+
 /**
  * @author jcamelon
  *
Index: parser/org/eclipse/cdt/core/parser/ast/IASTFieldReference.java
===================================================================
RCS file: parser/org/eclipse/cdt/core/parser/ast/IASTFieldReference.java
diff -N parser/org/eclipse/cdt/core/parser/ast/IASTFieldReference.java
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ parser/org/eclipse/cdt/core/parser/ast/IASTFieldReference.java	18 Jul 2003 16:34:33 -0000
@@ -0,0 +1,19 @@
+/**********************************************************************
+ * 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 IASTFieldReference extends IASTReference
+{
+}
Index: parser/org/eclipse/cdt/core/parser/ast/IASTFunctionReference.java
===================================================================
RCS file: parser/org/eclipse/cdt/core/parser/ast/IASTFunctionReference.java
diff -N parser/org/eclipse/cdt/core/parser/ast/IASTFunctionReference.java
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ parser/org/eclipse/cdt/core/parser/ast/IASTFunctionReference.java	18 Jul 2003 16:34:33 -0000
@@ -0,0 +1,19 @@
+/**********************************************************************
+ * 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 IASTFunctionReference extends IASTReference
+{
+}
Index: parser/org/eclipse/cdt/core/parser/ast/IASTInclusion.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/ast/IASTInclusion.java,v
retrieving revision 1.2
diff -u -r1.2 IASTInclusion.java
--- parser/org/eclipse/cdt/core/parser/ast/IASTInclusion.java	13 Jun 2003 15:01:22 -0000	1.2
+++ parser/org/eclipse/cdt/core/parser/ast/IASTInclusion.java	18 Jul 2003 16:34:33 -0000
@@ -10,12 +10,14 @@
 ***********************************************************************/
 package org.eclipse.cdt.core.parser.ast;
 
+import org.eclipse.cdt.core.parser.ISourceElementCallbackDelegate;
+
 
 /**
  * @author jcamelon
  *
  */
-public interface IASTInclusion extends IASTOffsetableNamedElement {
+public interface IASTInclusion extends IASTOffsetableNamedElement, ISourceElementCallbackDelegate {
 
 	public String getName();
 	
Index: parser/org/eclipse/cdt/core/parser/ast/IASTLinkageSpecification.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/ast/IASTLinkageSpecification.java,v
retrieving revision 1.3
diff -u -r1.3 IASTLinkageSpecification.java
--- parser/org/eclipse/cdt/core/parser/ast/IASTLinkageSpecification.java	17 Jul 2003 20:15:13 -0000	1.3
+++ parser/org/eclipse/cdt/core/parser/ast/IASTLinkageSpecification.java	18 Jul 2003 16:34:33 -0000
@@ -10,11 +10,12 @@
 ***********************************************************************/
 package org.eclipse.cdt.core.parser.ast;
 
+
 /**
  * @author jcamelon
  *
  */
-public interface IASTLinkageSpecification extends IASTScope, IASTDeclaration, IASTOffsetableElement {
+public interface IASTLinkageSpecification extends  IASTScope, IASTDeclaration, IASTOffsetableElement {
 
 	public String getLinkageString(); 
 }
Index: parser/org/eclipse/cdt/core/parser/ast/IASTMacro.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/ast/IASTMacro.java,v
retrieving revision 1.2
diff -u -r1.2 IASTMacro.java
--- parser/org/eclipse/cdt/core/parser/ast/IASTMacro.java	13 Jun 2003 15:01:22 -0000	1.2
+++ parser/org/eclipse/cdt/core/parser/ast/IASTMacro.java	18 Jul 2003 16:34:33 -0000
@@ -10,11 +10,13 @@
 ***********************************************************************/
 package org.eclipse.cdt.core.parser.ast;
 
+import org.eclipse.cdt.core.parser.ISourceElementCallbackDelegate;
+
 /**
  * @author jcamelon
  *
  */
-public interface IASTMacro extends IASTOffsetableNamedElement {
+public interface IASTMacro extends IASTOffsetableNamedElement, ISourceElementCallbackDelegate {
 	
 	public String getName(); 
 
Index: parser/org/eclipse/cdt/core/parser/ast/IASTMethod.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/ast/IASTMethod.java,v
retrieving revision 1.4
diff -u -r1.4 IASTMethod.java
--- parser/org/eclipse/cdt/core/parser/ast/IASTMethod.java	9 Jul 2003 00:47:42 -0000	1.4
+++ parser/org/eclipse/cdt/core/parser/ast/IASTMethod.java	18 Jul 2003 16:34:33 -0000
@@ -10,11 +10,12 @@
 ***********************************************************************/
 package org.eclipse.cdt.core.parser.ast;
 
+
 /**
  * @author jcamelon
  *
  */
-public interface IASTMethod extends IASTFunction, IASTMember {
+public interface IASTMethod extends  IASTFunction, IASTMember {
 
 	public boolean isVirtual();
 	public boolean isExplicit(); 
Index: parser/org/eclipse/cdt/core/parser/ast/IASTMethodReference.java
===================================================================
RCS file: parser/org/eclipse/cdt/core/parser/ast/IASTMethodReference.java
diff -N parser/org/eclipse/cdt/core/parser/ast/IASTMethodReference.java
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ parser/org/eclipse/cdt/core/parser/ast/IASTMethodReference.java	18 Jul 2003 16:34:33 -0000
@@ -0,0 +1,19 @@
+/**********************************************************************
+ * 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 IASTMethodReference extends IASTReference
+{
+}
Index: parser/org/eclipse/cdt/core/parser/ast/IASTNamespaceDefinition.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/ast/IASTNamespaceDefinition.java,v
retrieving revision 1.3
diff -u -r1.3 IASTNamespaceDefinition.java
--- parser/org/eclipse/cdt/core/parser/ast/IASTNamespaceDefinition.java	7 Jul 2003 13:46:04 -0000	1.3
+++ parser/org/eclipse/cdt/core/parser/ast/IASTNamespaceDefinition.java	18 Jul 2003 16:34:33 -0000
@@ -10,6 +10,7 @@
 ***********************************************************************/
 package org.eclipse.cdt.core.parser.ast;
 
+
 /**
  * @author jcamelon
  *
Index: parser/org/eclipse/cdt/core/parser/ast/IASTNamespaceReference.java
===================================================================
RCS file: parser/org/eclipse/cdt/core/parser/ast/IASTNamespaceReference.java
diff -N parser/org/eclipse/cdt/core/parser/ast/IASTNamespaceReference.java
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ parser/org/eclipse/cdt/core/parser/ast/IASTNamespaceReference.java	18 Jul 2003 16:34:33 -0000
@@ -0,0 +1,19 @@
+/**********************************************************************
+ * 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 IASTNamespaceReference extends IASTReference
+{
+}
Index: parser/org/eclipse/cdt/core/parser/ast/IASTPointerToFunction.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/ast/IASTPointerToFunction.java,v
retrieving revision 1.1
diff -u -r1.1 IASTPointerToFunction.java
--- parser/org/eclipse/cdt/core/parser/ast/IASTPointerToFunction.java	17 Jul 2003 20:15:13 -0000	1.1
+++ parser/org/eclipse/cdt/core/parser/ast/IASTPointerToFunction.java	18 Jul 2003 16:34:33 -0000
@@ -10,6 +10,7 @@
 ***********************************************************************/
 package org.eclipse.cdt.core.parser.ast;
 
+
 /**
  * @author jcamelon
  *
Index: parser/org/eclipse/cdt/core/parser/ast/IASTPointerToMethod.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/ast/IASTPointerToMethod.java,v
retrieving revision 1.1
diff -u -r1.1 IASTPointerToMethod.java
--- parser/org/eclipse/cdt/core/parser/ast/IASTPointerToMethod.java	17 Jul 2003 20:15:13 -0000	1.1
+++ parser/org/eclipse/cdt/core/parser/ast/IASTPointerToMethod.java	18 Jul 2003 16:34:33 -0000
@@ -10,6 +10,7 @@
 ***********************************************************************/
 package org.eclipse.cdt.core.parser.ast;
 
+
 /**
  * @author jcamelon
  *
Index: parser/org/eclipse/cdt/core/parser/ast/IASTReference.java
===================================================================
RCS file: parser/org/eclipse/cdt/core/parser/ast/IASTReference.java
diff -N parser/org/eclipse/cdt/core/parser/ast/IASTReference.java
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ parser/org/eclipse/cdt/core/parser/ast/IASTReference.java	18 Jul 2003 16:34:33 -0000
@@ -0,0 +1,26 @@
+/**********************************************************************
+ * 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;
+
+import org.eclipse.cdt.core.parser.ISourceElementCallbackDelegate;
+
+/**
+ * @author jcamelon
+ *
+ */
+public interface IASTReference extends ISourceElementCallbackDelegate
+{
+
+	public int                getOffset();
+	public String			  getName(); 
+	public IASTScopedElement  getReferencedElement(); 
+	
+}
Index: parser/org/eclipse/cdt/core/parser/ast/IASTTypedefDeclaration.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/ast/IASTTypedefDeclaration.java,v
retrieving revision 1.2
diff -u -r1.2 IASTTypedefDeclaration.java
--- parser/org/eclipse/cdt/core/parser/ast/IASTTypedefDeclaration.java	18 Jul 2003 12:40:48 -0000	1.2
+++ parser/org/eclipse/cdt/core/parser/ast/IASTTypedefDeclaration.java	18 Jul 2003 16:34:33 -0000
@@ -10,6 +10,7 @@
 ***********************************************************************/
 package org.eclipse.cdt.core.parser.ast;
 
+
 /**
  * @author jcamelon
  *
Index: parser/org/eclipse/cdt/core/parser/ast/IASTTypedefReference.java
===================================================================
RCS file: parser/org/eclipse/cdt/core/parser/ast/IASTTypedefReference.java
diff -N parser/org/eclipse/cdt/core/parser/ast/IASTTypedefReference.java
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ parser/org/eclipse/cdt/core/parser/ast/IASTTypedefReference.java	18 Jul 2003 16:34:33 -0000
@@ -0,0 +1,19 @@
+/**********************************************************************
+ * 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 IASTTypedefReference extends IASTReference
+{
+}
Index: parser/org/eclipse/cdt/core/parser/ast/IASTVariable.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/ast/IASTVariable.java,v
retrieving revision 1.6
diff -u -r1.6 IASTVariable.java
--- parser/org/eclipse/cdt/core/parser/ast/IASTVariable.java	18 Jul 2003 12:40:48 -0000	1.6
+++ parser/org/eclipse/cdt/core/parser/ast/IASTVariable.java	18 Jul 2003 16:34:33 -0000
@@ -10,11 +10,12 @@
 ***********************************************************************/
 package org.eclipse.cdt.core.parser.ast;
 
+
 /**
  * @author jcamelon
  *
  */
-public interface IASTVariable extends IASTDeclaration, IASTOffsetableNamedElement, IASTQualifiedNameElement {
+public interface IASTVariable extends  IASTDeclaration, IASTOffsetableNamedElement, IASTQualifiedNameElement {
 
 	public boolean isAuto(); 
 	public boolean isRegister(); 
Index: parser/org/eclipse/cdt/core/parser/ast/IASTVariableReference.java
===================================================================
RCS file: parser/org/eclipse/cdt/core/parser/ast/IASTVariableReference.java
diff -N parser/org/eclipse/cdt/core/parser/ast/IASTVariableReference.java
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ parser/org/eclipse/cdt/core/parser/ast/IASTVariableReference.java	18 Jul 2003 16:34:33 -0000
@@ -0,0 +1,19 @@
+/**********************************************************************
+ * 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 IASTVariableReference extends IASTReference
+{
+}
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.9
diff -u -r1.9 ContextStack.java
--- parser/org/eclipse/cdt/internal/core/parser/ContextStack.java	28 Jun 2003 22:39:33 -0000	1.9
+++ parser/org/eclipse/cdt/internal/core/parser/ContextStack.java	18 Jul 2003 16:34:33 -0000
@@ -64,8 +64,7 @@
 		{
 			if( !inclusions.add( context.getFilename() ) )
 				throw new ScannerException( "Inclusion " + context.getFilename() + " already encountered." );
-			if( requestor != null )
-				requestor.enterInclusion( context.getExtension() );
+			context.getExtension().enterScope( requestor );				
 
 		} else if( context.getKind() == IScannerContext.MACROEXPANSION )
 		{
@@ -90,8 +89,7 @@
 		if( currentContext.getKind() == IScannerContext.INCLUSION )
 		{
 			inclusions.remove( currentContext.getFilename() );
-			if( requestor != null )
-				requestor.exitInclusion( currentContext.getExtension() );
+			currentContext.getExtension().exitScope( requestor );
 		} else if( currentContext.getKind() == IScannerContext.MACROEXPANSION )
 		{
 			defines.remove( currentContext.getFilename() );
Index: parser/org/eclipse/cdt/internal/core/parser/NullSourceElementRequestor.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/NullSourceElementRequestor.java,v
retrieving revision 1.7
diff -u -r1.7 NullSourceElementRequestor.java
--- parser/org/eclipse/cdt/internal/core/parser/NullSourceElementRequestor.java	17 Jul 2003 20:15:13 -0000	1.7
+++ parser/org/eclipse/cdt/internal/core/parser/NullSourceElementRequestor.java	18 Jul 2003 16:34:33 -0000
@@ -7,24 +7,30 @@
 import org.eclipse.cdt.core.parser.ast.IASTClassReference;
 import org.eclipse.cdt.core.parser.ast.IASTClassSpecifier;
 import org.eclipse.cdt.core.parser.ast.IASTCompilationUnit;
-import org.eclipse.cdt.core.parser.ast.IASTElaboratedTypeSpecifier;
+import org.eclipse.cdt.core.parser.ast.IASTEnumerationReference;
 import org.eclipse.cdt.core.parser.ast.IASTEnumerationSpecifier;
 import org.eclipse.cdt.core.parser.ast.IASTField;
+import org.eclipse.cdt.core.parser.ast.IASTFieldReference;
 import org.eclipse.cdt.core.parser.ast.IASTFunction;
+import org.eclipse.cdt.core.parser.ast.IASTFunctionReference;
 import org.eclipse.cdt.core.parser.ast.IASTInclusion;
 import org.eclipse.cdt.core.parser.ast.IASTLinkageSpecification;
 import org.eclipse.cdt.core.parser.ast.IASTMacro;
 import org.eclipse.cdt.core.parser.ast.IASTMethod;
+import org.eclipse.cdt.core.parser.ast.IASTMethodReference;
 import org.eclipse.cdt.core.parser.ast.IASTNamespaceDefinition;
+import org.eclipse.cdt.core.parser.ast.IASTNamespaceReference;
 import org.eclipse.cdt.core.parser.ast.IASTPointerToFunction;
 import org.eclipse.cdt.core.parser.ast.IASTPointerToMethod;
 import org.eclipse.cdt.core.parser.ast.IASTTemplateDeclaration;
 import org.eclipse.cdt.core.parser.ast.IASTTemplateInstantiation;
 import org.eclipse.cdt.core.parser.ast.IASTTemplateSpecialization;
 import org.eclipse.cdt.core.parser.ast.IASTTypedefDeclaration;
+import org.eclipse.cdt.core.parser.ast.IASTTypedefReference;
 import org.eclipse.cdt.core.parser.ast.IASTUsingDeclaration;
 import org.eclipse.cdt.core.parser.ast.IASTUsingDirective;
 import org.eclipse.cdt.core.parser.ast.IASTVariable;
+import org.eclipse.cdt.core.parser.ast.IASTVariableReference;
 
 
 public class NullSourceElementRequestor implements ISourceElementRequestor 
@@ -96,7 +102,7 @@
     /* (non-Javadoc)
      * @see org.eclipse.cdt.core.parser.ISourceElementRequestor#acceptTypedef(org.eclipse.cdt.core.parser.ast.IASTTypedef)
      */
-    public void acceptTypedef(IASTTypedefDeclaration typedef)
+    public void acceptTypedefDeclaration(IASTTypedefDeclaration typedef)
     {
         // TODO Auto-generated method stub
         
@@ -195,7 +201,7 @@
     /* (non-Javadoc)
      * @see org.eclipse.cdt.core.parser.ISourceElementRequestor#enterTemplateExplicitInstantiation(org.eclipse.cdt.core.parser.ast.IASTTemplateInstantiation)
      */
-    public void enterTemplateExplicitInstantiation(IASTTemplateInstantiation instantiation)
+    public void enterTemplateInstantiation(IASTTemplateInstantiation instantiation)
     {
         // TODO Auto-generated method stub
         
@@ -319,36 +325,90 @@
     }
 
     /* (non-Javadoc)
-     * @see org.eclipse.cdt.core.parser.ISourceElementRequestor#acceptElaboratedTypeSpecifier(org.eclipse.cdt.core.parser.ast.IASTElaboratedTypeSpecifier)
+     * @see org.eclipse.cdt.core.parser.ISourceElementRequestor#acceptAbstractTypeSpecDeclaration(org.eclipse.cdt.core.parser.ast.IASTAbstractTypeSpecifierDeclaration)
      */
-    public void acceptElaboratedTypeSpecifier(IASTElaboratedTypeSpecifier elaboratedTypeSpec)
+    public void acceptAbstractTypeSpecDeclaration(IASTAbstractTypeSpecifierDeclaration abstractDeclaration)
     {
         // TODO Auto-generated method stub
         
     }
 
     /* (non-Javadoc)
-     * @see org.eclipse.cdt.core.parser.ISourceElementRequestor#acceptAbstractTypeSpecDeclaration(org.eclipse.cdt.core.parser.ast.IASTAbstractTypeSpecifierDeclaration)
+     * @see org.eclipse.cdt.core.parser.ISourceElementRequestor#acceptPointerToFunction(org.eclipse.cdt.core.parser.ast.IASTPointerToFunction)
      */
-    public void acceptAbstractTypeSpecDeclaration(IASTAbstractTypeSpecifierDeclaration abstractDeclaration)
+    public void acceptPointerToFunction(IASTPointerToFunction function)
     {
         // TODO Auto-generated method stub
         
     }
 
     /* (non-Javadoc)
-     * @see org.eclipse.cdt.core.parser.ISourceElementRequestor#acceptPointerToFunction(org.eclipse.cdt.core.parser.ast.IASTPointerToFunction)
+     * @see org.eclipse.cdt.core.parser.ISourceElementRequestor#acceptPointerToMethod(org.eclipse.cdt.core.parser.ast.IASTPointerToMethod)
      */
-    public void acceptPointerToFunction(IASTPointerToFunction function)
+    public void acceptPointerToMethod(IASTPointerToMethod method)
     {
         // TODO Auto-generated method stub
         
     }
 
     /* (non-Javadoc)
-     * @see org.eclipse.cdt.core.parser.ISourceElementRequestor#acceptPointerToMethod(org.eclipse.cdt.core.parser.ast.IASTPointerToMethod)
+     * @see org.eclipse.cdt.core.parser.ISourceElementRequestor#acceptTypedefReference(org.eclipse.cdt.core.parser.ast.IASTTypedefReference)
      */
-    public void acceptPointerToMethod(IASTPointerToMethod method)
+    public void acceptTypedefReference(IASTTypedefReference reference)
+    {
+        // TODO Auto-generated method stub
+        
+    }
+
+    /* (non-Javadoc)
+     * @see org.eclipse.cdt.core.parser.ISourceElementRequestor#acceptNamespaceReference(org.eclipse.cdt.core.parser.ast.IASTNamespaceReference)
+     */
+    public void acceptNamespaceReference(IASTNamespaceReference reference)
+    {
+        // TODO Auto-generated method stub
+        
+    }
+
+    /* (non-Javadoc)
+     * @see org.eclipse.cdt.core.parser.ISourceElementRequestor#acceptEnumerationReference(org.eclipse.cdt.core.parser.ast.IASTEnumerationReference)
+     */
+    public void acceptEnumerationReference(IASTEnumerationReference reference)
+    {
+        // TODO Auto-generated method stub
+        
+    }
+
+    /* (non-Javadoc)
+     * @see org.eclipse.cdt.core.parser.ISourceElementRequestor#acceptVariableReference(org.eclipse.cdt.core.parser.ast.IASTVariableReference)
+     */
+    public void acceptVariableReference(IASTVariableReference reference)
+    {
+        // TODO Auto-generated method stub
+        
+    }
+
+    /* (non-Javadoc)
+     * @see org.eclipse.cdt.core.parser.ISourceElementRequestor#acceptFunctionReference(org.eclipse.cdt.core.parser.ast.IASTFunctionReference)
+     */
+    public void acceptFunctionReference(IASTFunctionReference reference)
+    {
+        // TODO Auto-generated method stub
+        
+    }
+
+    /* (non-Javadoc)
+     * @see org.eclipse.cdt.core.parser.ISourceElementRequestor#acceptFieldReference(org.eclipse.cdt.core.parser.ast.IASTFieldReference)
+     */
+    public void acceptFieldReference(IASTFieldReference reference)
+    {
+        // TODO Auto-generated method stub
+        
+    }
+
+    /* (non-Javadoc)
+     * @see org.eclipse.cdt.core.parser.ISourceElementRequestor#acceptMethodReference(org.eclipse.cdt.core.parser.ast.IASTMethodReference)
+     */
+    public void acceptMethodReference(IASTMethodReference reference)
     {
         // TODO Auto-generated method stub
         
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.71
diff -u -r1.71 Parser.java
--- parser/org/eclipse/cdt/internal/core/parser/Parser.java	18 Jul 2003 12:40:48 -0000	1.71
+++ parser/org/eclipse/cdt/internal/core/parser/Parser.java	18 Jul 2003 16:34:35 -0000
@@ -28,6 +28,7 @@
 import org.eclipse.cdt.core.parser.ast.ASTAccessVisibility;
 import org.eclipse.cdt.core.parser.ast.ASTClassKind;
 import org.eclipse.cdt.core.parser.ast.ASTPointerOperator;
+import org.eclipse.cdt.core.parser.ast.ASTSemanticException;
 import org.eclipse.cdt.core.parser.ast.IASTASMDefinition;
 import org.eclipse.cdt.core.parser.ast.IASTClassSpecifier;
 import org.eclipse.cdt.core.parser.ast.IASTCompilationUnit;
@@ -36,15 +37,10 @@
 import org.eclipse.cdt.core.parser.ast.IASTEnumerationSpecifier;
 import org.eclipse.cdt.core.parser.ast.IASTExpression;
 import org.eclipse.cdt.core.parser.ast.IASTFactory;
-import org.eclipse.cdt.core.parser.ast.IASTField;
-import org.eclipse.cdt.core.parser.ast.IASTFunction;
 import org.eclipse.cdt.core.parser.ast.IASTInitializerClause;
 import org.eclipse.cdt.core.parser.ast.IASTLinkageSpecification;
-import org.eclipse.cdt.core.parser.ast.IASTMethod;
 import org.eclipse.cdt.core.parser.ast.IASTNamespaceDefinition;
 import org.eclipse.cdt.core.parser.ast.IASTOffsetableElement;
-import org.eclipse.cdt.core.parser.ast.IASTPointerToFunction;
-import org.eclipse.cdt.core.parser.ast.IASTPointerToMethod;
 import org.eclipse.cdt.core.parser.ast.IASTScope;
 import org.eclipse.cdt.core.parser.ast.IASTSimpleTypeSpecifier;
 import org.eclipse.cdt.core.parser.ast.IASTTemplate;
@@ -52,10 +48,8 @@
 import org.eclipse.cdt.core.parser.ast.IASTTemplateInstantiation;
 import org.eclipse.cdt.core.parser.ast.IASTTemplateParameter;
 import org.eclipse.cdt.core.parser.ast.IASTTemplateSpecialization;
-import org.eclipse.cdt.core.parser.ast.IASTTypedefDeclaration;
 import org.eclipse.cdt.core.parser.ast.IASTUsingDeclaration;
 import org.eclipse.cdt.core.parser.ast.IASTUsingDirective;
-import org.eclipse.cdt.core.parser.ast.IASTVariable;
 import org.eclipse.cdt.core.parser.ast.IASTClassSpecifier.ClassNameType;
 import org.eclipse.cdt.core.parser.ast.IASTExpression.Kind;
 import org.eclipse.cdt.internal.core.model.Util;
@@ -115,11 +109,9 @@
         this.scanner = scanner;
         this.problemReporter = problemReporter;
         this.unitResult = unitResult;
-        if (callback instanceof ISourceElementRequestor)
-            setRequestor((ISourceElementRequestor)callback);
+        requestor = callback;
         this.mode = mode;
         astFactory = ParserFactory.createASTFactory(mode);
-        scanner.setMode(mode);
         scanner.setASTFactory(astFactory);
     }
     // counter that keeps track of the number of times Parser.parse() is called
@@ -157,8 +149,8 @@
     {
         IASTCompilationUnit compilationUnit =
             astFactory.createCompilationUnit();
-            
-        requestor.enterCompilationUnit(compilationUnit);
+
+		compilationUnit.enterScope( requestor );            
         IToken lastBacktrack = null;
         IToken checkToken;
         while (true)
@@ -203,7 +195,7 @@
                 // we've done the best we can
             }
         }
-        requestor.exitCompilationUnit(compilationUnit);
+        compilationUnit.exitScope( requestor );
     }
     /**
      * This function is called whenever we encounter and error that we cannot backtrack out of and we 
@@ -262,9 +254,18 @@
             if (LT(1) == IToken.tSEMI)
             {
                 IToken last = consume(IToken.tSEMI);
-                IASTUsingDirective astUD =
-                    astFactory.createUsingDirective(scope, duple, firstToken.getOffset(), last.getEndOffset());
-                requestor.acceptUsingDirective(astUD);
+                IASTUsingDirective astUD = null; 
+                
+                try
+                {
+                    astUD = astFactory.createUsingDirective(scope, duple, firstToken.getOffset(), last.getEndOffset());
+                }
+                catch (ASTSemanticException e)
+                {
+                	//TODO add in IProblem stuff here
+                	failParse(); 
+                }
+                astUD.acceptElement(requestor);
                 return;
             }
             else
@@ -295,7 +296,7 @@
                 IToken last = consume(IToken.tSEMI);
                 IASTUsingDeclaration declaration =
                     astFactory.createUsingDeclaration(scope, typeName, name, firstToken.getOffset(), last.getEndOffset());
-                requestor.acceptUsingDeclaration(declaration);
+                declaration.acceptElement( requestor );
             }
             else
             {
@@ -326,7 +327,8 @@
             consume(IToken.tLBRACE);
             IASTLinkageSpecification linkage =
                 astFactory.createLinkageSpecification(scope, spec.getImage(), firstToken.getOffset());
-            requestor.enterLinkageSpecification(linkage);
+            
+            linkage.enterScope( requestor );    
             linkageDeclarationLoop : while (LT(1) != IToken.tRBRACE)
             {
                 IToken checkToken = LA(1);
@@ -353,15 +355,15 @@
             // consume the }
             IToken lastToken = consume();
             linkage.setEndingOffset(lastToken.getEndOffset());
-            requestor.exitLinkageSpecification(linkage);
+            linkage.exitScope( requestor );
         }
         else // single declaration
             {
             IASTLinkageSpecification linkage =
                 astFactory.createLinkageSpecification(scope, spec.getImage(), firstToken.getOffset());
-            requestor.enterLinkageSpecification(linkage);
+			linkage.enterScope( requestor );
             declaration(linkage, null);
-            requestor.exitLinkageSpecification(linkage);
+			linkage.exitScope( requestor );
         }
     }
     /**
@@ -396,10 +398,10 @@
                 astFactory.createTemplateInstantiation(
                     scope,
                     firstToken.getOffset());
-            requestor.enterTemplateExplicitInstantiation(templateInstantiation);
+            templateInstantiation.enterScope( requestor );
             declaration(scope, templateInstantiation);
             templateInstantiation.setEndingOffset(lastToken.getEndOffset());
-            requestor.exitTemplateExplicitInstantiation(templateInstantiation);
+			templateInstantiation.exitScope( requestor );
  
             return;
         }
@@ -415,11 +417,11 @@
                     astFactory.createTemplateSpecialization(
                         scope,
                         firstToken.getOffset());
-                requestor.enterTemplateSpecialization(templateSpecialization);
+				templateSpecialization.enterScope(requestor);
                 declaration(scope, templateSpecialization);
                 templateSpecialization.setEndingOffset(
                     lastToken.getEndOffset());
-                requestor.exitTemplateSpecialization(templateSpecialization);
+                templateSpecialization.exitScope(requestor);
                 return;
             }
         }
@@ -429,10 +431,9 @@
             List parms = templateParameterList();
             consume(IToken.tGT);
             IASTTemplateDeclaration templateDecl = astFactory.createTemplateDeclaration( scope, parms, exported, firstToken.getOffset() );
-            requestor.enterTemplateDeclaration( templateDecl );
+            templateDecl.enterScope( requestor );
             declaration(scope, templateDecl );
-            templateDecl.setEndingOffset( lastToken.getEndOffset() );
-            requestor.exitTemplateDeclaration( templateDecl );
+			templateDecl.exitScope( requestor );
             
         }
         catch (Backtrack bt)
@@ -617,8 +618,7 @@
                         last.getEndOffset());
                 // if we made it this far, then we have all we need 
                 // do the callback
- 
-                requestor.acceptASMDefinition(asmDefinition);
+ 				asmDefinition.acceptElement(requestor);
                 return;
             case IToken.t_namespace :
                 namespaceDefinition(scope);
@@ -690,7 +690,7 @@
                     (identifier == null ? "" : identifier.getImage()),
                     first.getOffset(),
                     (identifier == null ? 0 : identifier.getOffset()));
-            requestor.enterNamespaceDefinition(namespaceDefinition);
+            namespaceDefinition.enterScope( requestor );
             namepsaceDeclarationLoop : while (LT(1) != IToken.tRBRACE)
             {
                 IToken checkToken = LA(1);
@@ -719,7 +719,7 @@
  
             namespaceDefinition.setEndingOffset(
                 last.getOffset() + last.getLength());
-            requestor.exitNamespaceDefinition(namespaceDefinition);
+            namespaceDefinition.exitScope( requestor );
         }
         else
         {
@@ -830,56 +830,30 @@
                     IASTDeclaration declaration = (IASTDeclaration)i.next();
                     ((IASTOffsetableElement)declaration).setEndingOffset(
                         lastToken.getEndOffset());
-                    if (declaration instanceof IASTField)
-                        requestor.acceptField((IASTField)declaration);
-                    else if (declaration instanceof IASTVariable)
-                        requestor.acceptVariable((IASTVariable)declaration);
-                    else if (declaration instanceof IASTMethod)
-                        requestor.acceptMethodDeclaration(
-                            (IASTMethod)declaration);
-                    else if (declaration instanceof IASTFunction)
-                        requestor.acceptFunctionDeclaration(
-                            (IASTFunction)declaration);
-                    else if (declaration instanceof IASTTypedefDeclaration)
-                        requestor.acceptTypedef((IASTTypedefDeclaration)declaration);
-                    else if (declaration instanceof IASTPointerToFunction )
-                    	requestor.acceptPointerToFunction( (IASTPointerToFunction)declaration ); 
-					else if (declaration instanceof IASTPointerToMethod )
-						requestor.acceptPointerToMethod( (IASTPointerToMethod)declaration );                     
-                    else
-                    {
-                       failParse();
-                       throw backtrack; //TODO Should be an IProblem
-                    }
+                    declaration.acceptElement( requestor );
                 }
             }
             else
             {
                 IASTDeclaration declaration = (IASTDeclaration)i.next();
-                if (declaration instanceof IASTMethod)
-                    requestor.enterMethodBody((IASTMethod)declaration);
-                else if (declaration instanceof IASTFunction)
-                    requestor.enterFunctionBody((IASTFunction)declaration);
-                else
-                {
-                    if (hasFunctionBody && l.size() != 1)
-                    {
-                        failParse();
-                        throw backtrack; //TODO Should be an IProblem
-                    }
-                }
+                declaration.enterScope( requestor );
    
                 handleFunctionBody(declarator);
   
-                if (declaration instanceof IASTMethod)
-                    requestor.exitMethodBody((IASTMethod)declaration);
-                else if (declaration instanceof IASTFunction)
-                    requestor.exitFunctionBody((IASTFunction)declaration);
+  				declaration.exitScope( requestor );
             }
         }
         else
-        	requestor.acceptAbstractTypeSpecDeclaration( astFactory.createTypeSpecDeclaration(
-        		sdw.getScope(), sdw.getTypeSpecifier(), ownerTemplate, sdw.getStartingOffset(), lastToken.getEndOffset()) );
+        {
+            astFactory
+                .createTypeSpecDeclaration(
+                    sdw.getScope(),
+                    sdw.getTypeSpecifier(),
+                    ownerTemplate,
+                    sdw.getStartingOffset(),
+                    lastToken.getEndOffset())
+                .acceptElement(requestor);
+        }
         
     }
     protected void handleFunctionBody(Declarator d) throws Backtrack, EndOfFile
@@ -1458,8 +1432,6 @@
                 t.getOffset(),
                 d.getLastToken().getEndOffset());
         sdw.setTypeSpecifier(elaboratedTypeSpec);
-        requestor.acceptElaboratedTypeSpecifier(elaboratedTypeSpec);
-
     }
     /**
      * Consumes template parameters.  
@@ -2185,7 +2157,7 @@
             }
             IToken t = consume(IToken.tRBRACE);
             enumeration.setEndingOffset(t.getEndOffset());
-            requestor.acceptEnumerationSpecifier(enumeration);
+            enumeration.acceptElement( requestor );
             sdw.setTypeSpecifier(enumeration);
         }
         else
@@ -2263,7 +2235,7 @@
         if (LT(1) == IToken.tLBRACE)
         {
             consume(IToken.tLBRACE);
-            requestor.enterClassSpecifier(astClassSpecifier);
+            astClassSpecifier.enterScope( requestor );
             memberDeclarationLoop : while (LT(1) != IToken.tRBRACE)
             {
                 IToken checkToken = LA(1);
@@ -2306,7 +2278,7 @@
             // consume the }
             IToken lastToken = consume(IToken.tRBRACE);
             astClassSpecifier.setEndingOffset(lastToken.getEndOffset());
-            requestor.exitClassSpecifier(astClassSpecifier);
+            astClassSpecifier.exitScope( requestor );
         }
     }
     /**
@@ -4068,13 +4040,5 @@
     {
         return firstErrorOffset;
     }
-    /* (non-Javadoc)
-     * @see org.eclipse.cdt.core.parser.IParser#setRequestor(org.eclipse.cdt.core.parser.ISourceElementRequestor)
-     */
-    public void setRequestor(ISourceElementRequestor r)
-    {
-        requestor = r;
-        if (scanner != null)
-            scanner.setRequestor(r);
-    }
+
 }
Index: parser/org/eclipse/cdt/internal/core/parser/Preprocessor.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/Preprocessor.java,v
retrieving revision 1.4
diff -u -r1.4 Preprocessor.java
--- parser/org/eclipse/cdt/internal/core/parser/Preprocessor.java	9 Jul 2003 00:47:42 -0000	1.4
+++ parser/org/eclipse/cdt/internal/core/parser/Preprocessor.java	18 Jul 2003 16:34:35 -0000
@@ -16,7 +16,9 @@
 import org.eclipse.cdt.core.parser.IPreprocessor;
 import org.eclipse.cdt.core.parser.IProblemReporter;
 import org.eclipse.cdt.core.parser.IScannerInfo;
+import org.eclipse.cdt.core.parser.ISourceElementRequestor;
 import org.eclipse.cdt.core.parser.ITranslationResult;
+import org.eclipse.cdt.core.parser.ParserMode;
 import org.eclipse.cdt.core.parser.ScannerException;
 
 
@@ -31,8 +33,8 @@
 	 * @param filename
 	 * @param defns
 	 */
-	public Preprocessor(Reader reader, String filename, IScannerInfo info, IProblemReporter problemReporter, ITranslationResult unitResult) {
-        super(reader, filename, info, problemReporter, unitResult);
+	public Preprocessor(Reader reader, String filename, IScannerInfo info, ISourceElementRequestor requestor, IProblemReporter problemReporter, ITranslationResult unitResult, ParserMode mode) {
+        super(reader, filename, info, problemReporter, unitResult, requestor, mode );
     }
 
 	public void process()
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.40
diff -u -r1.40 Scanner.java
--- parser/org/eclipse/cdt/internal/core/parser/Scanner.java	17 Jul 2003 20:15:13 -0000	1.40
+++ parser/org/eclipse/cdt/internal/core/parser/Scanner.java	18 Jul 2003 16:34:36 -0000
@@ -42,7 +42,6 @@
 import org.eclipse.cdt.core.parser.ast.IASTExpression;
 import org.eclipse.cdt.core.parser.ast.IASTFactory;
 import org.eclipse.cdt.core.parser.ast.IASTInclusion;
-import org.eclipse.cdt.core.parser.ast.IASTMacro;
 
 
 /**
@@ -52,7 +51,11 @@
 
 public class Scanner implements IScanner {
    
-	public Scanner(Reader reader, String filename, IScannerInfo info, IProblemReporter problemReporter, ITranslationResult unitResult) {
+	public Scanner(Reader reader, String filename, IScannerInfo info, IProblemReporter problemReporter, ITranslationResult unitResult, ISourceElementRequestor requestor, ParserMode parserMode ) {
+		this.requestor = requestor;
+		this.mode = parserMode;
+		astFactory = ParserFactory.createASTFactory( mode );
+		
 		try {
 			//this is a hack to get around a sudden EOF experience
 			contextStack.push(
@@ -381,11 +384,8 @@
 		tokenizingMacroReplacementList = mr;
 	}
 	
-	private ParserMode mode = ParserMode.COMPLETE_PARSE;
+	private final ParserMode mode;
 	
-	public void setMode(ParserMode mode) {
-		this.mode = mode;
-	}
 
 	private int getChar() throws ScannerException
 	{
@@ -1656,13 +1656,14 @@
 		}
 		else
 		{	
+			final NullSourceElementRequestor nullCallback = new NullSourceElementRequestor();
 			IScanner trial =
 				ParserFactory.createScanner(
 					new StringReader(expression + ";"),
 						EXPRESSION,
 						new ScannerInfo( definitions, originalConfig.getIncludePaths()), 
-						ParserMode.QUICK_PARSE );
-			IParser parser = ParserFactory.createParser(trial, new NullSourceElementRequestor(), ParserMode.QUICK_PARSE );
+						ParserMode.QUICK_PARSE, nullCallback );
+            IParser parser = ParserFactory.createParser(trial, nullCallback, ParserMode.QUICK_PARSE );
  
 			try {
 				IASTExpression exp = parser.expression();
@@ -1812,9 +1813,9 @@
 			if( requestor != null )
 			{
 				IASTInclusion i = astFactory.createInclusion( f, "", !useIncludePath, beginningOffset, 
-					contextStack.getCurrentContext().getOffset(), offset ); 
-				requestor.enterInclusion(i);
-				requestor.exitInclusion(i);
+					contextStack.getCurrentContext().getOffset(), offset );
+				i.enterScope( requestor );
+				i.exitScope( requestor );					 
 			}
 		}
 		else
@@ -1894,7 +1895,7 @@
 			
 			if( ! replacementString.equals( "" ) )
 			{
-				IScanner helperScanner = ParserFactory.createScanner( new StringReader(replacementString), null, new ScannerInfo( ), mode, problemReporter, translationResult );
+				IScanner helperScanner = ParserFactory.createScanner( new StringReader(replacementString), null, new ScannerInfo( ), mode, new NullSourceElementRequestor(), problemReporter, translationResult );
 				helperScanner.setTokenizingMacroReplacementList( true );
 				IToken t = helperScanner.nextToken(false);
 	
@@ -1976,16 +1977,12 @@
 				throw new ScannerException(BAD_PP + contextStack.getCurrentContext().getOffset());
 		}
 		
-		if( requestor != null )
-		{
-			IASTMacro m = astFactory.createMacro( key, beginning, contextStack.getCurrentContext().getOffset(), offset ); 
-			requestor.acceptMacro(m);
-		}
+		astFactory.createMacro( key, beginning, contextStack.getCurrentContext().getOffset(), offset ).acceptElement( requestor ); 
 	}
     
     protected Vector getMacroParameters (String params, boolean forStringizing) throws ScannerException {
         
-        IScanner tokenizer  = ParserFactory.createScanner(new StringReader(params), TEXT, new ScannerInfo( definitions, originalConfig.getIncludePaths() ), mode, problemReporter, translationResult );
+        IScanner tokenizer  = ParserFactory.createScanner(new StringReader(params), TEXT, new ScannerInfo( definitions, originalConfig.getIncludePaths() ), mode, new NullSourceElementRequestor(), problemReporter, translationResult );
         Vector parameterValues = new Vector();
         Token t = null;
         String str = new String();
@@ -2204,16 +2201,8 @@
 	public void setCppNature(boolean value) {
 		cppNature = value; 
 	}
-
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.cdt.internal.core.parser.IScanner#setRequestor(org.eclipse.cdt.core.parser.ISourceElementRequestor)
-	 */
-	public void setRequestor(ISourceElementRequestor r) {
-		requestor = r; 
-	}
 	
-	private ISourceElementRequestor requestor = null;
+	private final ISourceElementRequestor requestor;
 	private IASTFactory astFactory = null; 
 	
 	/* (non-Javadoc)
Index: parser/org/eclipse/cdt/internal/core/parser/ast/ASTInclusion.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/ast/ASTInclusion.java,v
retrieving revision 1.3
diff -u -r1.3 ASTInclusion.java
--- parser/org/eclipse/cdt/internal/core/parser/ast/ASTInclusion.java	17 Jul 2003 20:15:13 -0000	1.3
+++ parser/org/eclipse/cdt/internal/core/parser/ast/ASTInclusion.java	18 Jul 2003 16:34:36 -0000
@@ -10,6 +10,7 @@
 ***********************************************************************/
 package org.eclipse.cdt.internal.core.parser.ast;
 
+import org.eclipse.cdt.core.parser.ISourceElementRequestor;
 import org.eclipse.cdt.core.parser.ast.IASTInclusion;
 
 /**
@@ -93,5 +94,30 @@
 	public void setElementNameOffset(int o) {
 		nameOffset = o;
 	}
+
+    /* (non-Javadoc)
+     * @see org.eclipse.cdt.core.parser.ISourceElementCallbackDelegate#acceptElement(org.eclipse.cdt.core.parser.ISourceElementRequestor)
+     */
+    public void acceptElement(ISourceElementRequestor requestor)
+    {
+        // TODO Auto-generated method stub
+        
+    }
+
+    /* (non-Javadoc)
+     * @see org.eclipse.cdt.core.parser.ISourceElementCallbackDelegate#enterScope(org.eclipse.cdt.core.parser.ISourceElementRequestor)
+     */
+    public void enterScope(ISourceElementRequestor requestor)
+    {
+		requestor.enterInclusion(this);
+    }
+
+    /* (non-Javadoc)
+     * @see org.eclipse.cdt.core.parser.ISourceElementCallbackDelegate#exitScope(org.eclipse.cdt.core.parser.ISourceElementRequestor)
+     */
+    public void exitScope(ISourceElementRequestor requestor)
+    {
+    	requestor.exitInclusion(this);
+    }
 
 }
Index: parser/org/eclipse/cdt/internal/core/parser/ast/ASTMacro.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/ast/ASTMacro.java,v
retrieving revision 1.3
diff -u -r1.3 ASTMacro.java
--- parser/org/eclipse/cdt/internal/core/parser/ast/ASTMacro.java	17 Jul 2003 20:15:13 -0000	1.3
+++ parser/org/eclipse/cdt/internal/core/parser/ast/ASTMacro.java	18 Jul 2003 16:34:36 -0000
@@ -10,6 +10,7 @@
 ***********************************************************************/
 package org.eclipse.cdt.internal.core.parser.ast;
 
+import org.eclipse.cdt.core.parser.ISourceElementRequestor;
 import org.eclipse.cdt.core.parser.ast.IASTMacro;
 
 /**
@@ -68,5 +69,24 @@
 	public int getElementNameOffset() {
 		return nameOffset;
 	}
+    /* (non-Javadoc)
+     * @see org.eclipse.cdt.core.parser.ISourceElementCallbackDelegate#acceptElement(org.eclipse.cdt.core.parser.ISourceElementRequestor)
+     */
+    public void acceptElement(ISourceElementRequestor requestor)
+    {
+    	requestor.acceptMacro( this );
+    }
+    /* (non-Javadoc)
+     * @see org.eclipse.cdt.core.parser.ISourceElementCallbackDelegate#enterScope(org.eclipse.cdt.core.parser.ISourceElementRequestor)
+     */
+    public void enterScope(ISourceElementRequestor requestor)
+    {
+    }
+    /* (non-Javadoc)
+     * @see org.eclipse.cdt.core.parser.ISourceElementCallbackDelegate#exitScope(org.eclipse.cdt.core.parser.ISourceElementRequestor)
+     */
+    public void exitScope(ISourceElementRequestor requestor)
+    {
+    }
 
 }
Index: parser/org/eclipse/cdt/internal/core/parser/ast/full/ASTASMDefinition.java
===================================================================
RCS file: parser/org/eclipse/cdt/internal/core/parser/ast/full/ASTASMDefinition.java
diff -N parser/org/eclipse/cdt/internal/core/parser/ast/full/ASTASMDefinition.java
--- parser/org/eclipse/cdt/internal/core/parser/ast/full/ASTASMDefinition.java	13 Jun 2003 15:01:21 -0000	1.2
+++ /dev/null	1 Jan 1970 00:00:00 -0000
@@ -1,78 +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.ast.full;
-
-import org.eclipse.cdt.core.parser.ast.IASTScope;
-import org.eclipse.cdt.internal.core.parser.pst.ISymbol;
-
-
-/**
- * @author jcamelon
- *
- */
-public class ASTASMDefinition implements IASTFASMDefinition {
-
-	private final String body; 
-	
-	public ASTASMDefinition( ISymbol s, String body )
-	{
-		this.symbol = s;
-		this.body = body;
-	}
-	
-	private int startingOffset, endingOffset;
-	/* (non-Javadoc)
-	 * @see org.eclipse.cdt.core.parser.ast.IASTASMDefinition#getBody()
-	 */
-	public String getBody() {
-		return body;
-	}
-	/* (non-Javadoc)
-	 * @see org.eclipse.cdt.core.parser.ast.IOffsetableElement#setStartingOffset(int)
-	 */
-	public void setStartingOffset(int o) {
-		startingOffset = o;
-		
-	}
-	/* (non-Javadoc)
-	 * @see org.eclipse.cdt.core.parser.ast.IOffsetableElement#setEndingOffset(int)
-	 */
-	public void setEndingOffset(int o) {
-		endingOffset = o;
-		
-	}
-	/* (non-Javadoc)
-	 * @see org.eclipse.cdt.core.parser.ast.IOffsetableElement#getElementStartingOffset()
-	 */
-	public int getElementStartingOffset() {
-		return startingOffset;
-	}
-	/* (non-Javadoc)
-	 * @see org.eclipse.cdt.core.parser.ast.IOffsetableElement#getElementEndingOffset()
-	 */
-	public int getElementEndingOffset() {
-		return endingOffset;
-	}
-	/* (non-Javadoc)
-	 * @see org.eclipse.cdt.internal.core.parser.ast.ISymbolTableExtension#getSymbol()
-	 */
-	
-	private final ISymbol symbol; 
-	public ISymbol getSymbol() {
-		return symbol;
-	}
-	/* (non-Javadoc)
-	 * @see org.eclipse.cdt.core.parser.ast.IASTDeclaration#getOwnerScope()
-	 */
-	public IASTScope getOwnerScope() {
-		return (IPSTContainerExtension)symbol.getContainingSymbol().getASTNode();
-	}
-}
Index: parser/org/eclipse/cdt/internal/core/parser/ast/full/ASTBaseSpecifier.java
===================================================================
RCS file: parser/org/eclipse/cdt/internal/core/parser/ast/full/ASTBaseSpecifier.java
diff -N parser/org/eclipse/cdt/internal/core/parser/ast/full/ASTBaseSpecifier.java
--- parser/org/eclipse/cdt/internal/core/parser/ast/full/ASTBaseSpecifier.java	17 Jul 2003 20:15:13 -0000	1.1
+++ /dev/null	1 Jan 1970 00:00:00 -0000
@@ -1,64 +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.ast.full;
-
-import org.eclipse.cdt.core.parser.ast.ASTAccessVisibility;
-import org.eclipse.cdt.core.parser.ast.ASTNotImplementedException;
-import org.eclipse.cdt.core.parser.ast.IASTBaseSpecifier;
-import org.eclipse.cdt.core.parser.ast.IASTClassSpecifier;
-
-/**
- * @author jcamelon
- *
- */
-public class ASTBaseSpecifier implements IASTBaseSpecifier {
-
-	private final IASTClassSpecifier baseClass; 
-	private final boolean isVirtual;
-	private final ASTAccessVisibility visibility; 
-	
-	public ASTBaseSpecifier( IASTClassSpecifier classSpec, ASTAccessVisibility a, boolean virtual )
-	{
-		isVirtual = virtual; 
-		baseClass = classSpec; 
-		visibility = a; 
-	}
-	
-	/* (non-Javadoc)
-	 * @see org.eclipse.cdt.core.parser.ast.IASTBaseSpecifier#getAccess()
-	 */
-	public ASTAccessVisibility getAccess() {
-		return visibility;
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.cdt.core.parser.ast.IASTBaseSpecifier#isVirtual()
-	 */
-	public boolean isVirtual() {
-		return isVirtual;
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.cdt.core.parser.ast.IASTBaseSpecifier#getParent()
-	 */
-	public String getParentClassName() {
-		return baseClass.getName();
-	}
-
-    /* (non-Javadoc)
-     * @see org.eclipse.cdt.core.parser.ast.IASTBaseSpecifier#getParentClassSpecifier()
-     */
-    public IASTClassSpecifier getParentClassSpecifier() throws ASTNotImplementedException
-    {
-        return baseClass;
-    }
-
-}
Index: parser/org/eclipse/cdt/internal/core/parser/ast/full/ASTClassSpecifier.java
===================================================================
RCS file: parser/org/eclipse/cdt/internal/core/parser/ast/full/ASTClassSpecifier.java
diff -N parser/org/eclipse/cdt/internal/core/parser/ast/full/ASTClassSpecifier.java
--- parser/org/eclipse/cdt/internal/core/parser/ast/full/ASTClassSpecifier.java	17 Jul 2003 20:15:13 -0000	1.9
+++ /dev/null	1 Jan 1970 00:00:00 -0000
@@ -1,174 +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.ast.full;
-
-import java.util.Iterator;
-
-import org.eclipse.cdt.core.parser.ast.ASTAccessVisibility;
-import org.eclipse.cdt.core.parser.ast.ASTClassKind;
-import org.eclipse.cdt.core.parser.ast.IASTScope;
-import org.eclipse.cdt.core.parser.ast.IASTTemplate;
-import org.eclipse.cdt.core.parser.ast.IASTTemplateDeclaration;
-import org.eclipse.cdt.internal.core.parser.pst.IDerivableContainerSymbol;
-import org.eclipse.cdt.internal.core.parser.pst.ISymbol;
-import org.eclipse.cdt.internal.core.parser.pst.ParserSymbolTable;
-
-/**
- * @author jcamelon
- *
- */
-public class ASTClassSpecifier implements IASTFClassSpecifier, IPSTSymbolExtension {
-
-    private final IDerivableContainerSymbol symbol;
-	private final ASTClassKind classKind;
-	private final ClassNameType type;
-	private final String name;   
-
-	public ASTClassSpecifier( IDerivableContainerSymbol symbol, String name, ClassNameType type, ASTClassKind kind )
-	{
-		this.name = name; 
-		this.symbol = symbol;
-		this.classKind = kind;
-		this.type = type; 
-		symbol.setASTNode( this );
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.cdt.core.parser.ast.IASTScope#getDeclarations()
-	 */
-	public Iterator getDeclarations() {
-		return new ScopeIterator( symbol.getContainedSymbols());
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.cdt.core.parser.ast.IASTClassSpecifier#getClassNameType()
-	 */
-	public ClassNameType getClassNameType() {
-		return type;
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.cdt.core.parser.ast.IASTClassSpecifier#getClassKind()
-	 */
-	public ASTClassKind getClassKind() {
-		return classKind;
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.cdt.core.parser.ast.IASTClassSpecifier#getBaseClauses()
-	 */
-	public Iterator getBaseClauses() {
-		return new BaseIterator( symbol.getParents() );
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.cdt.core.parser.ast.IASTOffsetableNamedElement#getName()
-	 */
-	public String getName() {
-		return name;
-	}
-
-	private int nameOffset = 0, startingOffset = 0, endingOffset = 0; 
-	/* (non-Javadoc)
-	 * @see org.eclipse.cdt.core.parser.ast.IASTOffsetableNamedElement#getElementNameOffset()
-	 */
-	public int getElementNameOffset() {
-		return nameOffset;
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.cdt.core.parser.ast.IASTOffsetableNamedElement#setNameOffset(int)
-	 */
-	public void setElementNameOffset(int o) {
-		nameOffset = o;
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.cdt.core.parser.ast.IASTTemplatedDeclaration#getOwnerTemplateDeclaration()
-	 */
-	public IASTTemplate getOwnerTemplateDeclaration() {
-		if( getSymbol().getContainingSymbol().getType() == ParserSymbolTable.TypeInfo.t_template )
-			return (IASTTemplateDeclaration)getSymbol().getContainingSymbol().getASTNode();
-		return null;
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.cdt.core.parser.ast.IASTOffsetableElement#setStartingOffset(int)
-	 */
-	public void setStartingOffset(int o) {
-		startingOffset = o;
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.cdt.core.parser.ast.IASTOffsetableElement#setEndingOffset(int)
-	 */
-	public void setEndingOffset(int o) {
-		endingOffset = o;
-
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.cdt.core.parser.ast.IASTOffsetableElement#getElementStartingOffset()
-	 */
-	public int getElementStartingOffset() {
-		return startingOffset;
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.cdt.core.parser.ast.IASTOffsetableElement#getElementEndingOffset()
-	 */
-	public int getElementEndingOffset() {
-		return endingOffset;
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.cdt.internal.core.parser.ast.IPSTSymbolExtension#getSymbol()
-	 */
-	public ISymbol getSymbol() {
-		return symbol;
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.cdt.core.parser.ast.IASTClassSpecifier#getCurrentVisiblity()
-	 */
-	public ASTAccessVisibility getCurrentVisibilityMode() {
-		// TODO Auto-generated method stub
-		return null;
-	}
-
-    /* (non-Javadoc)
-     * @see org.eclipse.cdt.core.parser.ast.IASTClassSpecifier#getFullyQualifiedName()
-     */
-    public String[] getFullyQualifiedName()
-    {
-        // TODO Auto-generated method stub
-        return null;
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.cdt.core.parser.ast.IASTClassSpecifier#setCurrentVisibility(org.eclipse.cdt.core.parser.ast.ASTAccessVisibility)
-     */
-    public void setCurrentVisibility(ASTAccessVisibility visibility)
-    {
-        // TODO Auto-generated method stub
-        
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.cdt.core.parser.ast.IASTScopedElement#getOwnerScope()
-     */
-    public IASTScope getOwnerScope()
-    {
-        return null;
-    }
-
-
-}
Index: parser/org/eclipse/cdt/internal/core/parser/ast/full/ASTCompilationUnit.java
===================================================================
RCS file: parser/org/eclipse/cdt/internal/core/parser/ast/full/ASTCompilationUnit.java
diff -N parser/org/eclipse/cdt/internal/core/parser/ast/full/ASTCompilationUnit.java
--- parser/org/eclipse/cdt/internal/core/parser/ast/full/ASTCompilationUnit.java	13 Jun 2003 15:01:21 -0000	1.2
+++ /dev/null	1 Jan 1970 00:00:00 -0000
@@ -1,50 +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.ast.full;
-
-import java.util.Iterator;
-
-import org.eclipse.cdt.internal.core.parser.pst.IContainerSymbol;
-import org.eclipse.cdt.internal.core.parser.pst.ISymbol;
-
-/**
- * @author jcamelon
- *
- */
-public class ASTCompilationUnit implements IASTFCompilationUnit {
-
-	public ASTCompilationUnit( IContainerSymbol symbol )
-	{
-		this.symbol = symbol;
-		symbol.setASTNode( this );
-	}
-	/* (non-Javadoc)
-	 * @see org.eclipse.cdt.core.parser.ast.IScope#getDeclarations()
-	 */
-	public Iterator getDeclarations() {
-		return new ScopeIterator( symbol.getContainedSymbols() );
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.cdt.internal.core.parser.ast.ISymbolTableExtension#getSymbol()
-	 */
-	public IContainerSymbol getContainerSymbol() {
-		return symbol;
-	}
-
-	private final IContainerSymbol symbol;
-	/* (non-Javadoc)
-	 * @see org.eclipse.cdt.internal.core.parser.ast.IPSTSymbolExtension#getSymbol()
-	 */
-	public ISymbol getSymbol() {
-		return symbol;
-	}
-}
Index: parser/org/eclipse/cdt/internal/core/parser/ast/full/ASTLinkageSpecification.java
===================================================================
RCS file: parser/org/eclipse/cdt/internal/core/parser/ast/full/ASTLinkageSpecification.java
diff -N parser/org/eclipse/cdt/internal/core/parser/ast/full/ASTLinkageSpecification.java
--- parser/org/eclipse/cdt/internal/core/parser/ast/full/ASTLinkageSpecification.java	17 Jul 2003 20:15:13 -0000	1.3
+++ /dev/null	1 Jan 1970 00:00:00 -0000
@@ -1,100 +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.ast.full;
-
-import java.util.Iterator;
-
-import org.eclipse.cdt.core.parser.ast.IASTScope;
-import org.eclipse.cdt.internal.core.parser.ast.Offsets;
-import org.eclipse.cdt.internal.core.parser.pst.IContainerSymbol;
-import org.eclipse.cdt.internal.core.parser.pst.ISymbol;
-
-/**
- * @author jcamelon
- *
- */
-public class ASTLinkageSpecification implements IASTFLinkageSpecification {
-
-	public ASTLinkageSpecification( IContainerSymbol symbol, String linkage, int startingOffset )
-	{
-		this.symbol = symbol;
-		symbol.setASTNode( this );
-		this.linkage = linkage;  
-		setStartingOffset(startingOffset);
-	}
-	/* (non-Javadoc)
-	 * @see org.eclipse.cdt.core.parser.ast.IASTScope#getDeclarations()
-	 */
-	public Iterator getDeclarations() {
-		return new ScopeIterator( symbol.getContainedSymbols() );
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.cdt.internal.core.parser.ast.IPSTSymbolExtension#getSymbol()
-	 */
-	public IContainerSymbol getContainerSymbol() {
-		return symbol;
-	}
-	
-	private final IContainerSymbol symbol;
-	private final String linkage; 
-	
-	/* (non-Javadoc)
-	 * @see org.eclipse.cdt.core.parser.ast.IASTLinkageSpecification#getLinkageString()
-	 */
-	public String getLinkageString() {
-		return linkage;
-	}
-	/* (non-Javadoc)
-	 * @see org.eclipse.cdt.internal.core.parser.ast.IPSTSymbolExtension#getSymbol()
-	 */
-	public ISymbol getSymbol() {
-		return symbol;
-	} 
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.cdt.core.parser.ast.IASTDeclaration#getOwnerScope()
-	 */
-	public IASTScope getOwnerScope() {
-		return (IPSTContainerExtension)symbol.getContainingSymbol().getASTNode();
-	}
-
-	/* (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();
-	}
-	private Offsets offsets = new Offsets();
-
-}
Index: parser/org/eclipse/cdt/internal/core/parser/ast/full/ASTNamespaceDefinition.java
===================================================================
RCS file: parser/org/eclipse/cdt/internal/core/parser/ast/full/ASTNamespaceDefinition.java
diff -N parser/org/eclipse/cdt/internal/core/parser/ast/full/ASTNamespaceDefinition.java
--- parser/org/eclipse/cdt/internal/core/parser/ast/full/ASTNamespaceDefinition.java	17 Jul 2003 20:15:13 -0000	1.4
+++ /dev/null	1 Jan 1970 00:00:00 -0000
@@ -1,121 +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.ast.full;
-
-import java.util.Iterator;
-
-import org.eclipse.cdt.core.parser.ast.IASTScope;
-import org.eclipse.cdt.internal.core.parser.pst.IContainerSymbol;
-import org.eclipse.cdt.internal.core.parser.pst.ISymbol;
-
-
-/**
- * @author jcamelon
- *
- */
-public class ASTNamespaceDefinition implements IASTFNamespaceDefinition {
-
-	public ASTNamespaceDefinition( IContainerSymbol symbol, String name )
-	{
-		this.symbol = symbol;
-		this.name = name;
-	}
-
-	private final String name; 
-	/* (non-Javadoc)
-	 * @see org.eclipse.cdt.core.parser.ast.IASTNamespaceDefinition#getName()
-	 */
-	public String getName() {
-		return name;
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.cdt.core.parser.ast.IASTScope#getDeclarations()
-	 */
-	public Iterator getDeclarations() {
-		return new ScopeIterator( symbol.getContainedSymbols() );
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.cdt.internal.core.parser.ast.IPSTSymbolExtension#getSymbol()
-	 */
-	public ISymbol getSymbol() {
-		return symbol;
-	}
-
-	private final IContainerSymbol symbol;
-
-	private int nameOffset = 0, startingOffset = 0, endingOffset = 0;
-	/* (non-Javadoc)
-	 * @see org.eclipse.cdt.core.parser.ast.IASTOffsetableNamedElement#getElementNameOffset()
-	 */
-	public int getElementNameOffset() {
-		return nameOffset;
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.cdt.core.parser.ast.IASTOffsetableNamedElement#setNameOffset(int)
-	 */
-	public void setElementNameOffset(int o) {
-		nameOffset = o;
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.cdt.core.parser.ast.IASTOffsetableElement#setStartingOffset(int)
-	 */
-	public void setStartingOffset(int o) {
-		startingOffset = o;
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.cdt.core.parser.ast.IASTOffsetableElement#setEndingOffset(int)
-	 */
-	public void setEndingOffset(int o) {
-		endingOffset = o;	
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.cdt.core.parser.ast.IASTOffsetableElement#getElementStartingOffset()
-	 */
-	public int getElementStartingOffset() {
-		return startingOffset;
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.cdt.core.parser.ast.IASTOffsetableElement#getElementEndingOffset()
-	 */
-	public int getElementEndingOffset() {
-		return endingOffset;
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.cdt.internal.core.parser.ast.IPSTContainerExtension#getContainerSymbol()
-	 */
-	public IContainerSymbol getContainerSymbol() {
-		return symbol;
-	}
-	
-	/* (non-Javadoc)
-	 * @see org.eclipse.cdt.core.parser.ast.IASTDeclaration#getOwnerScope()
-	 */
-	public IASTScope getOwnerScope() {
-		return (IPSTContainerExtension)symbol.getContainingSymbol().getASTNode();
-	}
-
-    /* (non-Javadoc)
-     * @see org.eclipse.cdt.core.parser.ast.IASTQualifiedNameElement#getFullyQualifiedName()
-     */
-    public String[] getFullyQualifiedName()
-    {
-        // TODO Auto-generated method stub
-        return null;
-    } 
-}
Index: parser/org/eclipse/cdt/internal/core/parser/ast/full/ASTUsingDirective.java
===================================================================
RCS file: parser/org/eclipse/cdt/internal/core/parser/ast/full/ASTUsingDirective.java
diff -N parser/org/eclipse/cdt/internal/core/parser/ast/full/ASTUsingDirective.java
--- parser/org/eclipse/cdt/internal/core/parser/ast/full/ASTUsingDirective.java	17 Jul 2003 20:15:13 -0000	1.3
+++ /dev/null	1 Jan 1970 00:00:00 -0000
@@ -1,74 +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.ast.full;
-
-import org.eclipse.cdt.core.parser.ast.IASTScope;
-import org.eclipse.cdt.core.parser.ast.IASTUsingDirective;
-import org.eclipse.cdt.internal.core.parser.ast.Offsets;
-
-/**
- * @author jcamelon
- *
- */
-public class ASTUsingDirective implements IASTUsingDirective {
-
-	private final String namespaceName;
-	private Offsets offsets = new Offsets();
-	
-	public ASTUsingDirective( String namespace, int startingOffset, int endingOffset )
-	{
-		namespaceName = namespace;
-		offsets.setStartingOffset(startingOffset);
-		offsets.setEndingOffset( endingOffset );
-	}
-	/* (non-Javadoc)
-	 * @see org.eclipse.cdt.core.parser.ast.IASTUsingDirective#getNamespaceName()
-	 */
-	public String getNamespaceName() {
-		return namespaceName;
-	}
-	/* (non-Javadoc)
-	 * @see org.eclipse.cdt.core.parser.ast.IASTDeclaration#getOwnerScope()
-	 */
-	public IASTScope getOwnerScope() {
-		return null; //TODO
-	}
-    /* (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();
-    }
-
-
-}
Index: parser/org/eclipse/cdt/internal/core/parser/ast/full/BaseIterator.java
===================================================================
RCS file: parser/org/eclipse/cdt/internal/core/parser/ast/full/BaseIterator.java
diff -N parser/org/eclipse/cdt/internal/core/parser/ast/full/BaseIterator.java
--- parser/org/eclipse/cdt/internal/core/parser/ast/full/BaseIterator.java	17 Jul 2003 20:15:13 -0000	1.3
+++ /dev/null	1 Jan 1970 00:00:00 -0000
@@ -1,52 +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.ast.full;
-
-import java.util.Iterator;
-import java.util.List;
-
-import org.eclipse.cdt.internal.core.parser.pst.ParserSymbolTable;
-
-/**
- * @author jcamelon
- *
- */
-public class BaseIterator implements Iterator {
-
-	private final Iterator rawIter; 
-	public BaseIterator( List bases )
-	{
-		rawIter = bases.iterator();
-	}
-
-	/* (non-Javadoc)
-	 * @see java.util.Iterator#hasNext()
-	 */
-	public boolean hasNext() {
-		return rawIter.hasNext(); 
-	}
-
-	/* (non-Javadoc)
-	 * @see java.util.Iterator#next()
-	 */
-	public Object next() {
-		ParserSymbolTable.Declaration.ParentWrapper wrapper = (ParserSymbolTable.Declaration.ParentWrapper)rawIter.next(); 
-		return new ASTBaseSpecifier( (IASTFClassSpecifier)wrapper.getParent().getASTNode(), wrapper.getAccess(), wrapper.isVirtual());
-	}
-
-	/* (non-Javadoc)
-	 * @see java.util.Iterator#remove()
-	 */
-	public void remove() {
-		throw new UnsupportedOperationException();
-	}
-
-}
Index: parser/org/eclipse/cdt/internal/core/parser/ast/full/FullParseASTFactory.java
===================================================================
RCS file: parser/org/eclipse/cdt/internal/core/parser/ast/full/FullParseASTFactory.java
diff -N parser/org/eclipse/cdt/internal/core/parser/ast/full/FullParseASTFactory.java
--- parser/org/eclipse/cdt/internal/core/parser/ast/full/FullParseASTFactory.java	18 Jul 2003 12:40:48 -0000	1.12
+++ /dev/null	1 Jan 1970 00:00:00 -0000
@@ -1,411 +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.ast.full;
-
-import java.util.Iterator;
-import java.util.List;
-
-import org.eclipse.cdt.core.parser.Backtrack;
-import org.eclipse.cdt.core.parser.IToken;
-import org.eclipse.cdt.core.parser.ITokenDuple;
-import org.eclipse.cdt.core.parser.ast.ASTAccessVisibility;
-import org.eclipse.cdt.core.parser.ast.ASTClassKind;
-import org.eclipse.cdt.core.parser.ast.ASTPointerOperator;
-import org.eclipse.cdt.core.parser.ast.IASTASMDefinition;
-import org.eclipse.cdt.core.parser.ast.IASTAbstractDeclaration;
-import org.eclipse.cdt.core.parser.ast.IASTAbstractTypeSpecifierDeclaration;
-import org.eclipse.cdt.core.parser.ast.IASTClassSpecifier;
-import org.eclipse.cdt.core.parser.ast.IASTCompilationUnit;
-import org.eclipse.cdt.core.parser.ast.IASTConstructorMemberInitializer;
-import org.eclipse.cdt.core.parser.ast.IASTElaboratedTypeSpecifier;
-import org.eclipse.cdt.core.parser.ast.IASTEnumerationSpecifier;
-import org.eclipse.cdt.core.parser.ast.IASTExceptionSpecification;
-import org.eclipse.cdt.core.parser.ast.IASTExpression;
-import org.eclipse.cdt.core.parser.ast.IASTFactory;
-import org.eclipse.cdt.core.parser.ast.IASTField;
-import org.eclipse.cdt.core.parser.ast.IASTFunction;
-import org.eclipse.cdt.core.parser.ast.IASTInitializerClause;
-import org.eclipse.cdt.core.parser.ast.IASTLinkageSpecification;
-import org.eclipse.cdt.core.parser.ast.IASTMethod;
-import org.eclipse.cdt.core.parser.ast.IASTNamespaceDefinition;
-import org.eclipse.cdt.core.parser.ast.IASTParameterDeclaration;
-import org.eclipse.cdt.core.parser.ast.IASTPointerToFunction;
-import org.eclipse.cdt.core.parser.ast.IASTPointerToMethod;
-import org.eclipse.cdt.core.parser.ast.IASTScope;
-import org.eclipse.cdt.core.parser.ast.IASTSimpleTypeSpecifier;
-import org.eclipse.cdt.core.parser.ast.IASTTemplate;
-import org.eclipse.cdt.core.parser.ast.IASTTemplateDeclaration;
-import org.eclipse.cdt.core.parser.ast.IASTTemplateInstantiation;
-import org.eclipse.cdt.core.parser.ast.IASTTemplateParameter;
-import org.eclipse.cdt.core.parser.ast.IASTTemplateSpecialization;
-import org.eclipse.cdt.core.parser.ast.IASTTypeSpecifier;
-import org.eclipse.cdt.core.parser.ast.IASTTypedefDeclaration;
-import org.eclipse.cdt.core.parser.ast.IASTUsingDeclaration;
-import org.eclipse.cdt.core.parser.ast.IASTUsingDirective;
-import org.eclipse.cdt.core.parser.ast.IASTVariable;
-import org.eclipse.cdt.core.parser.ast.IASTClassSpecifier.ClassNameType;
-import org.eclipse.cdt.core.parser.ast.IASTExpression.IASTNewExpressionDescriptor;
-import org.eclipse.cdt.core.parser.ast.IASTExpression.Kind;
-import org.eclipse.cdt.core.parser.ast.IASTSimpleTypeSpecifier.Type;
-import org.eclipse.cdt.internal.core.parser.ast.BaseASTFactory;
-import org.eclipse.cdt.internal.core.parser.ast.IASTArrayModifier;
-import org.eclipse.cdt.internal.core.parser.pst.IContainerSymbol;
-import org.eclipse.cdt.internal.core.parser.pst.ISymbol;
-import org.eclipse.cdt.internal.core.parser.pst.ParserSymbolTable;
-import org.eclipse.cdt.internal.core.parser.pst.ParserSymbolTableException;
-
-/**
- * @author jcamelon
- *
- */
-public class FullParseASTFactory extends BaseASTFactory implements IASTFactory {
-
-	private ParserSymbolTable pst = new ParserSymbolTable(); // symbol table
-	
-	public IASTUsingDirective createUsingDirective(
-		IASTScope scope,
-		ITokenDuple duple, int startingOffset, int endingOffset)
-		throws Backtrack {
-		Iterator iter = duple.iterator();
-		IToken t1 = (IToken)iter.next();
-		IContainerSymbol symbol = null; 
-		
-		if( t1.getType() == IToken.tCOLONCOLON )
-			symbol = pst.getCompilationUnit();
-		else
-		{
-			try
-			{
-				symbol = (IContainerSymbol)((IASTFScope)scope).getContainerSymbol().Lookup( t1.getImage() );
-			}
-			catch( ParserSymbolTableException pste )
-			{
-				handlePSTException( pste );
-			}
-		}
-		
-		while( iter.hasNext() )
-		{
-			IToken t = (IToken)iter.next(); 
-			if( t.getType() == IToken.tCOLONCOLON ) continue; 
-			try
-			{
-				symbol = symbol.LookupNestedNameSpecifier( t.getImage() );
-			}
-			catch( ParserSymbolTableException pste )
-			{
-				handlePSTException( pste );
-			}
-		}
-		
-		try {
-			((IASTFScope)scope).getContainerSymbol().addUsingDirective( symbol );
-		} catch (ParserSymbolTableException pste) {
-			handlePSTException( pste );
-		}
-		
-		IASTUsingDirective astUD = new ASTUsingDirective( duple.toString(), startingOffset, endingOffset );
-		return astUD;
-	}
-	
-	public IASTASMDefinition createASMDefinition(
-		IASTScope scope,
-		String assembly,
-		int first,
-		int last) {
-		IContainerSymbol containerSymbol = (IContainerSymbol)((IASTFScope)scope).getSymbol();
-		ISymbol asmSymbol = pst.newSymbol( "", ParserSymbolTable.TypeInfo.t_asm );
-		IASTFASMDefinition asmDefinition = new ASTASMDefinition( asmSymbol, assembly );
-		asmSymbol.setASTNode( asmDefinition );
-		
-		try {
-			containerSymbol.addSymbol(asmSymbol);
-		} catch (ParserSymbolTableException e1) {
-			//?
-		}
-		
-		asmDefinition.setStartingOffset( first );
-		asmDefinition.setEndingOffset( last );
-		return asmDefinition;
-	}
-
-	public IASTNamespaceDefinition createNamespaceDefinition(
-		IASTScope scope,
-		String identifier, 
-		int first, int nameOffset ) {
-		
-		IContainerSymbol namespaceSymbol = null; 
-		
-		pst.newContainerSymbol( identifier, ParserSymbolTable.TypeInfo.t_namespace );
-		IASTFNamespaceDefinition namespaceDefinition = new ASTNamespaceDefinition( namespaceSymbol, identifier );
-		namespaceDefinition.setStartingOffset( first ); 
-		if( identifier != "" )
-			namespaceDefinition.setElementNameOffset( nameOffset );
-		return namespaceDefinition;
-	}
-
-	public IASTCompilationUnit createCompilationUnit() {
-		IASTFCompilationUnit compilationUnit = new ASTCompilationUnit( pst.getCompilationUnit() );  
-		return compilationUnit;
-	}
-	
-	public IASTLinkageSpecification createLinkageSpecification(IASTScope scope, String spec, int startingOffset) {
-		IContainerSymbol symbol = pst.newContainerSymbol("", ParserSymbolTable.TypeInfo.t_linkage );
-		IASTFLinkageSpecification linkage = new ASTLinkageSpecification( symbol, spec, startingOffset);
-		return linkage;
-	}
-	
-	/**
-	 * @param pste
-	 */
-	private void handlePSTException(ParserSymbolTableException pste) throws Backtrack {
-		throw new Backtrack(); 
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.cdt.core.parser.ast.IASTFactory#createUsingDeclaration(org.eclipse.cdt.core.parser.ast.IASTScope, boolean, org.eclipse.cdt.internal.core.parser.TokenDuple)
-	 */
-	public IASTUsingDeclaration createUsingDeclaration(IASTScope scope, boolean isTypeName, ITokenDuple name, int startingOffset, int endingOffset) {
-		// TODO Auto-generated method stub
-		return null;
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.cdt.core.parser.ast.IASTFactory#createClassSpecifier(org.eclipse.cdt.core.parser.ast.IASTScope, java.lang.String, org.eclipse.cdt.core.parser.ast.ClassKind, org.eclipse.cdt.core.parser.ast.ClassNameType, org.eclipse.cdt.core.parser.ast.AccessVisibility, org.eclipse.cdt.core.parser.ast.IASTTemplateDeclaration)
-	 */
-	public IASTClassSpecifier createClassSpecifier(IASTScope scope, String name, ASTClassKind kind, ClassNameType type, ASTAccessVisibility access, IASTTemplate ownerTemplateDeclaration, int startingOffset, int nameOffset) {
-		// TODO Auto-generated method stub
-		return null;
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.cdt.core.parser.ast.IASTFactory#addBaseSpecifier(org.eclipse.cdt.core.parser.ast.IASTClassSpecifier, boolean, org.eclipse.cdt.core.parser.ast.AccessVisibility, java.lang.String)
-	 */
-	public void addBaseSpecifier(IASTClassSpecifier astClassSpec, boolean isVirtual, ASTAccessVisibility visibility, String string) {
-		// TODO Auto-generated method stub
-		
-	}
-
-    /* (non-Javadoc)
-     * @see org.eclipse.cdt.core.parser.ast.IASTFactory#createElaboratedTypeSpecifier(org.eclipse.cdt.core.parser.ast.ClassKind, java.lang.String, int, int)
-     */
-    public IASTElaboratedTypeSpecifier createElaboratedTypeSpecifier(ASTClassKind elaboratedClassKind, String typeName, int startingOffset, int endOffset )
-    {
-        // TODO Auto-generated method stub
-        return null;
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.cdt.core.parser.ast.IASTFactory#createEnumerationSpecifier(java.lang.String, int)
-     */
-    public IASTEnumerationSpecifier createEnumerationSpecifier(IASTScope scope, String name, int startingOffset, int nameOffset)
-    {
-        // TODO Auto-generated method stub
-        return null;
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.cdt.core.parser.ast.IASTFactory#addEnumerator(org.eclipse.cdt.core.parser.ast.IASTEnumerationSpecifier, java.lang.String, int, int)
-     */
-    public void addEnumerator(IASTEnumerationSpecifier enumeration, String string, int startingOffset, int endingOffset, IASTExpression initialValue)
-    {
-        // TODO Auto-generated method stub
-        
-    }
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.cdt.core.parser.ast.IASTFactory#createExpression(org.eclipse.cdt.core.parser.ast.IASTExpression.ExpressionKind, org.eclipse.cdt.core.parser.ast.IASTExpression, org.eclipse.cdt.core.parser.ast.IASTExpression, java.lang.String, java.lang.String, java.lang.String)
-	 */
-	public IASTExpression createExpression(Kind kind, IASTExpression lhs, IASTExpression rhs, IASTExpression thirdExpression, String id, String typeId, String literal, IASTNewExpressionDescriptor newDescriptor) {
-		// TODO Auto-generated method stub
-		return null;
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.cdt.core.parser.ast.IASTFactory#createNewDescriptor()
-	 */
-	public IASTNewExpressionDescriptor createNewDescriptor() {
-		// TODO Auto-generated method stub
-		return null;
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.cdt.core.parser.ast.IASTFactory#createIASTInitializerClause()
-	 */
-	public IASTInitializerClause createInitializerClause(IASTInitializerClause.Kind kind, IASTExpression assignmentExpression, List initializerClauses) {
-		// TODO Auto-generated method stub
-		return null;
-	}
-
-    /* (non-Javadoc)
-     * @see org.eclipse.cdt.core.parser.ast.IASTFactory#createExceptionSpecification(java.util.List)
-     */
-    public IASTExceptionSpecification createExceptionSpecification(List typeIds)
-    {
-        // TODO Auto-generated method stub
-        return null;
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.cdt.core.parser.ast.IASTFactory#createArrayModifier(org.eclipse.cdt.core.parser.ast.IASTExpression)
-     */
-    public IASTArrayModifier createArrayModifier(IASTExpression exp)
-    {
-    	// TODO
-        return null; 
-        
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.cdt.core.parser.ast.IASTFactory#createConstructorMemberInitializer(org.eclipse.cdt.core.parser.ITokenDuple, org.eclipse.cdt.core.parser.ast.IASTExpression)
-     */
-    public IASTConstructorMemberInitializer createConstructorMemberInitializer(ITokenDuple duple, IASTExpression expressionList )
-    {
-        // TODO Auto-generated method stub
-        return null;
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.cdt.core.parser.ast.IASTFactory#createSimpleTypeSpecifier(org.eclipse.cdt.core.parser.ast.IASTSimpleTypeSpecifier.SimpleType, org.eclipse.cdt.core.parser.ITokenDuple, boolean, boolean, boolean, boolean)
-     */
-    public IASTSimpleTypeSpecifier createSimpleTypeSpecifier(Type kind, ITokenDuple typeName, boolean isShort, boolean isLong, boolean isSigned, boolean isUnsigned, boolean isTypename)
-    {
-        // TODO Auto-generated method stub
-        return null;
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.cdt.core.parser.ast.IASTFactory#createFunction(org.eclipse.cdt.core.parser.ast.IASTScope, java.lang.String, java.util.List, org.eclipse.cdt.core.parser.ast.IASTAbstractDeclaration, org.eclipse.cdt.core.parser.ast.IASTExceptionSpecification, boolean, boolean, boolean, int, int, org.eclipse.cdt.core.parser.ast.IASTTemplateDeclaration)
-     */
-    public IASTFunction createFunction(IASTScope scope, String name, List parameters, IASTAbstractDeclaration returnType, IASTExceptionSpecification exception, boolean isInline, boolean isFriend, boolean isStatic, int startOffset, int nameOffset, IASTTemplate ownerTemplate)
-    {
-        // TODO Auto-generated method stub
-        return null;
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.cdt.core.parser.ast.IASTFactory#createAbstractDeclaration(boolean, org.eclipse.cdt.core.parser.ast.IASTTypeSpecifier, java.util.List, java.util.List)
-     */
-    public IASTAbstractDeclaration createAbstractDeclaration(boolean isConst, IASTTypeSpecifier typeSpecifier, List pointerOperators, List arrayModifiers)
-    {
-        // TODO Auto-generated method stub
-        return null;
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.cdt.core.parser.ast.IASTFactory#createMethod(org.eclipse.cdt.core.parser.ast.IASTScope, java.lang.String, java.util.List, org.eclipse.cdt.core.parser.ast.IASTAbstractDeclaration, org.eclipse.cdt.core.parser.ast.IASTExceptionSpecification, boolean, boolean, boolean, int, int, org.eclipse.cdt.core.parser.ast.IASTTemplateDeclaration, boolean, boolean, boolean, boolean, boolean, boolean, boolean, org.eclipse.cdt.core.parser.ast.ASTAccessVisibility)
-     */
-    public IASTMethod createMethod(IASTScope scope, String name, List parameters, IASTAbstractDeclaration returnType, IASTExceptionSpecification exception, boolean isInline, boolean isFriend, boolean isStatic, int startOffset, int nameOffset, IASTTemplate ownerTemplate, boolean isConst, boolean isVolatile, boolean isConstructor, boolean isDestructor, boolean isVirtual, boolean isExplicit, boolean isPureVirtual, ASTAccessVisibility visibility)
-    {
-        // TODO Auto-generated method stub
-        return null;
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.cdt.core.parser.ast.IASTFactory#createVariable(org.eclipse.cdt.core.parser.ast.IASTScope, java.lang.String, boolean, org.eclipse.cdt.core.parser.ast.IASTInitializerClause, org.eclipse.cdt.core.parser.ast.IASTExpression, org.eclipse.cdt.core.parser.ast.IASTAbstractDeclaration, boolean, boolean, boolean, boolean)
-     */
-    public IASTVariable createVariable(IASTScope scope, String name, boolean isAuto, IASTInitializerClause initializerClause, IASTExpression bitfieldExpression, IASTAbstractDeclaration abstractDeclaration, boolean isMutable, boolean isExtern, boolean isRegister, boolean isStatic, int startingOffset, int nameOffset)
-    {
-        // TODO Auto-generated method stub
-        return null;
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.cdt.core.parser.ast.IASTFactory#createField(org.eclipse.cdt.core.parser.ast.IASTScope, java.lang.String, boolean, org.eclipse.cdt.core.parser.ast.IASTInitializerClause, org.eclipse.cdt.core.parser.ast.IASTExpression, org.eclipse.cdt.core.parser.ast.IASTAbstractDeclaration, boolean, boolean, boolean, boolean, org.eclipse.cdt.core.parser.ast.ASTAccessVisibility)
-     */
-    public IASTField createField(IASTScope scope, String name, boolean isAuto, IASTInitializerClause initializerClause, IASTExpression bitfieldExpression, IASTAbstractDeclaration abstractDeclaration, boolean isMutable, boolean isExtern, boolean isRegister, boolean isStatic, int startingOffset, int nameOffset, ASTAccessVisibility visibility)
-    {
-        // TODO Auto-generated method stub
-        return null;
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.cdt.core.parser.ast.IASTFactory#createParameterDeclaration(boolean, org.eclipse.cdt.core.parser.ast.IASTTypeSpecifier, java.util.List, java.util.List, java.lang.String, org.eclipse.cdt.core.parser.ast.IASTInitializerClause)
-     */
-    public IASTParameterDeclaration createParameterDeclaration(boolean isConst, IASTTypeSpecifier getTypeSpecifier, List pointerOperators, List arrayModifiers, String parameterName, IASTInitializerClause initializerClause)
-    {
-        // TODO Auto-generated method stub
-        return null;
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.cdt.core.parser.ast.IASTFactory#createTemplateDeclaration(java.util.List)
-     */
-    public IASTTemplateDeclaration createTemplateDeclaration(IASTScope scope, List templateParameters, boolean exported, int startingOffset)
-    {
-        // TODO Auto-generated method stub
-        return null;
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.cdt.core.parser.ast.IASTFactory#createTemplateParameter(org.eclipse.cdt.core.parser.ast.IASTTemplateParameter.ParameterKind, org.eclipse.cdt.core.parser.IToken, java.lang.String, org.eclipse.cdt.core.parser.ast.IASTParameterDeclaration)
-     */
-    public IASTTemplateParameter createTemplateParameter(IASTTemplateParameter.ParamKind kind, String identifier, String defaultValue, IASTParameterDeclaration parameter, List parms)
-    {
-        // TODO Auto-generated method stub
-        return null;
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.cdt.core.parser.ast.IASTFactory#createTemplateInstantiation()
-     */
-    public IASTTemplateInstantiation createTemplateInstantiation(IASTScope scope, int startingOffset)
-    {
-        // TODO Auto-generated method stub
-        return null;
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.cdt.core.parser.ast.IASTFactory#createTemplateSpecialization()
-     */
-    public IASTTemplateSpecialization createTemplateSpecialization(IASTScope scope, int startingOffset)
-    {
-        // TODO Auto-generated method stub
-        return null;
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.cdt.core.parser.ast.IASTFactory#createTypedef(org.eclipse.cdt.core.parser.ast.IASTScope, java.lang.String, org.eclipse.cdt.core.parser.ast.IASTAbstractDeclaration)
-     */
-    public IASTTypedefDeclaration createTypedef(IASTScope scope, String name, IASTAbstractDeclaration mapping, int startingOffset, int nameOffset)
-    {
-        // TODO Auto-generated method stub
-        return null;
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.cdt.core.parser.ast.IASTFactory#createTypeSpecDeclaration(org.eclipse.cdt.core.parser.ast.IASTScope, boolean, org.eclipse.cdt.core.parser.ast.IASTTypeSpecifier, java.util.List, java.util.List)
-     */
-    public IASTAbstractTypeSpecifierDeclaration createTypeSpecDeclaration(IASTScope scope, IASTTypeSpecifier typeSpecifier, IASTTemplate template, int startingOffset, int endingOffset)
-    {
-        // TODO Auto-generated method stub
-        return null;
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.cdt.core.parser.ast.IASTFactory#createPointerToFunction(org.eclipse.cdt.core.parser.ast.IASTScope, java.lang.String, java.util.List, org.eclipse.cdt.core.parser.ast.IASTAbstractDeclaration, org.eclipse.cdt.core.parser.ast.IASTExceptionSpecification, boolean, boolean, boolean, int, int, org.eclipse.cdt.core.parser.ast.IASTTemplate)
-     */
-    public IASTPointerToFunction createPointerToFunction(IASTScope scope, String name, List parameters, IASTAbstractDeclaration returnType, IASTExceptionSpecification exception, boolean isInline, boolean isFriend, boolean isStatic, int startOffset, int nameOffset, IASTTemplate ownerTemplate, ASTPointerOperator pointerOperator)
-    {
-        // TODO Auto-generated method stub
-        return null;
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.cdt.core.parser.ast.IASTFactory#createPointerToMethod(org.eclipse.cdt.core.parser.ast.IASTScope, java.lang.String, java.util.List, org.eclipse.cdt.core.parser.ast.IASTAbstractDeclaration, org.eclipse.cdt.core.parser.ast.IASTExceptionSpecification, boolean, boolean, boolean, int, int, org.eclipse.cdt.core.parser.ast.IASTTemplate, boolean, boolean, boolean, boolean, boolean, boolean, boolean, org.eclipse.cdt.core.parser.ast.ASTAccessVisibility)
-     */
-    public IASTPointerToMethod createPointerToMethod(IASTScope scope, String name, List parameters, IASTAbstractDeclaration returnType, IASTExceptionSpecification exception, boolean isInline, boolean isFriend, boolean isStatic, int startOffset, int nameOffset, IASTTemplate ownerTemplate, boolean isConst, boolean isVolatile, boolean isConstructor, boolean isDestructor, boolean isVirtual, boolean isExplicit, boolean isPureVirtual, ASTAccessVisibility visibility, ASTPointerOperator pointerOperator)
-    {
-        // TODO Auto-generated method stub
-        return null;
-    }
-
-}
Index: parser/org/eclipse/cdt/internal/core/parser/ast/full/IASTFASMDefinition.java
===================================================================
RCS file: parser/org/eclipse/cdt/internal/core/parser/ast/full/IASTFASMDefinition.java
diff -N parser/org/eclipse/cdt/internal/core/parser/ast/full/IASTFASMDefinition.java
--- parser/org/eclipse/cdt/internal/core/parser/ast/full/IASTFASMDefinition.java	13 Jun 2003 15:01:21 -0000	1.2
+++ /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.ast.full;
-
-
-/**
- * @author jcamelon
- *
- */
-public interface IASTFASMDefinition
-	extends org.eclipse.cdt.core.parser.ast.IASTASMDefinition, IPSTSymbolExtension {
-
-}
Index: parser/org/eclipse/cdt/internal/core/parser/ast/full/IASTFClassSpecifier.java
===================================================================
RCS file: parser/org/eclipse/cdt/internal/core/parser/ast/full/IASTFClassSpecifier.java
diff -N parser/org/eclipse/cdt/internal/core/parser/ast/full/IASTFClassSpecifier.java
--- parser/org/eclipse/cdt/internal/core/parser/ast/full/IASTFClassSpecifier.java	13 Jun 2003 15:01:21 -0000	1.2
+++ /dev/null	1 Jan 1970 00:00:00 -0000
@@ -1,22 +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.ast.full;
-
-import org.eclipse.cdt.core.parser.ast.IASTScope;
-
-/**
- * @author jcamelon
- *
- */
-public interface IASTFClassSpecifier
-	extends IASTScope, org.eclipse.cdt.core.parser.ast.IASTClassSpecifier {
-
-}
Index: parser/org/eclipse/cdt/internal/core/parser/ast/full/IASTFCompilationUnit.java
===================================================================
RCS file: parser/org/eclipse/cdt/internal/core/parser/ast/full/IASTFCompilationUnit.java
diff -N parser/org/eclipse/cdt/internal/core/parser/ast/full/IASTFCompilationUnit.java
--- parser/org/eclipse/cdt/internal/core/parser/ast/full/IASTFCompilationUnit.java	13 Jun 2003 15:01:21 -0000	1.2
+++ /dev/null	1 Jan 1970 00:00:00 -0000
@@ -1,23 +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.ast.full;
-
-
-/**
- * @author jcamelon
- *
- */
-public interface IASTFCompilationUnit
-	extends
-		org.eclipse.cdt.core.parser.ast.IASTCompilationUnit,
-		IASTFScope {
-
-}
Index: parser/org/eclipse/cdt/internal/core/parser/ast/full/IASTFLinkageSpecification.java
===================================================================
RCS file: parser/org/eclipse/cdt/internal/core/parser/ast/full/IASTFLinkageSpecification.java
diff -N parser/org/eclipse/cdt/internal/core/parser/ast/full/IASTFLinkageSpecification.java
--- parser/org/eclipse/cdt/internal/core/parser/ast/full/IASTFLinkageSpecification.java	13 Jun 2003 15:01:21 -0000	1.2
+++ /dev/null	1 Jan 1970 00:00:00 -0000
@@ -1,20 +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.ast.full;
-
-/**
- * @author jcamelon
- *
- */
-public interface IASTFLinkageSpecification
-	extends org.eclipse.cdt.core.parser.ast.IASTLinkageSpecification, IASTFScope {
-
-}
Index: parser/org/eclipse/cdt/internal/core/parser/ast/full/IASTFNamespaceDefinition.java
===================================================================
RCS file: parser/org/eclipse/cdt/internal/core/parser/ast/full/IASTFNamespaceDefinition.java
diff -N parser/org/eclipse/cdt/internal/core/parser/ast/full/IASTFNamespaceDefinition.java
--- parser/org/eclipse/cdt/internal/core/parser/ast/full/IASTFNamespaceDefinition.java	13 Jun 2003 15:01:21 -0000	1.2
+++ /dev/null	1 Jan 1970 00:00:00 -0000
@@ -1,20 +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.ast.full;
-
-/**
- * @author jcamelon
- *
- */
-public interface IASTFNamespaceDefinition
-	extends IASTFScope, org.eclipse.cdt.core.parser.ast.IASTNamespaceDefinition {
-
-}
Index: parser/org/eclipse/cdt/internal/core/parser/ast/full/IASTFScope.java
===================================================================
RCS file: parser/org/eclipse/cdt/internal/core/parser/ast/full/IASTFScope.java
diff -N parser/org/eclipse/cdt/internal/core/parser/ast/full/IASTFScope.java
--- parser/org/eclipse/cdt/internal/core/parser/ast/full/IASTFScope.java	13 Jun 2003 15:01:21 -0000	1.2
+++ /dev/null	1 Jan 1970 00:00:00 -0000
@@ -1,20 +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.ast.full;
-
-/**
- * @author jcamelon
- *
- */
-public interface IASTFScope
-	extends org.eclipse.cdt.core.parser.ast.IASTScope, IPSTContainerExtension {
-
-}
Index: parser/org/eclipse/cdt/internal/core/parser/ast/full/IPSTContainerExtension.java
===================================================================
RCS file: parser/org/eclipse/cdt/internal/core/parser/ast/full/IPSTContainerExtension.java
diff -N parser/org/eclipse/cdt/internal/core/parser/ast/full/IPSTContainerExtension.java
--- parser/org/eclipse/cdt/internal/core/parser/ast/full/IPSTContainerExtension.java	13 Jun 2003 15:01:21 -0000	1.2
+++ /dev/null	1 Jan 1970 00:00:00 -0000
@@ -1,23 +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.ast.full;
-
-import org.eclipse.cdt.core.parser.ast.IASTScope;
-import org.eclipse.cdt.internal.core.parser.pst.IContainerSymbol;
-
-/**
- * @author jcamelon
- *
- */
-public interface IPSTContainerExtension extends IPSTSymbolExtension, IASTScope {
-
-	public IContainerSymbol getContainerSymbol(); 
-}
Index: parser/org/eclipse/cdt/internal/core/parser/ast/full/IPSTSymbolExtension.java
===================================================================
RCS file: parser/org/eclipse/cdt/internal/core/parser/ast/full/IPSTSymbolExtension.java
diff -N parser/org/eclipse/cdt/internal/core/parser/ast/full/IPSTSymbolExtension.java
--- parser/org/eclipse/cdt/internal/core/parser/ast/full/IPSTSymbolExtension.java	13 Jun 2003 15:01:21 -0000	1.2
+++ /dev/null	1 Jan 1970 00:00:00 -0000
@@ -1,22 +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.ast.full;
-
-import org.eclipse.cdt.internal.core.parser.pst.ISymbol;
-
-/**
- * @author jcamelon
- *
- */
-public interface IPSTSymbolExtension {
-
-	ISymbol getSymbol(); 
-}
Index: parser/org/eclipse/cdt/internal/core/parser/ast/full/ScopeIterator.java
===================================================================
RCS file: parser/org/eclipse/cdt/internal/core/parser/ast/full/ScopeIterator.java
diff -N parser/org/eclipse/cdt/internal/core/parser/ast/full/ScopeIterator.java
--- parser/org/eclipse/cdt/internal/core/parser/ast/full/ScopeIterator.java	13 Jun 2003 15:01:21 -0000	1.2
+++ /dev/null	1 Jan 1970 00:00:00 -0000
@@ -1,55 +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.ast.full;
-
-import java.util.Iterator;
-import java.util.Map;
-
-import org.eclipse.cdt.internal.core.parser.pst.ISymbol;
-
-/**
- * @author jcamelon
- *
- */
-public class ScopeIterator implements Iterator {
-
-	private final Map sourceMap; 
-	private final Iterator keyIter;
-	
-	public ScopeIterator( Map in )
-	{
-		sourceMap = in;
-		keyIter = in.keySet().iterator();
-	}
-
-	/* (non-Javadoc)
-	 * @see java.util.Iterator#hasNext()
-	 */
-	public boolean hasNext() {
-		return keyIter.hasNext();
-	}
-
-	/* (non-Javadoc)
-	 * @see java.util.Iterator#next()
-	 */
-	public Object next() {
-		ISymbol symbol = (ISymbol)sourceMap.get( keyIter.next() );
-		return symbol.getASTNode();
-	}
-
-	/* (non-Javadoc)
-	 * @see java.util.Iterator#remove()
-	 */
-	public void remove() {
-		throw new UnsupportedOperationException();
-	}
-
-}
Index: parser/org/eclipse/cdt/internal/core/parser/ast/quick/ASTASMDefinition.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/ast/quick/ASTASMDefinition.java,v
retrieving revision 1.2
diff -u -r1.2 ASTASMDefinition.java
--- parser/org/eclipse/cdt/internal/core/parser/ast/quick/ASTASMDefinition.java	13 Jun 2003 15:01:21 -0000	1.2
+++ parser/org/eclipse/cdt/internal/core/parser/ast/quick/ASTASMDefinition.java	18 Jul 2003 16:34:36 -0000
@@ -10,6 +10,7 @@
 ***********************************************************************/
 package org.eclipse.cdt.internal.core.parser.ast.quick;
 
+import org.eclipse.cdt.core.parser.ISourceElementRequestor;
 import org.eclipse.cdt.core.parser.ast.IASTASMDefinition;
 import org.eclipse.cdt.core.parser.ast.IASTScope;
 import org.eclipse.cdt.internal.core.parser.ast.Offsets;
@@ -66,5 +67,27 @@
 	public int getElementEndingOffset() {
 		return offsets.getElementEndingOffset();
 	}
+
+    /* (non-Javadoc)
+     * @see org.eclipse.cdt.core.parser.ISourceElementCallbackDelegate#accept(org.eclipse.cdt.core.parser.ISourceElementRequestor)
+     */
+    public void acceptElement(ISourceElementRequestor requestor)
+    {
+		requestor.acceptASMDefinition(this);
+    }
+
+    /* (non-Javadoc)
+     * @see org.eclipse.cdt.core.parser.ISourceElementCallbackDelegate#enter(org.eclipse.cdt.core.parser.ISourceElementRequestor)
+     */
+    public void enterScope(ISourceElementRequestor requestor)
+    {
+    }
+
+    /* (non-Javadoc)
+     * @see org.eclipse.cdt.core.parser.ISourceElementCallbackDelegate#exit(org.eclipse.cdt.core.parser.ISourceElementRequestor)
+     */
+    public void exitScope(ISourceElementRequestor requestor)
+    {       
+    }
 
 }
Index: parser/org/eclipse/cdt/internal/core/parser/ast/quick/ASTAbstractTypeSpecifierDeclaration.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/ast/quick/ASTAbstractTypeSpecifierDeclaration.java,v
retrieving revision 1.1
diff -u -r1.1 ASTAbstractTypeSpecifierDeclaration.java
--- parser/org/eclipse/cdt/internal/core/parser/ast/quick/ASTAbstractTypeSpecifierDeclaration.java	17 Jul 2003 20:15:13 -0000	1.1
+++ parser/org/eclipse/cdt/internal/core/parser/ast/quick/ASTAbstractTypeSpecifierDeclaration.java	18 Jul 2003 16:34:36 -0000
@@ -10,6 +10,7 @@
 ***********************************************************************/
 package org.eclipse.cdt.internal.core.parser.ast.quick;
 
+import org.eclipse.cdt.core.parser.ISourceElementRequestor;
 import org.eclipse.cdt.core.parser.ast.IASTAbstractTypeSpecifierDeclaration;
 import org.eclipse.cdt.core.parser.ast.IASTScope;
 import org.eclipse.cdt.core.parser.ast.IASTTemplate;
@@ -85,5 +86,26 @@
 		return offsets.getElementEndingOffset();
 	}
 	private Offsets offsets = new Offsets();
+    /* (non-Javadoc)
+     * @see org.eclipse.cdt.core.parser.ISourceElementCallbackDelegate#accept(org.eclipse.cdt.core.parser.ISourceElementRequestor)
+     */
+    public void acceptElement(ISourceElementRequestor requestor)
+    {
+    	requestor.acceptAbstractTypeSpecDeclaration(this);
+    }
+
+    /* (non-Javadoc)
+     * @see org.eclipse.cdt.core.parser.ISourceElementCallbackDelegate#enter(org.eclipse.cdt.core.parser.ISourceElementRequestor)
+     */
+    public void enterScope(ISourceElementRequestor requestor)
+    {
+    }
+
+    /* (non-Javadoc)
+     * @see org.eclipse.cdt.core.parser.ISourceElementCallbackDelegate#exit(org.eclipse.cdt.core.parser.ISourceElementRequestor)
+     */
+    public void exitScope(ISourceElementRequestor requestor)
+    {
+    }
 
 }
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.9
diff -u -r1.9 ASTClassSpecifier.java
--- parser/org/eclipse/cdt/internal/core/parser/ast/quick/ASTClassSpecifier.java	18 Jul 2003 12:40:48 -0000	1.9
+++ parser/org/eclipse/cdt/internal/core/parser/ast/quick/ASTClassSpecifier.java	18 Jul 2003 16:34:36 -0000
@@ -13,6 +13,7 @@
 import java.util.Iterator;
 import java.util.List;
 
+import org.eclipse.cdt.core.parser.ISourceElementRequestor;
 import org.eclipse.cdt.core.parser.ast.ASTAccessVisibility;
 import org.eclipse.cdt.core.parser.ast.ASTClassKind;
 import org.eclipse.cdt.core.parser.ast.IASTBaseSpecifier;
@@ -159,6 +160,26 @@
     public void setCurrentVisibility(ASTAccessVisibility visibility)
     {
     	this.access = visibility;
+    }
+    /* (non-Javadoc)
+     * @see org.eclipse.cdt.core.parser.ISourceElementCallbackDelegate#accept(org.eclipse.cdt.core.parser.ISourceElementRequestor)
+     */
+    public void acceptElement(ISourceElementRequestor requestor)
+    {
+    }
+    /* (non-Javadoc)
+     * @see org.eclipse.cdt.core.parser.ISourceElementCallbackDelegate#enter(org.eclipse.cdt.core.parser.ISourceElementRequestor)
+     */
+    public void enterScope(ISourceElementRequestor requestor)
+    {
+    	requestor.enterClassSpecifier(this);
+    }
+    /* (non-Javadoc)
+     * @see org.eclipse.cdt.core.parser.ISourceElementCallbackDelegate#exit(org.eclipse.cdt.core.parser.ISourceElementRequestor)
+     */
+    public void exitScope(ISourceElementRequestor requestor)
+    {
+    	requestor.exitClassSpecifier(this);
     }
 
 }
Index: parser/org/eclipse/cdt/internal/core/parser/ast/quick/ASTCompilationUnit.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/ast/quick/ASTCompilationUnit.java,v
retrieving revision 1.2
diff -u -r1.2 ASTCompilationUnit.java
--- parser/org/eclipse/cdt/internal/core/parser/ast/quick/ASTCompilationUnit.java	13 Jun 2003 15:01:21 -0000	1.2
+++ parser/org/eclipse/cdt/internal/core/parser/ast/quick/ASTCompilationUnit.java	18 Jul 2003 16:34:36 -0000
@@ -14,6 +14,7 @@
 import java.util.Iterator;
 import java.util.List;
 
+import org.eclipse.cdt.core.parser.ISourceElementRequestor;
 import org.eclipse.cdt.core.parser.ast.IASTCompilationUnit;
 import org.eclipse.cdt.core.parser.ast.IASTDeclaration;
 
@@ -36,5 +37,27 @@
 	public void addDeclaration(IASTDeclaration declaration) {
 		declarations.add( declaration );
 	}
+
+    /* (non-Javadoc)
+     * @see org.eclipse.cdt.core.parser.ISourceElementCallbackDelegate#accept(org.eclipse.cdt.core.parser.ISourceElementRequestor)
+     */
+    public void acceptElement(ISourceElementRequestor requestor)
+    {
+    }
+    /* (non-Javadoc)
+     * @see org.eclipse.cdt.core.parser.ISourceElementCallbackDelegate#enter(org.eclipse.cdt.core.parser.ISourceElementRequestor)
+     */
+    public void enterScope(ISourceElementRequestor requestor)
+    {
+        requestor.enterCompilationUnit(this);
+        
+    }
+    /* (non-Javadoc)
+     * @see org.eclipse.cdt.core.parser.ISourceElementCallbackDelegate#exit(org.eclipse.cdt.core.parser.ISourceElementRequestor)
+     */
+    public void exitScope(ISourceElementRequestor requestor)
+    {
+    	requestor.exitCompilationUnit(this);
+    }
 
 }
Index: parser/org/eclipse/cdt/internal/core/parser/ast/quick/ASTDeclaration.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/ast/quick/ASTDeclaration.java,v
retrieving revision 1.3
diff -u -r1.3 ASTDeclaration.java
--- parser/org/eclipse/cdt/internal/core/parser/ast/quick/ASTDeclaration.java	17 Jul 2003 20:15:13 -0000	1.3
+++ parser/org/eclipse/cdt/internal/core/parser/ast/quick/ASTDeclaration.java	18 Jul 2003 16:34:36 -0000
@@ -17,7 +17,7 @@
  * @author jcamelon
  *
  */
-public class ASTDeclaration implements IASTDeclaration {
+public abstract class ASTDeclaration implements IASTDeclaration {
 
 	private final IASTScope scope; 
 	public ASTDeclaration( IASTScope scope )
Index: parser/org/eclipse/cdt/internal/core/parser/ast/quick/ASTEnumerationSpecifier.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/ast/quick/ASTEnumerationSpecifier.java,v
retrieving revision 1.3
diff -u -r1.3 ASTEnumerationSpecifier.java
--- parser/org/eclipse/cdt/internal/core/parser/ast/quick/ASTEnumerationSpecifier.java	18 Jul 2003 12:40:48 -0000	1.3
+++ parser/org/eclipse/cdt/internal/core/parser/ast/quick/ASTEnumerationSpecifier.java	18 Jul 2003 16:34:36 -0000
@@ -15,6 +15,7 @@
 import java.util.Iterator;
 import java.util.List;
 
+import org.eclipse.cdt.core.parser.ISourceElementRequestor;
 import org.eclipse.cdt.core.parser.ast.IASTEnumerationSpecifier;
 import org.eclipse.cdt.core.parser.ast.IASTEnumerator;
 import org.eclipse.cdt.core.parser.ast.IASTOffsetableNamedElement;
@@ -106,5 +107,24 @@
     public void addEnumerator(IASTEnumerator enumerator)
     {
 		enumerators.add(enumerator);        
+    }
+    /* (non-Javadoc)
+     * @see org.eclipse.cdt.core.parser.ISourceElementCallbackDelegate#accept(org.eclipse.cdt.core.parser.ISourceElementRequestor)
+     */
+    public void acceptElement(ISourceElementRequestor requestor)
+    {
+    	requestor.acceptEnumerationSpecifier(this);
+    }
+    /* (non-Javadoc)
+     * @see org.eclipse.cdt.core.parser.ISourceElementCallbackDelegate#enter(org.eclipse.cdt.core.parser.ISourceElementRequestor)
+     */
+    public void enterScope(ISourceElementRequestor requestor)
+    {
+    }
+    /* (non-Javadoc)
+     * @see org.eclipse.cdt.core.parser.ISourceElementCallbackDelegate#exit(org.eclipse.cdt.core.parser.ISourceElementRequestor)
+     */
+    public void exitScope(ISourceElementRequestor requestor)
+    {
     }
 }
Index: parser/org/eclipse/cdt/internal/core/parser/ast/quick/ASTFunction.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/ast/quick/ASTFunction.java,v
retrieving revision 1.4
diff -u -r1.4 ASTFunction.java
--- parser/org/eclipse/cdt/internal/core/parser/ast/quick/ASTFunction.java	18 Jul 2003 12:40:48 -0000	1.4
+++ parser/org/eclipse/cdt/internal/core/parser/ast/quick/ASTFunction.java	18 Jul 2003 16:34:36 -0000
@@ -14,6 +14,7 @@
 import java.util.Iterator;
 import java.util.List;
 
+import org.eclipse.cdt.core.parser.ISourceElementRequestor;
 import org.eclipse.cdt.core.parser.ast.IASTAbstractDeclaration;
 import org.eclipse.cdt.core.parser.ast.IASTExceptionSpecification;
 import org.eclipse.cdt.core.parser.ast.IASTFunction;
@@ -172,5 +173,28 @@
     public String[] getFullyQualifiedName()
     {
         return qualifiedName.getFullyQualifiedName();
+    }
+    /* (non-Javadoc)
+     * @see org.eclipse.cdt.core.parser.ISourceElementCallbackDelegate#accept(org.eclipse.cdt.core.parser.ISourceElementRequestor)
+     */
+    public void acceptElement(ISourceElementRequestor requestor)
+    {
+        requestor.acceptFunctionDeclaration(this);
+        
+    }
+    /* (non-Javadoc)
+     * @see org.eclipse.cdt.core.parser.ISourceElementCallbackDelegate#enter(org.eclipse.cdt.core.parser.ISourceElementRequestor)
+     */
+    public void enterScope(ISourceElementRequestor requestor)
+    {
+        requestor.enterFunctionBody( this );
+        
+    }
+    /* (non-Javadoc)
+     * @see org.eclipse.cdt.core.parser.ISourceElementCallbackDelegate#exit(org.eclipse.cdt.core.parser.ISourceElementRequestor)
+     */
+    public void exitScope(ISourceElementRequestor requestor)
+    {
+    	requestor.exitFunctionBody( this );
     }
 }
Index: parser/org/eclipse/cdt/internal/core/parser/ast/quick/ASTLinkageSpecification.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/ast/quick/ASTLinkageSpecification.java,v
retrieving revision 1.3
diff -u -r1.3 ASTLinkageSpecification.java
--- parser/org/eclipse/cdt/internal/core/parser/ast/quick/ASTLinkageSpecification.java	17 Jul 2003 20:15:13 -0000	1.3
+++ parser/org/eclipse/cdt/internal/core/parser/ast/quick/ASTLinkageSpecification.java	18 Jul 2003 16:34:36 -0000
@@ -14,6 +14,7 @@
 import java.util.Iterator;
 import java.util.List;
 
+import org.eclipse.cdt.core.parser.ISourceElementRequestor;
 import org.eclipse.cdt.core.parser.ast.IASTDeclaration;
 import org.eclipse.cdt.core.parser.ast.IASTLinkageSpecification;
 import org.eclipse.cdt.core.parser.ast.IASTScope;
@@ -87,5 +88,28 @@
 		return offsets.getElementEndingOffset();
 	}
 	private Offsets offsets = new Offsets();
+
+    /* (non-Javadoc)
+     * @see org.eclipse.cdt.core.parser.ISourceElementCallbackDelegate#accept(org.eclipse.cdt.core.parser.ISourceElementRequestor)
+     */
+    public void acceptElement(ISourceElementRequestor requestor)
+    {
+    }
+
+    /* (non-Javadoc)
+     * @see org.eclipse.cdt.core.parser.ISourceElementCallbackDelegate#enter(org.eclipse.cdt.core.parser.ISourceElementRequestor)
+     */
+    public void enterScope(ISourceElementRequestor requestor)
+    {
+		requestor.enterLinkageSpecification(this);
+    }
+
+    /* (non-Javadoc)
+     * @see org.eclipse.cdt.core.parser.ISourceElementCallbackDelegate#exit(org.eclipse.cdt.core.parser.ISourceElementRequestor)
+     */
+    public void exitScope(ISourceElementRequestor requestor)
+    {
+    	requestor.exitLinkageSpecification(this);
+    }
 
 }
Index: parser/org/eclipse/cdt/internal/core/parser/ast/quick/ASTNamespaceDefinition.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/ast/quick/ASTNamespaceDefinition.java,v
retrieving revision 1.4
diff -u -r1.4 ASTNamespaceDefinition.java
--- parser/org/eclipse/cdt/internal/core/parser/ast/quick/ASTNamespaceDefinition.java	17 Jul 2003 20:15:13 -0000	1.4
+++ parser/org/eclipse/cdt/internal/core/parser/ast/quick/ASTNamespaceDefinition.java	18 Jul 2003 16:34:36 -0000
@@ -14,6 +14,7 @@
 import java.util.Iterator;
 import java.util.List;
 
+import org.eclipse.cdt.core.parser.ISourceElementRequestor;
 import org.eclipse.cdt.core.parser.ast.IASTDeclaration;
 import org.eclipse.cdt.core.parser.ast.IASTNamespaceDefinition;
 import org.eclipse.cdt.core.parser.ast.IASTScope;
@@ -104,5 +105,25 @@
     public String[] getFullyQualifiedName()
     {
         return qualifiedNameElement.getFullyQualifiedName();
+    }
+    /* (non-Javadoc)
+     * @see org.eclipse.cdt.core.parser.ISourceElementCallbackDelegate#accept(org.eclipse.cdt.core.parser.ISourceElementRequestor)
+     */
+    public void acceptElement(ISourceElementRequestor requestor)
+    {
+    }
+    /* (non-Javadoc)
+     * @see org.eclipse.cdt.core.parser.ISourceElementCallbackDelegate#enter(org.eclipse.cdt.core.parser.ISourceElementRequestor)
+     */
+    public void enterScope(ISourceElementRequestor requestor)
+    {
+    	requestor.enterNamespaceDefinition(this);
+    }
+    /* (non-Javadoc)
+     * @see org.eclipse.cdt.core.parser.ISourceElementCallbackDelegate#exit(org.eclipse.cdt.core.parser.ISourceElementRequestor)
+     */
+    public void exitScope(ISourceElementRequestor requestor)
+    {
+    	requestor.exitNamespaceDefinition(this);
     }
 }
Index: parser/org/eclipse/cdt/internal/core/parser/ast/quick/ASTTemplateDeclaration.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/ast/quick/ASTTemplateDeclaration.java,v
retrieving revision 1.2
diff -u -r1.2 ASTTemplateDeclaration.java
--- parser/org/eclipse/cdt/internal/core/parser/ast/quick/ASTTemplateDeclaration.java	10 Jul 2003 21:31:34 -0000	1.2
+++ parser/org/eclipse/cdt/internal/core/parser/ast/quick/ASTTemplateDeclaration.java	18 Jul 2003 16:34:36 -0000
@@ -13,6 +13,7 @@
 import java.util.Iterator;
 import java.util.List;
 
+import org.eclipse.cdt.core.parser.ISourceElementRequestor;
 import org.eclipse.cdt.core.parser.ast.IASTDeclaration;
 import org.eclipse.cdt.core.parser.ast.IASTScope;
 import org.eclipse.cdt.core.parser.ast.IASTTemplateDeclaration;
@@ -97,5 +98,28 @@
     public boolean isExported()
     {
         return isExported;
+    }
+
+    /* (non-Javadoc)
+     * @see org.eclipse.cdt.core.parser.ISourceElementCallbackDelegate#accept(org.eclipse.cdt.core.parser.ISourceElementRequestor)
+     */
+    public void acceptElement(ISourceElementRequestor requestor)
+    {
+    }
+
+    /* (non-Javadoc)
+     * @see org.eclipse.cdt.core.parser.ISourceElementCallbackDelegate#enter(org.eclipse.cdt.core.parser.ISourceElementRequestor)
+     */
+    public void enterScope(ISourceElementRequestor requestor)
+    {
+    	requestor.enterTemplateDeclaration(this);
+    }
+
+    /* (non-Javadoc)
+     * @see org.eclipse.cdt.core.parser.ISourceElementCallbackDelegate#exit(org.eclipse.cdt.core.parser.ISourceElementRequestor)
+     */
+    public void exitScope(ISourceElementRequestor requestor)
+    {
+    	requestor.exitTemplateDeclaration(this);
     }
 }
Index: parser/org/eclipse/cdt/internal/core/parser/ast/quick/ASTTemplateInstantiation.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/ast/quick/ASTTemplateInstantiation.java,v
retrieving revision 1.1
diff -u -r1.1 ASTTemplateInstantiation.java
--- parser/org/eclipse/cdt/internal/core/parser/ast/quick/ASTTemplateInstantiation.java	10 Jul 2003 21:31:34 -0000	1.1
+++ parser/org/eclipse/cdt/internal/core/parser/ast/quick/ASTTemplateInstantiation.java	18 Jul 2003 16:34:36 -0000
@@ -10,6 +10,7 @@
 ***********************************************************************/
 package org.eclipse.cdt.internal.core.parser.ast.quick;
 
+import org.eclipse.cdt.core.parser.ISourceElementRequestor;
 import org.eclipse.cdt.core.parser.ast.IASTDeclaration;
 import org.eclipse.cdt.core.parser.ast.IASTScope;
 import org.eclipse.cdt.core.parser.ast.IASTTemplateInstantiation;
@@ -79,5 +80,29 @@
     public int getElementEndingOffset()
     {
         return offsets.getElementEndingOffset();
+    }
+
+    /* (non-Javadoc)
+     * @see org.eclipse.cdt.core.parser.ISourceElementCallbackDelegate#accept(org.eclipse.cdt.core.parser.ISourceElementRequestor)
+     */
+    public void acceptElement(ISourceElementRequestor requestor)
+    {
+    }
+
+    /* (non-Javadoc)
+     * @see org.eclipse.cdt.core.parser.ISourceElementCallbackDelegate#enter(org.eclipse.cdt.core.parser.ISourceElementRequestor)
+     */
+    public void enterScope(ISourceElementRequestor requestor)
+    {
+        requestor.enterTemplateInstantiation(this);
+        
+    }
+
+    /* (non-Javadoc)
+     * @see org.eclipse.cdt.core.parser.ISourceElementCallbackDelegate#exit(org.eclipse.cdt.core.parser.ISourceElementRequestor)
+     */
+    public void exitScope(ISourceElementRequestor requestor)
+    {
+    	requestor.exitTemplateExplicitInstantiation(this);
     }
 }
Index: parser/org/eclipse/cdt/internal/core/parser/ast/quick/ASTTemplateSpecialization.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/ast/quick/ASTTemplateSpecialization.java,v
retrieving revision 1.1
diff -u -r1.1 ASTTemplateSpecialization.java
--- parser/org/eclipse/cdt/internal/core/parser/ast/quick/ASTTemplateSpecialization.java	10 Jul 2003 21:31:34 -0000	1.1
+++ parser/org/eclipse/cdt/internal/core/parser/ast/quick/ASTTemplateSpecialization.java	18 Jul 2003 16:34:36 -0000
@@ -10,6 +10,7 @@
 ***********************************************************************/
 package org.eclipse.cdt.internal.core.parser.ast.quick;
 
+import org.eclipse.cdt.core.parser.ISourceElementRequestor;
 import org.eclipse.cdt.core.parser.ast.IASTDeclaration;
 import org.eclipse.cdt.core.parser.ast.IASTScope;
 import org.eclipse.cdt.core.parser.ast.IASTTemplateSpecialization;
@@ -74,5 +75,28 @@
     public void setOwnedDeclaration(IASTDeclaration declaration)
     {
         ownedDeclaration = declaration;
+    }
+
+    /* (non-Javadoc)
+     * @see org.eclipse.cdt.core.parser.ISourceElementCallbackDelegate#accept(org.eclipse.cdt.core.parser.ISourceElementRequestor)
+     */
+    public void acceptElement(ISourceElementRequestor requestor)
+    {
+    }
+
+    /* (non-Javadoc)
+     * @see org.eclipse.cdt.core.parser.ISourceElementCallbackDelegate#enter(org.eclipse.cdt.core.parser.ISourceElementRequestor)
+     */
+    public void enterScope(ISourceElementRequestor requestor)
+    {
+        requestor.enterTemplateSpecialization(this);
+    }
+
+    /* (non-Javadoc)
+     * @see org.eclipse.cdt.core.parser.ISourceElementCallbackDelegate#exit(org.eclipse.cdt.core.parser.ISourceElementRequestor)
+     */
+    public void exitScope(ISourceElementRequestor requestor)
+    {
+    	requestor.exitTemplateSpecialization(this);
     }
 }
Index: parser/org/eclipse/cdt/internal/core/parser/ast/quick/ASTTypedefDeclaration.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/ast/quick/ASTTypedefDeclaration.java,v
retrieving revision 1.1
diff -u -r1.1 ASTTypedefDeclaration.java
--- parser/org/eclipse/cdt/internal/core/parser/ast/quick/ASTTypedefDeclaration.java	18 Jul 2003 12:40:48 -0000	1.1
+++ parser/org/eclipse/cdt/internal/core/parser/ast/quick/ASTTypedefDeclaration.java	18 Jul 2003 16:34:36 -0000
@@ -10,6 +10,7 @@
 ***********************************************************************/
 package org.eclipse.cdt.internal.core.parser.ast.quick;
 
+import org.eclipse.cdt.core.parser.ISourceElementRequestor;
 import org.eclipse.cdt.core.parser.ast.IASTAbstractDeclaration;
 import org.eclipse.cdt.core.parser.ast.IASTScope;
 import org.eclipse.cdt.core.parser.ast.IASTTypedefDeclaration;
@@ -102,6 +103,25 @@
     public String[] getFullyQualifiedName()
     {
         return qualifiedName.getFullyQualifiedName();
+    }
+    /* (non-Javadoc)
+     * @see org.eclipse.cdt.core.parser.ISourceElementCallbackDelegate#accept(org.eclipse.cdt.core.parser.ISourceElementRequestor)
+     */
+    public void acceptElement(ISourceElementRequestor requestor)
+    {
+    	requestor.acceptTypedefDeclaration(this);
+    }
+    /* (non-Javadoc)
+     * @see org.eclipse.cdt.core.parser.ISourceElementCallbackDelegate#enter(org.eclipse.cdt.core.parser.ISourceElementRequestor)
+     */
+    public void enterScope(ISourceElementRequestor requestor)
+    {
+    }
+    /* (non-Javadoc)
+     * @see org.eclipse.cdt.core.parser.ISourceElementCallbackDelegate#exit(org.eclipse.cdt.core.parser.ISourceElementRequestor)
+     */
+    public void exitScope(ISourceElementRequestor requestor)
+    {
     }
 
 }
Index: parser/org/eclipse/cdt/internal/core/parser/ast/quick/ASTUsingDeclaration.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/ast/quick/ASTUsingDeclaration.java,v
retrieving revision 1.3
diff -u -r1.3 ASTUsingDeclaration.java
--- parser/org/eclipse/cdt/internal/core/parser/ast/quick/ASTUsingDeclaration.java	17 Jul 2003 20:15:13 -0000	1.3
+++ parser/org/eclipse/cdt/internal/core/parser/ast/quick/ASTUsingDeclaration.java	18 Jul 2003 16:34:36 -0000
@@ -10,6 +10,7 @@
 ***********************************************************************/
 package org.eclipse.cdt.internal.core.parser.ast.quick;
 
+import org.eclipse.cdt.core.parser.ISourceElementRequestor;
 import org.eclipse.cdt.core.parser.ast.IASTScope;
 import org.eclipse.cdt.core.parser.ast.IASTUsingDeclaration;
 import org.eclipse.cdt.internal.core.parser.ast.Offsets;
@@ -76,4 +77,23 @@
 		return offsets.getElementEndingOffset();
 	}
 	private Offsets offsets = new Offsets();
+    /* (non-Javadoc)
+     * @see org.eclipse.cdt.core.parser.ISourceElementCallbackDelegate#accept(org.eclipse.cdt.core.parser.ISourceElementRequestor)
+     */
+    public void acceptElement(ISourceElementRequestor requestor)
+    {
+		requestor.acceptUsingDeclaration(this); 
+    }
+    /* (non-Javadoc)
+     * @see org.eclipse.cdt.core.parser.ISourceElementCallbackDelegate#enter(org.eclipse.cdt.core.parser.ISourceElementRequestor)
+     */
+    public void enterScope(ISourceElementRequestor requestor)
+    {
+    }
+    /* (non-Javadoc)
+     * @see org.eclipse.cdt.core.parser.ISourceElementCallbackDelegate#exit(org.eclipse.cdt.core.parser.ISourceElementRequestor)
+     */
+    public void exitScope(ISourceElementRequestor requestor)
+    {
+    }
 }
Index: parser/org/eclipse/cdt/internal/core/parser/ast/quick/ASTUsingDirective.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/ast/quick/ASTUsingDirective.java,v
retrieving revision 1.3
diff -u -r1.3 ASTUsingDirective.java
--- parser/org/eclipse/cdt/internal/core/parser/ast/quick/ASTUsingDirective.java	17 Jul 2003 20:15:13 -0000	1.3
+++ parser/org/eclipse/cdt/internal/core/parser/ast/quick/ASTUsingDirective.java	18 Jul 2003 16:34:36 -0000
@@ -10,6 +10,7 @@
 ***********************************************************************/
 package org.eclipse.cdt.internal.core.parser.ast.quick;
 
+import org.eclipse.cdt.core.parser.ISourceElementRequestor;
 import org.eclipse.cdt.core.parser.ast.IASTScope;
 import org.eclipse.cdt.core.parser.ast.IASTUsingDirective;
 import org.eclipse.cdt.internal.core.parser.ast.Offsets;
@@ -68,4 +69,23 @@
         return offsets.getElementEndingOffset();
     }
 	private Offsets offsets = new Offsets();
+    /* (non-Javadoc)
+     * @see org.eclipse.cdt.core.parser.ISourceElementCallbackDelegate#accept(org.eclipse.cdt.core.parser.ISourceElementRequestor)
+     */
+    public void acceptElement(ISourceElementRequestor requestor)
+    {
+    	requestor.acceptUsingDirective(this);
+    }
+    /* (non-Javadoc)
+     * @see org.eclipse.cdt.core.parser.ISourceElementCallbackDelegate#enter(org.eclipse.cdt.core.parser.ISourceElementRequestor)
+     */
+    public void enterScope(ISourceElementRequestor requestor)
+    {
+    }
+    /* (non-Javadoc)
+     * @see org.eclipse.cdt.core.parser.ISourceElementCallbackDelegate#exit(org.eclipse.cdt.core.parser.ISourceElementRequestor)
+     */
+    public void exitScope(ISourceElementRequestor requestor)
+    {
+    }
 }
Index: parser/org/eclipse/cdt/internal/core/parser/ast/quick/ASTVariable.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/ast/quick/ASTVariable.java,v
retrieving revision 1.4
diff -u -r1.4 ASTVariable.java
--- parser/org/eclipse/cdt/internal/core/parser/ast/quick/ASTVariable.java	18 Jul 2003 12:40:48 -0000	1.4
+++ parser/org/eclipse/cdt/internal/core/parser/ast/quick/ASTVariable.java	18 Jul 2003 16:34:37 -0000
@@ -10,6 +10,7 @@
 ***********************************************************************/
 package org.eclipse.cdt.internal.core.parser.ast.quick;
 
+import org.eclipse.cdt.core.parser.ISourceElementRequestor;
 import org.eclipse.cdt.core.parser.ast.IASTAbstractDeclaration;
 import org.eclipse.cdt.core.parser.ast.IASTExpression;
 import org.eclipse.cdt.core.parser.ast.IASTInitializerClause;
@@ -171,6 +172,25 @@
     public String[] getFullyQualifiedName()
     {
         return qualifiedName.getFullyQualifiedName();
+    }
+    /* (non-Javadoc)
+     * @see org.eclipse.cdt.core.parser.ISourceElementCallbackDelegate#accept(org.eclipse.cdt.core.parser.ISourceElementRequestor)
+     */
+    public void acceptElement(ISourceElementRequestor requestor)
+    {
+    	requestor.acceptVariable(this);
+    }
+    /* (non-Javadoc)
+     * @see org.eclipse.cdt.core.parser.ISourceElementCallbackDelegate#enter(org.eclipse.cdt.core.parser.ISourceElementRequestor)
+     */
+    public void enterScope(ISourceElementRequestor requestor)
+    {
+    }
+    /* (non-Javadoc)
+     * @see org.eclipse.cdt.core.parser.ISourceElementCallbackDelegate#exit(org.eclipse.cdt.core.parser.ISourceElementRequestor)
+     */
+    public void exitScope(ISourceElementRequestor requestor)
+    {
     }
    
  
Index: parser/org/eclipse/cdt/internal/core/parser/ast/quick/QuickParseASTFactory.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/ast/quick/QuickParseASTFactory.java,v
retrieving revision 1.12
diff -u -r1.12 QuickParseASTFactory.java
--- parser/org/eclipse/cdt/internal/core/parser/ast/quick/QuickParseASTFactory.java	18 Jul 2003 12:40:48 -0000	1.12
+++ parser/org/eclipse/cdt/internal/core/parser/ast/quick/QuickParseASTFactory.java	18 Jul 2003 16:34:37 -0000
@@ -12,11 +12,12 @@
 
 import java.util.List;
 
-import org.eclipse.cdt.core.parser.Backtrack;
 import org.eclipse.cdt.core.parser.ITokenDuple;
 import org.eclipse.cdt.core.parser.ast.ASTAccessVisibility;
 import org.eclipse.cdt.core.parser.ast.ASTClassKind;
+import org.eclipse.cdt.core.parser.ast.ASTNotImplementedException;
 import org.eclipse.cdt.core.parser.ast.ASTPointerOperator;
+import org.eclipse.cdt.core.parser.ast.ASTSemanticException;
 import org.eclipse.cdt.core.parser.ast.IASTASMDefinition;
 import org.eclipse.cdt.core.parser.ast.IASTAbstractDeclaration;
 import org.eclipse.cdt.core.parser.ast.IASTAbstractTypeSpecifierDeclaration;
@@ -24,6 +25,7 @@
 import org.eclipse.cdt.core.parser.ast.IASTClassSpecifier;
 import org.eclipse.cdt.core.parser.ast.IASTCompilationUnit;
 import org.eclipse.cdt.core.parser.ast.IASTConstructorMemberInitializer;
+import org.eclipse.cdt.core.parser.ast.IASTDeclaration;
 import org.eclipse.cdt.core.parser.ast.IASTElaboratedTypeSpecifier;
 import org.eclipse.cdt.core.parser.ast.IASTEnumerationSpecifier;
 import org.eclipse.cdt.core.parser.ast.IASTEnumerator;
@@ -57,6 +59,7 @@
 import org.eclipse.cdt.core.parser.ast.IASTSimpleTypeSpecifier.Type;
 import org.eclipse.cdt.internal.core.parser.ast.BaseASTFactory;
 import org.eclipse.cdt.internal.core.parser.ast.IASTArrayModifier;
+import org.eclipse.cdt.internal.core.parser.pst.ISymbolASTExtension;
 
 /**
  * @author jcamelon
@@ -67,7 +70,7 @@
 	/* (non-Javadoc)
 	 * @see org.eclipse.cdt.internal.core.parser.ast.IASTFactory#createUsingDirective(org.eclipse.cdt.internal.core.parser.ast.IASTScope, org.eclipse.cdt.internal.core.parser.TokenDuple)
 	 */
-	public IASTUsingDirective createUsingDirective(IASTScope scope, ITokenDuple duple, int startingOffset, int endingOffset) throws Backtrack {
+	public IASTUsingDirective createUsingDirective(IASTScope scope, ITokenDuple duple, int startingOffset, int endingOffset) throws ASTSemanticException {
 		return new ASTUsingDirective( scope, duple.toString(), startingOffset, endingOffset );
 	}
 
@@ -317,6 +320,14 @@
     public IASTPointerToMethod createPointerToMethod(IASTScope scope, String name, List parameters, IASTAbstractDeclaration returnType, IASTExceptionSpecification exception, boolean isInline, boolean isFriend, boolean isStatic, int startOffset, int nameOffset, IASTTemplate ownerTemplate, boolean isConst, boolean isVolatile, boolean isConstructor, boolean isDestructor, boolean isVirtual, boolean isExplicit, boolean isPureVirtual, ASTAccessVisibility visibility, ASTPointerOperator pointerOperator)
     {
         return new ASTPointerToMethod(scope, name, parameters, returnType, exception, isInline, isFriend, isStatic, startOffset, nameOffset, ownerTemplate, isConst, isVolatile, isConstructor, isDestructor, isVirtual, isExplicit, isPureVirtual, visibility, pointerOperator);
+    }
+
+    /* (non-Javadoc)
+     * @see org.eclipse.cdt.core.parser.ast.IASTFactory#createSymbolTableDeclarationExtension(org.eclipse.cdt.core.parser.ast.IASTDeclaration, org.eclipse.cdt.core.parser.ast.IASTDeclaration)
+     */
+    public ISymbolASTExtension createSymbolTableDeclarationExtension(IASTDeclaration declaration, IASTDeclaration definition) throws ASTNotImplementedException
+    {
+    	throw new ASTNotImplementedException(); 
     }
 
 
Index: parser/org/eclipse/cdt/internal/core/parser/problem/DefaultProblem.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/problem/DefaultProblem.java,v
retrieving revision 1.2
diff -u -r1.2 DefaultProblem.java
--- parser/org/eclipse/cdt/internal/core/parser/problem/DefaultProblem.java	4 Jul 2003 15:19:53 -0000	1.2
+++ parser/org/eclipse/cdt/internal/core/parser/problem/DefaultProblem.java	18 Jul 2003 16:34:37 -0000
@@ -12,6 +12,7 @@
 
 //import org.eclipse.cdt.core.model.ITranslationUnit;
 import org.eclipse.cdt.core.parser.IProblem;
+import org.eclipse.cdt.core.parser.ISourceElementRequestor;
 
 
 public class DefaultProblem implements IProblem {
@@ -246,4 +247,26 @@
 		}
 		return s;
 	}
+
+    /* (non-Javadoc)
+     * @see org.eclipse.cdt.core.parser.ISourceElementCallbackDelegate#acceptElement(org.eclipse.cdt.core.parser.ISourceElementRequestor)
+     */
+    public void acceptElement(ISourceElementRequestor requestor)
+    {
+    	requestor.acceptProblem( this );
+    }
+
+    /* (non-Javadoc)
+     * @see org.eclipse.cdt.core.parser.ISourceElementCallbackDelegate#enterScope(org.eclipse.cdt.core.parser.ISourceElementRequestor)
+     */
+    public void enterScope(ISourceElementRequestor requestor)
+    {
+    }
+
+    /* (non-Javadoc)
+     * @see org.eclipse.cdt.core.parser.ISourceElementCallbackDelegate#exitScope(org.eclipse.cdt.core.parser.ISourceElementRequestor)
+     */
+    public void exitScope(ISourceElementRequestor requestor)
+    {
+    }
 }
Index: parser/org/eclipse/cdt/internal/core/parser/pst/ISymbol.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/pst/ISymbol.java,v
retrieving revision 1.2
diff -u -r1.2 ISymbol.java
--- parser/org/eclipse/cdt/internal/core/parser/pst/ISymbol.java	13 Jun 2003 15:01:22 -0000	1.2
+++ parser/org/eclipse/cdt/internal/core/parser/pst/ISymbol.java	18 Jul 2003 16:34:37 -0000
@@ -13,7 +13,6 @@
 import java.util.HashMap;
 import java.util.LinkedList;
 
-import org.eclipse.cdt.internal.core.parser.ast.full.IPSTSymbolExtension;
 import org.eclipse.cdt.internal.core.parser.pst.ParserSymbolTable.TemplateInstance;
 import org.eclipse.cdt.internal.core.parser.pst.ParserSymbolTable.TypeInfo;
 /**
@@ -26,8 +25,8 @@
 	
 	public Object clone();
 		
-	public IPSTSymbolExtension getASTNode(); 
-	public void setASTNode( IPSTSymbolExtension obj );
+	public ISymbolASTExtension getASTNode(); 
+	public void setASTNode( ISymbolASTExtension obj );
 
 	public String getName();
 	
Index: parser/org/eclipse/cdt/internal/core/parser/pst/ISymbolASTExtension.java
===================================================================
RCS file: parser/org/eclipse/cdt/internal/core/parser/pst/ISymbolASTExtension.java
diff -N parser/org/eclipse/cdt/internal/core/parser/pst/ISymbolASTExtension.java
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ parser/org/eclipse/cdt/internal/core/parser/pst/ISymbolASTExtension.java	18 Jul 2003 16:34:37 -0000
@@ -0,0 +1,25 @@
+/**********************************************************************
+ * 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.pst;
+
+import org.eclipse.cdt.core.parser.ast.IASTDeclaration;
+
+/**
+ * @author jcamelon
+ *
+ */
+public interface ISymbolASTExtension extends ISymbolOwner
+{
+	public IASTDeclaration getDeclaration(); 
+	public IASTDeclaration getDefinition();
+	public void            setDefinition( IASTDeclaration definition ); 	
+	public boolean         hasBeenDefined(); 
+}
Index: parser/org/eclipse/cdt/internal/core/parser/pst/ISymbolOwner.java
===================================================================
RCS file: parser/org/eclipse/cdt/internal/core/parser/pst/ISymbolOwner.java
diff -N parser/org/eclipse/cdt/internal/core/parser/pst/ISymbolOwner.java
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ parser/org/eclipse/cdt/internal/core/parser/pst/ISymbolOwner.java	18 Jul 2003 16:34:37 -0000
@@ -0,0 +1,22 @@
+/**********************************************************************
+ * 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.pst;
+
+/**
+ * @author jcamelon
+ *
+ */
+public interface ISymbolOwner
+{
+	public ISymbol		   getSymbol(); 
+	public void			   setSymbol( ISymbol s );
+
+}
Index: parser/org/eclipse/cdt/internal/core/parser/pst/ParserSymbolTable.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/pst/ParserSymbolTable.java,v
retrieving revision 1.4
diff -u -r1.4 ParserSymbolTable.java
--- parser/org/eclipse/cdt/internal/core/parser/pst/ParserSymbolTable.java	7 Jul 2003 13:46:08 -0000	1.4
+++ parser/org/eclipse/cdt/internal/core/parser/pst/ParserSymbolTable.java	18 Jul 2003 16:34:38 -0000
@@ -23,7 +23,6 @@
 import java.util.Set;
 
 import org.eclipse.cdt.core.parser.ast.ASTAccessVisibility;
-import org.eclipse.cdt.internal.core.parser.ast.full.IPSTSymbolExtension;
 
 /**
  * @author aniefer
@@ -2035,7 +2034,7 @@
 			_typeInfo = new TypeInfo();
 		}
 		
-		public BasicSymbol( String name, IPSTSymbolExtension obj ){
+		public BasicSymbol( String name, ISymbolASTExtension obj ){
 			super();
 			_name   = name;
 			_object = obj;
@@ -2068,8 +2067,8 @@
 		public String getName() { return _name; }
 		public void setName(String name) { _name = name; }
 
-		public IPSTSymbolExtension getASTNode() { return _object; }
-		public void setASTNode( IPSTSymbolExtension obj ) { _object = obj; }
+		public ISymbolASTExtension getASTNode() { return _object; }
+		public void setASTNode( ISymbolASTExtension obj ) { _object = obj; }
 			
 		public IContainerSymbol getContainingSymbol() { return _containingScope; }
 		public void setContainingSymbol( IContainerSymbol scope ){ 
@@ -2165,7 +2164,7 @@
 			return null;
 		}
 		private 	String 		_name;					//our name
-		private		IPSTSymbolExtension	_object;	//the object associated with us
+		private		ISymbolASTExtension	_object;	//the object associated with us
 		private		TypeInfo	_typeInfo;				//our type info
 		private		Declaration	_containingScope;		//the scope that contains us
 		private		int 		_depth;					//how far down the scope stack we are
@@ -2300,7 +2299,7 @@
 			super( name );
 		}
 	
-		public Declaration( String name, IPSTSymbolExtension obj ){
+		public Declaration( String name, ISymbolASTExtension obj ){
 			super( name, obj );
 		}
 		
Index: search/org/eclipse/cdt/internal/core/search/matching/CSearchPattern.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.core/search/org/eclipse/cdt/internal/core/search/matching/CSearchPattern.java,v
retrieving revision 1.8
diff -u -r1.8 CSearchPattern.java
--- search/org/eclipse/cdt/internal/core/search/matching/CSearchPattern.java	15 Jul 2003 14:43:50 -0000	1.8
+++ search/org/eclipse/cdt/internal/core/search/matching/CSearchPattern.java	18 Jul 2003 16:34:39 -0000
@@ -97,7 +97,7 @@
 	 * @return
 	 */
 	private static CSearchPattern createNamespacePattern(String patternString, LimitTo limitTo, int matchMode, boolean caseSensitive) {
-		IScanner scanner = ParserFactory.createScanner( new StringReader( patternString ), "TEXT", new ScannerInfo(), ParserMode.QUICK_PARSE );
+		IScanner scanner = ParserFactory.createScanner( new StringReader( patternString ), "TEXT", new ScannerInfo(), ParserMode.QUICK_PARSE, null );
 		LinkedList list = scanForNames( scanner, null );
 		
 		char [] name = (char []) list.removeLast();
@@ -138,7 +138,7 @@
 	 * @return
 	 */
 	private static CSearchPattern createFieldPattern(String patternString, LimitTo limitTo, int matchMode, boolean caseSensitive) {
-		IScanner scanner = ParserFactory.createScanner( new StringReader( patternString ), "TEXT", new ScannerInfo(), ParserMode.QUICK_PARSE );
+		IScanner scanner = ParserFactory.createScanner( new StringReader( patternString ), "TEXT", new ScannerInfo(), ParserMode.QUICK_PARSE, null );
 		LinkedList list = scanForNames( scanner, null );
 		
 		char [] name = (char []) list.removeLast();
@@ -167,7 +167,7 @@
 	 * @return
 	 */
 	private static CSearchPattern createClassPattern(String patternString, SearchFor searchFor, LimitTo limitTo, int matchMode, boolean caseSensitive) {
-		IScanner scanner = ParserFactory.createScanner( new StringReader( patternString ), "TEXT", new ScannerInfo(), ParserMode.QUICK_PARSE );
+		IScanner scanner = ParserFactory.createScanner( new StringReader( patternString ), "TEXT", new ScannerInfo(), ParserMode.QUICK_PARSE, null );
 		
 		IToken token = null;
 		ASTClassKind kind = null;
Index: search/org/eclipse/cdt/internal/core/search/matching/MatchLocator.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.core/search/org/eclipse/cdt/internal/core/search/matching/MatchLocator.java,v
retrieving revision 1.8
diff -u -r1.8 MatchLocator.java
--- search/org/eclipse/cdt/internal/core/search/matching/MatchLocator.java	17 Jul 2003 20:15:13 -0000	1.8
+++ search/org/eclipse/cdt/internal/core/search/matching/MatchLocator.java	18 Jul 2003 16:34:39 -0000
@@ -34,15 +34,20 @@
 import org.eclipse.cdt.core.parser.ast.IASTClassSpecifier;
 import org.eclipse.cdt.core.parser.ast.IASTCompilationUnit;
 import org.eclipse.cdt.core.parser.ast.IASTElaboratedTypeSpecifier;
+import org.eclipse.cdt.core.parser.ast.IASTEnumerationReference;
 import org.eclipse.cdt.core.parser.ast.IASTEnumerationSpecifier;
 import org.eclipse.cdt.core.parser.ast.IASTEnumerator;
 import org.eclipse.cdt.core.parser.ast.IASTField;
+import org.eclipse.cdt.core.parser.ast.IASTFieldReference;
 import org.eclipse.cdt.core.parser.ast.IASTFunction;
+import org.eclipse.cdt.core.parser.ast.IASTFunctionReference;
 import org.eclipse.cdt.core.parser.ast.IASTInclusion;
 import org.eclipse.cdt.core.parser.ast.IASTLinkageSpecification;
 import org.eclipse.cdt.core.parser.ast.IASTMacro;
 import org.eclipse.cdt.core.parser.ast.IASTMethod;
+import org.eclipse.cdt.core.parser.ast.IASTMethodReference;
 import org.eclipse.cdt.core.parser.ast.IASTNamespaceDefinition;
+import org.eclipse.cdt.core.parser.ast.IASTNamespaceReference;
 import org.eclipse.cdt.core.parser.ast.IASTOffsetableNamedElement;
 import org.eclipse.cdt.core.parser.ast.IASTPointerToFunction;
 import org.eclipse.cdt.core.parser.ast.IASTPointerToMethod;
@@ -51,9 +56,11 @@
 import org.eclipse.cdt.core.parser.ast.IASTTemplateInstantiation;
 import org.eclipse.cdt.core.parser.ast.IASTTemplateSpecialization;
 import org.eclipse.cdt.core.parser.ast.IASTTypedefDeclaration;
+import org.eclipse.cdt.core.parser.ast.IASTTypedefReference;
 import org.eclipse.cdt.core.parser.ast.IASTUsingDeclaration;
 import org.eclipse.cdt.core.parser.ast.IASTUsingDirective;
 import org.eclipse.cdt.core.parser.ast.IASTVariable;
+import org.eclipse.cdt.core.parser.ast.IASTVariableReference;
 import org.eclipse.cdt.core.search.ICSearchConstants;
 import org.eclipse.cdt.core.search.ICSearchPattern;
 import org.eclipse.cdt.core.search.ICSearchResultCollector;
@@ -98,7 +105,7 @@
 	public void acceptUsingDirective(IASTUsingDirective usageDirective) 		{	}
 	public void acceptUsingDeclaration(IASTUsingDeclaration usageDeclaration) 	{	}
 	public void acceptASMDefinition(IASTASMDefinition asmDefinition) 			{	}
-	public void acceptTypedef(IASTTypedefDeclaration typedef) 								{	}
+	public void acceptTypedefDeclaration(IASTTypedefDeclaration typedef) 								{	}
 	public void acceptEnumerator(IASTEnumerator enumerator) 					{	}
 	public void acceptAbstractTypeSpecDeclaration(IASTAbstractTypeSpecifierDeclaration abstractDeclaration) {}
 	public void acceptPointerToFunction(IASTPointerToFunction function) {}
@@ -119,7 +126,14 @@
 	}	
 	
 	public void acceptClassReference(IASTClassReference reference) {	}
-	public void acceptElaboratedTypeSpecifier(IASTElaboratedTypeSpecifier elaboratedTypeSpec){  }
+	public void acceptTypedefReference( IASTTypedefReference reference ){	}
+	public void acceptNamespaceReference( IASTNamespaceReference reference ){	}
+	public void acceptEnumerationReference( IASTEnumerationReference reference ){	}
+	public void acceptVariableReference( IASTVariableReference reference ){	}
+	public void acceptFunctionReference( IASTFunctionReference reference ){	}
+	public void acceptFieldReference( IASTFieldReference reference ){	}
+	public void acceptMethodReference( IASTMethodReference reference ) {	}
+	
 	public void acceptMethodDeclaration(IASTMethod method) 						{	}
 	public void acceptField(IASTField field) 									{	}
 	
@@ -147,7 +161,7 @@
 	public void enterLinkageSpecification(IASTLinkageSpecification linkageSpec) {	}
 	public void enterTemplateDeclaration(IASTTemplateDeclaration declaration) 	{	}
 	public void enterTemplateSpecialization(IASTTemplateSpecialization specialization) 		{	}
-	public void enterTemplateExplicitInstantiation(IASTTemplateInstantiation instantiation) {	}
+	public void enterTemplateInstantiation(IASTTemplateInstantiation instantiation) {	}
 	
 	public void enterMethodBody(IASTMethod method) {
 		pushScope( method );
@@ -297,9 +311,8 @@
 				}
 			}
 			
-			IScanner scanner = ParserFactory.createScanner( reader, pathString, new ScannerInfo(), ParserMode.QUICK_PARSE );
-			IParser  parser  = ParserFactory.createParser( scanner, null, ParserMode.QUICK_PARSE );
-			parser.setRequestor( this );
+			IScanner scanner = ParserFactory.createScanner( reader, pathString, new ScannerInfo(), ParserMode.QUICK_PARSE, this );
+			IParser  parser  = ParserFactory.createParser( scanner, this, ParserMode.QUICK_PARSE );
 			
 			parser.parse();
 		}

Back to the top