mirror of
https://github.com/eclipse-cdt/cdt
synced 2025-07-23 17:05:26 +02:00
Pooled class and variable references.
Cleaned up ASTFactory construction.
This commit is contained in:
parent
8ef916c2ff
commit
20a1cd8f35
110 changed files with 2048 additions and 1511 deletions
4
core/org.eclipse.cdt.core.tests/.cdtproject
Normal file
4
core/org.eclipse.cdt.core.tests/.cdtproject
Normal file
|
@ -0,0 +1,4 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<?eclipse-cdt version="2.0"?>
|
||||
|
||||
<cdtproject/>
|
|
@ -928,12 +928,12 @@ public class CompleteParseASTTemplateTest extends CompleteParseBaseTest {
|
|||
|
||||
public void testBug64753() throws Exception{
|
||||
Writer writer = new StringWriter();
|
||||
writer.write( "template < class _T > void foo () { \n" );
|
||||
writer.write( " if( 1 ) { \n" );
|
||||
writer.write( " _T p1, p2; \n" );
|
||||
writer.write( " int n = p1 - p2; \n" );
|
||||
writer.write( " } \n" );
|
||||
writer.write( "} \n" );
|
||||
writer.write( "template < class _T > void foo () { \n" ); //$NON-NLS-1$
|
||||
writer.write( " if( 1 ) { \n" ); //$NON-NLS-1$
|
||||
writer.write( " _T p1, p2; \n" ); //$NON-NLS-1$
|
||||
writer.write( " int n = p1 - p2; \n" ); //$NON-NLS-1$
|
||||
writer.write( " } \n" ); //$NON-NLS-1$
|
||||
writer.write( "} \n" ); //$NON-NLS-1$
|
||||
|
||||
Iterator i = parse( writer.toString() ).getDeclarations();
|
||||
|
||||
|
@ -942,13 +942,13 @@ public class CompleteParseASTTemplateTest extends CompleteParseBaseTest {
|
|||
|
||||
public void testBug64919() throws Exception{
|
||||
Writer writer = new StringWriter();
|
||||
writer.write("class Foo{}; ");
|
||||
writer.write("class Bar{}; ");
|
||||
writer.write("template <class T, class U> class A {}; ");
|
||||
writer.write("template < class X > class A < X, X > : public A< X, Bar> ");
|
||||
writer.write("{ typedef int TYPE; }; ");
|
||||
writer.write("template < class X > class A < X, Foo > : public A< X, X > ");
|
||||
writer.write("{ void f ( TYPE ); }; ");
|
||||
writer.write("class Foo{}; "); //$NON-NLS-1$
|
||||
writer.write("class Bar{}; "); //$NON-NLS-1$
|
||||
writer.write("template <class T, class U> class A {}; "); //$NON-NLS-1$
|
||||
writer.write("template < class X > class A < X, X > : public A< X, Bar> "); //$NON-NLS-1$
|
||||
writer.write("{ typedef int TYPE; }; "); //$NON-NLS-1$
|
||||
writer.write("template < class X > class A < X, Foo > : public A< X, X > "); //$NON-NLS-1$
|
||||
writer.write("{ void f ( TYPE ); }; "); //$NON-NLS-1$
|
||||
|
||||
Iterator i = parse( writer.toString() ).getDeclarations();
|
||||
|
||||
|
|
|
@ -148,7 +148,8 @@ public class CompleteParseASTTest extends CompleteParseBaseTest
|
|||
IASTClassSpecifier classA = (IASTClassSpecifier)((IASTAbstractTypeSpecifierDeclaration)declarations.next()).getTypeSpecifier();
|
||||
IASTVariable v = (IASTVariable)declarations.next();
|
||||
assertEquals( v.getName(), "x"); //$NON-NLS-1$
|
||||
assertEquals( ((IASTSimpleTypeSpecifier)v.getAbstractDeclaration().getTypeSpecifier()).getTypeSpecifier(), classA );
|
||||
assertEquals( ((IASTSimpleTypeSpecifier)v.getAbstractDeclaration().getTypeSpecifier()).getTypeSpecifier(), classA );
|
||||
assertAllReferences( 1, createTaskList( new Task( classA )));
|
||||
}
|
||||
|
||||
public void testNestedClassReferenceVariable() throws Exception
|
||||
|
@ -241,8 +242,10 @@ public class CompleteParseASTTest extends CompleteParseBaseTest
|
|||
{
|
||||
Iterator declarations = parse( "class A { public: \n class B { }; }; const A::B & foo( A * myParam );").getDeclarations(); //$NON-NLS-1$
|
||||
IASTClassSpecifier classA = (IASTClassSpecifier)((IASTAbstractTypeSpecifierDeclaration)declarations.next()).getTypeSpecifier();
|
||||
Iterator classDecls = getDeclarations(classA);
|
||||
IASTClassSpecifier classB = (IASTClassSpecifier)((IASTAbstractTypeSpecifierDeclaration)classDecls.next()).getTypeSpecifier();
|
||||
IASTFunction function = (IASTFunction)declarations.next();
|
||||
assertEquals( callback.getReferences().size(), 3 );
|
||||
assertAllReferences( 3, createTaskList( new Task( classA ,2), new Task(classB)));
|
||||
}
|
||||
|
||||
public void testSimpleMethod() throws Exception
|
||||
|
@ -457,11 +460,7 @@ public class CompleteParseASTTest extends CompleteParseBaseTest
|
|||
IASTField fieldA = (IASTField)s.next();
|
||||
IASTMethod methodA = (IASTMethod)s.next();
|
||||
assertFalse( s.hasNext() );
|
||||
assertEquals( callback.getReferences().size(), 2 );
|
||||
IASTFieldReference reference1 = (IASTFieldReference)callback.getReferences().get(0);
|
||||
IASTVariableReference reference2 = (IASTVariableReference)callback.getReferences().get(1);
|
||||
assertEquals( reference1.getReferencedElement(), fieldA );
|
||||
assertEquals( reference2.getReferencedElement(), variableX );
|
||||
assertAllReferences( 2, createTaskList( new Task( fieldA), new Task( variableX )));
|
||||
}
|
||||
|
||||
public void testArrayModExpression() throws Exception
|
||||
|
@ -535,26 +534,18 @@ public class CompleteParseASTTest extends CompleteParseBaseTest
|
|||
|
||||
public void testQualifiedNameReferences() throws Exception
|
||||
{
|
||||
try { // This is to prove that there are no exceptions
|
||||
// Used to cause AST Semantic exception
|
||||
Iterator i = parse( "class A{ class B{ class C { public: int cMethod(); }; }; }; \n int A::B::C::cMethod() {}; \n" ).getDeclarations(); //$NON-NLS-1$
|
||||
IASTClassSpecifier classA = (IASTClassSpecifier)((IASTAbstractTypeSpecifierDeclaration)i.next()).getTypeSpecifier();
|
||||
Iterator j = getDeclarations(classA);
|
||||
IASTClassSpecifier classB = (IASTClassSpecifier)((IASTAbstractTypeSpecifierDeclaration)j.next()).getTypeSpecifier();
|
||||
Iterator k = getDeclarations(classB);
|
||||
IASTClassSpecifier classC = (IASTClassSpecifier)((IASTAbstractTypeSpecifierDeclaration)k.next()).getTypeSpecifier();
|
||||
|
||||
IASTClassSpecifier classC = (IASTClassSpecifier)((IASTAbstractTypeSpecifierDeclaration)k.next()).getTypeSpecifier();
|
||||
// Note : this used to be considered a function, not a method
|
||||
IASTMethod method = (IASTMethod)i.next();
|
||||
|
||||
assertEquals( callback.getReferences().size(), 3 );
|
||||
Iterator references = callback.getReferences().iterator();
|
||||
assertEquals( ((IASTClassReference)references.next()).getReferencedElement(), classA );
|
||||
assertEquals( ((IASTClassReference)references.next()).getReferencedElement(), classB );
|
||||
assertEquals( ((IASTClassReference)references.next()).getReferencedElement(), classC );
|
||||
}catch (Exception e){
|
||||
fail();
|
||||
}
|
||||
assertAllReferences( 3, createTaskList( new Task( classA ), new Task( classB ), new Task( classC )));
|
||||
|
||||
}
|
||||
|
||||
public void testIsConstructor() throws Exception
|
||||
|
|
|
@ -43,6 +43,7 @@ import org.eclipse.cdt.core.parser.ast.IASTDeclaration;
|
|||
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.IASTEnumeratorReference;
|
||||
import org.eclipse.cdt.core.parser.ast.IASTExpression;
|
||||
import org.eclipse.cdt.core.parser.ast.IASTField;
|
||||
|
@ -57,21 +58,29 @@ 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.IASTNode;
|
||||
import org.eclipse.cdt.core.parser.ast.IASTOffsetableNamedElement;
|
||||
import org.eclipse.cdt.core.parser.ast.IASTParameterDeclaration;
|
||||
import org.eclipse.cdt.core.parser.ast.IASTParameterReference;
|
||||
import org.eclipse.cdt.core.parser.ast.IASTQualifiedNameElement;
|
||||
import org.eclipse.cdt.core.parser.ast.IASTReference;
|
||||
import org.eclipse.cdt.core.parser.ast.IASTScope;
|
||||
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.IASTTemplateParameterReference;
|
||||
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.core.parser.ast.IReferenceManager;
|
||||
import org.eclipse.cdt.internal.core.parser.CompleteParser;
|
||||
import org.eclipse.cdt.internal.core.parser.ParserException;
|
||||
import org.eclipse.cdt.internal.core.parser.ast.complete.ReferenceCache;
|
||||
import org.eclipse.cdt.internal.core.parser.ast.complete.ReferenceCache.ASTTypedefReference;
|
||||
|
||||
/**
|
||||
* @author jcamelon
|
||||
|
@ -170,21 +179,21 @@ public class CompleteParseBaseTest extends TestCase
|
|||
/* (non-Javadoc)
|
||||
* @see org.eclipse.cdt.core.parser.ISourceElementCallbackDelegate#acceptElement(org.eclipse.cdt.core.parser.ISourceElementRequestor)
|
||||
*/
|
||||
public void acceptElement(ISourceElementRequestor requestor)
|
||||
public void acceptElement(ISourceElementRequestor requestor, IReferenceManager manager)
|
||||
{
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see org.eclipse.cdt.core.parser.ISourceElementCallbackDelegate#enterScope(org.eclipse.cdt.core.parser.ISourceElementRequestor)
|
||||
*/
|
||||
public void enterScope(ISourceElementRequestor requestor)
|
||||
public void enterScope(ISourceElementRequestor requestor, IReferenceManager manager)
|
||||
{
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see org.eclipse.cdt.core.parser.ISourceElementCallbackDelegate#exitScope(org.eclipse.cdt.core.parser.ISourceElementRequestor)
|
||||
*/
|
||||
public void exitScope(ISourceElementRequestor requestor)
|
||||
public void exitScope(ISourceElementRequestor requestor, IReferenceManager manager)
|
||||
{
|
||||
}
|
||||
|
||||
|
@ -315,9 +324,9 @@ public class CompleteParseBaseTest extends TestCase
|
|||
/* (non-Javadoc)
|
||||
* @see org.eclipse.cdt.core.parser.ISourceElementRequestor#enterCompilationUnit(org.eclipse.cdt.core.parser.ast.IASTCompilationUnit)
|
||||
*/
|
||||
public void enterCompilationUnit(IASTCompilationUnit compilationUnit)
|
||||
public void enterCompilationUnit(IASTCompilationUnit cu)
|
||||
{
|
||||
pushScope( compilationUnit );
|
||||
pushScope( cu );
|
||||
this.compilationUnit = getCurrentScope();
|
||||
}
|
||||
|
||||
|
@ -494,7 +503,7 @@ public class CompleteParseBaseTest extends TestCase
|
|||
/* (non-Javadoc)
|
||||
* @see org.eclipse.cdt.core.parser.ISourceElementRequestor#exitCompilationUnit(org.eclipse.cdt.core.parser.ast.IASTCompilationUnit)
|
||||
*/
|
||||
public void exitCompilationUnit(IASTCompilationUnit compilationUnit)
|
||||
public void exitCompilationUnit(IASTCompilationUnit cu )
|
||||
{
|
||||
}
|
||||
|
||||
|
@ -610,7 +619,41 @@ public class CompleteParseBaseTest extends TestCase
|
|||
|
||||
protected void processReference(IASTReference reference)
|
||||
{
|
||||
references.add( reference );
|
||||
ISourceElementCallbackDelegate referencedElement = reference.getReferencedElement();
|
||||
IASTReference r = null;
|
||||
if (referencedElement instanceof IASTTypedefDeclaration)
|
||||
r = new ASTTypedefReference(reference.getOffset(),
|
||||
(IASTTypedefDeclaration) referencedElement);
|
||||
if (referencedElement instanceof IASTEnumerationSpecifier)
|
||||
r = new ReferenceCache.ASTEnumerationReference(reference.getOffset(),
|
||||
(IASTEnumerationSpecifier) referencedElement);
|
||||
if (referencedElement instanceof IASTTemplateParameter)
|
||||
r = new ReferenceCache.ASTTemplateParameterReference(reference.getOffset(),
|
||||
(IASTTemplateParameter) referencedElement);
|
||||
if (referencedElement instanceof IASTParameterDeclaration)
|
||||
r = new ReferenceCache.ASTParameterReference(reference.getOffset(),
|
||||
(IASTParameterDeclaration) referencedElement);
|
||||
if (referencedElement instanceof IASTTypeSpecifier)
|
||||
r = new ReferenceCache.ASTClassReference(reference.getOffset(),
|
||||
(IASTTypeSpecifier) referencedElement);
|
||||
if (referencedElement instanceof IASTNamespaceDefinition)
|
||||
r = new ReferenceCache.ASTNamespaceReference(reference.getOffset(),
|
||||
(IASTNamespaceDefinition) referencedElement);
|
||||
if (referencedElement instanceof IASTFunction)
|
||||
r = new ReferenceCache.ASTFunctionReference(reference.getOffset(),
|
||||
(IASTFunction) referencedElement);
|
||||
if (referencedElement instanceof IASTMethod)
|
||||
r = new ReferenceCache.ASTMethodReference(reference.getOffset(), (IASTMethod) referencedElement);
|
||||
if (referencedElement instanceof IASTField)
|
||||
r = new ReferenceCache.ASTFieldReference(reference.getOffset(), (IASTField) referencedElement);
|
||||
if (referencedElement instanceof IASTVariable)
|
||||
r = new ReferenceCache.ASTVariableReference(reference.getOffset(),
|
||||
(IASTVariable) referencedElement);
|
||||
if (referencedElement instanceof IASTEnumerator)
|
||||
r = new ReferenceCache.ASTEnumeratorReference(reference.getOffset(),
|
||||
(IASTEnumerator) referencedElement);
|
||||
if( r != null )
|
||||
references.add( r );
|
||||
// System.out.println( "Callback received Reference to " + reference.getName() + " @ offset " + reference.getOffset() );
|
||||
}
|
||||
|
||||
|
@ -757,6 +800,7 @@ public class CompleteParseBaseTest extends TestCase
|
|||
ParserMode.COMPLETE_PARSE, language, callback, new NullLogService(), null ), callback, ParserMode.COMPLETE_PARSE, language, null
|
||||
);
|
||||
if( ! parser.parse() && throwOnError ) throw new ParserException( "FAILURE"); //$NON-NLS-1$
|
||||
assertTrue( ((CompleteParser)parser).validateCaches());
|
||||
return callback.getCompilationUnit();
|
||||
}
|
||||
|
||||
|
@ -772,6 +816,7 @@ public class CompleteParseBaseTest extends TestCase
|
|||
IASTReference r = (IASTReference)allReferences.next();
|
||||
if( r.getReferencedElement() == element )
|
||||
{
|
||||
assertEquals( r.getName(), ((IASTOffsetableNamedElement)element).getName() );
|
||||
if( ! matches.add( r ) && ! allowDuplicates )
|
||||
fail( "Duplicate reference found for ISourceElementCallbackDelegate: " + element + " @ offset " + r.getOffset() ); //$NON-NLS-1$ //$NON-NLS-2$
|
||||
}
|
||||
|
|
|
@ -10,13 +10,15 @@
|
|||
***********************************************************************/
|
||||
package org.eclipse.cdt.core.parser;
|
||||
|
||||
import org.eclipse.cdt.core.parser.ast.IReferenceManager;
|
||||
|
||||
/**
|
||||
* @author jcamelon
|
||||
*
|
||||
*/
|
||||
public interface ISourceElementCallbackDelegate
|
||||
{
|
||||
public void acceptElement( ISourceElementRequestor requestor );
|
||||
public void enterScope( ISourceElementRequestor requestor );
|
||||
public void exitScope( ISourceElementRequestor requestor );
|
||||
public void acceptElement( ISourceElementRequestor requestor, IReferenceManager manager );
|
||||
public void enterScope( ISourceElementRequestor requestor, IReferenceManager manager );
|
||||
public void exitScope( ISourceElementRequestor requestor, IReferenceManager manager );
|
||||
}
|
||||
|
|
|
@ -13,6 +13,8 @@ package org.eclipse.cdt.core.parser;
|
|||
import java.util.Iterator;
|
||||
import java.util.List;
|
||||
|
||||
import org.eclipse.cdt.core.parser.ast.IReferenceManager;
|
||||
|
||||
|
||||
/**
|
||||
* @author jcamelon
|
||||
|
@ -61,4 +63,7 @@ public interface ITokenDuple {
|
|||
* @return
|
||||
*/
|
||||
public abstract String [] toQualifiedName();
|
||||
|
||||
public void freeReferences( IReferenceManager manager );
|
||||
public void acceptElement( ISourceElementRequestor requestor, IReferenceManager manager );
|
||||
}
|
|
@ -11,12 +11,13 @@
|
|||
package org.eclipse.cdt.core.parser.ast;
|
||||
|
||||
import org.eclipse.cdt.core.parser.Enum;
|
||||
import org.eclipse.cdt.core.parser.ISourceElementCallbackDelegate;
|
||||
|
||||
/**
|
||||
* @author jcamelon
|
||||
*
|
||||
*/
|
||||
public interface IASTDesignator
|
||||
public interface IASTDesignator extends ISourceElementCallbackDelegate
|
||||
{
|
||||
public static class DesignatorKind extends Enum
|
||||
{
|
||||
|
|
|
@ -12,13 +12,11 @@ package org.eclipse.cdt.core.parser.ast;
|
|||
|
||||
import java.util.Iterator;
|
||||
|
||||
import org.eclipse.cdt.core.parser.ISourceElementCallbackDelegate;
|
||||
|
||||
/**
|
||||
* @author jcamelon
|
||||
*
|
||||
*/
|
||||
public interface IASTExceptionSpecification extends ISourceElementCallbackDelegate
|
||||
public interface IASTExceptionSpecification
|
||||
{
|
||||
public Iterator getTypeIds();
|
||||
}
|
||||
|
|
|
@ -261,6 +261,7 @@ public interface IASTExpression extends ISourceElementCallbackDelegate, IASTNode
|
|||
public Iterator getNewPlacementExpressions();
|
||||
public Iterator getNewTypeIdExpressions();
|
||||
public Iterator getNewInitializerExpressions();
|
||||
public void freeReferences( IReferenceManager manager );
|
||||
}
|
||||
|
||||
|
||||
|
@ -277,5 +278,10 @@ public interface IASTExpression extends ISourceElementCallbackDelegate, IASTNode
|
|||
public long evaluateExpression() throws ASTExpressionEvaluationException;
|
||||
public void reconcileReferences() throws ASTNotImplementedException;
|
||||
public void purgeReferences() throws ASTNotImplementedException;
|
||||
/**
|
||||
* @param manager TODO
|
||||
*
|
||||
*/
|
||||
public void freeReferences(IReferenceManager manager);
|
||||
|
||||
}
|
||||
|
|
|
@ -272,5 +272,8 @@ public interface IASTFactory
|
|||
public boolean validateDirectMemberOperation(IASTNode node);
|
||||
|
||||
public void constructExpressions( boolean flag );
|
||||
|
||||
public IReferenceManager getReferenceManager();
|
||||
|
||||
|
||||
}
|
|
@ -53,5 +53,9 @@ public interface IASTSimpleTypeSpecifier extends IASTTypeSpecifier
|
|||
public boolean isComplex();
|
||||
public boolean isImaginary();
|
||||
|
||||
public IASTTypeSpecifier getTypeSpecifier() throws ASTNotImplementedException;
|
||||
public IASTTypeSpecifier getTypeSpecifier() throws ASTNotImplementedException;
|
||||
/**
|
||||
* @param referenceManager
|
||||
*/
|
||||
public void releaseReferences(IReferenceManager referenceManager);
|
||||
}
|
||||
|
|
|
@ -36,5 +36,9 @@ public interface IASTTypeId extends ISourceElementCallbackDelegate
|
|||
|
||||
|
||||
public String getFullSignature();
|
||||
public ISymbol getTypeSymbol() throws ASTNotImplementedException;
|
||||
public ISymbol getTypeSymbol() throws ASTNotImplementedException;
|
||||
/**
|
||||
* @param manager
|
||||
*/
|
||||
public void freeReferences(IReferenceManager manager);
|
||||
}
|
||||
|
|
|
@ -0,0 +1,28 @@
|
|||
/**********************************************************************
|
||||
* Copyright (c) 2002-2004 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 java.util.List;
|
||||
|
||||
import org.eclipse.cdt.core.parser.ISourceElementRequestor;
|
||||
|
||||
/**
|
||||
* @author jcamelon
|
||||
*
|
||||
*/
|
||||
public interface IReferenceManager {
|
||||
/* (non-Javadoc)
|
||||
* @see org.eclipse.cdt.core.parser.ast.IASTReferenceStore#processReferences()
|
||||
*/
|
||||
public void processReferences(List references,
|
||||
ISourceElementRequestor requestor);
|
||||
public void returnReference(IASTReference reference);
|
||||
}
|
|
@ -22,6 +22,7 @@ import org.eclipse.cdt.core.parser.ParserMode;
|
|||
import org.eclipse.cdt.core.parser.ast.IASTCompletionNode;
|
||||
import org.eclipse.cdt.core.parser.ast.IASTScope;
|
||||
import org.eclipse.cdt.core.parser.extension.IParserExtension;
|
||||
import org.eclipse.cdt.internal.core.parser.ast.complete.CompleteParseASTFactory;
|
||||
|
||||
/**
|
||||
* @author jcamelon
|
||||
|
@ -74,4 +75,13 @@ public class CompleteParser extends Parser {
|
|||
astFactory.setLogger(log);
|
||||
}
|
||||
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see org.eclipse.cdt.internal.core.parser.ExpressionParser#validateCaches()
|
||||
*/
|
||||
public boolean validateCaches() {
|
||||
if( super.validateCaches() && astFactory instanceof CompleteParseASTFactory)
|
||||
return ((CompleteParseASTFactory)astFactory).validateCaches();
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -351,6 +351,8 @@ public class ExpressionParser implements IExpressionParser, IParserData {
|
|||
}
|
||||
|
||||
if( failed ) {
|
||||
if( expression != null )
|
||||
expression.freeReferences(astFactory.getReferenceManager());
|
||||
throw backtrack;
|
||||
}
|
||||
|
||||
|
@ -1401,6 +1403,7 @@ public class ExpressionParser implements IExpressionParser, IParserData {
|
|||
}
|
||||
catch (ASTSemanticException e)
|
||||
{
|
||||
firstExpression.freeReferences(astFactory.getReferenceManager());
|
||||
throw backtrack;
|
||||
} catch (Exception e)
|
||||
{
|
||||
|
@ -1483,6 +1486,8 @@ public class ExpressionParser implements IExpressionParser, IParserData {
|
|||
catch( BacktrackException bte )
|
||||
{
|
||||
backup( mark );
|
||||
if( typeId != null )
|
||||
typeId.freeReferences(astFactory.getReferenceManager());
|
||||
throw bte;
|
||||
}
|
||||
mark = null; // clean up mark so that we can garbage collect
|
||||
|
@ -2971,4 +2976,9 @@ public class ExpressionParser implements IExpressionParser, IParserData {
|
|||
public String getFilenameForIndex(int index) {
|
||||
return scanner.getFilenameForIndex(index);
|
||||
}
|
||||
|
||||
public boolean validateCaches()
|
||||
{
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -62,7 +62,6 @@ import org.eclipse.cdt.core.parser.extension.IParserExtension;
|
|||
import org.eclipse.cdt.internal.core.parser.token.KeywordSets;
|
||||
import org.eclipse.cdt.internal.core.parser.token.TokenFactory;
|
||||
import org.eclipse.cdt.internal.core.parser.token.KeywordSets.Key;
|
||||
import org.eclipse.cdt.internal.core.parser.util.TraceUtil;
|
||||
|
||||
/**
|
||||
* This is our first implementation of the IParser interface, serving as a parser for
|
||||
|
@ -133,11 +132,11 @@ public abstract class Parser extends ExpressionParser implements IParser
|
|||
return;
|
||||
}
|
||||
|
||||
compilationUnit.enterScope( requestor );
|
||||
compilationUnit.enterScope( requestor, astFactory.getReferenceManager() );
|
||||
try {
|
||||
setCompletionValues(compilationUnit, CompletionKind.VARIABLE_TYPE, Key.DECLARATION );
|
||||
} catch (EndOfFileException e1) {
|
||||
compilationUnit.exitScope( requestor );
|
||||
compilationUnit.exitScope( requestor, astFactory.getReferenceManager() );
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -186,7 +185,7 @@ public abstract class Parser extends ExpressionParser implements IParser
|
|||
failParse();
|
||||
}
|
||||
}
|
||||
compilationUnit.exitScope( requestor );
|
||||
compilationUnit.exitScope( requestor, astFactory.getReferenceManager() );
|
||||
}
|
||||
/**
|
||||
* This function is called whenever we encounter and error that we cannot backtrack out of and we
|
||||
|
@ -264,7 +263,7 @@ public abstract class Parser extends ExpressionParser implements IParser
|
|||
logException( "usingClause:createUsingDirective", e1 ); //$NON-NLS-1$
|
||||
throw backtrack;
|
||||
}
|
||||
astUD.acceptElement(requestor);
|
||||
astUD.acceptElement(requestor, astFactory.getReferenceManager());
|
||||
return astUD;
|
||||
}
|
||||
throw backtrack;
|
||||
|
@ -308,7 +307,7 @@ public abstract class Parser extends ExpressionParser implements IParser
|
|||
logException( "usingClause:createUsingDeclaration", e1 ); //$NON-NLS-1$
|
||||
throw backtrack;
|
||||
}
|
||||
declaration.acceptElement( requestor );
|
||||
declaration.acceptElement( requestor, astFactory.getReferenceManager() );
|
||||
setCompletionValues(scope, getCompletionKindForDeclaration(scope, null), Key.DECLARATION );
|
||||
return declaration;
|
||||
}
|
||||
|
@ -352,7 +351,7 @@ public abstract class Parser extends ExpressionParser implements IParser
|
|||
throw backtrack;
|
||||
}
|
||||
|
||||
linkage.enterScope( requestor );
|
||||
linkage.enterScope( requestor, astFactory.getReferenceManager() );
|
||||
linkageDeclarationLoop : while (LT(1) != IToken.tRBRACE)
|
||||
{
|
||||
int checkToken = LA(1).hashCode();
|
||||
|
@ -379,7 +378,7 @@ public abstract class Parser extends ExpressionParser implements IParser
|
|||
// consume the }
|
||||
IToken lastTokenConsumed = consume();
|
||||
linkage.setEndingOffsetAndLineNumber(lastTokenConsumed.getEndOffset(), lastTokenConsumed.getLineNumber());
|
||||
linkage.exitScope( requestor );
|
||||
linkage.exitScope( requestor, astFactory.getReferenceManager() );
|
||||
return linkage;
|
||||
}
|
||||
// single declaration
|
||||
|
@ -398,9 +397,9 @@ public abstract class Parser extends ExpressionParser implements IParser
|
|||
logException( "linkageSpecification_2:createLinkageSpecification", e ); //$NON-NLS-1$
|
||||
throw backtrack;
|
||||
}
|
||||
linkage.enterScope( requestor );
|
||||
linkage.enterScope( requestor, astFactory.getReferenceManager() );
|
||||
declaration(linkage, null, null);
|
||||
linkage.exitScope( requestor );
|
||||
linkage.exitScope( requestor, astFactory.getReferenceManager() );
|
||||
return linkage;
|
||||
|
||||
}
|
||||
|
@ -448,10 +447,10 @@ public abstract class Parser extends ExpressionParser implements IParser
|
|||
backup( mark );
|
||||
throw backtrack;
|
||||
}
|
||||
templateInstantiation.enterScope( requestor );
|
||||
templateInstantiation.enterScope( requestor, astFactory.getReferenceManager() );
|
||||
declaration(templateInstantiation, templateInstantiation, null);
|
||||
templateInstantiation.setEndingOffsetAndLineNumber(lastToken.getEndOffset(), lastToken.getLineNumber());
|
||||
templateInstantiation.exitScope( requestor );
|
||||
templateInstantiation.exitScope( requestor, astFactory.getReferenceManager() );
|
||||
|
||||
return templateInstantiation;
|
||||
}
|
||||
|
@ -475,11 +474,11 @@ public abstract class Parser extends ExpressionParser implements IParser
|
|||
backup( mark );
|
||||
throw backtrack;
|
||||
}
|
||||
templateSpecialization.enterScope(requestor);
|
||||
templateSpecialization.enterScope(requestor, astFactory.getReferenceManager());
|
||||
declaration(templateSpecialization, templateSpecialization, null);
|
||||
templateSpecialization.setEndingOffsetAndLineNumber(
|
||||
lastToken.getEndOffset(), lastToken.getLineNumber());
|
||||
templateSpecialization.exitScope(requestor);
|
||||
templateSpecialization.exitScope(requestor, astFactory.getReferenceManager());
|
||||
return templateSpecialization;
|
||||
}
|
||||
|
||||
|
@ -503,16 +502,16 @@ public abstract class Parser extends ExpressionParser implements IParser
|
|||
logException( "templateDeclaration:createTemplateDeclaration", e ); //$NON-NLS-1$
|
||||
throw backtrack;
|
||||
}
|
||||
templateDecl.enterScope( requestor );
|
||||
templateDecl.enterScope( requestor, astFactory.getReferenceManager() );
|
||||
try{
|
||||
declaration(templateDecl, templateDecl, null );
|
||||
} catch( EndOfFileException e ){
|
||||
templateDecl.setEndingOffsetAndLineNumber( lastToken.getEndOffset(), lastToken.getLineNumber() );
|
||||
templateDecl.exitScope( requestor );
|
||||
templateDecl.exitScope( requestor, astFactory.getReferenceManager() );
|
||||
throw e;
|
||||
}
|
||||
templateDecl.setEndingOffsetAndLineNumber( lastToken.getEndOffset(), lastToken.getLineNumber() );
|
||||
templateDecl.exitScope( requestor );
|
||||
templateDecl.exitScope( requestor, astFactory.getReferenceManager() );
|
||||
return templateDecl;
|
||||
}
|
||||
catch (BacktrackException bt)
|
||||
|
@ -757,7 +756,7 @@ public abstract class Parser extends ExpressionParser implements IParser
|
|||
}
|
||||
// if we made it this far, then we have all we need
|
||||
// do the callback
|
||||
resultDeclaration.acceptElement(requestor);
|
||||
resultDeclaration.acceptElement(requestor, astFactory.getReferenceManager());
|
||||
setCompletionValues(scope, kind, Key.DECLARATION );
|
||||
break;
|
||||
case IToken.t_namespace :
|
||||
|
@ -887,7 +886,7 @@ public abstract class Parser extends ExpressionParser implements IParser
|
|||
logException( "namespaceDefinition:createNamespaceDefinition", e1 ); //$NON-NLS-1$
|
||||
throw backtrack;
|
||||
}
|
||||
namespaceDefinition.enterScope( requestor );
|
||||
namespaceDefinition.enterScope( requestor, astFactory.getReferenceManager() );
|
||||
setCompletionValues(scope,CompletionKind.VARIABLE_TYPE, Key.DECLARATION );
|
||||
namespaceDeclarationLoop : while (LT(1) != IToken.tRBRACE)
|
||||
{
|
||||
|
@ -919,7 +918,7 @@ public abstract class Parser extends ExpressionParser implements IParser
|
|||
namespaceDefinition.setEndingOffsetAndLineNumber(
|
||||
last.getOffset() + last.getLength(), last.getLineNumber());
|
||||
setCompletionValues(scope, kind, Key.DECLARATION );
|
||||
namespaceDefinition.exitScope( requestor );
|
||||
namespaceDefinition.exitScope( requestor, astFactory.getReferenceManager() );
|
||||
return namespaceDefinition;
|
||||
}
|
||||
else if( LT(1) == IToken.tASSIGN )
|
||||
|
@ -985,11 +984,11 @@ public abstract class Parser extends ExpressionParser implements IParser
|
|||
CompletionKind completionKindForDeclaration = getCompletionKindForDeclaration(scope, overideKind);
|
||||
setCompletionValues( scope, completionKindForDeclaration, Key.DECL_SPECIFIER_SEQUENCE );
|
||||
declSpecifierSeq(sdw, false, strategy == SimpleDeclarationStrategy.TRY_CONSTRUCTOR, completionKindForDeclaration, overrideKey );
|
||||
IASTSimpleTypeSpecifier simpleTypeSpecifier = null;
|
||||
if (sdw.getTypeSpecifier() == null && sdw.getSimpleType() != IASTSimpleTypeSpecifier.Type.UNSPECIFIED )
|
||||
try
|
||||
{
|
||||
sdw.setTypeSpecifier(
|
||||
astFactory.createSimpleTypeSpecifier(
|
||||
simpleTypeSpecifier = astFactory.createSimpleTypeSpecifier(
|
||||
scope,
|
||||
sdw.getSimpleType(),
|
||||
sdw.getName(),
|
||||
|
@ -1000,7 +999,9 @@ public abstract class Parser extends ExpressionParser implements IParser
|
|||
sdw.isTypeNamed(),
|
||||
sdw.isComplex(),
|
||||
sdw.isImaginary(),
|
||||
sdw.isGloballyQualified(), sdw.getExtensionParameters()));
|
||||
sdw.isGloballyQualified(), sdw.getExtensionParameters());
|
||||
sdw.setTypeSpecifier(
|
||||
simpleTypeSpecifier);
|
||||
sdw.setTypeName( null );
|
||||
}
|
||||
catch (Exception e1)
|
||||
|
@ -1009,139 +1010,157 @@ public abstract class Parser extends ExpressionParser implements IParser
|
|||
throw backtrack;
|
||||
}
|
||||
|
||||
Declarator declarator = null;
|
||||
if (LT(1) != IToken.tSEMI)
|
||||
{
|
||||
declarator = initDeclarator(sdw, strategy, completionKindForDeclaration, constructInitializersInDeclarations
|
||||
);
|
||||
|
||||
while (LT(1) == IToken.tCOMMA)
|
||||
{
|
||||
consume();
|
||||
initDeclarator(sdw, strategy, completionKindForDeclaration, constructInitializersInDeclarations );
|
||||
}
|
||||
}
|
||||
try {
|
||||
Declarator declarator = null;
|
||||
if (LT(1) != IToken.tSEMI)
|
||||
{
|
||||
declarator = initDeclarator(sdw, strategy, completionKindForDeclaration, constructInitializersInDeclarations
|
||||
);
|
||||
|
||||
while (LT(1) == IToken.tCOMMA)
|
||||
{
|
||||
consume();
|
||||
initDeclarator(sdw, strategy, completionKindForDeclaration, constructInitializersInDeclarations );
|
||||
}
|
||||
}
|
||||
|
||||
boolean hasFunctionBody = false;
|
||||
boolean hasFunctionTryBlock = false;
|
||||
boolean consumedSemi = false;
|
||||
|
||||
switch (LT(1))
|
||||
{
|
||||
case IToken.tSEMI :
|
||||
consume(IToken.tSEMI);
|
||||
consumedSemi = true;
|
||||
break;
|
||||
case IToken.t_try :
|
||||
consume( IToken.t_try );
|
||||
if( LT(1) == IToken.tCOLON )
|
||||
ctorInitializer( declarator );
|
||||
hasFunctionTryBlock = true;
|
||||
declarator.setFunctionTryBlock( true );
|
||||
break;
|
||||
case IToken.tCOLON :
|
||||
ctorInitializer(declarator);
|
||||
break;
|
||||
case IToken.tLBRACE:
|
||||
break;
|
||||
case IToken.tRPAREN:
|
||||
if( ! fromCatchHandler )
|
||||
throw backtrack;
|
||||
break;
|
||||
default:
|
||||
throw backtrack;
|
||||
}
|
||||
|
||||
if( ! consumedSemi )
|
||||
{
|
||||
if( LT(1) == IToken.tLBRACE )
|
||||
{
|
||||
declarator.setHasFunctionBody(true);
|
||||
hasFunctionBody = true;
|
||||
}
|
||||
|
||||
if( fromCatchHandler )
|
||||
return null;
|
||||
|
||||
if( hasFunctionTryBlock && ! hasFunctionBody )
|
||||
throw backtrack;
|
||||
}
|
||||
|
||||
List l = null;
|
||||
try
|
||||
{
|
||||
l = sdw.createASTNodes(astFactory);
|
||||
}
|
||||
catch (ASTSemanticException e)
|
||||
{
|
||||
throw backtrack;
|
||||
}
|
||||
catch( Exception e )
|
||||
{
|
||||
logException( "simpleDecl", e ); //$NON-NLS-1$
|
||||
throw backtrack;
|
||||
}
|
||||
Iterator i = l.iterator();
|
||||
if (hasFunctionBody && l.size() != 1)
|
||||
{
|
||||
throw backtrack; //TODO Should be an IProblem
|
||||
}
|
||||
if (i.hasNext()) // no need to do this unless we have a declarator
|
||||
{
|
||||
if (!hasFunctionBody)
|
||||
{
|
||||
IASTDeclaration declaration = null;
|
||||
while (i.hasNext())
|
||||
{
|
||||
declaration = (IASTDeclaration)i.next();
|
||||
((IASTOffsetableElement)declaration).setEndingOffsetAndLineNumber(
|
||||
lastToken.getEndOffset(), lastToken.getLineNumber());
|
||||
declaration.acceptElement( requestor );
|
||||
}
|
||||
return declaration;
|
||||
}
|
||||
IASTDeclaration declaration = (IASTDeclaration)i.next();
|
||||
endDeclaration( declaration );
|
||||
declaration.enterScope( requestor );
|
||||
|
||||
if ( !( declaration instanceof IASTScope ) )
|
||||
throw backtrack;
|
||||
boolean hasFunctionBody = false;
|
||||
boolean hasFunctionTryBlock = false;
|
||||
boolean consumedSemi = false;
|
||||
|
||||
switch (LT(1))
|
||||
{
|
||||
case IToken.tSEMI :
|
||||
consume(IToken.tSEMI);
|
||||
consumedSemi = true;
|
||||
break;
|
||||
case IToken.t_try :
|
||||
consume( IToken.t_try );
|
||||
if( LT(1) == IToken.tCOLON )
|
||||
ctorInitializer( declarator );
|
||||
hasFunctionTryBlock = true;
|
||||
declarator.setFunctionTryBlock( true );
|
||||
break;
|
||||
case IToken.tCOLON :
|
||||
ctorInitializer(declarator);
|
||||
break;
|
||||
case IToken.tLBRACE:
|
||||
break;
|
||||
case IToken.tRPAREN:
|
||||
if( ! fromCatchHandler )
|
||||
throw backtrack;
|
||||
break;
|
||||
default:
|
||||
throw backtrack;
|
||||
}
|
||||
|
||||
if( ! consumedSemi )
|
||||
{
|
||||
if( LT(1) == IToken.tLBRACE )
|
||||
{
|
||||
declarator.setHasFunctionBody(true);
|
||||
hasFunctionBody = true;
|
||||
}
|
||||
|
||||
if( fromCatchHandler )
|
||||
return null;
|
||||
|
||||
if( hasFunctionTryBlock && ! hasFunctionBody )
|
||||
throw backtrack;
|
||||
}
|
||||
|
||||
List l = null;
|
||||
try
|
||||
{
|
||||
l = sdw.createASTNodes(astFactory);
|
||||
}
|
||||
catch (ASTSemanticException e)
|
||||
{
|
||||
throw backtrack;
|
||||
}
|
||||
catch( Exception e )
|
||||
{
|
||||
logException( "simpleDecl", e ); //$NON-NLS-1$
|
||||
throw backtrack;
|
||||
}
|
||||
Iterator i = l.iterator();
|
||||
if (hasFunctionBody && l.size() != 1)
|
||||
{
|
||||
throw backtrack; //TODO Should be an IProblem
|
||||
}
|
||||
if (i.hasNext()) // no need to do this unless we have a declarator
|
||||
{
|
||||
if (!hasFunctionBody)
|
||||
{
|
||||
IASTDeclaration declaration = null;
|
||||
while (i.hasNext())
|
||||
{
|
||||
declaration = (IASTDeclaration)i.next();
|
||||
((IASTOffsetableElement)declaration).setEndingOffsetAndLineNumber(
|
||||
lastToken.getEndOffset(), lastToken.getLineNumber());
|
||||
declaration.acceptElement( requestor, astFactory.getReferenceManager() );
|
||||
if( sdw.getTypeSpecifier() instanceof IASTSimpleTypeSpecifier )
|
||||
((IASTSimpleTypeSpecifier)sdw.getTypeSpecifier()).releaseReferences( astFactory.getReferenceManager() );
|
||||
|
||||
}
|
||||
return declaration;
|
||||
}
|
||||
IASTDeclaration declaration = (IASTDeclaration)i.next();
|
||||
endDeclaration( declaration );
|
||||
declaration.enterScope( requestor, astFactory.getReferenceManager() );
|
||||
if( sdw.getTypeSpecifier() instanceof IASTSimpleTypeSpecifier )
|
||||
((IASTSimpleTypeSpecifier)sdw.getTypeSpecifier()).releaseReferences( astFactory.getReferenceManager() );
|
||||
|
||||
if ( !( declaration instanceof IASTScope ) )
|
||||
throw backtrack;
|
||||
|
||||
handleFunctionBody((IASTScope)declaration );
|
||||
((IASTOffsetableElement)declaration).setEndingOffsetAndLineNumber(
|
||||
lastToken.getEndOffset(), lastToken.getLineNumber());
|
||||
handleFunctionBody((IASTScope)declaration );
|
||||
((IASTOffsetableElement)declaration).setEndingOffsetAndLineNumber(
|
||||
lastToken.getEndOffset(), lastToken.getLineNumber());
|
||||
|
||||
declaration.exitScope( requestor );
|
||||
|
||||
if( hasFunctionTryBlock )
|
||||
catchHandlerSequence( scope );
|
||||
|
||||
return declaration;
|
||||
|
||||
}
|
||||
|
||||
try
|
||||
{
|
||||
if( sdw.getTypeSpecifier() != null )
|
||||
{
|
||||
IASTAbstractTypeSpecifierDeclaration declaration = astFactory.createTypeSpecDeclaration(
|
||||
sdw.getScope(),
|
||||
sdw.getTypeSpecifier(),
|
||||
ownerTemplate,
|
||||
sdw.getStartingOffset(),
|
||||
sdw.getStartingLine(), lastToken.getEndOffset(), lastToken.getLineNumber(),
|
||||
sdw.isFriend());
|
||||
declaration.acceptElement(requestor);
|
||||
declaration.exitScope( requestor, astFactory.getReferenceManager() );
|
||||
|
||||
if( hasFunctionTryBlock )
|
||||
catchHandlerSequence( scope );
|
||||
|
||||
return declaration;
|
||||
}
|
||||
}
|
||||
catch (Exception e1)
|
||||
{
|
||||
logException( "simpleDeclaration:createTypeSpecDeclaration", e1 ); //$NON-NLS-1$
|
||||
throw backtrack;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
try
|
||||
{
|
||||
if( sdw.getTypeSpecifier() != null )
|
||||
{
|
||||
IASTAbstractTypeSpecifierDeclaration declaration = astFactory.createTypeSpecDeclaration(
|
||||
sdw.getScope(),
|
||||
sdw.getTypeSpecifier(),
|
||||
ownerTemplate,
|
||||
sdw.getStartingOffset(),
|
||||
sdw.getStartingLine(), lastToken.getEndOffset(), lastToken.getLineNumber(),
|
||||
sdw.isFriend());
|
||||
declaration.acceptElement(requestor, astFactory.getReferenceManager());
|
||||
return declaration;
|
||||
}
|
||||
}
|
||||
catch (Exception e1)
|
||||
{
|
||||
logException( "simpleDeclaration:createTypeSpecDeclaration", e1 ); //$NON-NLS-1$
|
||||
throw backtrack;
|
||||
}
|
||||
|
||||
return null;
|
||||
return null;
|
||||
} catch( BacktrackException be )
|
||||
{
|
||||
if( simpleTypeSpecifier != null )
|
||||
simpleTypeSpecifier.releaseReferences(astFactory.getReferenceManager());
|
||||
throw be;
|
||||
}
|
||||
catch( EndOfFileException eof )
|
||||
{
|
||||
if( simpleTypeSpecifier != null )
|
||||
simpleTypeSpecifier.releaseReferences(astFactory.getReferenceManager());
|
||||
throw eof;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
@ -1358,51 +1377,71 @@ public abstract class Parser extends ExpressionParser implements IParser
|
|||
IToken mark = mark();
|
||||
Declarator d = new Declarator( sdw );
|
||||
try
|
||||
{
|
||||
consumeTemplatedOperatorName( d, kind );
|
||||
}
|
||||
catch (BacktrackException e)
|
||||
{
|
||||
backup( mark );
|
||||
return false;
|
||||
}
|
||||
catch ( EndOfFileException eof )
|
||||
{
|
||||
backup( mark );
|
||||
return false;
|
||||
try
|
||||
{
|
||||
consumeTemplatedOperatorName( d, kind );
|
||||
}
|
||||
catch (BacktrackException e)
|
||||
{
|
||||
backup( mark );
|
||||
return false;
|
||||
}
|
||||
catch ( EndOfFileException eof )
|
||||
{
|
||||
backup( mark );
|
||||
return false;
|
||||
}
|
||||
|
||||
ITokenDuple duple = d.getNameDuple();
|
||||
if( duple == null )
|
||||
{
|
||||
backup( mark );
|
||||
return false;
|
||||
}
|
||||
|
||||
int lastColon = duple.findLastTokenType(IToken.tCOLON);
|
||||
if( lastColon == -1 )
|
||||
{
|
||||
int lt1 = LT(1);
|
||||
backup( mark );
|
||||
return flags.isForConstructor() && (lt1 == IToken.tLPAREN);
|
||||
}
|
||||
|
||||
IToken className = null;
|
||||
int index = lastColon - 1;
|
||||
if( duple.getToken( index ).getType() == IToken.tGT )
|
||||
{
|
||||
int depth = -1;
|
||||
while( depth == -1 )
|
||||
{
|
||||
if( duple.getToken( --index ).getType() == IToken.tLT )
|
||||
++depth;
|
||||
}
|
||||
className = duple.getToken( index );
|
||||
}
|
||||
|
||||
boolean result = className.getImage().equals( duple.getLastToken());
|
||||
backup( mark );
|
||||
return result;
|
||||
}
|
||||
finally
|
||||
{
|
||||
if( d.getNameDuple() != null && d.getNameDuple().getTemplateIdArgLists() != null )
|
||||
{
|
||||
List [] arrayOfLists = d.getNameDuple().getTemplateIdArgLists();
|
||||
for( int i = 0; i < arrayOfLists.length; ++i )
|
||||
{
|
||||
if( arrayOfLists[i] == null ) continue;
|
||||
for( int j = 0; j < arrayOfLists[i].size(); ++j )
|
||||
{
|
||||
IASTExpression e = (IASTExpression) arrayOfLists[i].get(j);
|
||||
e.freeReferences( astFactory.getReferenceManager());
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
ITokenDuple duple = d.getNameDuple();
|
||||
if( duple == null )
|
||||
{
|
||||
backup( mark );
|
||||
return false;
|
||||
}
|
||||
|
||||
int lastColon = duple.findLastTokenType(IToken.tCOLON);
|
||||
if( lastColon == -1 )
|
||||
{
|
||||
int lt1 = LT(1);
|
||||
backup( mark );
|
||||
return flags.isForConstructor() && (lt1 == IToken.tLPAREN);
|
||||
}
|
||||
|
||||
IToken className = null;
|
||||
int index = lastColon - 1;
|
||||
if( duple.getToken( index ).getType() == IToken.tGT )
|
||||
{
|
||||
int depth = -1;
|
||||
while( depth == -1 )
|
||||
{
|
||||
if( duple.getToken( --index ).getType() == IToken.tLT )
|
||||
++depth;
|
||||
}
|
||||
className = duple.getToken( index );
|
||||
}
|
||||
|
||||
boolean result = className.getImage().equals( duple.getLastToken());
|
||||
backup( mark );
|
||||
return result;
|
||||
}
|
||||
/**
|
||||
* @param flags input flags that are used to make our decision
|
||||
|
@ -1794,7 +1833,7 @@ public abstract class Parser extends ExpressionParser implements IParser
|
|||
sdw.setTypeSpecifier(elaboratedTypeSpec);
|
||||
|
||||
if( isForewardDecl )
|
||||
((IASTElaboratedTypeSpecifier)elaboratedTypeSpec).acceptElement( requestor );
|
||||
((IASTElaboratedTypeSpecifier)elaboratedTypeSpec).acceptElement( requestor, astFactory.getReferenceManager() );
|
||||
}
|
||||
/**
|
||||
* Parses the initDeclarator construct of the ANSI C++ spec.
|
||||
|
@ -2259,7 +2298,7 @@ public abstract class Parser extends ExpressionParser implements IParser
|
|||
consume(); // throw
|
||||
consume(IToken.tLPAREN); // (
|
||||
boolean done = false;
|
||||
IASTTypeId duple = null;
|
||||
IASTTypeId exceptionTypeId = null;
|
||||
while (!done)
|
||||
{
|
||||
switch (LT(1))
|
||||
|
@ -2272,16 +2311,15 @@ public abstract class Parser extends ExpressionParser implements IParser
|
|||
consume();
|
||||
break;
|
||||
default :
|
||||
String image = LA(1).getImage();
|
||||
try
|
||||
{
|
||||
duple = typeId(scope, false, CompletionKind.EXCEPTION_REFERENCE );
|
||||
exceptionSpecIds.add(duple);
|
||||
exceptionTypeId = typeId(scope, false, CompletionKind.EXCEPTION_REFERENCE );
|
||||
exceptionSpecIds.add(exceptionTypeId);
|
||||
exceptionTypeId.acceptElement( requestor, astFactory.getReferenceManager() );
|
||||
}
|
||||
catch (BacktrackException e)
|
||||
{
|
||||
failParse();
|
||||
TraceUtil.outputTrace( log, "Unexpected Token =", null, image, null, null ); //$NON-NLS-1$
|
||||
consume();
|
||||
// eat this token anyway
|
||||
continue;
|
||||
|
@ -2544,7 +2582,7 @@ public abstract class Parser extends ExpressionParser implements IParser
|
|||
}
|
||||
IToken t = consume(IToken.tRBRACE);
|
||||
enumeration.setEndingOffsetAndLineNumber(t.getEndOffset(), t.getLineNumber());
|
||||
enumeration.acceptElement( requestor );
|
||||
enumeration.acceptElement( requestor, astFactory.getReferenceManager() );
|
||||
sdw.setTypeSpecifier(enumeration);
|
||||
}
|
||||
else
|
||||
|
@ -2647,7 +2685,7 @@ public abstract class Parser extends ExpressionParser implements IParser
|
|||
{
|
||||
consume(IToken.tLBRACE);
|
||||
setCompletionValues(astClassSpecifier, CompletionKind.FIELD_TYPE, Key.DECLARATION );
|
||||
astClassSpecifier.enterScope( requestor );
|
||||
astClassSpecifier.enterScope( requestor, astFactory.getReferenceManager() );
|
||||
handleClassSpecifier( astClassSpecifier );
|
||||
memberDeclarationLoop : while (LT(1) != IToken.tRBRACE)
|
||||
{
|
||||
|
@ -2702,7 +2740,7 @@ public abstract class Parser extends ExpressionParser implements IParser
|
|||
throw backtrack;
|
||||
}
|
||||
|
||||
astClassSpecifier.exitScope( requestor );
|
||||
astClassSpecifier.exitScope( requestor, astFactory.getReferenceManager() );
|
||||
|
||||
|
||||
}
|
||||
|
@ -2829,7 +2867,7 @@ public abstract class Parser extends ExpressionParser implements IParser
|
|||
case IToken.t_case :
|
||||
consume(IToken.t_case);
|
||||
IASTExpression constant_expression = constantExpression(scope, CompletionKind.SINGLE_NAME_REFERENCE, Key.EXPRESSION );
|
||||
constant_expression.acceptElement(requestor);
|
||||
constant_expression.acceptElement(requestor, astFactory.getReferenceManager());
|
||||
endExpression(constant_expression);
|
||||
consume(IToken.tCOLON);
|
||||
statement(scope);
|
||||
|
@ -2909,7 +2947,7 @@ public abstract class Parser extends ExpressionParser implements IParser
|
|||
if (LT(1) != IToken.tRPAREN)
|
||||
{
|
||||
IASTExpression finalExpression = expression(scope, CompletionKind.SINGLE_NAME_REFERENCE, Key.DECLARATION);
|
||||
finalExpression.acceptElement(requestor);
|
||||
finalExpression.acceptElement(requestor, astFactory.getReferenceManager());
|
||||
endExpression(finalExpression);
|
||||
}
|
||||
consume(IToken.tRPAREN);
|
||||
|
@ -2931,7 +2969,7 @@ public abstract class Parser extends ExpressionParser implements IParser
|
|||
if (LT(1) != IToken.tSEMI)
|
||||
{
|
||||
IASTExpression retVal = expression(scope, CompletionKind.SINGLE_NAME_REFERENCE, Key.EXPRESSION);
|
||||
retVal.acceptElement(requestor);
|
||||
retVal.acceptElement(requestor, astFactory.getReferenceManager());
|
||||
endExpression(retVal);
|
||||
}
|
||||
consume(IToken.tSEMI);
|
||||
|
@ -2969,17 +3007,20 @@ public abstract class Parser extends ExpressionParser implements IParser
|
|||
// Note: the function style cast ambiguity is handled in expression
|
||||
// Since it only happens when we are in a statement
|
||||
IToken mark = mark();
|
||||
IASTExpression expressionStatement = null;
|
||||
try
|
||||
{
|
||||
IASTExpression expressionStatement = expression(scope, CompletionKind.SINGLE_NAME_REFERENCE, Key.STATEMENT);
|
||||
expressionStatement = expression(scope, CompletionKind.SINGLE_NAME_REFERENCE, Key.STATEMENT);
|
||||
consume(IToken.tSEMI);
|
||||
expressionStatement.acceptElement( requestor );
|
||||
expressionStatement.acceptElement( requestor, astFactory.getReferenceManager() );
|
||||
endExpression(expressionStatement);
|
||||
return;
|
||||
}
|
||||
catch (BacktrackException b)
|
||||
{
|
||||
backup( mark );
|
||||
if( expressionStatement != null )
|
||||
expressionStatement.freeReferences(astFactory.getReferenceManager());
|
||||
}
|
||||
|
||||
// declarationStatement
|
||||
|
@ -3020,14 +3061,14 @@ public abstract class Parser extends ExpressionParser implements IParser
|
|||
logException( "singleStatementScope:createNewCodeBlock", e ); //$NON-NLS-1$
|
||||
throw backtrack;
|
||||
}
|
||||
newScope.enterScope( requestor );
|
||||
newScope.enterScope( requestor, astFactory.getReferenceManager() );
|
||||
try
|
||||
{
|
||||
statement( newScope );
|
||||
}
|
||||
finally
|
||||
{
|
||||
newScope.exitScope( requestor );
|
||||
newScope.exitScope( requestor, astFactory.getReferenceManager() );
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -3037,7 +3078,8 @@ public abstract class Parser extends ExpressionParser implements IParser
|
|||
protected void condition( IASTScope scope ) throws BacktrackException, EndOfFileException
|
||||
{
|
||||
IASTExpression someExpression = expression( scope, CompletionKind.SINGLE_NAME_REFERENCE, Key.EXPRESSION );
|
||||
someExpression.acceptElement(requestor);
|
||||
someExpression.acceptElement(requestor, astFactory.getReferenceManager());
|
||||
|
||||
endExpression(someExpression);
|
||||
}
|
||||
|
||||
|
@ -3050,9 +3092,10 @@ public abstract class Parser extends ExpressionParser implements IParser
|
|||
try
|
||||
{
|
||||
IASTExpression e = expression( scope, CompletionKind.SINGLE_NAME_REFERENCE, Key.DECLARATION );
|
||||
e.acceptElement(requestor);
|
||||
consume( IToken.tSEMI );
|
||||
e.acceptElement(requestor, astFactory.getReferenceManager());
|
||||
|
||||
|
||||
consume( IToken.tSEMI );
|
||||
}
|
||||
catch( BacktrackException bt )
|
||||
{
|
||||
|
@ -3088,7 +3131,7 @@ public abstract class Parser extends ExpressionParser implements IParser
|
|||
logException( "compoundStatement:createNewCodeBlock", e ); //$NON-NLS-1$
|
||||
throw backtrack;
|
||||
}
|
||||
newScope.enterScope( requestor );
|
||||
newScope.enterScope( requestor, astFactory.getReferenceManager() );
|
||||
}
|
||||
|
||||
setCompletionValues(
|
||||
|
@ -3116,7 +3159,7 @@ public abstract class Parser extends ExpressionParser implements IParser
|
|||
consume(IToken.tRBRACE);
|
||||
|
||||
if( createNewScope )
|
||||
newScope.exitScope( requestor );
|
||||
newScope.exitScope( requestor, astFactory.getReferenceManager() );
|
||||
}
|
||||
|
||||
protected IASTCompilationUnit compilationUnit;
|
||||
|
|
|
@ -18,6 +18,7 @@ import org.eclipse.cdt.core.parser.ast.ASTPointerOperator;
|
|||
import org.eclipse.cdt.core.parser.ast.IASTAbstractDeclaration;
|
||||
import org.eclipse.cdt.core.parser.ast.IASTArrayModifier;
|
||||
import org.eclipse.cdt.core.parser.ast.IASTTypeSpecifier;
|
||||
import org.eclipse.cdt.core.parser.ast.IReferenceManager;
|
||||
|
||||
/**
|
||||
* @author jcamelon
|
||||
|
@ -116,22 +117,22 @@ public class ASTAbstractDeclaration implements IASTAbstractDeclaration
|
|||
/* (non-Javadoc)
|
||||
* @see org.eclipse.cdt.core.parser.ISourceElementCallbackDelegate#acceptElement(org.eclipse.cdt.core.parser.ISourceElementRequestor)
|
||||
*/
|
||||
public void acceptElement(ISourceElementRequestor requestor)
|
||||
public void acceptElement(ISourceElementRequestor requestor, IReferenceManager manager)
|
||||
{
|
||||
Iterator arrayMods = getArrayModifiers();
|
||||
while( arrayMods.hasNext() )
|
||||
((IASTArrayModifier)arrayMods.next()).acceptElement(requestor);
|
||||
((IASTArrayModifier)arrayMods.next()).acceptElement(requestor, manager);
|
||||
}
|
||||
/* (non-Javadoc)
|
||||
* @see org.eclipse.cdt.core.parser.ISourceElementCallbackDelegate#enterScope(org.eclipse.cdt.core.parser.ISourceElementRequestor)
|
||||
*/
|
||||
public void enterScope(ISourceElementRequestor requestor)
|
||||
public void enterScope(ISourceElementRequestor requestor, IReferenceManager manager)
|
||||
{
|
||||
}
|
||||
/* (non-Javadoc)
|
||||
* @see org.eclipse.cdt.core.parser.ISourceElementCallbackDelegate#exitScope(org.eclipse.cdt.core.parser.ISourceElementRequestor)
|
||||
*/
|
||||
public void exitScope(ISourceElementRequestor requestor)
|
||||
public void exitScope(ISourceElementRequestor requestor, IReferenceManager manager)
|
||||
{
|
||||
}
|
||||
}
|
||||
|
|
|
@ -13,6 +13,7 @@ package org.eclipse.cdt.internal.core.parser.ast;
|
|||
import org.eclipse.cdt.core.parser.ISourceElementRequestor;
|
||||
import org.eclipse.cdt.core.parser.ast.IASTArrayModifier;
|
||||
import org.eclipse.cdt.core.parser.ast.IASTExpression;
|
||||
import org.eclipse.cdt.core.parser.ast.IReferenceManager;
|
||||
|
||||
/**
|
||||
* @author jcamelon
|
||||
|
@ -40,23 +41,23 @@ public class ASTArrayModifier implements IASTArrayModifier
|
|||
/* (non-Javadoc)
|
||||
* @see org.eclipse.cdt.core.parser.ISourceElementCallbackDelegate#acceptElement(org.eclipse.cdt.core.parser.ISourceElementRequestor)
|
||||
*/
|
||||
public void acceptElement(ISourceElementRequestor requestor)
|
||||
public void acceptElement(ISourceElementRequestor requestor, IReferenceManager manager)
|
||||
{
|
||||
if( expression != null )
|
||||
expression.acceptElement( requestor );
|
||||
expression.acceptElement( requestor, manager );
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see org.eclipse.cdt.core.parser.ISourceElementCallbackDelegate#enterScope(org.eclipse.cdt.core.parser.ISourceElementRequestor)
|
||||
*/
|
||||
public void enterScope(ISourceElementRequestor requestor)
|
||||
public void enterScope(ISourceElementRequestor requestor, IReferenceManager manager)
|
||||
{
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see org.eclipse.cdt.core.parser.ISourceElementCallbackDelegate#exitScope(org.eclipse.cdt.core.parser.ISourceElementRequestor)
|
||||
*/
|
||||
public void exitScope(ISourceElementRequestor requestor)
|
||||
public void exitScope(ISourceElementRequestor requestor, IReferenceManager manager)
|
||||
{
|
||||
}
|
||||
}
|
||||
|
|
|
@ -13,6 +13,7 @@ package org.eclipse.cdt.internal.core.parser.ast;
|
|||
import org.eclipse.cdt.core.parser.ISourceElementRequestor;
|
||||
import org.eclipse.cdt.core.parser.ast.IASTDesignator;
|
||||
import org.eclipse.cdt.core.parser.ast.IASTExpression;
|
||||
import org.eclipse.cdt.core.parser.ast.IReferenceManager;
|
||||
|
||||
/**
|
||||
* @author jcamelon
|
||||
|
@ -61,21 +62,21 @@ public class ASTDesignator implements IASTDesignator
|
|||
/* (non-Javadoc)
|
||||
* @see org.eclipse.cdt.core.parser.ISourceElementCallbackDelegate#acceptElement(org.eclipse.cdt.core.parser.ISourceElementRequestor)
|
||||
*/
|
||||
public void acceptElement(ISourceElementRequestor requestor)
|
||||
public void acceptElement(ISourceElementRequestor requestor, IReferenceManager manager)
|
||||
{
|
||||
if( constantExpression != null )
|
||||
constantExpression.acceptElement(requestor);
|
||||
constantExpression.acceptElement(requestor, manager);
|
||||
}
|
||||
/* (non-Javadoc)
|
||||
* @see org.eclipse.cdt.core.parser.ISourceElementCallbackDelegate#enterScope(org.eclipse.cdt.core.parser.ISourceElementRequestor)
|
||||
*/
|
||||
public void enterScope(ISourceElementRequestor requestor)
|
||||
public void enterScope(ISourceElementRequestor requestor, IReferenceManager manager )
|
||||
{
|
||||
}
|
||||
/* (non-Javadoc)
|
||||
* @see org.eclipse.cdt.core.parser.ISourceElementCallbackDelegate#exitScope(org.eclipse.cdt.core.parser.ISourceElementRequestor)
|
||||
*/
|
||||
public void exitScope(ISourceElementRequestor requestor)
|
||||
public void exitScope(ISourceElementRequestor requestor, IReferenceManager manager )
|
||||
{
|
||||
}
|
||||
/* (non-Javadoc)
|
||||
|
|
|
@ -12,6 +12,7 @@ package org.eclipse.cdt.internal.core.parser.ast;
|
|||
|
||||
import org.eclipse.cdt.core.parser.ISourceElementRequestor;
|
||||
import org.eclipse.cdt.core.parser.ast.IASTInclusion;
|
||||
import org.eclipse.cdt.core.parser.ast.IReferenceManager;
|
||||
|
||||
/**
|
||||
* @author jcamelon
|
||||
|
@ -104,7 +105,7 @@ public class ASTInclusion implements IASTInclusion {
|
|||
/* (non-Javadoc)
|
||||
* @see org.eclipse.cdt.core.parser.ISourceElementCallbackDelegate#acceptElement(org.eclipse.cdt.core.parser.ISourceElementRequestor)
|
||||
*/
|
||||
public void acceptElement(ISourceElementRequestor requestor)
|
||||
public void acceptElement(ISourceElementRequestor requestor, IReferenceManager manager)
|
||||
{
|
||||
// TODO Auto-generated method stub
|
||||
|
||||
|
@ -113,7 +114,7 @@ public class ASTInclusion implements IASTInclusion {
|
|||
/* (non-Javadoc)
|
||||
* @see org.eclipse.cdt.core.parser.ISourceElementCallbackDelegate#enterScope(org.eclipse.cdt.core.parser.ISourceElementRequestor)
|
||||
*/
|
||||
public void enterScope(ISourceElementRequestor requestor)
|
||||
public void enterScope(ISourceElementRequestor requestor, IReferenceManager manager)
|
||||
{
|
||||
try
|
||||
{
|
||||
|
@ -128,7 +129,7 @@ public class ASTInclusion implements IASTInclusion {
|
|||
/* (non-Javadoc)
|
||||
* @see org.eclipse.cdt.core.parser.ISourceElementCallbackDelegate#exitScope(org.eclipse.cdt.core.parser.ISourceElementRequestor)
|
||||
*/
|
||||
public void exitScope(ISourceElementRequestor requestor)
|
||||
public void exitScope(ISourceElementRequestor requestor, IReferenceManager manager)
|
||||
{
|
||||
try
|
||||
{
|
||||
|
|
|
@ -15,6 +15,7 @@ import org.eclipse.cdt.core.parser.IMacroDescriptor;
|
|||
import org.eclipse.cdt.core.parser.ISourceElementRequestor;
|
||||
import org.eclipse.cdt.core.parser.IToken;
|
||||
import org.eclipse.cdt.core.parser.ast.IASTMacro;
|
||||
import org.eclipse.cdt.core.parser.ast.IReferenceManager;
|
||||
|
||||
/**
|
||||
* @author jcamelon
|
||||
|
@ -85,7 +86,7 @@ public class ASTMacro implements IASTMacro {
|
|||
/* (non-Javadoc)
|
||||
* @see org.eclipse.cdt.core.parser.ISourceElementCallbackDelegate#acceptElement(org.eclipse.cdt.core.parser.ISourceElementRequestor)
|
||||
*/
|
||||
public void acceptElement(ISourceElementRequestor requestor)
|
||||
public void acceptElement(ISourceElementRequestor requestor, IReferenceManager manager)
|
||||
{
|
||||
try
|
||||
{
|
||||
|
@ -99,13 +100,13 @@ public class ASTMacro implements IASTMacro {
|
|||
/* (non-Javadoc)
|
||||
* @see org.eclipse.cdt.core.parser.ISourceElementCallbackDelegate#enterScope(org.eclipse.cdt.core.parser.ISourceElementRequestor)
|
||||
*/
|
||||
public void enterScope(ISourceElementRequestor requestor)
|
||||
public void enterScope(ISourceElementRequestor requestor, IReferenceManager manager)
|
||||
{
|
||||
}
|
||||
/* (non-Javadoc)
|
||||
* @see org.eclipse.cdt.core.parser.ISourceElementCallbackDelegate#exitScope(org.eclipse.cdt.core.parser.ISourceElementRequestor)
|
||||
*/
|
||||
public void exitScope(ISourceElementRequestor requestor)
|
||||
public void exitScope(ISourceElementRequestor requestor, IReferenceManager manager)
|
||||
{
|
||||
}
|
||||
|
||||
|
|
|
@ -12,6 +12,7 @@ package org.eclipse.cdt.internal.core.parser.ast.complete;
|
|||
|
||||
import org.eclipse.cdt.core.parser.ISourceElementRequestor;
|
||||
import org.eclipse.cdt.core.parser.ast.IASTASMDefinition;
|
||||
import org.eclipse.cdt.core.parser.ast.IReferenceManager;
|
||||
import org.eclipse.cdt.internal.core.parser.ast.Offsets;
|
||||
import org.eclipse.cdt.internal.core.parser.pst.IContainerSymbol;
|
||||
|
||||
|
@ -72,7 +73,7 @@ public class ASTASMDefinition extends ASTAnonymousDeclaration implements IASTASM
|
|||
/* (non-Javadoc)
|
||||
* @see org.eclipse.cdt.core.parser.ISourceElementCallbackDelegate#acceptElement(org.eclipse.cdt.core.parser.ISourceElementRequestor)
|
||||
*/
|
||||
public void acceptElement(ISourceElementRequestor requestor)
|
||||
public void acceptElement(ISourceElementRequestor requestor, IReferenceManager manager)
|
||||
{
|
||||
try
|
||||
{
|
||||
|
@ -86,13 +87,13 @@ public class ASTASMDefinition extends ASTAnonymousDeclaration implements IASTASM
|
|||
/* (non-Javadoc)
|
||||
* @see org.eclipse.cdt.core.parser.ISourceElementCallbackDelegate#enterScope(org.eclipse.cdt.core.parser.ISourceElementRequestor)
|
||||
*/
|
||||
public void enterScope(ISourceElementRequestor requestor)
|
||||
public void enterScope(ISourceElementRequestor requestor, IReferenceManager manager)
|
||||
{
|
||||
}
|
||||
/* (non-Javadoc)
|
||||
* @see org.eclipse.cdt.core.parser.ISourceElementCallbackDelegate#exitScope(org.eclipse.cdt.core.parser.ISourceElementRequestor)
|
||||
*/
|
||||
public void exitScope(ISourceElementRequestor requestor)
|
||||
public void exitScope(ISourceElementRequestor requestor, IReferenceManager manager)
|
||||
{
|
||||
}
|
||||
|
||||
|
|
|
@ -14,6 +14,7 @@ import org.eclipse.cdt.core.parser.ISourceElementRequestor;
|
|||
import org.eclipse.cdt.core.parser.ast.IASTAbstractTypeSpecifierDeclaration;
|
||||
import org.eclipse.cdt.core.parser.ast.IASTTemplate;
|
||||
import org.eclipse.cdt.core.parser.ast.IASTTypeSpecifier;
|
||||
import org.eclipse.cdt.core.parser.ast.IReferenceManager;
|
||||
import org.eclipse.cdt.internal.core.parser.ast.Offsets;
|
||||
import org.eclipse.cdt.internal.core.parser.pst.IContainerSymbol;
|
||||
|
||||
|
@ -46,7 +47,7 @@ public class ASTAbstractTypeSpecifierDeclaration
|
|||
/* (non-Javadoc)
|
||||
* @see org.eclipse.cdt.core.parser.ISourceElementCallbackDelegate#acceptElement(org.eclipse.cdt.core.parser.ISourceElementRequestor)
|
||||
*/
|
||||
public void acceptElement(ISourceElementRequestor requestor)
|
||||
public void acceptElement(ISourceElementRequestor requestor, IReferenceManager manager)
|
||||
{
|
||||
try
|
||||
{
|
||||
|
@ -64,14 +65,14 @@ public class ASTAbstractTypeSpecifierDeclaration
|
|||
/* (non-Javadoc)
|
||||
* @see org.eclipse.cdt.core.parser.ISourceElementCallbackDelegate#enterScope(org.eclipse.cdt.core.parser.ISourceElementRequestor)
|
||||
*/
|
||||
public void enterScope(ISourceElementRequestor requestor)
|
||||
public void enterScope(ISourceElementRequestor requestor, IReferenceManager manager)
|
||||
{
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see org.eclipse.cdt.core.parser.ISourceElementCallbackDelegate#exitScope(org.eclipse.cdt.core.parser.ISourceElementRequestor)
|
||||
*/
|
||||
public void exitScope(ISourceElementRequestor requestor)
|
||||
public void exitScope(ISourceElementRequestor requestor, IReferenceManager manager)
|
||||
{
|
||||
}
|
||||
|
||||
|
|
|
@ -16,6 +16,7 @@ import org.eclipse.cdt.core.parser.ISourceElementRequestor;
|
|||
import org.eclipse.cdt.core.parser.ast.ASTAccessVisibility;
|
||||
import org.eclipse.cdt.core.parser.ast.IASTBaseSpecifier;
|
||||
import org.eclipse.cdt.core.parser.ast.IASTTypeSpecifier;
|
||||
import org.eclipse.cdt.core.parser.ast.IReferenceManager;
|
||||
import org.eclipse.cdt.internal.core.parser.pst.ISymbol;
|
||||
|
||||
/**
|
||||
|
@ -85,23 +86,23 @@ public class ASTBaseSpecifier implements IASTBaseSpecifier
|
|||
/* (non-Javadoc)
|
||||
* @see org.eclipse.cdt.core.parser.ISourceElementCallbackDelegate#acceptElement(org.eclipse.cdt.core.parser.ISourceElementRequestor)
|
||||
*/
|
||||
public void acceptElement(ISourceElementRequestor requestor)
|
||||
public void acceptElement(ISourceElementRequestor requestor, IReferenceManager manager)
|
||||
{
|
||||
ASTReferenceStore.processReferences( references, requestor );
|
||||
manager.processReferences( references, requestor );
|
||||
references = null;
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see org.eclipse.cdt.core.parser.ISourceElementCallbackDelegate#enterScope(org.eclipse.cdt.core.parser.ISourceElementRequestor)
|
||||
*/
|
||||
public void enterScope(ISourceElementRequestor requestor)
|
||||
public void enterScope(ISourceElementRequestor requestor, IReferenceManager manager)
|
||||
{
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see org.eclipse.cdt.core.parser.ISourceElementCallbackDelegate#exitScope(org.eclipse.cdt.core.parser.ISourceElementRequestor)
|
||||
*/
|
||||
public void exitScope(ISourceElementRequestor requestor)
|
||||
public void exitScope(ISourceElementRequestor requestor, IReferenceManager manager)
|
||||
{
|
||||
}
|
||||
}
|
||||
|
|
|
@ -16,6 +16,7 @@ import org.eclipse.cdt.core.parser.ISourceElementRequestor;
|
|||
import org.eclipse.cdt.core.parser.ITokenDuple;
|
||||
import org.eclipse.cdt.core.parser.ast.ASTNotImplementedException;
|
||||
import org.eclipse.cdt.core.parser.ast.IASTExpression;
|
||||
import org.eclipse.cdt.core.parser.ast.IReferenceManager;
|
||||
|
||||
/**
|
||||
* @author jcamelon
|
||||
|
@ -75,9 +76,16 @@ public class ASTBinaryExpression extends ASTUnaryExpression {
|
|||
/* (non-Javadoc)
|
||||
* @see org.eclipse.cdt.internal.core.parser.ast.complete.ASTExpression#processCallbacks()
|
||||
*/
|
||||
protected void processCallbacks( ISourceElementRequestor requestor ) {
|
||||
super.processCallbacks(requestor);
|
||||
rhs.acceptElement( requestor );
|
||||
protected void processCallbacks( ISourceElementRequestor requestor, IReferenceManager manager ) {
|
||||
super.processCallbacks(requestor, manager);
|
||||
rhs.acceptElement( requestor, manager );
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see org.eclipse.cdt.core.parser.ast.IASTExpression#freeReferences(org.eclipse.cdt.core.parser.ast.IReferenceManager)
|
||||
*/
|
||||
public void freeReferences(IReferenceManager manager) {
|
||||
super.freeReferences(manager);
|
||||
rhs.freeReferences(manager);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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.complete;
|
||||
|
||||
import org.eclipse.cdt.core.parser.ISourceElementCallbackDelegate;
|
||||
import org.eclipse.cdt.core.parser.ISourceElementRequestor;
|
||||
import org.eclipse.cdt.core.parser.ast.IASTClassReference;
|
||||
import org.eclipse.cdt.core.parser.ast.IASTClassSpecifier;
|
||||
import org.eclipse.cdt.core.parser.ast.IASTTypeSpecifier;
|
||||
|
||||
/**
|
||||
* @author jcamelon
|
||||
*
|
||||
*/
|
||||
public class ASTClassReference
|
||||
extends ASTReference
|
||||
implements IASTClassReference
|
||||
{
|
||||
private final IASTTypeSpecifier reference;
|
||||
/**
|
||||
* @param i
|
||||
* @param string
|
||||
* @param specifier
|
||||
*/
|
||||
public ASTClassReference(int i, String string, IASTTypeSpecifier specifier)
|
||||
{
|
||||
super( i, string );
|
||||
reference = specifier;
|
||||
}
|
||||
/* (non-Javadoc)
|
||||
* @see org.eclipse.cdt.core.parser.ast.IASTReference#getReferencedElement()
|
||||
*/
|
||||
public ISourceElementCallbackDelegate getReferencedElement()
|
||||
{
|
||||
return (ISourceElementCallbackDelegate)reference;
|
||||
}
|
||||
/* (non-Javadoc)
|
||||
* @see org.eclipse.cdt.core.parser.ISourceElementCallbackDelegate#acceptElement(org.eclipse.cdt.core.parser.ISourceElementRequestor)
|
||||
*/
|
||||
public void acceptElement(ISourceElementRequestor requestor)
|
||||
{
|
||||
try
|
||||
{
|
||||
requestor.acceptClassReference( this );
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
/* do nothing */
|
||||
}
|
||||
}
|
||||
/* (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)
|
||||
{
|
||||
}
|
||||
/* (non-Javadoc)
|
||||
* @see org.eclipse.cdt.core.parser.ast.IASTClassReference#isResolved()
|
||||
*/
|
||||
public boolean isResolved()
|
||||
{
|
||||
return ( reference instanceof IASTClassSpecifier );
|
||||
}
|
||||
}
|
|
@ -23,6 +23,7 @@ import org.eclipse.cdt.core.parser.ast.IASTClassSpecifier;
|
|||
import org.eclipse.cdt.core.parser.ast.IASTDeclaration;
|
||||
import org.eclipse.cdt.core.parser.ast.IASTReference;
|
||||
import org.eclipse.cdt.core.parser.ast.IASTScope;
|
||||
import org.eclipse.cdt.core.parser.ast.IReferenceManager;
|
||||
import org.eclipse.cdt.internal.core.parser.ast.ASTQualifiedNamedElement;
|
||||
import org.eclipse.cdt.internal.core.parser.ast.NamedOffsets;
|
||||
import org.eclipse.cdt.internal.core.parser.ast.SymbolIterator;
|
||||
|
@ -166,15 +167,16 @@ public class ASTClassSpecifier extends ASTScope implements IASTClassSpecifier
|
|||
/* (non-Javadoc)
|
||||
* @see org.eclipse.cdt.core.parser.ISourceElementCallbackDelegate#acceptElement(org.eclipse.cdt.core.parser.ISourceElementRequestor)
|
||||
*/
|
||||
public void acceptElement(ISourceElementRequestor requestor)
|
||||
public void acceptElement(ISourceElementRequestor requestor, IReferenceManager manager)
|
||||
{
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see org.eclipse.cdt.core.parser.ISourceElementCallbackDelegate#enterScope(org.eclipse.cdt.core.parser.ISourceElementRequestor)
|
||||
*/
|
||||
public void enterScope(ISourceElementRequestor requestor)
|
||||
public void enterScope(ISourceElementRequestor requestor, IReferenceManager manager)
|
||||
{
|
||||
ASTReferenceStore.processReferences( references, requestor );
|
||||
manager.processReferences( references, requestor );
|
||||
references = null;
|
||||
try
|
||||
{
|
||||
|
@ -188,18 +190,18 @@ public class ASTClassSpecifier extends ASTScope implements IASTClassSpecifier
|
|||
while( i.hasNext() )
|
||||
{
|
||||
IASTBaseSpecifier baseSpec = (IASTBaseSpecifier)i.next();
|
||||
baseSpec.acceptElement(requestor);
|
||||
baseSpec.acceptElement(requestor, manager);
|
||||
}
|
||||
}
|
||||
/* (non-Javadoc)
|
||||
* @see org.eclipse.cdt.core.parser.ISourceElementCallbackDelegate#exitScope(org.eclipse.cdt.core.parser.ISourceElementRequestor)
|
||||
*/
|
||||
public void exitScope(ISourceElementRequestor requestor)
|
||||
public void exitScope(ISourceElementRequestor requestor, IReferenceManager manager)
|
||||
{
|
||||
Iterator i = resolvedCrossReferences.iterator();
|
||||
while( i.hasNext() )
|
||||
{
|
||||
((IASTReference)i.next()).acceptElement( requestor );
|
||||
((IASTReference)i.next()).acceptElement( requestor, manager );
|
||||
}
|
||||
try
|
||||
{
|
||||
|
@ -327,8 +329,16 @@ public class ASTClassSpecifier extends ASTScope implements IASTClassSpecifier
|
|||
/**
|
||||
* @param references2
|
||||
*/
|
||||
public void setExtraReferences(List references) {
|
||||
resolvedCrossReferences.addAll( references );
|
||||
public void setExtraReferences(List references, ReferenceCache cache ) {
|
||||
if( references != null && !references.isEmpty())
|
||||
{
|
||||
for( int i = 0; i < references.size(); ++i )
|
||||
{
|
||||
IASTReference r = (IASTReference)references.get(i);
|
||||
resolvedCrossReferences.add( cache.getReference(r.getOffset(), r.getReferencedElement()));
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
/* (non-Javadoc)
|
||||
* @see org.eclipse.cdt.core.parser.ast.IASTClassSpecifier#getFriends()
|
||||
|
|
|
@ -14,6 +14,7 @@ import org.eclipse.cdt.core.parser.ISourceElementRequestor;
|
|||
import org.eclipse.cdt.core.parser.ast.IASTCodeScope;
|
||||
import org.eclipse.cdt.core.parser.ast.IASTDeclaration;
|
||||
import org.eclipse.cdt.core.parser.ast.IASTFunction;
|
||||
import org.eclipse.cdt.core.parser.ast.IReferenceManager;
|
||||
import org.eclipse.cdt.internal.core.parser.pst.IContainerSymbol;
|
||||
|
||||
/**
|
||||
|
@ -38,13 +39,13 @@ public class ASTCodeScope extends ASTScope implements IASTCodeScope {
|
|||
/* (non-Javadoc)
|
||||
* @see org.eclipse.cdt.core.parser.ISourceElementCallbackDelegate#acceptElement(org.eclipse.cdt.core.parser.ISourceElementRequestor)
|
||||
*/
|
||||
public void acceptElement(ISourceElementRequestor requestor) {
|
||||
public void acceptElement(ISourceElementRequestor requestor, IReferenceManager manager) {
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see org.eclipse.cdt.core.parser.ISourceElementCallbackDelegate#enterScope(org.eclipse.cdt.core.parser.ISourceElementRequestor)
|
||||
*/
|
||||
public void enterScope(ISourceElementRequestor requestor) {
|
||||
public void enterScope(ISourceElementRequestor requestor, IReferenceManager manager) {
|
||||
try
|
||||
{
|
||||
requestor.enterCodeBlock( this );
|
||||
|
@ -58,7 +59,7 @@ public class ASTCodeScope extends ASTScope implements IASTCodeScope {
|
|||
/* (non-Javadoc)
|
||||
* @see org.eclipse.cdt.core.parser.ISourceElementCallbackDelegate#exitScope(org.eclipse.cdt.core.parser.ISourceElementRequestor)
|
||||
*/
|
||||
public void exitScope(ISourceElementRequestor requestor) {
|
||||
public void exitScope(ISourceElementRequestor requestor, IReferenceManager manager) {
|
||||
try
|
||||
{
|
||||
requestor.exitCodeBlock( this );
|
||||
|
|
|
@ -17,6 +17,7 @@ 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;
|
||||
import org.eclipse.cdt.core.parser.ast.IReferenceManager;
|
||||
import org.eclipse.cdt.internal.core.parser.pst.ISymbol;
|
||||
|
||||
/**
|
||||
|
@ -39,13 +40,13 @@ public class ASTCompilationUnit
|
|||
/* (non-Javadoc)
|
||||
* @see org.eclipse.cdt.core.parser.ISourceElementCallbackDelegate#acceptElement(org.eclipse.cdt.core.parser.ISourceElementRequestor)
|
||||
*/
|
||||
public void acceptElement(ISourceElementRequestor requestor)
|
||||
public void acceptElement(ISourceElementRequestor requestor, IReferenceManager manager)
|
||||
{
|
||||
}
|
||||
/* (non-Javadoc)
|
||||
* @see org.eclipse.cdt.core.parser.ISourceElementCallbackDelegate#enterScope(org.eclipse.cdt.core.parser.ISourceElementRequestor)
|
||||
*/
|
||||
public void enterScope(ISourceElementRequestor requestor)
|
||||
public void enterScope(ISourceElementRequestor requestor, IReferenceManager manager)
|
||||
{
|
||||
try
|
||||
{
|
||||
|
@ -59,7 +60,7 @@ public class ASTCompilationUnit
|
|||
/* (non-Javadoc)
|
||||
* @see org.eclipse.cdt.core.parser.ISourceElementCallbackDelegate#exitScope(org.eclipse.cdt.core.parser.ISourceElementRequestor)
|
||||
*/
|
||||
public void exitScope(ISourceElementRequestor requestor)
|
||||
public void exitScope(ISourceElementRequestor requestor, IReferenceManager manager)
|
||||
{
|
||||
try
|
||||
{
|
||||
|
|
|
@ -16,6 +16,7 @@ import org.eclipse.cdt.core.parser.ISourceElementRequestor;
|
|||
import org.eclipse.cdt.core.parser.ITokenDuple;
|
||||
import org.eclipse.cdt.core.parser.ast.ASTNotImplementedException;
|
||||
import org.eclipse.cdt.core.parser.ast.IASTExpression;
|
||||
import org.eclipse.cdt.core.parser.ast.IReferenceManager;
|
||||
|
||||
/**
|
||||
* @author jcamelon
|
||||
|
@ -78,10 +79,17 @@ public class ASTConditionalExpression extends ASTBinaryExpression {
|
|||
/* (non-Javadoc)
|
||||
* @see org.eclipse.cdt.internal.core.parser.ast.complete.ASTExpression#processCallbacks()
|
||||
*/
|
||||
protected void processCallbacks( ISourceElementRequestor requestor ) {
|
||||
super.processCallbacks(requestor);
|
||||
thirdExpression.acceptElement( requestor );
|
||||
protected void processCallbacks( ISourceElementRequestor requestor, IReferenceManager manager ) {
|
||||
super.processCallbacks(requestor, manager);
|
||||
thirdExpression.acceptElement( requestor, manager );
|
||||
}
|
||||
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see org.eclipse.cdt.core.parser.ast.IASTExpression#freeReferences(org.eclipse.cdt.core.parser.ast.IReferenceManager)
|
||||
*/
|
||||
public void freeReferences(IReferenceManager manager) {
|
||||
super.freeReferences(manager);
|
||||
thirdExpression.freeReferences(manager);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -15,6 +15,7 @@ import java.util.List;
|
|||
import org.eclipse.cdt.core.parser.ISourceElementRequestor;
|
||||
import org.eclipse.cdt.core.parser.ast.IASTConstructorMemberInitializer;
|
||||
import org.eclipse.cdt.core.parser.ast.IASTExpression;
|
||||
import org.eclipse.cdt.core.parser.ast.IReferenceManager;
|
||||
|
||||
/**
|
||||
* @author jcamelon
|
||||
|
@ -56,21 +57,23 @@ public class ASTConstructorMemberInitializer
|
|||
/* (non-Javadoc)
|
||||
* @see org.eclipse.cdt.core.parser.ISourceElementCallbackDelegate#acceptElement(org.eclipse.cdt.core.parser.ISourceElementRequestor)
|
||||
*/
|
||||
public void acceptElement(ISourceElementRequestor requestor)
|
||||
public void acceptElement(ISourceElementRequestor requestor, IReferenceManager manager)
|
||||
{
|
||||
ASTReferenceStore.processReferences( references, requestor );
|
||||
manager.processReferences( references, requestor );
|
||||
references = null;
|
||||
if( expression != null )
|
||||
expression.freeReferences(manager);
|
||||
}
|
||||
/* (non-Javadoc)
|
||||
* @see org.eclipse.cdt.core.parser.ISourceElementCallbackDelegate#enterScope(org.eclipse.cdt.core.parser.ISourceElementRequestor)
|
||||
*/
|
||||
public void enterScope(ISourceElementRequestor requestor)
|
||||
public void enterScope(ISourceElementRequestor requestor, IReferenceManager manager)
|
||||
{
|
||||
}
|
||||
/* (non-Javadoc)
|
||||
* @see org.eclipse.cdt.core.parser.ISourceElementCallbackDelegate#exitScope(org.eclipse.cdt.core.parser.ISourceElementRequestor)
|
||||
*/
|
||||
public void exitScope(ISourceElementRequestor requestor)
|
||||
public void exitScope(ISourceElementRequestor requestor, IReferenceManager manager)
|
||||
{
|
||||
}
|
||||
/**
|
||||
|
|
|
@ -15,6 +15,7 @@ import java.util.List;
|
|||
import org.eclipse.cdt.core.parser.ISourceElementRequestor;
|
||||
import org.eclipse.cdt.core.parser.ast.ASTClassKind;
|
||||
import org.eclipse.cdt.core.parser.ast.IASTElaboratedTypeSpecifier;
|
||||
import org.eclipse.cdt.core.parser.ast.IReferenceManager;
|
||||
import org.eclipse.cdt.internal.core.parser.ast.ASTQualifiedNamedElement;
|
||||
import org.eclipse.cdt.internal.core.parser.ast.NamedOffsets;
|
||||
import org.eclipse.cdt.internal.core.parser.pst.ISymbol;
|
||||
|
@ -101,7 +102,7 @@ public class ASTElaboratedTypeSpecifier extends ASTSymbol implements IASTElabora
|
|||
/* (non-Javadoc)
|
||||
* @see org.eclipse.cdt.core.parser.ISourceElementCallbackDelegate#acceptElement(org.eclipse.cdt.core.parser.ISourceElementRequestor)
|
||||
*/
|
||||
public void acceptElement(ISourceElementRequestor requestor)
|
||||
public void acceptElement(ISourceElementRequestor requestor, IReferenceManager manager)
|
||||
{
|
||||
if( isForwardDeclaration )
|
||||
try
|
||||
|
@ -112,18 +113,18 @@ public class ASTElaboratedTypeSpecifier extends ASTSymbol implements IASTElabora
|
|||
{
|
||||
/* do nothing */
|
||||
}
|
||||
ASTReferenceStore.processReferences( references, requestor );
|
||||
manager.processReferences( references, requestor );
|
||||
}
|
||||
/* (non-Javadoc)
|
||||
* @see org.eclipse.cdt.core.parser.ISourceElementCallbackDelegate#enterScope(org.eclipse.cdt.core.parser.ISourceElementRequestor)
|
||||
*/
|
||||
public void enterScope(ISourceElementRequestor requestor)
|
||||
public void enterScope(ISourceElementRequestor requestor, IReferenceManager manager)
|
||||
{
|
||||
}
|
||||
/* (non-Javadoc)
|
||||
* @see org.eclipse.cdt.core.parser.ISourceElementCallbackDelegate#exitScope(org.eclipse.cdt.core.parser.ISourceElementRequestor)
|
||||
*/
|
||||
public void exitScope(ISourceElementRequestor requestor)
|
||||
public void exitScope(ISourceElementRequestor requestor, IReferenceManager manager)
|
||||
{
|
||||
}
|
||||
/* (non-Javadoc)
|
||||
|
|
|
@ -12,6 +12,8 @@ package org.eclipse.cdt.internal.core.parser.ast.complete;
|
|||
|
||||
import java.util.List;
|
||||
|
||||
import org.eclipse.cdt.core.parser.ast.IReferenceManager;
|
||||
|
||||
/**
|
||||
* @author jcamelon
|
||||
*
|
||||
|
@ -24,4 +26,10 @@ public class ASTEmptyExpression extends ASTExpression {
|
|||
public ASTEmptyExpression(Kind kind, List references) {
|
||||
super( kind, references );
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see org.eclipse.cdt.core.parser.ast.IASTExpression#freeReferences(org.eclipse.cdt.core.parser.ast.IReferenceManager)
|
||||
*/
|
||||
public void freeReferences(IReferenceManager manager) {
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,71 +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.complete;
|
||||
|
||||
import org.eclipse.cdt.core.parser.ISourceElementCallbackDelegate;
|
||||
import org.eclipse.cdt.core.parser.ISourceElementRequestor;
|
||||
import org.eclipse.cdt.core.parser.ast.IASTEnumerationReference;
|
||||
import org.eclipse.cdt.core.parser.ast.IASTEnumerationSpecifier;
|
||||
|
||||
/**
|
||||
* @author jcamelon
|
||||
*
|
||||
*/
|
||||
public class ASTEnumerationReference
|
||||
extends ASTReference
|
||||
implements IASTEnumerationReference
|
||||
{
|
||||
private final IASTEnumerationSpecifier referencedElement;
|
||||
/**
|
||||
* @param offset
|
||||
* @param string
|
||||
* @param specifier
|
||||
*/
|
||||
public ASTEnumerationReference(int offset, String string, IASTEnumerationSpecifier specifier)
|
||||
{
|
||||
super( offset, string );
|
||||
referencedElement = specifier;
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see org.eclipse.cdt.core.parser.ast.IASTReference#getReferencedElement()
|
||||
*/
|
||||
public ISourceElementCallbackDelegate getReferencedElement()
|
||||
{
|
||||
return referencedElement;
|
||||
}
|
||||
/* (non-Javadoc)
|
||||
* @see org.eclipse.cdt.core.parser.ISourceElementCallbackDelegate#acceptElement(org.eclipse.cdt.core.parser.ISourceElementRequestor)
|
||||
*/
|
||||
public void acceptElement(ISourceElementRequestor requestor)
|
||||
{
|
||||
try
|
||||
{
|
||||
requestor.acceptEnumerationReference( this );
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
/* do nothing */
|
||||
}
|
||||
}
|
||||
/* (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)
|
||||
{
|
||||
}
|
||||
}
|
|
@ -17,6 +17,7 @@ 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.IReferenceManager;
|
||||
import org.eclipse.cdt.internal.core.parser.ast.ASTQualifiedNamedElement;
|
||||
import org.eclipse.cdt.internal.core.parser.ast.NamedOffsets;
|
||||
import org.eclipse.cdt.internal.core.parser.pst.ISymbol;
|
||||
|
@ -61,7 +62,7 @@ public class ASTEnumerationSpecifier
|
|||
/* (non-Javadoc)
|
||||
* @see org.eclipse.cdt.core.parser.ISourceElementCallbackDelegate#acceptElement(org.eclipse.cdt.core.parser.ISourceElementRequestor)
|
||||
*/
|
||||
public void acceptElement(ISourceElementRequestor requestor)
|
||||
public void acceptElement(ISourceElementRequestor requestor, IReferenceManager manager)
|
||||
{
|
||||
try
|
||||
{
|
||||
|
@ -75,13 +76,13 @@ public class ASTEnumerationSpecifier
|
|||
/* (non-Javadoc)
|
||||
* @see org.eclipse.cdt.core.parser.ISourceElementCallbackDelegate#enterScope(org.eclipse.cdt.core.parser.ISourceElementRequestor)
|
||||
*/
|
||||
public void enterScope(ISourceElementRequestor requestor)
|
||||
public void enterScope(ISourceElementRequestor requestor, IReferenceManager manager)
|
||||
{
|
||||
}
|
||||
/* (non-Javadoc)
|
||||
* @see org.eclipse.cdt.core.parser.ISourceElementCallbackDelegate#exitScope(org.eclipse.cdt.core.parser.ISourceElementRequestor)
|
||||
*/
|
||||
public void exitScope(ISourceElementRequestor requestor)
|
||||
public void exitScope(ISourceElementRequestor requestor, IReferenceManager manager)
|
||||
{
|
||||
}
|
||||
/* (non-Javadoc)
|
||||
|
|
|
@ -14,6 +14,7 @@ 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.IASTExpression;
|
||||
import org.eclipse.cdt.core.parser.ast.IReferenceManager;
|
||||
import org.eclipse.cdt.internal.core.parser.ast.NamedOffsets;
|
||||
import org.eclipse.cdt.internal.core.parser.pst.ISymbol;
|
||||
|
||||
|
@ -80,19 +81,19 @@ public class ASTEnumerator extends ASTSymbol implements IASTEnumerator
|
|||
/* (non-Javadoc)
|
||||
* @see org.eclipse.cdt.core.parser.ISourceElementCallbackDelegate#acceptElement(org.eclipse.cdt.core.parser.ISourceElementRequestor)
|
||||
*/
|
||||
public void acceptElement(ISourceElementRequestor requestor)
|
||||
public void acceptElement(ISourceElementRequestor requestor, IReferenceManager manager)
|
||||
{
|
||||
}
|
||||
/* (non-Javadoc)
|
||||
* @see org.eclipse.cdt.core.parser.ISourceElementCallbackDelegate#enterScope(org.eclipse.cdt.core.parser.ISourceElementRequestor)
|
||||
*/
|
||||
public void enterScope(ISourceElementRequestor requestor)
|
||||
public void enterScope(ISourceElementRequestor requestor, IReferenceManager manager)
|
||||
{
|
||||
}
|
||||
/* (non-Javadoc)
|
||||
* @see org.eclipse.cdt.core.parser.ISourceElementCallbackDelegate#exitScope(org.eclipse.cdt.core.parser.ISourceElementRequestor)
|
||||
*/
|
||||
public void exitScope(ISourceElementRequestor requestor)
|
||||
public void exitScope(ISourceElementRequestor requestor, IReferenceManager manager)
|
||||
{
|
||||
}
|
||||
/* (non-Javadoc)
|
||||
|
|
|
@ -1,70 +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.complete;
|
||||
|
||||
import org.eclipse.cdt.core.parser.ISourceElementCallbackDelegate;
|
||||
import org.eclipse.cdt.core.parser.ISourceElementRequestor;
|
||||
import org.eclipse.cdt.core.parser.ast.IASTEnumerator;
|
||||
import org.eclipse.cdt.core.parser.ast.IASTEnumeratorReference;
|
||||
|
||||
/**
|
||||
* @author jcamelon
|
||||
*
|
||||
*/
|
||||
public class ASTEnumeratorReference extends ASTReference implements IASTEnumeratorReference
|
||||
{
|
||||
|
||||
private final IASTEnumerator enumerator;
|
||||
/**
|
||||
* @param offset
|
||||
* @param string
|
||||
* @param enumerator
|
||||
*/
|
||||
public ASTEnumeratorReference(int offset, String string, IASTEnumerator enumerator)
|
||||
{
|
||||
super( offset, string );
|
||||
this.enumerator = enumerator;
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see org.eclipse.cdt.core.parser.ast.IASTReference#getReferencedElement()
|
||||
*/
|
||||
public ISourceElementCallbackDelegate getReferencedElement()
|
||||
{
|
||||
return enumerator;
|
||||
}
|
||||
/* (non-Javadoc)
|
||||
* @see org.eclipse.cdt.core.parser.ISourceElementCallbackDelegate#acceptElement(org.eclipse.cdt.core.parser.ISourceElementRequestor)
|
||||
*/
|
||||
public void acceptElement(ISourceElementRequestor requestor)
|
||||
{
|
||||
try
|
||||
{
|
||||
requestor.acceptEnumeratorReference( this );
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
/* do nothing */
|
||||
}
|
||||
}
|
||||
/* (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)
|
||||
{
|
||||
}
|
||||
}
|
|
@ -13,7 +13,6 @@ package org.eclipse.cdt.internal.core.parser.ast.complete;
|
|||
import java.util.Iterator;
|
||||
import java.util.List;
|
||||
|
||||
import org.eclipse.cdt.core.parser.ISourceElementRequestor;
|
||||
import org.eclipse.cdt.core.parser.ast.IASTExceptionSpecification;
|
||||
import org.eclipse.cdt.internal.core.parser.ast.EmptyIterator;
|
||||
|
||||
|
@ -24,15 +23,12 @@ import org.eclipse.cdt.internal.core.parser.ast.EmptyIterator;
|
|||
public class ASTExceptionSpecification implements IASTExceptionSpecification
|
||||
{
|
||||
private final List typeIds;
|
||||
private List references;
|
||||
/**
|
||||
* @param newTypeIds
|
||||
* @param references
|
||||
*/
|
||||
public ASTExceptionSpecification(List newTypeIds, List references)
|
||||
public ASTExceptionSpecification(List newTypeIds)
|
||||
{
|
||||
this.typeIds = newTypeIds;
|
||||
this.references = references;
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
|
@ -43,27 +39,4 @@ public class ASTExceptionSpecification implements IASTExceptionSpecification
|
|||
if( typeIds == null ) return EmptyIterator.EMPTY_ITERATOR;
|
||||
return typeIds.iterator();
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see org.eclipse.cdt.core.parser.ISourceElementCallbackDelegate#acceptElement(org.eclipse.cdt.core.parser.ISourceElementRequestor)
|
||||
*/
|
||||
public void acceptElement(ISourceElementRequestor requestor)
|
||||
{
|
||||
ASTReferenceStore.processReferences( references, requestor );
|
||||
references = null;
|
||||
}
|
||||
|
||||
/* (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)
|
||||
{
|
||||
}
|
||||
}
|
||||
|
|
|
@ -20,6 +20,7 @@ import org.eclipse.cdt.core.parser.ast.ASTNotImplementedException;
|
|||
import org.eclipse.cdt.core.parser.ast.IASTExpression;
|
||||
import org.eclipse.cdt.core.parser.ast.IASTReference;
|
||||
import org.eclipse.cdt.core.parser.ast.IASTTypeId;
|
||||
import org.eclipse.cdt.core.parser.ast.IReferenceManager;
|
||||
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.TypeInfo;
|
||||
|
@ -65,7 +66,7 @@ public abstract class ASTExpression extends ASTNode implements IASTExpression
|
|||
/* (non-Javadoc)
|
||||
* @see org.eclipse.cdt.core.parser.ISourceElementCallbackDelegate#acceptElement(org.eclipse.cdt.core.parser.ISourceElementRequestor)
|
||||
*/
|
||||
public void acceptElement(ISourceElementRequestor requestor)
|
||||
public void acceptElement(ISourceElementRequestor requestor, IReferenceManager manager)
|
||||
{
|
||||
try
|
||||
{
|
||||
|
@ -75,10 +76,10 @@ public abstract class ASTExpression extends ASTNode implements IASTExpression
|
|||
{
|
||||
// will not get thrown
|
||||
}
|
||||
ASTReferenceStore.processReferences( references, requestor );
|
||||
manager.processReferences( references, requestor );
|
||||
references = null;
|
||||
|
||||
processCallbacks(requestor);
|
||||
processCallbacks(requestor, manager);
|
||||
|
||||
try
|
||||
{
|
||||
|
@ -92,21 +93,22 @@ public abstract class ASTExpression extends ASTNode implements IASTExpression
|
|||
|
||||
/**
|
||||
* @param requestor TODO
|
||||
* @param manager TODO
|
||||
*
|
||||
*/
|
||||
protected void processCallbacks(ISourceElementRequestor requestor) {
|
||||
protected void processCallbacks(ISourceElementRequestor requestor, IReferenceManager manager) {
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see org.eclipse.cdt.core.parser.ISourceElementCallbackDelegate#enterScope(org.eclipse.cdt.core.parser.ISourceElementRequestor)
|
||||
*/
|
||||
public void enterScope(ISourceElementRequestor requestor)
|
||||
public void enterScope(ISourceElementRequestor requestor, IReferenceManager manager)
|
||||
{
|
||||
}
|
||||
/* (non-Javadoc)
|
||||
* @see org.eclipse.cdt.core.parser.ISourceElementCallbackDelegate#exitScope(org.eclipse.cdt.core.parser.ISourceElementRequestor)
|
||||
*/
|
||||
public void exitScope(ISourceElementRequestor requestor)
|
||||
public void exitScope(ISourceElementRequestor requestor, IReferenceManager manager)
|
||||
{
|
||||
}
|
||||
|
||||
|
@ -172,37 +174,41 @@ public abstract class ASTExpression extends ASTNode implements IASTExpression
|
|||
public IContainerSymbol getLookupQualificationSymbol() throws LookupError {
|
||||
ExpressionResult result = getResultType();
|
||||
TypeInfo type = (result != null ) ? result.getResult() : null;
|
||||
IContainerSymbol symbol = null;
|
||||
|
||||
IContainerSymbol containerSymbol = null;
|
||||
if( type != null ){
|
||||
type = type.getFinalType(true);
|
||||
if( type.isType( TypeInfo.t_type ) &&
|
||||
type.getTypeSymbol() != null && type.getTypeSymbol() instanceof IContainerSymbol )
|
||||
{
|
||||
symbol = (IContainerSymbol) type.getTypeSymbol();
|
||||
containerSymbol = (IContainerSymbol) type.getTypeSymbol();
|
||||
}
|
||||
type.release();
|
||||
}
|
||||
|
||||
return symbol;
|
||||
return containerSymbol;
|
||||
}
|
||||
|
||||
public boolean shouldFilterLookupResult( ISymbol symbol ){
|
||||
ExpressionResult result = getResultType();
|
||||
TypeInfo type = ( result != null ) ? result.getResult() : null;
|
||||
boolean shouldFilter = false;
|
||||
if( type != null ){
|
||||
type = type.getFinalType(false);
|
||||
boolean answer = false;
|
||||
type = type.getFinalType(true);
|
||||
if( type.checkBit( TypeInfo.isConst ) && !symbol.getTypeInfo().checkBit( TypeInfo.isConst ) )
|
||||
shouldFilter = true;
|
||||
{
|
||||
|
||||
answer = true;
|
||||
}
|
||||
|
||||
if( type.checkBit( TypeInfo.isVolatile ) && !symbol.getTypeInfo().checkBit( TypeInfo.isVolatile ) )
|
||||
shouldFilter = true;
|
||||
|
||||
{
|
||||
answer = true;
|
||||
}
|
||||
type.release();
|
||||
return answer;
|
||||
}
|
||||
|
||||
return shouldFilter;
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -279,4 +285,11 @@ public abstract class ASTExpression extends ASTNode implements IASTExpression
|
|||
public IASTExpression findNewDescriptor(ITokenDuple finalDuple) {
|
||||
return null;
|
||||
}
|
||||
|
||||
public void freeReferences( IReferenceManager manager )
|
||||
{
|
||||
if( references == null || references.isEmpty() ) return;
|
||||
for (int i = 0; i < references.size(); ++i)
|
||||
manager.returnReference( (IASTReference) references.get(i));
|
||||
}
|
||||
}
|
||||
|
|
|
@ -18,6 +18,7 @@ import org.eclipse.cdt.core.parser.ast.IASTAbstractDeclaration;
|
|||
import org.eclipse.cdt.core.parser.ast.IASTExpression;
|
||||
import org.eclipse.cdt.core.parser.ast.IASTField;
|
||||
import org.eclipse.cdt.core.parser.ast.IASTInitializerClause;
|
||||
import org.eclipse.cdt.core.parser.ast.IReferenceManager;
|
||||
import org.eclipse.cdt.internal.core.parser.pst.ISymbol;
|
||||
|
||||
/**
|
||||
|
@ -51,7 +52,7 @@ public class ASTField extends ASTVariable implements IASTField
|
|||
return visibility;
|
||||
}
|
||||
|
||||
public void acceptElement(ISourceElementRequestor requestor)
|
||||
public void acceptElement(ISourceElementRequestor requestor, IReferenceManager manager)
|
||||
{
|
||||
try
|
||||
{
|
||||
|
@ -61,12 +62,12 @@ public class ASTField extends ASTVariable implements IASTField
|
|||
{
|
||||
/* do nothing */
|
||||
}
|
||||
ASTReferenceStore.processReferences(references, requestor);
|
||||
manager.processReferences(references, requestor);
|
||||
references = null;
|
||||
|
||||
if( getInitializerClause() != null )
|
||||
getInitializerClause().acceptElement(requestor);
|
||||
getInitializerClause().acceptElement(requestor, manager);
|
||||
if( getAbstractDeclaration() != null )
|
||||
getAbstractDeclaration().acceptElement(requestor);
|
||||
getAbstractDeclaration().acceptElement(requestor, manager);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,71 +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.complete;
|
||||
|
||||
import org.eclipse.cdt.core.parser.ISourceElementCallbackDelegate;
|
||||
import org.eclipse.cdt.core.parser.ISourceElementRequestor;
|
||||
import org.eclipse.cdt.core.parser.ast.IASTField;
|
||||
import org.eclipse.cdt.core.parser.ast.IASTFieldReference;
|
||||
import org.eclipse.cdt.core.parser.ast.IASTReference;
|
||||
|
||||
/**
|
||||
* @author jcamelon
|
||||
*
|
||||
*/
|
||||
public class ASTFieldReference
|
||||
extends ASTReference
|
||||
implements IASTReference, IASTFieldReference
|
||||
{
|
||||
private final IASTField referencedElement;
|
||||
/**
|
||||
* @param offset
|
||||
* @param string
|
||||
* @param field
|
||||
*/
|
||||
public ASTFieldReference(int offset, String string, IASTField field)
|
||||
{
|
||||
super(offset, string);
|
||||
referencedElement = field;
|
||||
}
|
||||
/* (non-Javadoc)
|
||||
* @see org.eclipse.cdt.core.parser.ast.IASTReference#getReferencedElement()
|
||||
*/
|
||||
public ISourceElementCallbackDelegate getReferencedElement()
|
||||
{
|
||||
return referencedElement;
|
||||
}
|
||||
/* (non-Javadoc)
|
||||
* @see org.eclipse.cdt.core.parser.ISourceElementCallbackDelegate#acceptElement(org.eclipse.cdt.core.parser.ISourceElementRequestor)
|
||||
*/
|
||||
public void acceptElement(ISourceElementRequestor requestor)
|
||||
{
|
||||
try
|
||||
{
|
||||
requestor.acceptFieldReference(this);
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
/* do nothing */
|
||||
}
|
||||
}
|
||||
/* (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)
|
||||
{
|
||||
}
|
||||
}
|
|
@ -23,6 +23,7 @@ import org.eclipse.cdt.core.parser.ast.IASTExceptionSpecification;
|
|||
import org.eclipse.cdt.core.parser.ast.IASTFunction;
|
||||
import org.eclipse.cdt.core.parser.ast.IASTParameterDeclaration;
|
||||
import org.eclipse.cdt.core.parser.ast.IASTTemplate;
|
||||
import org.eclipse.cdt.core.parser.ast.IReferenceManager;
|
||||
import org.eclipse.cdt.internal.core.parser.ast.ASTQualifiedNamedElement;
|
||||
import org.eclipse.cdt.internal.core.parser.ast.NamedOffsets;
|
||||
import org.eclipse.cdt.internal.core.parser.pst.IParameterizedSymbol;
|
||||
|
@ -197,7 +198,7 @@ public class ASTFunction extends ASTScope implements IASTFunction
|
|||
/* (non-Javadoc)
|
||||
* @see org.eclipse.cdt.core.parser.ISourceElementCallbackDelegate#acceptElement(org.eclipse.cdt.core.parser.ISourceElementRequestor)
|
||||
*/
|
||||
public void acceptElement(ISourceElementRequestor requestor)
|
||||
public void acceptElement(ISourceElementRequestor requestor, IReferenceManager manager)
|
||||
{
|
||||
try
|
||||
{
|
||||
|
@ -210,34 +211,33 @@ public class ASTFunction extends ASTScope implements IASTFunction
|
|||
{
|
||||
/* do nothing */
|
||||
}
|
||||
functionCallbacks(requestor);
|
||||
functionCallbacks(requestor, manager);
|
||||
}
|
||||
|
||||
protected void functionCallbacks(ISourceElementRequestor requestor)
|
||||
protected void functionCallbacks(ISourceElementRequestor requestor, IReferenceManager manager)
|
||||
{
|
||||
ASTReferenceStore.processReferences(references, requestor);
|
||||
manager.processReferences(references, requestor);
|
||||
references = null;
|
||||
processParameterInitializersAndArrayMods(requestor);
|
||||
processParameterInitializersAndArrayMods(requestor, manager);
|
||||
if( getReturnType() != null )
|
||||
getReturnType().acceptElement(requestor);
|
||||
if( getExceptionSpec() != null )
|
||||
getExceptionSpec().acceptElement(requestor);
|
||||
getReturnType().acceptElement(requestor, manager);
|
||||
}
|
||||
/**
|
||||
* @param requestor
|
||||
* @param manager
|
||||
*/
|
||||
protected void processParameterInitializersAndArrayMods(ISourceElementRequestor requestor)
|
||||
protected void processParameterInitializersAndArrayMods(ISourceElementRequestor requestor, IReferenceManager manager)
|
||||
{
|
||||
Iterator i = parameters.iterator();
|
||||
while( i.hasNext() )
|
||||
{
|
||||
IASTParameterDeclaration parm = (IASTParameterDeclaration)i.next();
|
||||
if( parm.getDefaultValue() != null )
|
||||
parm.getDefaultValue().acceptElement(requestor);
|
||||
parm.getDefaultValue().acceptElement(requestor, manager);
|
||||
Iterator arrays = parm.getArrayModifiers();
|
||||
while( arrays.hasNext() )
|
||||
{
|
||||
((IASTArrayModifier)arrays.next()).acceptElement(requestor);
|
||||
((IASTArrayModifier)arrays.next()).acceptElement(requestor, manager);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -246,7 +246,7 @@ public class ASTFunction extends ASTScope implements IASTFunction
|
|||
/* (non-Javadoc)
|
||||
* @see org.eclipse.cdt.core.parser.ISourceElementCallbackDelegate#enterScope(org.eclipse.cdt.core.parser.ISourceElementRequestor)
|
||||
*/
|
||||
public void enterScope(ISourceElementRequestor requestor)
|
||||
public void enterScope(ISourceElementRequestor requestor, IReferenceManager manager)
|
||||
{
|
||||
try
|
||||
{
|
||||
|
@ -256,12 +256,12 @@ public class ASTFunction extends ASTScope implements IASTFunction
|
|||
{
|
||||
/* do nothing */
|
||||
}
|
||||
functionCallbacks( requestor );
|
||||
functionCallbacks( requestor, manager );
|
||||
}
|
||||
/* (non-Javadoc)
|
||||
* @see org.eclipse.cdt.core.parser.ISourceElementCallbackDelegate#exitScope(org.eclipse.cdt.core.parser.ISourceElementRequestor)
|
||||
*/
|
||||
public void exitScope(ISourceElementRequestor requestor)
|
||||
public void exitScope(ISourceElementRequestor requestor, IReferenceManager manager)
|
||||
{
|
||||
try
|
||||
{
|
||||
|
|
|
@ -1,72 +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.complete;
|
||||
|
||||
import org.eclipse.cdt.core.parser.ISourceElementCallbackDelegate;
|
||||
import org.eclipse.cdt.core.parser.ISourceElementRequestor;
|
||||
import org.eclipse.cdt.core.parser.ast.IASTFunction;
|
||||
import org.eclipse.cdt.core.parser.ast.IASTFunctionReference;
|
||||
import org.eclipse.cdt.core.parser.ast.IASTReference;
|
||||
|
||||
/**
|
||||
* @author jcamelon
|
||||
*
|
||||
*/
|
||||
public class ASTFunctionReference
|
||||
extends ASTReference
|
||||
implements IASTReference, IASTFunctionReference
|
||||
{
|
||||
private final IASTFunction declaration;
|
||||
/**
|
||||
* @param offset
|
||||
* @param name
|
||||
*/
|
||||
public ASTFunctionReference(int offset, String name, IASTFunction referencedDeclaration )
|
||||
{
|
||||
super(offset, name);
|
||||
this.declaration = referencedDeclaration;
|
||||
}
|
||||
/* (non-Javadoc)
|
||||
* @see org.eclipse.cdt.core.parser.ast.IASTReference#getReferencedElement()
|
||||
*/
|
||||
public ISourceElementCallbackDelegate getReferencedElement()
|
||||
{
|
||||
return declaration;
|
||||
}
|
||||
/* (non-Javadoc)
|
||||
* @see org.eclipse.cdt.core.parser.ISourceElementCallbackDelegate#acceptElement(org.eclipse.cdt.core.parser.ISourceElementRequestor)
|
||||
*/
|
||||
public void acceptElement(ISourceElementRequestor requestor)
|
||||
{
|
||||
try
|
||||
{
|
||||
requestor.acceptFunctionReference( this );
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
/* do nothing */
|
||||
}
|
||||
}
|
||||
/* (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)
|
||||
{
|
||||
|
||||
}
|
||||
}
|
|
@ -20,6 +20,7 @@ import org.eclipse.cdt.core.parser.ast.ASTNotImplementedException;
|
|||
import org.eclipse.cdt.core.parser.ast.IASTExpression;
|
||||
import org.eclipse.cdt.core.parser.ast.IASTInitializerClause;
|
||||
import org.eclipse.cdt.core.parser.ast.IASTVariable;
|
||||
import org.eclipse.cdt.core.parser.ast.IReferenceManager;
|
||||
import org.eclipse.cdt.internal.core.parser.ast.EmptyIterator;
|
||||
|
||||
/**
|
||||
|
@ -74,29 +75,29 @@ public class ASTInitializerClause implements IASTInitializerClause
|
|||
/* (non-Javadoc)
|
||||
* @see org.eclipse.cdt.core.parser.ISourceElementCallbackDelegate#acceptElement(org.eclipse.cdt.core.parser.ISourceElementRequestor)
|
||||
*/
|
||||
public void acceptElement(ISourceElementRequestor requestor)
|
||||
public void acceptElement(ISourceElementRequestor requestor, IReferenceManager manager)
|
||||
{
|
||||
Iterator i = getInitializers();
|
||||
while( i.hasNext() )
|
||||
((IASTInitializerClause)i.next()).acceptElement(requestor);
|
||||
((IASTInitializerClause)i.next()).acceptElement(requestor, manager);
|
||||
|
||||
if( assignmentExpression != null )
|
||||
assignmentExpression.acceptElement( requestor );
|
||||
assignmentExpression.acceptElement( requestor, manager );
|
||||
|
||||
ASTReferenceStore.processReferences(references, requestor);
|
||||
manager.processReferences(references, requestor);
|
||||
references = null;
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see org.eclipse.cdt.core.parser.ISourceElementCallbackDelegate#enterScope(org.eclipse.cdt.core.parser.ISourceElementRequestor)
|
||||
*/
|
||||
public void enterScope(ISourceElementRequestor requestor)
|
||||
public void enterScope(ISourceElementRequestor requestor, IReferenceManager manager)
|
||||
{
|
||||
}
|
||||
/* (non-Javadoc)
|
||||
* @see org.eclipse.cdt.core.parser.ISourceElementCallbackDelegate#exitScope(org.eclipse.cdt.core.parser.ISourceElementRequestor)
|
||||
*/
|
||||
public void exitScope(ISourceElementRequestor requestor)
|
||||
public void exitScope(ISourceElementRequestor requestor, IReferenceManager manager)
|
||||
{
|
||||
}
|
||||
|
||||
|
|
|
@ -18,6 +18,7 @@ import org.eclipse.cdt.core.parser.ISourceElementRequestor;
|
|||
import org.eclipse.cdt.core.parser.ast.ASTNotImplementedException;
|
||||
import org.eclipse.cdt.core.parser.ast.IASTDeclaration;
|
||||
import org.eclipse.cdt.core.parser.ast.IASTLinkageSpecification;
|
||||
import org.eclipse.cdt.core.parser.ast.IReferenceManager;
|
||||
import org.eclipse.cdt.internal.core.parser.ast.Offsets;
|
||||
import org.eclipse.cdt.internal.core.parser.pst.IContainerSymbol;
|
||||
|
||||
|
@ -85,13 +86,13 @@ public class ASTLinkageSpecification extends ASTAnonymousDeclaration implements
|
|||
/* (non-Javadoc)
|
||||
* @see org.eclipse.cdt.core.parser.ISourceElementCallbackDelegate#acceptElement(org.eclipse.cdt.core.parser.ISourceElementRequestor)
|
||||
*/
|
||||
public void acceptElement(ISourceElementRequestor requestor)
|
||||
public void acceptElement(ISourceElementRequestor requestor, IReferenceManager manager)
|
||||
{
|
||||
}
|
||||
/* (non-Javadoc)
|
||||
* @see org.eclipse.cdt.core.parser.ISourceElementCallbackDelegate#enterScope(org.eclipse.cdt.core.parser.ISourceElementRequestor)
|
||||
*/
|
||||
public void enterScope(ISourceElementRequestor requestor)
|
||||
public void enterScope(ISourceElementRequestor requestor, IReferenceManager manager)
|
||||
{
|
||||
try
|
||||
{
|
||||
|
@ -105,7 +106,7 @@ public class ASTLinkageSpecification extends ASTAnonymousDeclaration implements
|
|||
/* (non-Javadoc)
|
||||
* @see org.eclipse.cdt.core.parser.ISourceElementCallbackDelegate#exitScope(org.eclipse.cdt.core.parser.ISourceElementRequestor)
|
||||
*/
|
||||
public void exitScope(ISourceElementRequestor requestor)
|
||||
public void exitScope(ISourceElementRequestor requestor, IReferenceManager manager)
|
||||
{
|
||||
try
|
||||
{
|
||||
|
|
|
@ -22,6 +22,7 @@ import org.eclipse.cdt.core.parser.ast.IASTExceptionSpecification;
|
|||
import org.eclipse.cdt.core.parser.ast.IASTMethod;
|
||||
import org.eclipse.cdt.core.parser.ast.IASTTemplate;
|
||||
import org.eclipse.cdt.core.parser.ast.IASTTemplateDeclaration;
|
||||
import org.eclipse.cdt.core.parser.ast.IReferenceManager;
|
||||
import org.eclipse.cdt.internal.core.parser.ast.EmptyIterator;
|
||||
import org.eclipse.cdt.internal.core.parser.pst.IContainerSymbol;
|
||||
import org.eclipse.cdt.internal.core.parser.pst.IParameterizedSymbol;
|
||||
|
@ -132,7 +133,7 @@ public class ASTMethod extends ASTFunction implements IASTMethod
|
|||
/* (non-Javadoc)
|
||||
* @see org.eclipse.cdt.core.parser.ISourceElementCallbackDelegate#acceptElement(org.eclipse.cdt.core.parser.ISourceElementRequestor)
|
||||
*/
|
||||
public void acceptElement(ISourceElementRequestor requestor)
|
||||
public void acceptElement(ISourceElementRequestor requestor, IReferenceManager manager)
|
||||
{
|
||||
try
|
||||
{
|
||||
|
@ -145,15 +146,15 @@ public class ASTMethod extends ASTFunction implements IASTMethod
|
|||
{
|
||||
/* do nothing */
|
||||
}
|
||||
methodCallbacks(requestor);
|
||||
methodCallbacks(requestor, manager);
|
||||
}
|
||||
protected void methodCallbacks(ISourceElementRequestor requestor)
|
||||
protected void methodCallbacks(ISourceElementRequestor requestor, IReferenceManager manager)
|
||||
{
|
||||
functionCallbacks(requestor);
|
||||
processConstructorChain(requestor);
|
||||
functionCallbacks(requestor, manager);
|
||||
processConstructorChain(requestor, manager);
|
||||
}
|
||||
|
||||
protected void processConstructorChain(ISourceElementRequestor requestor)
|
||||
protected void processConstructorChain(ISourceElementRequestor requestor, IReferenceManager manager)
|
||||
{
|
||||
if( constructorChain != null )
|
||||
{
|
||||
|
@ -161,14 +162,14 @@ public class ASTMethod extends ASTFunction implements IASTMethod
|
|||
while( i.hasNext() )
|
||||
{
|
||||
IASTConstructorMemberInitializer c = (IASTConstructorMemberInitializer)i.next();
|
||||
c.acceptElement(requestor);
|
||||
c.acceptElement(requestor, manager);
|
||||
}
|
||||
}
|
||||
}
|
||||
/* (non-Javadoc)
|
||||
* @see org.eclipse.cdt.core.parser.ISourceElementCallbackDelegate#enterScope(org.eclipse.cdt.core.parser.ISourceElementRequestor)
|
||||
*/
|
||||
public void enterScope(ISourceElementRequestor requestor)
|
||||
public void enterScope(ISourceElementRequestor requestor, IReferenceManager manager)
|
||||
{
|
||||
try
|
||||
{
|
||||
|
@ -178,12 +179,12 @@ public class ASTMethod extends ASTFunction implements IASTMethod
|
|||
{
|
||||
/* do nothing */
|
||||
}
|
||||
methodCallbacks( requestor );
|
||||
methodCallbacks( requestor, manager );
|
||||
}
|
||||
/* (non-Javadoc)
|
||||
* @see org.eclipse.cdt.core.parser.ISourceElementCallbackDelegate#exitScope(org.eclipse.cdt.core.parser.ISourceElementRequestor)
|
||||
*/
|
||||
public void exitScope(ISourceElementRequestor requestor)
|
||||
public void exitScope(ISourceElementRequestor requestor, IReferenceManager manager)
|
||||
{
|
||||
try
|
||||
{
|
||||
|
|
|
@ -1,69 +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.complete;
|
||||
|
||||
import org.eclipse.cdt.core.parser.ISourceElementCallbackDelegate;
|
||||
import org.eclipse.cdt.core.parser.ISourceElementRequestor;
|
||||
import org.eclipse.cdt.core.parser.ast.IASTMethod;
|
||||
import org.eclipse.cdt.core.parser.ast.IASTMethodReference;
|
||||
|
||||
/**
|
||||
* @author jcamelon
|
||||
*
|
||||
*/
|
||||
public class ASTMethodReference
|
||||
extends ASTReference
|
||||
implements IASTMethodReference
|
||||
{
|
||||
private final IASTMethod method;
|
||||
/**
|
||||
* @param offset
|
||||
* @param name
|
||||
*/
|
||||
public ASTMethodReference(int offset, String name, IASTMethod method )
|
||||
{
|
||||
super(offset, name);
|
||||
this.method = method;
|
||||
}
|
||||
/* (non-Javadoc)
|
||||
* @see org.eclipse.cdt.core.parser.ast.IASTReference#getReferencedElement()
|
||||
*/
|
||||
public ISourceElementCallbackDelegate getReferencedElement()
|
||||
{
|
||||
return method;
|
||||
}
|
||||
/* (non-Javadoc)
|
||||
* @see org.eclipse.cdt.core.parser.ISourceElementCallbackDelegate#acceptElement(org.eclipse.cdt.core.parser.ISourceElementRequestor)
|
||||
*/
|
||||
public void acceptElement(ISourceElementRequestor requestor)
|
||||
{
|
||||
try
|
||||
{
|
||||
requestor.acceptMethodReference( this );
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
/* do nothing */
|
||||
}
|
||||
}
|
||||
/* (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)
|
||||
{
|
||||
}
|
||||
}
|
|
@ -15,6 +15,7 @@ import java.util.List;
|
|||
import org.eclipse.cdt.core.parser.ISourceElementRequestor;
|
||||
import org.eclipse.cdt.core.parser.ast.IASTNamespaceAlias;
|
||||
import org.eclipse.cdt.core.parser.ast.IASTNamespaceDefinition;
|
||||
import org.eclipse.cdt.core.parser.ast.IReferenceManager;
|
||||
import org.eclipse.cdt.internal.core.parser.ast.NamedOffsets;
|
||||
import org.eclipse.cdt.internal.core.parser.pst.ISymbol;
|
||||
|
||||
|
@ -63,22 +64,22 @@ public class ASTNamespaceAlias extends ASTSymbol implements IASTNamespaceAlias
|
|||
/* (non-Javadoc)
|
||||
* @see org.eclipse.cdt.core.parser.ISourceElementCallbackDelegate#acceptElement(org.eclipse.cdt.core.parser.ISourceElementRequestor)
|
||||
*/
|
||||
public void acceptElement(ISourceElementRequestor requestor)
|
||||
public void acceptElement(ISourceElementRequestor requestor, IReferenceManager manager)
|
||||
{
|
||||
ASTReferenceStore.processReferences(references, requestor);
|
||||
manager.processReferences(references, requestor);
|
||||
references = null;
|
||||
}
|
||||
/* (non-Javadoc)
|
||||
* @see org.eclipse.cdt.core.parser.ISourceElementCallbackDelegate#enterScope(org.eclipse.cdt.core.parser.ISourceElementRequestor)
|
||||
*/
|
||||
public void enterScope(ISourceElementRequestor requestor)
|
||||
public void enterScope(ISourceElementRequestor requestor, IReferenceManager manager)
|
||||
{
|
||||
|
||||
}
|
||||
/* (non-Javadoc)
|
||||
* @see org.eclipse.cdt.core.parser.ISourceElementCallbackDelegate#exitScope(org.eclipse.cdt.core.parser.ISourceElementRequestor)
|
||||
*/
|
||||
public void exitScope(ISourceElementRequestor requestor)
|
||||
public void exitScope(ISourceElementRequestor requestor, IReferenceManager manager)
|
||||
{
|
||||
|
||||
}
|
||||
|
|
|
@ -17,6 +17,7 @@ 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.IReferenceManager;
|
||||
import org.eclipse.cdt.internal.core.parser.ast.ASTQualifiedNamedElement;
|
||||
import org.eclipse.cdt.internal.core.parser.ast.NamedOffsets;
|
||||
import org.eclipse.cdt.internal.core.parser.pst.ISymbol;
|
||||
|
@ -107,14 +108,14 @@ public class ASTNamespaceDefinition
|
|||
/* (non-Javadoc)
|
||||
* @see org.eclipse.cdt.core.parser.ISourceElementCallbackDelegate#acceptElement(org.eclipse.cdt.core.parser.ISourceElementRequestor)
|
||||
*/
|
||||
public void acceptElement(ISourceElementRequestor requestor)
|
||||
public void acceptElement(ISourceElementRequestor requestor, IReferenceManager manager)
|
||||
{
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see org.eclipse.cdt.core.parser.ISourceElementCallbackDelegate#enterScope(org.eclipse.cdt.core.parser.ISourceElementRequestor)
|
||||
*/
|
||||
public void enterScope(ISourceElementRequestor requestor)
|
||||
public void enterScope(ISourceElementRequestor requestor, IReferenceManager manager)
|
||||
{
|
||||
try
|
||||
{
|
||||
|
@ -130,7 +131,7 @@ public class ASTNamespaceDefinition
|
|||
/* (non-Javadoc)
|
||||
* @see org.eclipse.cdt.core.parser.ISourceElementCallbackDelegate#exitScope(org.eclipse.cdt.core.parser.ISourceElementRequestor)
|
||||
*/
|
||||
public void exitScope(ISourceElementRequestor requestor)
|
||||
public void exitScope(ISourceElementRequestor requestor, IReferenceManager manager)
|
||||
{
|
||||
try
|
||||
{
|
||||
|
|
|
@ -1,72 +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.complete;
|
||||
|
||||
import org.eclipse.cdt.core.parser.ISourceElementCallbackDelegate;
|
||||
import org.eclipse.cdt.core.parser.ISourceElementRequestor;
|
||||
import org.eclipse.cdt.core.parser.ast.IASTNamespaceDefinition;
|
||||
import org.eclipse.cdt.core.parser.ast.IASTNamespaceReference;
|
||||
|
||||
/**
|
||||
* @author jcamelon
|
||||
*
|
||||
*/
|
||||
public class ASTNamespaceReference
|
||||
extends ASTReference
|
||||
implements IASTNamespaceReference
|
||||
{
|
||||
private final IASTNamespaceDefinition reference;
|
||||
|
||||
/**
|
||||
* @param offset
|
||||
* @param referencedElementName
|
||||
* @param definition
|
||||
*/
|
||||
public ASTNamespaceReference(int offset, String referencedElementName, IASTNamespaceDefinition definition)
|
||||
{
|
||||
super(offset, referencedElementName);
|
||||
reference = definition;
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see org.eclipse.cdt.core.parser.ast.IASTReference#getReferencedElement()
|
||||
*/
|
||||
public ISourceElementCallbackDelegate getReferencedElement()
|
||||
{
|
||||
return reference;
|
||||
}
|
||||
/* (non-Javadoc)
|
||||
* @see org.eclipse.cdt.core.parser.ISourceElementCallbackDelegate#acceptElement(org.eclipse.cdt.core.parser.ISourceElementRequestor)
|
||||
*/
|
||||
public void acceptElement(ISourceElementRequestor requestor)
|
||||
{
|
||||
try
|
||||
{
|
||||
requestor.acceptNamespaceReference( this );
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
/* do nothing */
|
||||
}
|
||||
}
|
||||
/* (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)
|
||||
{
|
||||
}
|
||||
}
|
|
@ -15,6 +15,7 @@ import java.util.List;
|
|||
|
||||
import org.eclipse.cdt.core.parser.ISourceElementRequestor;
|
||||
import org.eclipse.cdt.core.parser.ast.IASTExpression;
|
||||
import org.eclipse.cdt.core.parser.ast.IReferenceManager;
|
||||
import org.eclipse.cdt.core.parser.ast.IASTExpression.IASTNewExpressionDescriptor;
|
||||
|
||||
/**
|
||||
|
@ -25,11 +26,11 @@ import org.eclipse.cdt.core.parser.ast.IASTExpression.IASTNewExpressionDescripto
|
|||
*/
|
||||
public class ASTNewDescriptor implements IASTNewExpressionDescriptor {
|
||||
|
||||
List newPlacementExpressions;
|
||||
List newTypeIdExpressions;
|
||||
List newInitializerExpressions;
|
||||
private List newPlacementExpressions;
|
||||
private List newTypeIdExpressions;
|
||||
private List newInitializerExpressions;
|
||||
|
||||
public ASTNewDescriptor(List newPlacementExpressions, List newTypeIdExpressions, List newInitializerExpressions) {
|
||||
super();
|
||||
this.newPlacementExpressions = newPlacementExpressions;
|
||||
this.newTypeIdExpressions = newTypeIdExpressions;
|
||||
this.newInitializerExpressions = newInitializerExpressions;
|
||||
|
@ -53,29 +54,30 @@ public class ASTNewDescriptor implements IASTNewExpressionDescriptor {
|
|||
/* (non-Javadoc)
|
||||
* @see org.eclipse.cdt.core.parser.ISourceElementCallbackDelegate#acceptElement(org.eclipse.cdt.core.parser.ISourceElementRequestor)
|
||||
*/
|
||||
public void acceptElement(ISourceElementRequestor requestor)
|
||||
public void acceptElement(ISourceElementRequestor requestor, IReferenceManager manager)
|
||||
{
|
||||
accept( requestor, getNewPlacementExpressions() );
|
||||
accept( requestor, getNewTypeIdExpressions() );
|
||||
accept( requestor, getNewInitializerExpressions() );
|
||||
accept( requestor, getNewPlacementExpressions(), manager );
|
||||
accept( requestor, getNewTypeIdExpressions() , manager);
|
||||
accept( requestor, getNewInitializerExpressions() , manager);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @param requestor
|
||||
* @param iterator
|
||||
* @param manager
|
||||
*/
|
||||
protected void accept(ISourceElementRequestor requestor, Iterator iterator)
|
||||
protected void accept(ISourceElementRequestor requestor, Iterator iterator, IReferenceManager manager)
|
||||
{
|
||||
while( iterator.hasNext() )
|
||||
((IASTExpression)iterator.next()).acceptElement(requestor);
|
||||
((IASTExpression)iterator.next()).acceptElement(requestor, manager);
|
||||
}
|
||||
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see org.eclipse.cdt.core.parser.ISourceElementCallbackDelegate#enterScope(org.eclipse.cdt.core.parser.ISourceElementRequestor)
|
||||
*/
|
||||
public void enterScope(ISourceElementRequestor requestor)
|
||||
public void enterScope(ISourceElementRequestor requestor, IReferenceManager manager)
|
||||
{
|
||||
}
|
||||
|
||||
|
@ -83,8 +85,29 @@ public class ASTNewDescriptor implements IASTNewExpressionDescriptor {
|
|||
/* (non-Javadoc)
|
||||
* @see org.eclipse.cdt.core.parser.ISourceElementCallbackDelegate#exitScope(org.eclipse.cdt.core.parser.ISourceElementRequestor)
|
||||
*/
|
||||
public void exitScope(ISourceElementRequestor requestor)
|
||||
public void exitScope(ISourceElementRequestor requestor, IReferenceManager manager)
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see org.eclipse.cdt.core.parser.ast.IASTExpression.IASTNewExpressionDescriptor#freeReferences(org.eclipse.cdt.core.parser.ast.IReferenceManager)
|
||||
*/
|
||||
public void freeReferences(IReferenceManager manager) {
|
||||
free( newPlacementExpressions, manager );
|
||||
free( newTypeIdExpressions , manager);
|
||||
free( newInitializerExpressions , manager);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @param list
|
||||
* @param manager
|
||||
*/
|
||||
private void free(List list, IReferenceManager manager) {
|
||||
if( list == null || list.isEmpty() ) return;
|
||||
for( int i = 0; i < list.size(); ++i)
|
||||
((IASTExpression)list.get(i)).freeReferences(manager);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -16,6 +16,7 @@ import org.eclipse.cdt.core.parser.ISourceElementRequestor;
|
|||
import org.eclipse.cdt.core.parser.ITokenDuple;
|
||||
import org.eclipse.cdt.core.parser.ast.IASTExpression;
|
||||
import org.eclipse.cdt.core.parser.ast.IASTTypeId;
|
||||
import org.eclipse.cdt.core.parser.ast.IReferenceManager;
|
||||
|
||||
/**
|
||||
* @author jcamelon
|
||||
|
@ -55,10 +56,10 @@ public class ASTNewExpression extends ASTExpression {
|
|||
/* (non-Javadoc)
|
||||
* @see org.eclipse.cdt.internal.core.parser.ast.complete.ASTExpression#processCallbacks(org.eclipse.cdt.core.parser.ISourceElementRequestor)
|
||||
*/
|
||||
protected void processCallbacks(ISourceElementRequestor requestor) {
|
||||
super.processCallbacks(requestor);
|
||||
typeId.acceptElement(requestor);
|
||||
newDescriptor.acceptElement(requestor);
|
||||
protected void processCallbacks(ISourceElementRequestor requestor, IReferenceManager manager) {
|
||||
super.processCallbacks(requestor, manager);
|
||||
typeId.acceptElement(requestor, manager);
|
||||
newDescriptor.acceptElement(requestor, manager);
|
||||
}
|
||||
|
||||
|
||||
|
@ -70,4 +71,13 @@ public class ASTNewExpression extends ASTExpression {
|
|||
return this;
|
||||
return null;
|
||||
}
|
||||
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see org.eclipse.cdt.core.parser.ast.IASTExpression#freeReferences(org.eclipse.cdt.core.parser.ast.IReferenceManager)
|
||||
*/
|
||||
public void freeReferences(IReferenceManager manager) {
|
||||
super.freeReferences(manager);
|
||||
typeId.freeReferences( manager );
|
||||
}
|
||||
}
|
||||
|
|
|
@ -21,6 +21,7 @@ import org.eclipse.cdt.core.parser.ast.IASTFunction;
|
|||
import org.eclipse.cdt.core.parser.ast.IASTInitializerClause;
|
||||
import org.eclipse.cdt.core.parser.ast.IASTParameterDeclaration;
|
||||
import org.eclipse.cdt.core.parser.ast.IASTTypeSpecifier;
|
||||
import org.eclipse.cdt.core.parser.ast.IReferenceManager;
|
||||
import org.eclipse.cdt.internal.core.parser.ast.ASTAbstractDeclaration;
|
||||
import org.eclipse.cdt.internal.core.parser.ast.NamedOffsets;
|
||||
import org.eclipse.cdt.internal.core.parser.pst.ISymbol;
|
||||
|
@ -125,20 +126,20 @@ public class ASTParameterDeclaration extends ASTSymbol implements IASTParameterD
|
|||
/* (non-Javadoc)
|
||||
* @see org.eclipse.cdt.core.parser.ISourceElementCallbackDelegate#acceptElement(org.eclipse.cdt.core.parser.ISourceElementRequestor)
|
||||
*/
|
||||
public void acceptElement(ISourceElementRequestor requestor)
|
||||
public void acceptElement(ISourceElementRequestor requestor, IReferenceManager manager)
|
||||
{
|
||||
}
|
||||
/* (non-Javadoc)
|
||||
* @see org.eclipse.cdt.core.parser.ISourceElementCallbackDelegate#enterScope(org.eclipse.cdt.core.parser.ISourceElementRequestor)
|
||||
*/
|
||||
public void enterScope(ISourceElementRequestor requestor)
|
||||
public void enterScope(ISourceElementRequestor requestor, IReferenceManager manager)
|
||||
{
|
||||
|
||||
}
|
||||
/* (non-Javadoc)
|
||||
* @see org.eclipse.cdt.core.parser.ISourceElementCallbackDelegate#exitScope(org.eclipse.cdt.core.parser.ISourceElementRequestor)
|
||||
*/
|
||||
public void exitScope(ISourceElementRequestor requestor)
|
||||
public void exitScope(ISourceElementRequestor requestor, IReferenceManager manager)
|
||||
{
|
||||
|
||||
}
|
||||
|
|
|
@ -1,72 +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.complete;
|
||||
|
||||
import org.eclipse.cdt.core.parser.ISourceElementCallbackDelegate;
|
||||
import org.eclipse.cdt.core.parser.ISourceElementRequestor;
|
||||
import org.eclipse.cdt.core.parser.ast.IASTParameterDeclaration;
|
||||
import org.eclipse.cdt.core.parser.ast.IASTParameterReference;
|
||||
|
||||
/**
|
||||
* @author jcamelon
|
||||
*
|
||||
*/
|
||||
public class ASTParameterReference extends ASTReference implements IASTParameterReference
|
||||
{
|
||||
private final IASTParameterDeclaration parm;
|
||||
|
||||
/**
|
||||
* @param offset
|
||||
* @param string
|
||||
* @param declaration
|
||||
*/
|
||||
public ASTParameterReference(int offset, String string, IASTParameterDeclaration declaration)
|
||||
{
|
||||
super( offset, string );
|
||||
parm = declaration;
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see org.eclipse.cdt.core.parser.ast.IASTReference#getReferencedElement()
|
||||
*/
|
||||
public ISourceElementCallbackDelegate getReferencedElement()
|
||||
{
|
||||
return parm;
|
||||
}
|
||||
/* (non-Javadoc)
|
||||
* @see org.eclipse.cdt.core.parser.ISourceElementCallbackDelegate#acceptElement(org.eclipse.cdt.core.parser.ISourceElementRequestor)
|
||||
*/
|
||||
public void acceptElement(ISourceElementRequestor requestor)
|
||||
{
|
||||
try
|
||||
{
|
||||
requestor.acceptParameterReference( this );
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
/* do nothing */
|
||||
}
|
||||
}
|
||||
/* (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)
|
||||
{
|
||||
|
||||
}
|
||||
}
|
|
@ -1,59 +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.complete;
|
||||
|
||||
import org.eclipse.cdt.core.parser.ast.IASTReference;
|
||||
|
||||
|
||||
/**
|
||||
* @author jcamelon
|
||||
*
|
||||
*/
|
||||
public abstract class ASTReference implements IASTReference
|
||||
{
|
||||
protected final String name;
|
||||
protected final int offset;
|
||||
/**
|
||||
*
|
||||
*/
|
||||
public ASTReference(int offset, String name)
|
||||
{
|
||||
this.offset = offset;
|
||||
this.name = name;
|
||||
}
|
||||
/* (non-Javadoc)
|
||||
* @see org.eclipse.cdt.core.parser.ast.IASTReference#getOffset()
|
||||
*/
|
||||
public int getOffset()
|
||||
{
|
||||
return offset;
|
||||
}
|
||||
/* (non-Javadoc)
|
||||
* @see org.eclipse.cdt.core.parser.ast.IASTReference#getName()
|
||||
*/
|
||||
public String getName()
|
||||
{
|
||||
return name;
|
||||
}
|
||||
|
||||
public boolean equals(Object obj)
|
||||
{
|
||||
if( obj == null )
|
||||
return false;
|
||||
if( ! (obj instanceof IASTReference ) )
|
||||
return false;
|
||||
|
||||
if( ((IASTReference)obj).getName().equals( getName() ) &&
|
||||
((IASTReference)obj).getOffset() == getOffset() )
|
||||
return true;
|
||||
return false;
|
||||
}
|
||||
}
|
|
@ -1,39 +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.complete;
|
||||
|
||||
import java.util.Collections;
|
||||
import java.util.Iterator;
|
||||
import java.util.List;
|
||||
|
||||
import org.eclipse.cdt.core.parser.ISourceElementRequestor;
|
||||
import org.eclipse.cdt.core.parser.ast.IASTReference;
|
||||
|
||||
/**
|
||||
* @author jcamelon
|
||||
*
|
||||
*/
|
||||
public class ASTReferenceStore
|
||||
{
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see org.eclipse.cdt.core.parser.ast.IASTReferenceStore#processReferences()
|
||||
*/
|
||||
public static void processReferences(List references, ISourceElementRequestor requestor)
|
||||
{
|
||||
if( references == null || references == Collections.EMPTY_LIST || references.isEmpty() )
|
||||
return;
|
||||
Iterator i = references.iterator();
|
||||
while( i.hasNext() )
|
||||
((IASTReference)i.next()).acceptElement(requestor);
|
||||
references.clear();
|
||||
}
|
||||
}
|
|
@ -14,6 +14,8 @@ import java.util.List;
|
|||
|
||||
import org.eclipse.cdt.core.parser.ast.IASTSimpleTypeSpecifier;
|
||||
import org.eclipse.cdt.core.parser.ast.IASTTypeSpecifier;
|
||||
import org.eclipse.cdt.core.parser.ast.IReferenceManager;
|
||||
import org.eclipse.cdt.internal.core.parser.ast.complete.ReferenceCache.ASTReference;
|
||||
import org.eclipse.cdt.internal.core.parser.pst.ISymbol;
|
||||
import org.eclipse.cdt.internal.core.parser.pst.TypeInfo;
|
||||
|
||||
|
@ -146,4 +148,14 @@ public class ASTSimpleTypeSpecifier extends ASTNode implements IASTSimpleTypeSpe
|
|||
{
|
||||
return symbol.getTypeInfo().checkBit( TypeInfo.isImaginary );
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see org.eclipse.cdt.core.parser.ast.IASTSimpleTypeSpecifier#releaseReferences(org.eclipse.cdt.core.parser.ast.IReferenceManager)
|
||||
*/
|
||||
public void releaseReferences(IReferenceManager referenceManager) {
|
||||
if( refs == null || refs.isEmpty() ) return;
|
||||
for( int i = 0; i < refs.size(); ++i )
|
||||
referenceManager.returnReference( (ASTReference)refs.get(i));
|
||||
|
||||
}
|
||||
}
|
||||
|
|
|
@ -19,6 +19,8 @@ import org.eclipse.cdt.core.parser.ast.ASTNotImplementedException;
|
|||
import org.eclipse.cdt.core.parser.ast.IASTDeclaration;
|
||||
import org.eclipse.cdt.core.parser.ast.IASTScope;
|
||||
import org.eclipse.cdt.core.parser.ast.IASTTemplateDeclaration;
|
||||
import org.eclipse.cdt.core.parser.ast.IASTTemplateParameter;
|
||||
import org.eclipse.cdt.core.parser.ast.IReferenceManager;
|
||||
import org.eclipse.cdt.internal.core.parser.ast.NamedOffsets;
|
||||
import org.eclipse.cdt.internal.core.parser.pst.IContainerSymbol;
|
||||
import org.eclipse.cdt.internal.core.parser.pst.ISymbol;
|
||||
|
@ -160,14 +162,14 @@ public class ASTTemplateDeclaration extends ASTSymbol implements IASTTemplateDec
|
|||
/* (non-Javadoc)
|
||||
* @see org.eclipse.cdt.core.parser.ISourceElementCallbackDelegate#acceptElement(org.eclipse.cdt.core.parser.ISourceElementRequestor)
|
||||
*/
|
||||
public void acceptElement(ISourceElementRequestor requestor)
|
||||
public void acceptElement(ISourceElementRequestor requestor, IReferenceManager manager)
|
||||
{
|
||||
// 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)
|
||||
public void enterScope(ISourceElementRequestor requestor, IReferenceManager manager)
|
||||
{
|
||||
try
|
||||
{
|
||||
|
@ -177,11 +179,14 @@ public class ASTTemplateDeclaration extends ASTSymbol implements IASTTemplateDec
|
|||
{
|
||||
/* do nothing */
|
||||
}
|
||||
if( templateParameters == null || templateParameters.isEmpty()) return;
|
||||
for( int i = 0; i < templateParameters.size(); ++i )
|
||||
((IASTTemplateParameter)templateParameters.get(i)).acceptElement(requestor, manager );
|
||||
}
|
||||
/* (non-Javadoc)
|
||||
* @see org.eclipse.cdt.core.parser.ISourceElementCallbackDelegate#exitScope(org.eclipse.cdt.core.parser.ISourceElementRequestor)
|
||||
*/
|
||||
public void exitScope(ISourceElementRequestor requestor)
|
||||
public void exitScope(ISourceElementRequestor requestor, IReferenceManager manager)
|
||||
{
|
||||
try
|
||||
{
|
||||
|
|
|
@ -18,6 +18,7 @@ import org.eclipse.cdt.core.parser.ast.IASTDeclaration;
|
|||
import org.eclipse.cdt.core.parser.ast.IASTScope;
|
||||
import org.eclipse.cdt.core.parser.ast.IASTTemplateDeclaration;
|
||||
import org.eclipse.cdt.core.parser.ast.IASTTemplateInstantiation;
|
||||
import org.eclipse.cdt.core.parser.ast.IReferenceManager;
|
||||
import org.eclipse.cdt.internal.core.parser.ast.NamedOffsets;
|
||||
import org.eclipse.cdt.internal.core.parser.pst.IContainerSymbol;
|
||||
import org.eclipse.cdt.internal.core.parser.pst.ISymbol;
|
||||
|
@ -140,14 +141,14 @@ public class ASTTemplateInstantiation extends ASTSymbol implements IASTTemplateI
|
|||
/* (non-Javadoc)
|
||||
* @see org.eclipse.cdt.core.parser.ISourceElementCallbackDelegate#acceptElement(org.eclipse.cdt.core.parser.ISourceElementRequestor)
|
||||
*/
|
||||
public void acceptElement(ISourceElementRequestor requestor)
|
||||
public void acceptElement(ISourceElementRequestor requestor, IReferenceManager manager)
|
||||
{
|
||||
// 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)
|
||||
public void enterScope(ISourceElementRequestor requestor, IReferenceManager manager)
|
||||
{
|
||||
try
|
||||
{
|
||||
|
@ -161,7 +162,7 @@ public class ASTTemplateInstantiation extends ASTSymbol implements IASTTemplateI
|
|||
/* (non-Javadoc)
|
||||
* @see org.eclipse.cdt.core.parser.ISourceElementCallbackDelegate#exitScope(org.eclipse.cdt.core.parser.ISourceElementRequestor)
|
||||
*/
|
||||
public void exitScope(ISourceElementRequestor requestor)
|
||||
public void exitScope(ISourceElementRequestor requestor, IReferenceManager manager)
|
||||
{
|
||||
try
|
||||
{
|
||||
|
|
|
@ -14,6 +14,7 @@ import org.eclipse.cdt.core.parser.ast.IASTOffsetableNamedElement;
|
|||
import org.eclipse.cdt.core.parser.ast.IASTParameterDeclaration;
|
||||
import org.eclipse.cdt.core.parser.ast.IASTTemplateParameter;
|
||||
import org.eclipse.cdt.core.parser.ast.IASTTypeId;
|
||||
import org.eclipse.cdt.core.parser.ast.IReferenceManager;
|
||||
import org.eclipse.cdt.internal.core.parser.ast.NamedOffsets;
|
||||
import org.eclipse.cdt.internal.core.parser.pst.ISymbol;
|
||||
import org.eclipse.cdt.internal.core.parser.pst.TypeInfo;
|
||||
|
@ -93,21 +94,24 @@ public class ASTTemplateParameter extends ASTSymbol implements IASTTemplateParam
|
|||
/* (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
|
||||
public void acceptElement(ISourceElementRequestor requestor, IReferenceManager manager) {
|
||||
if( defaultValue != null )
|
||||
defaultValue.acceptElement( requestor, manager );
|
||||
if( parameter != null )
|
||||
parameter.acceptElement( requestor, manager );
|
||||
|
||||
}
|
||||
/* (non-Javadoc)
|
||||
* @see org.eclipse.cdt.core.parser.ISourceElementCallbackDelegate#enterScope(org.eclipse.cdt.core.parser.ISourceElementRequestor)
|
||||
*/
|
||||
public void enterScope(ISourceElementRequestor requestor) {
|
||||
public void enterScope(ISourceElementRequestor requestor, IReferenceManager manager) {
|
||||
// TODO Auto-generated method stub
|
||||
|
||||
}
|
||||
/* (non-Javadoc)
|
||||
* @see org.eclipse.cdt.core.parser.ISourceElementCallbackDelegate#exitScope(org.eclipse.cdt.core.parser.ISourceElementRequestor)
|
||||
*/
|
||||
public void exitScope(ISourceElementRequestor requestor) {
|
||||
public void exitScope(ISourceElementRequestor requestor, IReferenceManager manager) {
|
||||
// TODO Auto-generated method stub
|
||||
|
||||
}
|
||||
|
|
|
@ -1,61 +0,0 @@
|
|||
/*
|
||||
* Created on Mar 8, 2004
|
||||
*
|
||||
* To change the template for this generated file go to
|
||||
* Window - Preferences - Java - Code Generation - Code and Comments
|
||||
*/
|
||||
package org.eclipse.cdt.internal.core.parser.ast.complete;
|
||||
|
||||
import org.eclipse.cdt.core.parser.ISourceElementCallbackDelegate;
|
||||
import org.eclipse.cdt.core.parser.ISourceElementRequestor;
|
||||
import org.eclipse.cdt.core.parser.ast.IASTTemplateParameter;
|
||||
import org.eclipse.cdt.core.parser.ast.IASTTemplateParameterReference;
|
||||
|
||||
/**
|
||||
* @author aniefer
|
||||
*
|
||||
* To change the template for this generated type comment go to
|
||||
* Window - Preferences - Java - Code Generation - Code and Comments
|
||||
*/
|
||||
public class ASTTemplateParameterReference extends ASTReference implements IASTTemplateParameterReference {
|
||||
private final IASTTemplateParameter parameter;
|
||||
/**
|
||||
* @param offset
|
||||
* @param name
|
||||
*/
|
||||
public ASTTemplateParameterReference(int offset, String name, IASTTemplateParameter param) {
|
||||
super(offset, name);
|
||||
parameter = param;
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see org.eclipse.cdt.core.parser.ast.IASTReference#getReferencedElement()
|
||||
*/
|
||||
public ISourceElementCallbackDelegate getReferencedElement() {
|
||||
return parameter;
|
||||
}
|
||||
/* (non-Javadoc)
|
||||
* @see org.eclipse.cdt.core.parser.ISourceElementCallbackDelegate#acceptElement(org.eclipse.cdt.core.parser.ISourceElementRequestor)
|
||||
*/
|
||||
public void acceptElement(ISourceElementRequestor requestor)
|
||||
{
|
||||
try
|
||||
{
|
||||
requestor.acceptTemplateParameterReference( this );
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
/* do nothing */
|
||||
}
|
||||
}
|
||||
/* (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) {
|
||||
}
|
||||
}
|
|
@ -17,7 +17,9 @@ import java.util.List;
|
|||
import org.eclipse.cdt.core.parser.ISourceElementRequestor;
|
||||
import org.eclipse.cdt.core.parser.ITokenDuple;
|
||||
import org.eclipse.cdt.core.parser.ast.IASTArrayModifier;
|
||||
import org.eclipse.cdt.core.parser.ast.IASTReference;
|
||||
import org.eclipse.cdt.core.parser.ast.IASTTypeId;
|
||||
import org.eclipse.cdt.core.parser.ast.IReferenceManager;
|
||||
import org.eclipse.cdt.core.parser.ast.IASTSimpleTypeSpecifier.Type;
|
||||
import org.eclipse.cdt.internal.core.parser.pst.ISymbol;
|
||||
|
||||
|
@ -183,36 +185,54 @@ public class ASTTypeId implements IASTTypeId
|
|||
/* (non-Javadoc)
|
||||
* @see org.eclipse.cdt.core.parser.ISourceElementCallbackDelegate#acceptElement(org.eclipse.cdt.core.parser.ISourceElementRequestor)
|
||||
*/
|
||||
public void acceptElement(ISourceElementRequestor requestor)
|
||||
public void acceptElement(ISourceElementRequestor requestor, IReferenceManager manager)
|
||||
{
|
||||
ASTReferenceStore.processReferences(references, requestor);
|
||||
manager.processReferences(references, requestor);
|
||||
references = null;
|
||||
if( tokenDuple != null )
|
||||
tokenDuple.acceptElement( requestor, manager );
|
||||
|
||||
Iterator arrayMods = getArrayModifiers();
|
||||
while( arrayMods.hasNext() )
|
||||
{
|
||||
((IASTArrayModifier)arrayMods.next()).acceptElement(requestor);
|
||||
((IASTArrayModifier)arrayMods.next()).acceptElement(requestor, manager);
|
||||
}
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see org.eclipse.cdt.core.parser.ISourceElementCallbackDelegate#enterScope(org.eclipse.cdt.core.parser.ISourceElementRequestor)
|
||||
*/
|
||||
public void enterScope(ISourceElementRequestor requestor)
|
||||
public void enterScope(ISourceElementRequestor requestor, IReferenceManager manager)
|
||||
{
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see org.eclipse.cdt.core.parser.ISourceElementCallbackDelegate#exitScope(org.eclipse.cdt.core.parser.ISourceElementRequestor)
|
||||
*/
|
||||
public void exitScope(ISourceElementRequestor requestor)
|
||||
public void exitScope(ISourceElementRequestor requestor, IReferenceManager manager)
|
||||
{
|
||||
}
|
||||
/**
|
||||
* @param list
|
||||
*/
|
||||
public void addReferences(List list)
|
||||
public void addReferences(List list, ReferenceCache cache)
|
||||
{
|
||||
references.addAll( list );
|
||||
for( int i = 0; i < list.size(); ++i )
|
||||
references.add( list.get(i) );
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see org.eclipse.cdt.core.parser.ast.IASTTypeId#freeReferences(org.eclipse.cdt.core.parser.ast.IReferenceManager)
|
||||
*/
|
||||
public void freeReferences(IReferenceManager manager) {
|
||||
if( tokenDuple != null )
|
||||
tokenDuple.freeReferences( manager );
|
||||
|
||||
if( references.isEmpty() ) return;
|
||||
for( int i =0; i < references.size(); ++i)
|
||||
manager.returnReference( (IASTReference) references.get(i));
|
||||
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
|
|
@ -14,6 +14,7 @@ import java.util.List;
|
|||
|
||||
import org.eclipse.cdt.core.parser.ISourceElementRequestor;
|
||||
import org.eclipse.cdt.core.parser.ast.IASTTypeId;
|
||||
import org.eclipse.cdt.core.parser.ast.IReferenceManager;
|
||||
|
||||
/**
|
||||
* @author jcamelon
|
||||
|
@ -37,8 +38,17 @@ public class ASTTypeIdExpression extends ASTExpression {
|
|||
return typeId;
|
||||
}
|
||||
|
||||
protected void processCallbacks(ISourceElementRequestor requestor) {
|
||||
super.processCallbacks(requestor);
|
||||
typeId.acceptElement(requestor);
|
||||
protected void processCallbacks(ISourceElementRequestor requestor, IReferenceManager manager) {
|
||||
super.processCallbacks(requestor, manager);
|
||||
typeId.acceptElement(requestor, manager);
|
||||
}
|
||||
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see org.eclipse.cdt.core.parser.ast.IASTExpression#freeReferences(org.eclipse.cdt.core.parser.ast.IReferenceManager)
|
||||
*/
|
||||
public void freeReferences(IReferenceManager manager) {
|
||||
super.freeReferences(manager);
|
||||
typeId.freeReferences(manager);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -18,6 +18,7 @@ import org.eclipse.cdt.core.parser.ast.IASTAbstractDeclaration;
|
|||
import org.eclipse.cdt.core.parser.ast.IASTSimpleTypeSpecifier;
|
||||
import org.eclipse.cdt.core.parser.ast.IASTTypeSpecifier;
|
||||
import org.eclipse.cdt.core.parser.ast.IASTTypedefDeclaration;
|
||||
import org.eclipse.cdt.core.parser.ast.IReferenceManager;
|
||||
import org.eclipse.cdt.internal.core.parser.ast.ASTQualifiedNamedElement;
|
||||
import org.eclipse.cdt.internal.core.parser.ast.NamedOffsets;
|
||||
import org.eclipse.cdt.internal.core.parser.pst.ISymbol;
|
||||
|
@ -71,7 +72,7 @@ public class ASTTypedef extends ASTSymbol implements IASTTypedefDeclaration
|
|||
/* (non-Javadoc)
|
||||
* @see org.eclipse.cdt.core.parser.ISourceElementCallbackDelegate#acceptElement(org.eclipse.cdt.core.parser.ISourceElementRequestor)
|
||||
*/
|
||||
public void acceptElement(ISourceElementRequestor requestor)
|
||||
public void acceptElement(ISourceElementRequestor requestor, IReferenceManager manager)
|
||||
{
|
||||
try
|
||||
{
|
||||
|
@ -81,22 +82,22 @@ public class ASTTypedef extends ASTSymbol implements IASTTypedefDeclaration
|
|||
{
|
||||
/* do nothing */
|
||||
}
|
||||
ASTReferenceStore.processReferences(references, requestor);
|
||||
manager.processReferences(references, requestor);
|
||||
references = null;
|
||||
getAbstractDeclarator().acceptElement( requestor );
|
||||
getAbstractDeclarator().acceptElement( requestor, manager );
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see org.eclipse.cdt.core.parser.ISourceElementCallbackDelegate#enterScope(org.eclipse.cdt.core.parser.ISourceElementRequestor)
|
||||
*/
|
||||
public void enterScope(ISourceElementRequestor requestor)
|
||||
public void enterScope(ISourceElementRequestor requestor, IReferenceManager manager)
|
||||
{
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see org.eclipse.cdt.core.parser.ISourceElementCallbackDelegate#exitScope(org.eclipse.cdt.core.parser.ISourceElementRequestor)
|
||||
*/
|
||||
public void exitScope(ISourceElementRequestor requestor)
|
||||
public void exitScope(ISourceElementRequestor requestor, IReferenceManager manager)
|
||||
{
|
||||
}
|
||||
|
||||
|
|
|
@ -1,69 +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.complete;
|
||||
|
||||
import org.eclipse.cdt.core.parser.ISourceElementCallbackDelegate;
|
||||
import org.eclipse.cdt.core.parser.ISourceElementRequestor;
|
||||
import org.eclipse.cdt.core.parser.ast.IASTTypedefDeclaration;
|
||||
import org.eclipse.cdt.core.parser.ast.IASTTypedefReference;
|
||||
|
||||
/**
|
||||
* @author jcamelon
|
||||
*
|
||||
*/
|
||||
public class ASTTypedefReference
|
||||
extends ASTReference
|
||||
implements IASTTypedefReference
|
||||
{
|
||||
private final IASTTypedefDeclaration referencedItem;
|
||||
/**
|
||||
* @param offset
|
||||
* @param name
|
||||
*/
|
||||
public ASTTypedefReference(int offset, String name, IASTTypedefDeclaration referencedItem )
|
||||
{
|
||||
super(offset, name);
|
||||
this.referencedItem = referencedItem;
|
||||
}
|
||||
/* (non-Javadoc)
|
||||
* @see org.eclipse.cdt.core.parser.ast.IASTReference#getReferencedElement()
|
||||
*/
|
||||
public ISourceElementCallbackDelegate getReferencedElement()
|
||||
{
|
||||
return referencedItem;
|
||||
}
|
||||
/* (non-Javadoc)
|
||||
* @see org.eclipse.cdt.core.parser.ISourceElementCallbackDelegate#acceptElement(org.eclipse.cdt.core.parser.ISourceElementRequestor)
|
||||
*/
|
||||
public void acceptElement(ISourceElementRequestor requestor)
|
||||
{
|
||||
try
|
||||
{
|
||||
requestor.acceptTypedefReference(this);
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
/* do nothing */
|
||||
}
|
||||
}
|
||||
/* (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)
|
||||
{
|
||||
}
|
||||
}
|
|
@ -16,6 +16,7 @@ import org.eclipse.cdt.core.parser.ISourceElementRequestor;
|
|||
import org.eclipse.cdt.core.parser.ITokenDuple;
|
||||
import org.eclipse.cdt.core.parser.ast.ASTNotImplementedException;
|
||||
import org.eclipse.cdt.core.parser.ast.IASTExpression;
|
||||
import org.eclipse.cdt.core.parser.ast.IReferenceManager;
|
||||
|
||||
/**
|
||||
* @author jcamelon
|
||||
|
@ -70,8 +71,17 @@ public class ASTUnaryExpression extends ASTExpression {
|
|||
/* (non-Javadoc)
|
||||
* @see org.eclipse.cdt.internal.core.parser.ast.complete.ASTExpression#processCallbacks()
|
||||
*/
|
||||
protected void processCallbacks( ISourceElementRequestor requestor ) {
|
||||
super.processCallbacks(requestor);
|
||||
lhs.acceptElement( requestor );
|
||||
protected void processCallbacks( ISourceElementRequestor requestor, IReferenceManager manager ) {
|
||||
super.processCallbacks(requestor, manager);
|
||||
lhs.acceptElement( requestor, manager );
|
||||
}
|
||||
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see org.eclipse.cdt.core.parser.ast.IASTExpression#freeReferences(org.eclipse.cdt.core.parser.ast.IReferenceManager)
|
||||
*/
|
||||
public void freeReferences(IReferenceManager manager) {
|
||||
super.freeReferences(manager);
|
||||
lhs.freeReferences(manager);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -15,12 +15,20 @@ import java.util.List;
|
|||
import org.eclipse.cdt.core.parser.ISourceElementRequestor;
|
||||
import org.eclipse.cdt.core.parser.ast.IASTExpression;
|
||||
import org.eclipse.cdt.core.parser.ast.IASTTypeId;
|
||||
import org.eclipse.cdt.core.parser.ast.IReferenceManager;
|
||||
|
||||
/**
|
||||
* @author jcamelon
|
||||
*
|
||||
*/
|
||||
public class ASTUnaryTypeIdExpression extends ASTUnaryExpression {
|
||||
/* (non-Javadoc)
|
||||
* @see org.eclipse.cdt.core.parser.ast.IASTExpression#freeReferences(org.eclipse.cdt.core.parser.ast.IReferenceManager)
|
||||
*/
|
||||
public void freeReferences(IReferenceManager manager) {
|
||||
super.freeReferences(manager);
|
||||
typeId.freeReferences(manager);
|
||||
}
|
||||
private final IASTTypeId typeId;
|
||||
|
||||
/**
|
||||
|
@ -44,9 +52,9 @@ public class ASTUnaryTypeIdExpression extends ASTUnaryExpression {
|
|||
/* (non-Javadoc)
|
||||
* @see org.eclipse.cdt.internal.core.parser.ast.complete.ASTExpression#processCallbacks()
|
||||
*/
|
||||
protected void processCallbacks( ISourceElementRequestor requestor ) {
|
||||
super.processCallbacks(requestor);
|
||||
typeId.acceptElement( requestor );
|
||||
protected void processCallbacks( ISourceElementRequestor requestor, IReferenceManager manager ) {
|
||||
super.processCallbacks(requestor, manager);
|
||||
typeId.acceptElement( requestor, manager );
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -17,6 +17,7 @@ import java.util.List;
|
|||
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.core.parser.ast.IReferenceManager;
|
||||
import org.eclipse.cdt.internal.core.parser.ast.Offsets;
|
||||
import org.eclipse.cdt.internal.core.parser.ast.SymbolIterator;
|
||||
|
||||
|
@ -98,7 +99,7 @@ public class ASTUsingDeclaration extends ASTNode implements IASTUsingDeclaration
|
|||
/* (non-Javadoc)
|
||||
* @see org.eclipse.cdt.core.parser.ISourceElementCallbackDelegate#acceptElement(org.eclipse.cdt.core.parser.ISourceElementRequestor)
|
||||
*/
|
||||
public void acceptElement(ISourceElementRequestor requestor)
|
||||
public void acceptElement(ISourceElementRequestor requestor, IReferenceManager manager)
|
||||
{
|
||||
try
|
||||
{
|
||||
|
@ -108,19 +109,19 @@ public class ASTUsingDeclaration extends ASTNode implements IASTUsingDeclaration
|
|||
{
|
||||
/* do nothing */
|
||||
}
|
||||
ASTReferenceStore.processReferences(references, requestor);
|
||||
manager.processReferences(references, requestor);
|
||||
references = null;
|
||||
}
|
||||
/* (non-Javadoc)
|
||||
* @see org.eclipse.cdt.core.parser.ISourceElementCallbackDelegate#enterScope(org.eclipse.cdt.core.parser.ISourceElementRequestor)
|
||||
*/
|
||||
public void enterScope(ISourceElementRequestor requestor)
|
||||
public void enterScope(ISourceElementRequestor requestor, IReferenceManager manager)
|
||||
{
|
||||
}
|
||||
/* (non-Javadoc)
|
||||
* @see org.eclipse.cdt.core.parser.ISourceElementCallbackDelegate#exitScope(org.eclipse.cdt.core.parser.ISourceElementRequestor)
|
||||
*/
|
||||
public void exitScope(ISourceElementRequestor requestor)
|
||||
public void exitScope(ISourceElementRequestor requestor, IReferenceManager manager)
|
||||
{
|
||||
}
|
||||
/* (non-Javadoc)
|
||||
|
|
|
@ -15,6 +15,7 @@ import java.util.List;
|
|||
import org.eclipse.cdt.core.parser.ISourceElementRequestor;
|
||||
import org.eclipse.cdt.core.parser.ast.IASTNamespaceDefinition;
|
||||
import org.eclipse.cdt.core.parser.ast.IASTUsingDirective;
|
||||
import org.eclipse.cdt.core.parser.ast.IReferenceManager;
|
||||
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.IUsingDirectiveSymbol;
|
||||
|
@ -92,7 +93,7 @@ public class ASTUsingDirective extends ASTAnonymousDeclaration implements IASTUs
|
|||
/* (non-Javadoc)
|
||||
* @see org.eclipse.cdt.core.parser.ISourceElementCallbackDelegate#acceptElement(org.eclipse.cdt.core.parser.ISourceElementRequestor)
|
||||
*/
|
||||
public void acceptElement(ISourceElementRequestor requestor)
|
||||
public void acceptElement(ISourceElementRequestor requestor, IReferenceManager manager)
|
||||
{
|
||||
try
|
||||
{
|
||||
|
@ -102,19 +103,19 @@ public class ASTUsingDirective extends ASTAnonymousDeclaration implements IASTUs
|
|||
{
|
||||
/* do nothing */
|
||||
}
|
||||
ASTReferenceStore.processReferences(references, requestor);
|
||||
manager.processReferences(references, requestor);
|
||||
references = null;
|
||||
}
|
||||
/* (non-Javadoc)
|
||||
* @see org.eclipse.cdt.core.parser.ISourceElementCallbackDelegate#enterScope(org.eclipse.cdt.core.parser.ISourceElementRequestor)
|
||||
*/
|
||||
public void enterScope(ISourceElementRequestor requestor)
|
||||
public void enterScope(ISourceElementRequestor requestor, IReferenceManager manager)
|
||||
{
|
||||
}
|
||||
/* (non-Javadoc)
|
||||
* @see org.eclipse.cdt.core.parser.ISourceElementCallbackDelegate#exitScope(org.eclipse.cdt.core.parser.ISourceElementRequestor)
|
||||
*/
|
||||
public void exitScope(ISourceElementRequestor requestor)
|
||||
public void exitScope(ISourceElementRequestor requestor, IReferenceManager manager)
|
||||
{
|
||||
}
|
||||
|
||||
|
|
|
@ -18,6 +18,7 @@ import org.eclipse.cdt.core.parser.ast.IASTExpression;
|
|||
import org.eclipse.cdt.core.parser.ast.IASTInitializerClause;
|
||||
import org.eclipse.cdt.core.parser.ast.IASTScope;
|
||||
import org.eclipse.cdt.core.parser.ast.IASTVariable;
|
||||
import org.eclipse.cdt.core.parser.ast.IReferenceManager;
|
||||
import org.eclipse.cdt.internal.core.parser.ast.ASTQualifiedNamedElement;
|
||||
import org.eclipse.cdt.internal.core.parser.ast.NamedOffsets;
|
||||
import org.eclipse.cdt.internal.core.parser.pst.ISymbol;
|
||||
|
@ -159,7 +160,7 @@ public class ASTVariable extends ASTSymbol implements IASTVariable
|
|||
/* (non-Javadoc)
|
||||
* @see org.eclipse.cdt.core.parser.ISourceElementCallbackDelegate#acceptElement(org.eclipse.cdt.core.parser.ISourceElementRequestor)
|
||||
*/
|
||||
public void acceptElement(ISourceElementRequestor requestor)
|
||||
public void acceptElement(ISourceElementRequestor requestor, IReferenceManager manager)
|
||||
{
|
||||
try
|
||||
{
|
||||
|
@ -169,26 +170,26 @@ public class ASTVariable extends ASTSymbol implements IASTVariable
|
|||
{
|
||||
/* do nothing */
|
||||
}
|
||||
ASTReferenceStore.processReferences(references, requestor);
|
||||
manager.processReferences(references, requestor);
|
||||
references = null;
|
||||
if( initializerClause != null )
|
||||
initializerClause.acceptElement(requestor);
|
||||
initializerClause.acceptElement(requestor, manager);
|
||||
if( constructorExpression != null )
|
||||
constructorExpression.acceptElement(requestor);
|
||||
constructorExpression.acceptElement(requestor, manager);
|
||||
if( getAbstractDeclaration() != null )
|
||||
getAbstractDeclaration().acceptElement(requestor);
|
||||
getAbstractDeclaration().acceptElement(requestor, manager);
|
||||
|
||||
}
|
||||
/* (non-Javadoc)
|
||||
* @see org.eclipse.cdt.core.parser.ISourceElementCallbackDelegate#enterScope(org.eclipse.cdt.core.parser.ISourceElementRequestor)
|
||||
*/
|
||||
public void enterScope(ISourceElementRequestor requestor)
|
||||
public void enterScope(ISourceElementRequestor requestor, IReferenceManager manager)
|
||||
{
|
||||
}
|
||||
/* (non-Javadoc)
|
||||
* @see org.eclipse.cdt.core.parser.ISourceElementCallbackDelegate#exitScope(org.eclipse.cdt.core.parser.ISourceElementRequestor)
|
||||
*/
|
||||
public void exitScope(ISourceElementRequestor requestor)
|
||||
public void exitScope(ISourceElementRequestor requestor, IReferenceManager manager)
|
||||
{
|
||||
}
|
||||
/* (non-Javadoc)
|
||||
|
|
|
@ -1,72 +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.complete;
|
||||
|
||||
import org.eclipse.cdt.core.parser.ISourceElementCallbackDelegate;
|
||||
import org.eclipse.cdt.core.parser.ISourceElementRequestor;
|
||||
import org.eclipse.cdt.core.parser.ast.IASTReference;
|
||||
import org.eclipse.cdt.core.parser.ast.IASTVariable;
|
||||
import org.eclipse.cdt.core.parser.ast.IASTVariableReference;
|
||||
|
||||
/**
|
||||
* @author jcamelon
|
||||
*
|
||||
*/
|
||||
public class ASTVariableReference
|
||||
extends ASTReference
|
||||
implements IASTReference, IASTVariableReference
|
||||
{
|
||||
|
||||
private final IASTVariable referencedElement;
|
||||
/**
|
||||
* @param offset
|
||||
* @param string
|
||||
* @param variable
|
||||
*/
|
||||
public ASTVariableReference(int offset, String string, IASTVariable variable)
|
||||
{
|
||||
super( offset, string );
|
||||
referencedElement = variable;
|
||||
}
|
||||
/* (non-Javadoc)
|
||||
* @see org.eclipse.cdt.core.parser.ast.IASTReference#getReferencedElement()
|
||||
*/
|
||||
public ISourceElementCallbackDelegate getReferencedElement()
|
||||
{
|
||||
return referencedElement;
|
||||
}
|
||||
/* (non-Javadoc)
|
||||
* @see org.eclipse.cdt.core.parser.ISourceElementCallbackDelegate#acceptElement(org.eclipse.cdt.core.parser.ISourceElementRequestor)
|
||||
*/
|
||||
public void acceptElement(ISourceElementRequestor requestor)
|
||||
{
|
||||
try
|
||||
{
|
||||
requestor.acceptVariableReference( this );
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
/* do nothing */
|
||||
}
|
||||
}
|
||||
/* (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)
|
||||
{
|
||||
}
|
||||
}
|
|
@ -21,6 +21,7 @@ import java.util.Stack;
|
|||
import org.eclipse.cdt.core.parser.Enum;
|
||||
import org.eclipse.cdt.core.parser.IFilenameProvider;
|
||||
import org.eclipse.cdt.core.parser.IProblem;
|
||||
import org.eclipse.cdt.core.parser.ISourceElementCallbackDelegate;
|
||||
import org.eclipse.cdt.core.parser.IToken;
|
||||
import org.eclipse.cdt.core.parser.ITokenDuple;
|
||||
import org.eclipse.cdt.core.parser.ParserLanguage;
|
||||
|
@ -67,6 +68,7 @@ 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.IReferenceManager;
|
||||
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;
|
||||
|
@ -117,6 +119,7 @@ public class CompleteParseASTFactory extends BaseASTFactory implements IASTFacto
|
|||
private final static IProblemFactory problemFactory = new ASTProblemFactory();
|
||||
private final IFilenameProvider fileProvider;
|
||||
private final ParserMode mode;
|
||||
private final ReferenceCache cache = new ReferenceCache();
|
||||
|
||||
static
|
||||
{
|
||||
|
@ -150,7 +153,13 @@ public class CompleteParseASTFactory extends BaseASTFactory implements IASTFacto
|
|||
* Overrides an existing reference if it has the same name and offset
|
||||
*/
|
||||
protected void addReference(List references, IASTReference reference){
|
||||
if( references == null || reference == null ) return;
|
||||
if( reference == null )
|
||||
return;
|
||||
if( references == null )
|
||||
{
|
||||
cache.returnReference( reference );
|
||||
return;
|
||||
}
|
||||
Iterator i = references.iterator();
|
||||
while (i.hasNext()){
|
||||
IASTReference ref = (IASTReference)i.next();
|
||||
|
@ -158,6 +167,7 @@ public class CompleteParseASTFactory extends BaseASTFactory implements IASTFacto
|
|||
if( (ref.getName().equals(reference.getName()))
|
||||
&& (ref.getOffset() == reference.getOffset())
|
||||
){
|
||||
cache.returnReference( ref );
|
||||
i.remove();
|
||||
break;
|
||||
}
|
||||
|
@ -179,7 +189,8 @@ public class CompleteParseASTFactory extends BaseASTFactory implements IASTFacto
|
|||
else
|
||||
j = exp.getReferences().iterator();
|
||||
while( j.hasNext() ){
|
||||
addReference( references, (IASTReference) j.next() );
|
||||
IASTReference r = (IASTReference) j.next();
|
||||
addReference( references, cache.getReference(r.getOffset(), r.getReferencedElement()));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -326,7 +337,10 @@ public class CompleteParseASTFactory extends BaseASTFactory implements IASTFacto
|
|||
if( references != null )
|
||||
addReference( references, createReference( result, image, name.getStartOffset() ));
|
||||
if( args != null && references != null )
|
||||
{
|
||||
addTemplateIdReferences( references, templateArgLists[0] );
|
||||
name.freeReferences( cache );
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -393,7 +407,10 @@ public class CompleteParseASTFactory extends BaseASTFactory implements IASTFacto
|
|||
if( references != null )
|
||||
addReference( references, createReference( result, image, offset ));
|
||||
if( references != null && templateArgLists != null && templateArgLists[idx] != null )
|
||||
{
|
||||
addTemplateIdReferences( references, templateArgLists[idx] );
|
||||
name.freeReferences(cache);
|
||||
}
|
||||
}
|
||||
else
|
||||
break;
|
||||
|
@ -892,6 +909,13 @@ public class CompleteParseASTFactory extends BaseASTFactory implements IASTFacto
|
|||
|
||||
//Its possible that the parent is not an IContainerSymbol if its a template parameter or some kinds of template instances
|
||||
ISymbol symbol = lookupQualifiedName( classSymbol, parentClassName, references, true );
|
||||
List [] templateArgumentLists = parentClassName.getTemplateIdArgLists();
|
||||
if( templateArgumentLists != null )
|
||||
{
|
||||
for( int i = 0; i < templateArgumentLists.length; ++i )
|
||||
addTemplateIdReferences( references, templateArgumentLists[i]);
|
||||
}
|
||||
parentClassName.freeReferences(cache);
|
||||
classSymbol.addParent( symbol, isVirtual, visibility, parentClassName.getFirstToken().getOffset(), references );
|
||||
|
||||
}
|
||||
|
@ -917,24 +941,24 @@ public class CompleteParseASTFactory extends BaseASTFactory implements IASTFacto
|
|||
// assert (symbol != null ) : "createReference cannot be called on null symbol ";
|
||||
if( symbol.getTypeInfo().checkBit( TypeInfo.isTypedef ) ||
|
||||
symbol.getASTExtension().getPrimaryDeclaration() instanceof IASTTypedefDeclaration )
|
||||
return new ASTTypedefReference( offset, referenceElementName, (IASTTypedefDeclaration)declaration);
|
||||
return cache.getReference( offset, declaration);
|
||||
else if( symbol.getType() == TypeInfo.t_namespace )
|
||||
return new ASTNamespaceReference( offset, referenceElementName, (IASTNamespaceDefinition)declaration);
|
||||
return cache.getReference( offset, declaration);
|
||||
else if( symbol.getType() == TypeInfo.t_class ||
|
||||
symbol.getType() == TypeInfo.t_struct ||
|
||||
symbol.getType() == TypeInfo.t_union )
|
||||
return new ASTClassReference( offset, referenceElementName, (IASTTypeSpecifier)symbol.getASTExtension().getPrimaryDeclaration() );
|
||||
return cache.getReference( offset, (ISourceElementCallbackDelegate)symbol.getASTExtension().getPrimaryDeclaration() );
|
||||
else if( symbol.getType() == TypeInfo.t_enumeration )
|
||||
return new ASTEnumerationReference( offset, referenceElementName, (IASTEnumerationSpecifier)symbol.getASTExtension().getPrimaryDeclaration() );
|
||||
return cache.getReference( offset, (IASTEnumerationSpecifier)symbol.getASTExtension().getPrimaryDeclaration() );
|
||||
else if( symbol.getType() == TypeInfo.t_enumerator )
|
||||
return new ASTEnumeratorReference( offset, referenceElementName, (IASTEnumerator)declaration );
|
||||
return cache.getReference( offset, declaration );
|
||||
else if(( symbol.getType() == TypeInfo.t_function ) || (symbol.getType() == TypeInfo.t_constructor))
|
||||
{
|
||||
ASTNode referenced = (definition != null) ? definition : declaration;
|
||||
if( referenced instanceof IASTMethod )
|
||||
|
||||
return new ASTMethodReference( offset, referenceElementName, (IASTMethod)referenced );
|
||||
return new ASTFunctionReference( offset, referenceElementName, (IASTFunction)referenced );
|
||||
return cache.getReference( offset, (IASTMethod)referenced );
|
||||
return cache.getReference( offset, (IASTFunction)referenced );
|
||||
}
|
||||
else if( ( symbol.getType() == TypeInfo.t_type ) ||
|
||||
( symbol.getType() == TypeInfo.t_bool )||
|
||||
|
@ -952,7 +976,7 @@ public class CompleteParseASTFactory extends BaseASTFactory implements IASTFacto
|
|||
symbol.getContainingSymbol().getType() == TypeInfo.t_struct ||
|
||||
symbol.getContainingSymbol().getType() == TypeInfo.t_union )
|
||||
{
|
||||
return new ASTFieldReference( offset, referenceElementName, (IASTField)(definition != null ? definition : declaration ));
|
||||
return cache.getReference( offset, (definition != null ? definition : declaration ));
|
||||
}
|
||||
else if( ( symbol.getContainingSymbol().getType() == TypeInfo.t_function ||
|
||||
symbol.getContainingSymbol().getType() == TypeInfo.t_constructor ) &&
|
||||
|
@ -960,17 +984,17 @@ public class CompleteParseASTFactory extends BaseASTFactory implements IASTFacto
|
|||
((IParameterizedSymbol)symbol.getContainingSymbol()).getParameterList() != null &&
|
||||
((IParameterizedSymbol)symbol.getContainingSymbol()).getParameterList().contains( symbol ) )
|
||||
{
|
||||
return new ASTParameterReference( offset, referenceElementName, (IASTParameterDeclaration)declaration );
|
||||
return cache.getReference( offset, declaration );
|
||||
}
|
||||
else
|
||||
{
|
||||
ASTNode s = (definition != null) ? definition : declaration;
|
||||
if(s instanceof IASTVariable)
|
||||
return new ASTVariableReference( offset, referenceElementName, (IASTVariable)s);
|
||||
return cache.getReference( offset, (IASTVariable)s);
|
||||
else if (s instanceof IASTParameterDeclaration)
|
||||
return new ASTParameterReference( offset, referenceElementName, (IASTParameterDeclaration)s);
|
||||
return cache.getReference( offset, (IASTParameterDeclaration)s);
|
||||
else if (s instanceof IASTTemplateParameter )
|
||||
return new ASTTemplateParameterReference( offset, referenceElementName, (IASTTemplateParameter)s );
|
||||
return cache.getReference( offset, (IASTTemplateParameter)s );
|
||||
}
|
||||
}
|
||||
// assert false : "Unreachable code : createReference()";
|
||||
|
@ -1116,10 +1140,11 @@ public class CompleteParseASTFactory extends BaseASTFactory implements IASTFacto
|
|||
i = ((ASTTypeId)typeId).getReferences().iterator();
|
||||
while( i.hasNext() )
|
||||
{
|
||||
ASTReference ref = (ASTReference) i.next();
|
||||
ReferenceCache.ASTReference ref = (ReferenceCache.ASTReference) i.next();
|
||||
if( ref.getName().equals( duple.toString() ) &&
|
||||
ref.getOffset() == duple.getStartOffset() )
|
||||
{
|
||||
cache.returnReference( ref );
|
||||
i.remove();
|
||||
}
|
||||
}
|
||||
|
@ -1801,7 +1826,15 @@ public class CompleteParseASTFactory extends BaseASTFactory implements IASTFacto
|
|||
{
|
||||
if( expression != null )
|
||||
{
|
||||
references.addAll( ((ASTExpression)expression).getReferences() );
|
||||
List eRefs = ((ASTExpression)expression).getReferences();
|
||||
if( eRefs != null && !eRefs.isEmpty())
|
||||
{
|
||||
for( int i = 0; i < eRefs.size(); ++i )
|
||||
{
|
||||
IASTReference r = (IASTReference)eRefs.get(i);
|
||||
references.add( cache.getReference( r.getOffset(), r.getReferencedElement() ));
|
||||
}
|
||||
}
|
||||
if( expression.getLHSExpression() != null )
|
||||
getExpressionReferences( expression.getLHSExpression(), references );
|
||||
if( expression.getRHSExpression() != null )
|
||||
|
@ -1821,22 +1854,15 @@ public class CompleteParseASTFactory extends BaseASTFactory implements IASTFacto
|
|||
*/
|
||||
public IASTExceptionSpecification createExceptionSpecification(IASTScope scope, List typeIds) throws ASTSemanticException
|
||||
{
|
||||
List references = new ArrayList();
|
||||
List newTypeIds = new ArrayList();
|
||||
if( typeIds != null )
|
||||
{
|
||||
Iterator iter =typeIds.iterator();
|
||||
while( iter.hasNext() )
|
||||
{
|
||||
IASTTypeId duple = (IASTTypeId)iter.next();
|
||||
if( duple != null )
|
||||
{
|
||||
lookupQualifiedName( scopeToSymbol( scope ), ((ASTTypeId)duple).getTokenDuple(), references, false );
|
||||
newTypeIds.add( duple.toString() );
|
||||
}
|
||||
}
|
||||
newTypeIds.add( ((IASTTypeId)iter.next()).toString() );
|
||||
|
||||
}
|
||||
return new ASTExceptionSpecification( newTypeIds, references );
|
||||
return new ASTExceptionSpecification( newTypeIds );
|
||||
}
|
||||
/* (non-Javadoc)
|
||||
* @see org.eclipse.cdt.core.parser.ast.IASTFactory#createConstructorMemberInitializer(org.eclipse.cdt.core.parser.ITokenDuple, org.eclipse.cdt.core.parser.ast.IASTExpression)
|
||||
|
@ -1959,7 +1985,10 @@ public class CompleteParseASTFactory extends BaseASTFactory implements IASTFacto
|
|||
{
|
||||
addReference( references, createReference( typeSymbol, image, offset ));
|
||||
if( argLists != null && argLists[idx] != null )
|
||||
{
|
||||
addTemplateIdReferences( references, argLists[idx] );
|
||||
typeName.freeReferences(cache);
|
||||
}
|
||||
}
|
||||
else
|
||||
handleProblem( IProblem.SEMANTIC_NAME_NOT_FOUND, image, -1, -1, current.getLineNumber() );
|
||||
|
@ -2230,8 +2259,13 @@ public class CompleteParseASTFactory extends BaseASTFactory implements IASTFacto
|
|||
{
|
||||
ASTElaboratedTypeSpecifier elab = (ASTElaboratedTypeSpecifier)absDecl.getTypeSpecifier();
|
||||
xrefSymbol = elab.getSymbol();
|
||||
newReferences = new ArrayList();
|
||||
newReferences.addAll( elab.getReferences() );
|
||||
List elabReferences = elab.getReferences();
|
||||
newReferences = new ArrayList(elabReferences.size());
|
||||
for( int i = 0; i < elabReferences.size(); ++i )
|
||||
{
|
||||
IASTReference r = (IASTReference)elabReferences.get(i);
|
||||
newReferences.add( cache.getReference(r.getOffset(), r.getReferencedElement()));
|
||||
}
|
||||
if( xrefSymbol != null )
|
||||
addReference( newReferences, createReference( xrefSymbol, elab.getName(), elab.getNameOffset()) );
|
||||
}
|
||||
|
@ -2260,7 +2294,7 @@ public class CompleteParseASTFactory extends BaseASTFactory implements IASTFacto
|
|||
else
|
||||
symbol.setReturnType( paramSymbol );
|
||||
|
||||
if( newReferences != null )
|
||||
if( newReferences != null && !newReferences.isEmpty())
|
||||
references.addAll( newReferences );
|
||||
|
||||
if( absDecl instanceof ASTParameterDeclaration )
|
||||
|
@ -2513,7 +2547,7 @@ public class CompleteParseASTFactory extends BaseASTFactory implements IASTFacto
|
|||
((ASTConstructorMemberInitializer)initializer).requiresNameResolution() )
|
||||
{
|
||||
ASTConstructorMemberInitializer realInitializer = ((ASTConstructorMemberInitializer)initializer);
|
||||
IDerivableContainerSymbol container = (IDerivableContainerSymbol) symbol.getContainingSymbol();
|
||||
IDerivableContainerSymbol container = (IDerivableContainerSymbol) symbol.getContainingSymbol();
|
||||
lookupQualifiedName(container, initializer.getName(), TypeInfo.t_any, null, realInitializer.getNameOffset(), realInitializer.getReferences(), false, LookupType.QUALIFIED);
|
||||
// TODO try and resolve parameter references now in the expression list
|
||||
}
|
||||
|
@ -2742,7 +2776,14 @@ public class CompleteParseASTFactory extends BaseASTFactory implements IASTFacto
|
|||
{
|
||||
symbolToBeCloned = ((ASTSimpleTypeSpecifier)abstractDeclaration.getTypeSpecifier()).getSymbol();
|
||||
if( references != null )
|
||||
references.addAll( ((ASTSimpleTypeSpecifier)abstractDeclaration.getTypeSpecifier()).getReferences() );
|
||||
{
|
||||
List absRefs = ((ASTSimpleTypeSpecifier)abstractDeclaration.getTypeSpecifier()).getReferences();
|
||||
for( int i = 0; i < absRefs.size(); ++i )
|
||||
{
|
||||
IASTReference r = (IASTReference) absRefs.get(i);
|
||||
references.add( cache.getReference( r.getOffset(), r.getReferencedElement() ));
|
||||
}
|
||||
}
|
||||
}
|
||||
else if( abstractDeclaration.getTypeSpecifier() instanceof ASTClassSpecifier )
|
||||
{
|
||||
|
@ -3012,7 +3053,15 @@ public class CompleteParseASTFactory extends BaseASTFactory implements IASTFacto
|
|||
List references = new ArrayList();
|
||||
if( mapping.getTypeSpecifier() instanceof ASTSimpleTypeSpecifier )
|
||||
{
|
||||
references.addAll( ((ASTSimpleTypeSpecifier)mapping.getTypeSpecifier()).getReferences() );
|
||||
List mappingReferences = ((ASTSimpleTypeSpecifier)mapping.getTypeSpecifier()).getReferences();
|
||||
if( mappingReferences != null && !mappingReferences.isEmpty() )
|
||||
{
|
||||
for( int i = 0; i < mappingReferences.size(); ++i )
|
||||
{
|
||||
IASTReference r = (IASTReference) mappingReferences.get(i);
|
||||
references.add( cache.getReference(r.getOffset(), r.getReferencedElement()));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
try
|
||||
|
@ -3231,13 +3280,12 @@ public class CompleteParseASTFactory extends BaseASTFactory implements IASTFacto
|
|||
|
||||
public IASTScope getDeclaratorScope(IASTScope scope, ITokenDuple duple){
|
||||
if( duple != null && duple.getSegmentCount() > 1){
|
||||
List refs = new ArrayList();
|
||||
|
||||
IContainerSymbol ownerScope = scopeToSymbol( scope );
|
||||
ISymbol symbol;
|
||||
|
||||
try {
|
||||
symbol = lookupQualifiedName( ownerScope, duple.getLeadingSegments(), refs, false, LookupType.FORDEFINITION );
|
||||
symbol = lookupQualifiedName( ownerScope, duple.getLeadingSegments(), null, false, LookupType.FORDEFINITION );
|
||||
} catch (ASTSemanticException e) {
|
||||
return scope;
|
||||
}
|
||||
|
@ -3355,16 +3403,29 @@ public class CompleteParseASTFactory extends BaseASTFactory implements IASTFacto
|
|||
{
|
||||
ISymbol typeSymbol = lookupQualifiedName( scopeToSymbol(scope), typeId.getTokenDuple(), refs, true );
|
||||
if( typeSymbol == null || typeSymbol.getType() == TypeInfo.t_type )
|
||||
{
|
||||
freeReferences( refs );
|
||||
handleProblem( scope, IProblem.SEMANTIC_INVALID_TYPE, id.getTypeOrClassName() );
|
||||
}
|
||||
result.setTypeSymbol( typeSymbol );
|
||||
typeId.addReferences( refs );
|
||||
typeId.addReferences( refs, cache );
|
||||
}
|
||||
|
||||
setPointerOperators( result, id.getPointerOperators(), id.getArrayModifiers() );
|
||||
return result;
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
/**
|
||||
* @param refs
|
||||
*/
|
||||
private void freeReferences(List refs) {
|
||||
if( refs == null || refs.isEmpty() ) return;
|
||||
for( int i =0; i < refs.size(); ++i)
|
||||
cache.returnReference((IASTReference) refs.get(i));
|
||||
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see org.eclipse.cdt.core.parser.ast.IASTFactory#signalEndOfClassSpecifier(org.eclipse.cdt.core.parser.ast.IASTClassSpecifier)
|
||||
*/
|
||||
public void signalEndOfClassSpecifier(IASTClassSpecifier astClassSpecifier)
|
||||
|
@ -3396,8 +3457,13 @@ public class CompleteParseASTFactory extends BaseASTFactory implements IASTFacto
|
|||
{
|
||||
}
|
||||
|
||||
if( s != null )
|
||||
references.addAll( subReferences );
|
||||
if( s != null && subReferences != null && !subReferences.isEmpty())
|
||||
for( int j = 0; j < subReferences.size(); ++j )
|
||||
{
|
||||
IASTReference r = (IASTReference) subReferences.get(j);
|
||||
references.add( cache.getReference( r.getOffset(), r.getReferencedElement()));
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
@ -3405,7 +3471,7 @@ public class CompleteParseASTFactory extends BaseASTFactory implements IASTFacto
|
|||
astImplementation.setProcessingUnresolvedReferences( false );
|
||||
|
||||
if( ! references.isEmpty() )
|
||||
astImplementation.setExtraReferences( references );
|
||||
astImplementation.setExtraReferences( references, cache );
|
||||
|
||||
}
|
||||
|
||||
|
@ -3534,30 +3600,38 @@ public class CompleteParseASTFactory extends BaseASTFactory implements IASTFacto
|
|||
*/
|
||||
public boolean validateIndirectMemberOperation(IASTNode node) {
|
||||
List pointerOps = null;
|
||||
TypeInfo typeInfo = null;
|
||||
if( ( node instanceof ISymbolOwner ) )
|
||||
{
|
||||
ISymbol symbol = ((ISymbolOwner) node).getSymbol();
|
||||
TypeInfo info = symbol.getTypeInfo().getFinalType( true );
|
||||
pointerOps = info.getPtrOperators();
|
||||
info.release();
|
||||
typeInfo = symbol.getTypeInfo().getFinalType(true);
|
||||
pointerOps = typeInfo.getPtrOperators();
|
||||
typeInfo.release();
|
||||
}
|
||||
else if( node instanceof ASTExpression )
|
||||
{
|
||||
ISymbol typeSymbol = ((ASTExpression)node).getResultType().getResult().getTypeSymbol();
|
||||
if( typeSymbol != null ){
|
||||
TypeInfo info = typeSymbol.getTypeInfo().getFinalType( true );
|
||||
pointerOps = info.getPtrOperators();
|
||||
info.release();
|
||||
if( typeSymbol != null )
|
||||
{
|
||||
typeInfo = typeSymbol.getTypeInfo().getFinalType(true);
|
||||
pointerOps = typeInfo.getPtrOperators();
|
||||
}
|
||||
}
|
||||
else
|
||||
return false;
|
||||
|
||||
|
||||
if( pointerOps == null || pointerOps.isEmpty() ) return false;
|
||||
TypeInfo.PtrOp lastOperator = (PtrOp) pointerOps.get( pointerOps.size() - 1 );
|
||||
if( lastOperator.getType() == TypeInfo.PtrOp.t_array || lastOperator.getType() == TypeInfo.PtrOp.t_pointer ) return true;
|
||||
return false;
|
||||
try
|
||||
{
|
||||
if( pointerOps == null || pointerOps.isEmpty() ) return false;
|
||||
TypeInfo.PtrOp lastOperator = (PtrOp) pointerOps.get( pointerOps.size() - 1 );
|
||||
if( lastOperator.getType() == TypeInfo.PtrOp.t_array || lastOperator.getType() == TypeInfo.PtrOp.t_pointer ) return true;
|
||||
return false;
|
||||
}
|
||||
finally
|
||||
{
|
||||
if( typeInfo != null )
|
||||
typeInfo.release();
|
||||
}
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
|
@ -3568,15 +3642,17 @@ public class CompleteParseASTFactory extends BaseASTFactory implements IASTFacto
|
|||
if( ( node instanceof ISymbolOwner ) )
|
||||
{
|
||||
ISymbol symbol = ((ISymbolOwner) node).getSymbol();
|
||||
TypeInfo info = symbol.getTypeInfo().getFinalType( true );
|
||||
pointerOps = info.getPtrOperators();
|
||||
info.release();
|
||||
TypeInfo typeInfo = symbol.getTypeInfo().getFinalType(true);
|
||||
pointerOps = typeInfo.getPtrOperators();
|
||||
typeInfo.release();
|
||||
}
|
||||
else if( node instanceof ASTExpression )
|
||||
{
|
||||
ISymbol typeSymbol = ((ASTExpression)node).getResultType().getResult().getTypeSymbol();
|
||||
if( typeSymbol != null )
|
||||
{
|
||||
pointerOps = typeSymbol.getPtrOperators();
|
||||
}
|
||||
}
|
||||
else
|
||||
return false;
|
||||
|
@ -3594,4 +3670,18 @@ public class CompleteParseASTFactory extends BaseASTFactory implements IASTFacto
|
|||
//ignore
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see org.eclipse.cdt.core.parser.ast.IASTFactory#getReferenceManager()
|
||||
*/
|
||||
public IReferenceManager getReferenceManager() {
|
||||
return cache;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return
|
||||
*/
|
||||
public boolean validateCaches() {
|
||||
return cache.isBalanced();
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -0,0 +1,879 @@
|
|||
/**********************************************************************
|
||||
* Copyright (c) 2002-2004 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.complete;
|
||||
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
|
||||
import org.eclipse.cdt.core.parser.ISourceElementCallbackDelegate;
|
||||
import org.eclipse.cdt.core.parser.ISourceElementRequestor;
|
||||
import org.eclipse.cdt.core.parser.ast.IASTClassReference;
|
||||
import org.eclipse.cdt.core.parser.ast.IASTClassSpecifier;
|
||||
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.IASTEnumeratorReference;
|
||||
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.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.IASTParameterDeclaration;
|
||||
import org.eclipse.cdt.core.parser.ast.IASTParameterReference;
|
||||
import org.eclipse.cdt.core.parser.ast.IASTReference;
|
||||
import org.eclipse.cdt.core.parser.ast.IASTTemplateParameter;
|
||||
import org.eclipse.cdt.core.parser.ast.IASTTemplateParameterReference;
|
||||
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.IASTVariable;
|
||||
import org.eclipse.cdt.core.parser.ast.IASTVariableReference;
|
||||
import org.eclipse.cdt.core.parser.ast.IReferenceManager;
|
||||
|
||||
/**
|
||||
* @author jcamelon
|
||||
*
|
||||
*/
|
||||
public class ReferenceCache implements IReferenceManager {
|
||||
|
||||
/**
|
||||
* @author jcamelon
|
||||
*
|
||||
*/
|
||||
private interface IReferenceFactory {
|
||||
ASTReference createReference();
|
||||
ASTReference [] createReferenceArray( int size );
|
||||
}
|
||||
|
||||
private static final int DEFAULT_CACHE_SIZE = 16;
|
||||
|
||||
private boolean[] classReferencesAvailable;
|
||||
private ASTReference[] classReferences;
|
||||
private boolean[] variableReferencesAvailable;
|
||||
private ASTReference[] variableReferences;
|
||||
|
||||
private abstract static class BaseReferenceFactory implements IReferenceFactory
|
||||
{
|
||||
public ASTReference[] createReferenceArray(int size) {
|
||||
return new ASTReference[ size ];
|
||||
}
|
||||
}
|
||||
|
||||
private static final IReferenceFactory CLASSREF_FACTORY =
|
||||
new BaseReferenceFactory() {
|
||||
public ASTReference createReference() { return new ASTClassReference(); }
|
||||
|
||||
|
||||
};
|
||||
|
||||
private static final IReferenceFactory VARIABLEREF_FACTORY =
|
||||
new BaseReferenceFactory() {
|
||||
|
||||
public ASTReference createReference() {
|
||||
return new ASTVariableReference();
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
|
||||
{
|
||||
classReferences = CLASSREF_FACTORY.createReferenceArray(DEFAULT_CACHE_SIZE);
|
||||
variableReferences = VARIABLEREF_FACTORY.createReferenceArray(DEFAULT_CACHE_SIZE);
|
||||
classReferencesAvailable = new boolean[DEFAULT_CACHE_SIZE];
|
||||
variableReferencesAvailable = new boolean[DEFAULT_CACHE_SIZE];
|
||||
for (int i = 0; i < DEFAULT_CACHE_SIZE; ++i) {
|
||||
classReferencesAvailable[i] = true;
|
||||
variableReferencesAvailable[i] = true;
|
||||
classReferences[i] = CLASSREF_FACTORY.createReference();
|
||||
variableReferences[i] = VARIABLEREF_FACTORY.createReference();
|
||||
}
|
||||
}
|
||||
|
||||
public void returnReference(IASTReference reference) {
|
||||
if (reference instanceof IASTClassReference)
|
||||
{
|
||||
returnReference(classReferencesAvailable, classReferences,
|
||||
reference);
|
||||
return;
|
||||
}
|
||||
if( reference instanceof IASTVariableReference )
|
||||
{
|
||||
returnReference( variableReferencesAvailable, variableReferences, reference );
|
||||
return;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* @param referencesAvailable
|
||||
* @param references
|
||||
* @param reference
|
||||
*/
|
||||
private void returnReference(boolean[] referencesAvailable,
|
||||
ASTReference[] references, IASTReference reference) {
|
||||
for (int i = 0; i < referencesAvailable.length; ++i)
|
||||
if (references[i] == reference) {
|
||||
referencesAvailable[i] = true;
|
||||
references[i].reset();
|
||||
break;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public IASTReference getReference(int offset,
|
||||
ISourceElementCallbackDelegate referencedElement) {
|
||||
if (referencedElement instanceof IASTTypedefDeclaration)
|
||||
return getTypedefReference(offset,
|
||||
(IASTTypedefDeclaration) referencedElement);
|
||||
if (referencedElement instanceof IASTEnumerationSpecifier)
|
||||
return getEnumerationReference(offset,
|
||||
(IASTEnumerationSpecifier) referencedElement);
|
||||
if (referencedElement instanceof IASTTemplateParameter)
|
||||
return getTemplateParameterReference(offset,
|
||||
(IASTTemplateParameter) referencedElement);
|
||||
if (referencedElement instanceof IASTParameterDeclaration)
|
||||
return getParameterReference(offset,
|
||||
(IASTParameterDeclaration) referencedElement);
|
||||
if (referencedElement instanceof IASTTypeSpecifier)
|
||||
return getClassReference(offset, referencedElement);
|
||||
if (referencedElement instanceof IASTNamespaceDefinition)
|
||||
return getNamespaceReference(offset,
|
||||
(IASTNamespaceDefinition) referencedElement);
|
||||
if (referencedElement instanceof IASTMethod)
|
||||
return getMethodReference(offset, (IASTMethod) referencedElement);
|
||||
if (referencedElement instanceof IASTFunction)
|
||||
return getFunctionReference(offset,
|
||||
(IASTFunction) referencedElement);
|
||||
if (referencedElement instanceof IASTField)
|
||||
return getFieldReference(offset, (IASTField) referencedElement);
|
||||
if (referencedElement instanceof IASTVariable)
|
||||
return getVariableReference(offset,
|
||||
(IASTVariable) referencedElement);
|
||||
if (referencedElement instanceof IASTEnumerator)
|
||||
return getEnumeratorReference(offset,
|
||||
(IASTEnumerator) referencedElement);
|
||||
return null;
|
||||
}
|
||||
|
||||
private IASTReference getClassReference(int offset,
|
||||
ISourceElementCallbackDelegate referencedElement) {
|
||||
for (int i = 0; i < classReferencesAvailable.length; ++i) {
|
||||
if (classReferencesAvailable[i]) {
|
||||
classReferencesAvailable[i] = false;
|
||||
classReferences[i].initialize(offset, referencedElement);
|
||||
return classReferences[i];
|
||||
}
|
||||
}
|
||||
int currentSize = classReferences.length;
|
||||
GrowResult g = growArrays(classReferences, classReferencesAvailable, CLASSREF_FACTORY );
|
||||
classReferences = g.getReferences();
|
||||
classReferencesAvailable = g.getAvailables();
|
||||
classReferencesAvailable[currentSize] = false;
|
||||
classReferences[currentSize].initialize(offset, referencedElement);
|
||||
return classReferences[currentSize];
|
||||
}
|
||||
|
||||
protected static class GrowResult
|
||||
{
|
||||
private boolean[] b;
|
||||
private ASTReference[] r;
|
||||
|
||||
public void initialize( boolean [] bools, ASTReference [] refs )
|
||||
{
|
||||
this.b = bools;
|
||||
this.r = refs;
|
||||
}
|
||||
/**
|
||||
* @return Returns the b.
|
||||
*/
|
||||
public boolean[] getAvailables() {
|
||||
return b;
|
||||
}
|
||||
/**
|
||||
* @return Returns the r.
|
||||
*/
|
||||
public ASTReference[] getReferences() {
|
||||
return r;
|
||||
}
|
||||
}
|
||||
|
||||
protected static final GrowResult growResult = new GrowResult();
|
||||
|
||||
/**
|
||||
* @param inReferences, boolean [] inReferencesAvailable, IReferenceFactory factory
|
||||
* @return
|
||||
*/
|
||||
protected static GrowResult growArrays(ASTReference[] inReferences, boolean [] inReferencesAvailable, IReferenceFactory factory ) {
|
||||
int currentSize = inReferences.length;
|
||||
boolean[] availables = new boolean[currentSize * 2];
|
||||
System.arraycopy(inReferencesAvailable, 0, availables, 0, currentSize);
|
||||
ASTReference[] refs = factory.createReferenceArray(currentSize * 2);
|
||||
System.arraycopy(inReferences, 0, refs, 0, currentSize);
|
||||
for (int i = currentSize; i < availables.length; ++i) {
|
||||
refs[i] = factory.createReference();
|
||||
availables[i] = true;
|
||||
}
|
||||
growResult.initialize( availables, refs );
|
||||
return growResult;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param offset
|
||||
* @param declaration
|
||||
* @return
|
||||
*/
|
||||
private IASTReference getTypedefReference(int offset,
|
||||
IASTTypedefDeclaration declaration) {
|
||||
return new ASTTypedefReference(offset, declaration);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param offset
|
||||
* @param variable
|
||||
* @return
|
||||
*/
|
||||
private IASTReference getVariableReference(int offset, IASTVariable referencedElement) {
|
||||
for (int i = 0; i < variableReferencesAvailable.length; ++i) {
|
||||
if (variableReferencesAvailable[i]) {
|
||||
variableReferencesAvailable[i] = false;
|
||||
variableReferences[i].initialize(offset, referencedElement);
|
||||
return variableReferences[i];
|
||||
}
|
||||
}
|
||||
int currentSize = variableReferences.length;
|
||||
GrowResult g = growArrays( variableReferences, variableReferencesAvailable, VARIABLEREF_FACTORY );
|
||||
variableReferencesAvailable = g.getAvailables();
|
||||
variableReferences = g.getReferences();
|
||||
variableReferencesAvailable[currentSize] = false;
|
||||
variableReferences[currentSize].initialize(offset, referencedElement);
|
||||
return variableReferences[currentSize];
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* @param offset
|
||||
* @param declaration
|
||||
* @return
|
||||
*/
|
||||
private IASTReference getParameterReference(int offset,
|
||||
IASTParameterDeclaration declaration) {
|
||||
return new ASTParameterReference(offset, declaration);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param offset
|
||||
* @param parameter
|
||||
* @return
|
||||
*/
|
||||
private IASTReference getTemplateParameterReference(int offset,
|
||||
IASTTemplateParameter parameter) {
|
||||
return new ASTTemplateParameterReference(offset, parameter);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param offset
|
||||
* @param definition
|
||||
* @return
|
||||
*/
|
||||
private IASTReference getNamespaceReference(int offset,
|
||||
IASTNamespaceDefinition definition) {
|
||||
return new ASTNamespaceReference(offset, definition);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param offset
|
||||
* @param specifier
|
||||
* @return
|
||||
*/
|
||||
private IASTReference getEnumerationReference(int offset,
|
||||
IASTEnumerationSpecifier specifier) {
|
||||
return new ASTEnumerationReference(offset, specifier);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param offset
|
||||
* @param enumerator
|
||||
* @return
|
||||
*/
|
||||
private IASTReference getEnumeratorReference(int offset,
|
||||
IASTEnumerator enumerator) {
|
||||
return new ASTEnumeratorReference(offset, enumerator);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param offset
|
||||
* @param method
|
||||
* @return
|
||||
*/
|
||||
private IASTReference getMethodReference(int offset, IASTMethod method) {
|
||||
return new ASTMethodReference(offset, method);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param offset
|
||||
* @param function
|
||||
* @return
|
||||
*/
|
||||
private IASTReference getFunctionReference(int offset, IASTFunction function) {
|
||||
return new ASTFunctionReference(offset, function);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param offset
|
||||
* @param field
|
||||
* @return
|
||||
*/
|
||||
private IASTReference getFieldReference(int offset, IASTField field) {
|
||||
return new ASTFieldReference(offset, field);
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see org.eclipse.cdt.core.parser.ast.IASTReferenceStore#processReferences()
|
||||
*/
|
||||
public void processReferences(List references, ISourceElementRequestor requestor)
|
||||
{
|
||||
if( references == null || references == Collections.EMPTY_LIST || references.isEmpty() )
|
||||
return;
|
||||
|
||||
for( int i = 0; i < references.size(); ++i )
|
||||
{
|
||||
IASTReference reference = ((IASTReference)references.get(i));
|
||||
reference.acceptElement(requestor, this );
|
||||
returnReference( reference );
|
||||
}
|
||||
|
||||
references.clear();
|
||||
}
|
||||
|
||||
public abstract static class ASTReference implements IASTReference {
|
||||
protected int offset;
|
||||
private static final String EMPTY_STRING = ""; //$NON-NLS-1$
|
||||
|
||||
public void reset() {
|
||||
offset = 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param offset2
|
||||
* @param referencedElement
|
||||
*/
|
||||
public void initialize(int o, ISourceElementCallbackDelegate referencedElement) {
|
||||
}
|
||||
|
||||
public void initialize(int o) {
|
||||
this.offset = o;
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
public ASTReference(int offset) {
|
||||
this.offset = offset;
|
||||
}
|
||||
/*
|
||||
* (non-Javadoc)
|
||||
*
|
||||
* @see org.eclipse.cdt.core.parser.ast.IASTReference#getOffset()
|
||||
*/
|
||||
public int getOffset() {
|
||||
return offset;
|
||||
}
|
||||
/*
|
||||
* (non-Javadoc)
|
||||
*
|
||||
* @see org.eclipse.cdt.core.parser.ast.IASTReference#getName()
|
||||
*/
|
||||
public String getName() {
|
||||
if (getReferencedElement() instanceof IASTOffsetableNamedElement)
|
||||
return ((IASTOffsetableNamedElement) getReferencedElement())
|
||||
.getName();
|
||||
return EMPTY_STRING;
|
||||
}
|
||||
|
||||
public boolean equals(Object obj) {
|
||||
if (obj == null)
|
||||
return false;
|
||||
if (!(obj instanceof IASTReference))
|
||||
return false;
|
||||
|
||||
if (((IASTReference) obj).getName().equals(getName())
|
||||
&& ((IASTReference) obj).getOffset() == getOffset())
|
||||
return true;
|
||||
return false;
|
||||
}
|
||||
|
||||
public void enterScope(ISourceElementRequestor requestor, IReferenceManager manager) {
|
||||
}
|
||||
|
||||
public void exitScope(ISourceElementRequestor requestor, IReferenceManager manager) {
|
||||
}
|
||||
}
|
||||
public static class ASTClassReference extends ASTReference
|
||||
implements
|
||||
IASTClassReference {
|
||||
private IASTTypeSpecifier reference;
|
||||
/**
|
||||
* @param i
|
||||
* @param specifier
|
||||
*/
|
||||
public ASTClassReference(int i, IASTTypeSpecifier specifier) {
|
||||
super(i);
|
||||
reference = specifier;
|
||||
}
|
||||
|
||||
/*
|
||||
* (non-Javadoc)
|
||||
*
|
||||
* @see org.eclipse.cdt.internal.core.parser.ast.complete.ASTReference#initialize(int)
|
||||
*/
|
||||
public void initialize(int o, ISourceElementCallbackDelegate specifier) {
|
||||
super.initialize(o);
|
||||
reference = (IASTTypeSpecifier) specifier;
|
||||
}
|
||||
/*
|
||||
* (non-Javadoc)
|
||||
*
|
||||
* @see org.eclipse.cdt.internal.core.parser.ast.complete.ASTReference#reset()
|
||||
*/
|
||||
public void reset() {
|
||||
super.reset();
|
||||
reference = null;
|
||||
}
|
||||
/**
|
||||
*
|
||||
*/
|
||||
public ASTClassReference() {
|
||||
super(0);
|
||||
reference = null;
|
||||
}
|
||||
/*
|
||||
* (non-Javadoc)
|
||||
*
|
||||
* @see org.eclipse.cdt.core.parser.ast.IASTReference#getReferencedElement()
|
||||
*/
|
||||
public ISourceElementCallbackDelegate getReferencedElement() {
|
||||
return (ISourceElementCallbackDelegate) reference;
|
||||
}
|
||||
/*
|
||||
* (non-Javadoc)
|
||||
*
|
||||
* @see org.eclipse.cdt.core.parser.ISourceElementCallbackDelegate#acceptElement(org.eclipse.cdt.core.parser.ISourceElementRequestor)
|
||||
*/
|
||||
public void acceptElement(ISourceElementRequestor requestor, IReferenceManager manager) {
|
||||
try {
|
||||
requestor.acceptClassReference(this);
|
||||
} catch (Exception e) {
|
||||
/* do nothing */
|
||||
}
|
||||
}
|
||||
/*
|
||||
* (non-Javadoc)
|
||||
*
|
||||
* @see org.eclipse.cdt.core.parser.ast.IASTClassReference#isResolved()
|
||||
*/
|
||||
public boolean isResolved() {
|
||||
return (reference instanceof IASTClassSpecifier);
|
||||
}
|
||||
}
|
||||
|
||||
public static class ASTEnumerationReference extends ASTReference
|
||||
implements
|
||||
IASTEnumerationReference {
|
||||
private final IASTEnumerationSpecifier referencedElement;
|
||||
/**
|
||||
* @param offset
|
||||
* @param specifier
|
||||
*/
|
||||
public ASTEnumerationReference(int offset,
|
||||
IASTEnumerationSpecifier specifier) {
|
||||
super(offset);
|
||||
referencedElement = specifier;
|
||||
}
|
||||
|
||||
/*
|
||||
* (non-Javadoc)
|
||||
*
|
||||
* @see org.eclipse.cdt.core.parser.ast.IASTReference#getReferencedElement()
|
||||
*/
|
||||
public ISourceElementCallbackDelegate getReferencedElement() {
|
||||
return referencedElement;
|
||||
}
|
||||
/*
|
||||
* (non-Javadoc)
|
||||
*
|
||||
* @see org.eclipse.cdt.core.parser.ISourceElementCallbackDelegate#acceptElement(org.eclipse.cdt.core.parser.ISourceElementRequestor)
|
||||
*/
|
||||
public void acceptElement(ISourceElementRequestor requestor, IReferenceManager manager) {
|
||||
try {
|
||||
requestor.acceptEnumerationReference(this);
|
||||
} catch (Exception e) {
|
||||
/* do nothing */
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public static class ASTEnumeratorReference extends ASTReference
|
||||
implements
|
||||
IASTEnumeratorReference {
|
||||
|
||||
private final IASTEnumerator enumerator;
|
||||
/**
|
||||
* @param offset
|
||||
* @param enumerator
|
||||
*/
|
||||
public ASTEnumeratorReference(int offset, IASTEnumerator enumerator) {
|
||||
super(offset);
|
||||
this.enumerator = enumerator;
|
||||
}
|
||||
|
||||
/*
|
||||
* (non-Javadoc)
|
||||
*
|
||||
* @see org.eclipse.cdt.core.parser.ast.IASTReference#getReferencedElement()
|
||||
*/
|
||||
public ISourceElementCallbackDelegate getReferencedElement() {
|
||||
return enumerator;
|
||||
}
|
||||
/*
|
||||
* (non-Javadoc)
|
||||
*
|
||||
* @see org.eclipse.cdt.core.parser.ISourceElementCallbackDelegate#acceptElement(org.eclipse.cdt.core.parser.ISourceElementRequestor)
|
||||
*/
|
||||
public void acceptElement(ISourceElementRequestor requestor, IReferenceManager manager) {
|
||||
try {
|
||||
requestor.acceptEnumeratorReference(this);
|
||||
} catch (Exception e) {
|
||||
/* do nothing */
|
||||
}
|
||||
}
|
||||
}
|
||||
public static class ASTFieldReference extends ASTReference
|
||||
implements
|
||||
IASTReference,
|
||||
IASTFieldReference {
|
||||
private final IASTField referencedElement;
|
||||
/**
|
||||
* @param offset
|
||||
* @param field
|
||||
*/
|
||||
public ASTFieldReference(int offset, IASTField field) {
|
||||
super(offset);
|
||||
referencedElement = field;
|
||||
}
|
||||
/*
|
||||
* (non-Javadoc)
|
||||
*
|
||||
* @see org.eclipse.cdt.core.parser.ast.IASTReference#getReferencedElement()
|
||||
*/
|
||||
public ISourceElementCallbackDelegate getReferencedElement() {
|
||||
return referencedElement;
|
||||
}
|
||||
/*
|
||||
* (non-Javadoc)
|
||||
*
|
||||
* @see org.eclipse.cdt.core.parser.ISourceElementCallbackDelegate#acceptElement(org.eclipse.cdt.core.parser.ISourceElementRequestor)
|
||||
*/
|
||||
public void acceptElement(ISourceElementRequestor requestor, IReferenceManager manager) {
|
||||
try {
|
||||
requestor.acceptFieldReference(this);
|
||||
} catch (Exception e) {
|
||||
/* do nothing */
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public static class ASTFunctionReference extends ASTReference
|
||||
implements
|
||||
IASTReference,
|
||||
IASTFunctionReference {
|
||||
private final IASTFunction declaration;
|
||||
/**
|
||||
* @param offset
|
||||
*/
|
||||
public ASTFunctionReference(int offset,
|
||||
IASTFunction referencedDeclaration) {
|
||||
super(offset);
|
||||
this.declaration = referencedDeclaration;
|
||||
}
|
||||
/*
|
||||
* (non-Javadoc)
|
||||
*
|
||||
* @see org.eclipse.cdt.core.parser.ast.IASTReference#getReferencedElement()
|
||||
*/
|
||||
public ISourceElementCallbackDelegate getReferencedElement() {
|
||||
return declaration;
|
||||
}
|
||||
/*
|
||||
* (non-Javadoc)
|
||||
*
|
||||
* @see org.eclipse.cdt.core.parser.ISourceElementCallbackDelegate#acceptElement(org.eclipse.cdt.core.parser.ISourceElementRequestor)
|
||||
*/
|
||||
public void acceptElement(ISourceElementRequestor requestor, IReferenceManager manager) {
|
||||
try {
|
||||
requestor.acceptFunctionReference(this);
|
||||
} catch (Exception e) {
|
||||
/* do nothing */
|
||||
}
|
||||
}
|
||||
}
|
||||
public static class ASTMethodReference extends ASTReference
|
||||
implements
|
||||
IASTMethodReference {
|
||||
private final IASTMethod method;
|
||||
/**
|
||||
* @param offset
|
||||
*/
|
||||
public ASTMethodReference(int offset, IASTMethod method) {
|
||||
super(offset);
|
||||
this.method = method;
|
||||
}
|
||||
/*
|
||||
* (non-Javadoc)
|
||||
*
|
||||
* @see org.eclipse.cdt.core.parser.ast.IASTReference#getReferencedElement()
|
||||
*/
|
||||
public ISourceElementCallbackDelegate getReferencedElement() {
|
||||
return method;
|
||||
}
|
||||
/*
|
||||
* (non-Javadoc)
|
||||
*
|
||||
* @see org.eclipse.cdt.core.parser.ISourceElementCallbackDelegate#acceptElement(org.eclipse.cdt.core.parser.ISourceElementRequestor)
|
||||
*/
|
||||
public void acceptElement(ISourceElementRequestor requestor, IReferenceManager manager) {
|
||||
try {
|
||||
requestor.acceptMethodReference(this);
|
||||
} catch (Exception e) {
|
||||
/* do nothing */
|
||||
}
|
||||
}
|
||||
}
|
||||
public static class ASTNamespaceReference extends ASTReference
|
||||
implements
|
||||
IASTNamespaceReference {
|
||||
private final IASTNamespaceDefinition reference;
|
||||
|
||||
/**
|
||||
* @param offset
|
||||
* @param definition
|
||||
*/
|
||||
public ASTNamespaceReference(int offset,
|
||||
IASTNamespaceDefinition definition) {
|
||||
super(offset);
|
||||
reference = definition;
|
||||
}
|
||||
|
||||
/*
|
||||
* (non-Javadoc)
|
||||
*
|
||||
* @see org.eclipse.cdt.core.parser.ast.IASTReference#getReferencedElement()
|
||||
*/
|
||||
public ISourceElementCallbackDelegate getReferencedElement() {
|
||||
return reference;
|
||||
}
|
||||
/*
|
||||
* (non-Javadoc)
|
||||
*
|
||||
* @see org.eclipse.cdt.core.parser.ISourceElementCallbackDelegate#acceptElement(org.eclipse.cdt.core.parser.ISourceElementRequestor)
|
||||
*/
|
||||
public void acceptElement(ISourceElementRequestor requestor, IReferenceManager manager) {
|
||||
try {
|
||||
requestor.acceptNamespaceReference(this);
|
||||
} catch (Exception e) {
|
||||
/* do nothing */
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public static class ASTParameterReference extends ASTReference
|
||||
implements
|
||||
IASTParameterReference {
|
||||
private final IASTParameterDeclaration parm;
|
||||
|
||||
/**
|
||||
* @param offset
|
||||
* @param declaration
|
||||
*/
|
||||
public ASTParameterReference(int offset,
|
||||
IASTParameterDeclaration declaration) {
|
||||
super(offset);
|
||||
parm = declaration;
|
||||
}
|
||||
|
||||
/*
|
||||
* (non-Javadoc)
|
||||
*
|
||||
* @see org.eclipse.cdt.core.parser.ast.IASTReference#getReferencedElement()
|
||||
*/
|
||||
public ISourceElementCallbackDelegate getReferencedElement() {
|
||||
return parm;
|
||||
}
|
||||
/*
|
||||
* (non-Javadoc)
|
||||
*
|
||||
* @see org.eclipse.cdt.core.parser.ISourceElementCallbackDelegate#acceptElement(org.eclipse.cdt.core.parser.ISourceElementRequestor)
|
||||
*/
|
||||
public void acceptElement(ISourceElementRequestor requestor, IReferenceManager manager) {
|
||||
try {
|
||||
requestor.acceptParameterReference(this);
|
||||
} catch (Exception e) {
|
||||
/* do nothing */
|
||||
}
|
||||
}
|
||||
}
|
||||
public static class ASTTemplateParameterReference extends ASTReference
|
||||
implements
|
||||
IASTTemplateParameterReference {
|
||||
private final IASTTemplateParameter parameter;
|
||||
/**
|
||||
* @param offset
|
||||
*/
|
||||
public ASTTemplateParameterReference(int offset,
|
||||
IASTTemplateParameter param) {
|
||||
super(offset);
|
||||
parameter = param;
|
||||
}
|
||||
|
||||
/*
|
||||
* (non-Javadoc)
|
||||
*
|
||||
* @see org.eclipse.cdt.core.parser.ast.IASTReference#getReferencedElement()
|
||||
*/
|
||||
public ISourceElementCallbackDelegate getReferencedElement() {
|
||||
return parameter;
|
||||
}
|
||||
/*
|
||||
* (non-Javadoc)
|
||||
*
|
||||
* @see org.eclipse.cdt.core.parser.ISourceElementCallbackDelegate#acceptElement(org.eclipse.cdt.core.parser.ISourceElementRequestor)
|
||||
*/
|
||||
public void acceptElement(ISourceElementRequestor requestor, IReferenceManager manager) {
|
||||
try {
|
||||
requestor.acceptTemplateParameterReference(this);
|
||||
} catch (Exception e) {
|
||||
/* do nothing */
|
||||
}
|
||||
}
|
||||
}
|
||||
public static class ASTTypedefReference extends ASTReference
|
||||
implements
|
||||
IASTTypedefReference {
|
||||
private final IASTTypedefDeclaration referencedItem;
|
||||
/**
|
||||
* @param offset
|
||||
*/
|
||||
public ASTTypedefReference(int offset,
|
||||
IASTTypedefDeclaration referencedItem) {
|
||||
super(offset);
|
||||
this.referencedItem = referencedItem;
|
||||
}
|
||||
/*
|
||||
* (non-Javadoc)
|
||||
*
|
||||
* @see org.eclipse.cdt.core.parser.ast.IASTReference#getReferencedElement()
|
||||
*/
|
||||
public ISourceElementCallbackDelegate getReferencedElement() {
|
||||
return referencedItem;
|
||||
}
|
||||
/*
|
||||
* (non-Javadoc)
|
||||
*
|
||||
* @see org.eclipse.cdt.core.parser.ISourceElementCallbackDelegate#acceptElement(org.eclipse.cdt.core.parser.ISourceElementRequestor)
|
||||
*/
|
||||
public void acceptElement(ISourceElementRequestor requestor, IReferenceManager manager) {
|
||||
try {
|
||||
requestor.acceptTypedefReference(this);
|
||||
} catch (Exception e) {
|
||||
/* do nothing */
|
||||
}
|
||||
}
|
||||
}
|
||||
public static class ASTVariableReference extends ASTReference
|
||||
implements
|
||||
IASTReference,
|
||||
IASTVariableReference {
|
||||
|
||||
private IASTVariable referencedElement;
|
||||
/**
|
||||
* @param offset
|
||||
* @param variable
|
||||
*/
|
||||
public ASTVariableReference(int offset, IASTVariable variable) {
|
||||
super(offset);
|
||||
referencedElement = variable;
|
||||
}
|
||||
/* (non-Javadoc)
|
||||
* @see org.eclipse.cdt.internal.core.parser.ast.complete.ReferenceCache.ASTReference#initialize(int)
|
||||
*/
|
||||
public void initialize(int o, ISourceElementCallbackDelegate var ) {
|
||||
super.initialize(o);
|
||||
referencedElement = (IASTVariable) var;
|
||||
}
|
||||
/* (non-Javadoc)
|
||||
* @see org.eclipse.cdt.internal.core.parser.ast.complete.ReferenceCache.ASTReference#reset()
|
||||
*/
|
||||
public void reset() {
|
||||
super.reset();
|
||||
referencedElement = null;
|
||||
}
|
||||
/**
|
||||
*
|
||||
*/
|
||||
public ASTVariableReference() {
|
||||
super(0);
|
||||
referencedElement = null;
|
||||
}
|
||||
/*
|
||||
* (non-Javadoc)
|
||||
*
|
||||
* @see org.eclipse.cdt.core.parser.ast.IASTReference#getReferencedElement()
|
||||
*/
|
||||
public ISourceElementCallbackDelegate getReferencedElement() {
|
||||
return referencedElement;
|
||||
}
|
||||
/*
|
||||
* (non-Javadoc)
|
||||
*
|
||||
* @see org.eclipse.cdt.core.parser.ISourceElementCallbackDelegate#acceptElement(org.eclipse.cdt.core.parser.ISourceElementRequestor)
|
||||
*/
|
||||
public void acceptElement(ISourceElementRequestor requestor, IReferenceManager manager) {
|
||||
try {
|
||||
requestor.acceptVariableReference(this);
|
||||
} catch (Exception e) {
|
||||
/* do nothing */
|
||||
}
|
||||
}
|
||||
}
|
||||
/**
|
||||
* @return
|
||||
*/
|
||||
public boolean isBalanced() {
|
||||
return isBalanced( classReferencesAvailable ) && isBalanced( variableReferencesAvailable );
|
||||
}
|
||||
|
||||
/**
|
||||
* @param referencesAvailable
|
||||
* @return
|
||||
*/
|
||||
private boolean isBalanced(boolean[] referencesAvailable ) {
|
||||
for( int i = 0; i < referencesAvailable.length; ++i )
|
||||
{
|
||||
if( !referencesAvailable[i] )
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
}
|
|
@ -12,6 +12,7 @@ import org.eclipse.cdt.core.parser.ast.ASTNotImplementedException;
|
|||
import org.eclipse.cdt.core.parser.ast.IASTExpression;
|
||||
import org.eclipse.cdt.core.parser.ast.IASTNode;
|
||||
import org.eclipse.cdt.core.parser.ast.IASTTypeId;
|
||||
import org.eclipse.cdt.core.parser.ast.IReferenceManager;
|
||||
|
||||
|
||||
|
||||
|
@ -167,21 +168,21 @@ public class ASTExpression implements IASTExpression {
|
|||
/* (non-Javadoc)
|
||||
* @see org.eclipse.cdt.core.parser.ISourceElementCallbackDelegate#acceptElement(org.eclipse.cdt.core.parser.ISourceElementRequestor)
|
||||
*/
|
||||
public void acceptElement(ISourceElementRequestor requestor)
|
||||
public void acceptElement(ISourceElementRequestor requestor, IReferenceManager manager)
|
||||
{
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see org.eclipse.cdt.core.parser.ISourceElementCallbackDelegate#enterScope(org.eclipse.cdt.core.parser.ISourceElementRequestor)
|
||||
*/
|
||||
public void enterScope(ISourceElementRequestor requestor)
|
||||
public void enterScope(ISourceElementRequestor requestor, IReferenceManager manager)
|
||||
{
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see org.eclipse.cdt.core.parser.ISourceElementCallbackDelegate#exitScope(org.eclipse.cdt.core.parser.ISourceElementRequestor)
|
||||
*/
|
||||
public void exitScope(ISourceElementRequestor requestor)
|
||||
public void exitScope(ISourceElementRequestor requestor, IReferenceManager manager)
|
||||
{
|
||||
}
|
||||
|
||||
|
@ -216,5 +217,11 @@ public class ASTExpression implements IASTExpression {
|
|||
throw new ASTNotImplementedException();
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see org.eclipse.cdt.core.parser.ast.IASTExpression#freeReferences()
|
||||
*/
|
||||
public void freeReferences(IReferenceManager manager) {
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
|
|
@ -60,6 +60,7 @@ 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.IReferenceManager;
|
||||
import org.eclipse.cdt.core.parser.ast.IASTClassSpecifier.ClassNameType;
|
||||
import org.eclipse.cdt.core.parser.ast.IASTDesignator.DesignatorKind;
|
||||
import org.eclipse.cdt.core.parser.ast.IASTExpression.IASTNewExpressionDescriptor;
|
||||
|
@ -913,4 +914,11 @@ public class ExpressionParseASTFactory extends BaseASTFactory implements IASTFac
|
|||
//ignore
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see org.eclipse.cdt.core.parser.ast.IASTFactory#getReferenceManager()
|
||||
*/
|
||||
public IReferenceManager getReferenceManager() {
|
||||
// TODO Auto-generated method stub
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -13,6 +13,7 @@ package org.eclipse.cdt.internal.core.parser.ast.gcc;
|
|||
import org.eclipse.cdt.core.parser.ISourceElementRequestor;
|
||||
import org.eclipse.cdt.core.parser.ast.IASTDesignator;
|
||||
import org.eclipse.cdt.core.parser.ast.IASTExpression;
|
||||
import org.eclipse.cdt.core.parser.ast.IReferenceManager;
|
||||
import org.eclipse.cdt.core.parser.ast.gcc.IASTGCCDesignator;
|
||||
import org.eclipse.cdt.internal.core.parser.ast.ASTDesignator;
|
||||
|
||||
|
@ -46,10 +47,10 @@ public class ASTGCCDesignator extends ASTDesignator
|
|||
/* (non-Javadoc)
|
||||
* @see org.eclipse.cdt.core.parser.ISourceElementCallbackDelegate#acceptElement(org.eclipse.cdt.core.parser.ISourceElementRequestor)
|
||||
*/
|
||||
public void acceptElement(ISourceElementRequestor requestor)
|
||||
public void acceptElement(ISourceElementRequestor requestor, IReferenceManager manager)
|
||||
{
|
||||
super.acceptElement( requestor );
|
||||
super.acceptElement( requestor, manager );
|
||||
if( secondExpression != null )
|
||||
secondExpression.acceptElement(requestor);
|
||||
secondExpression.acceptElement(requestor, manager);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -13,6 +13,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.core.parser.ast.IReferenceManager;
|
||||
import org.eclipse.cdt.internal.core.parser.ast.Offsets;
|
||||
|
||||
/**
|
||||
|
@ -71,7 +72,7 @@ public class ASTASMDefinition
|
|||
/* (non-Javadoc)
|
||||
* @see org.eclipse.cdt.core.parser.ISourceElementCallbackDelegate#accept(org.eclipse.cdt.core.parser.ISourceElementRequestor)
|
||||
*/
|
||||
public void acceptElement(ISourceElementRequestor requestor)
|
||||
public void acceptElement(ISourceElementRequestor requestor, IReferenceManager manager)
|
||||
{
|
||||
try
|
||||
{
|
||||
|
@ -86,14 +87,14 @@ public class ASTASMDefinition
|
|||
/* (non-Javadoc)
|
||||
* @see org.eclipse.cdt.core.parser.ISourceElementCallbackDelegate#enter(org.eclipse.cdt.core.parser.ISourceElementRequestor)
|
||||
*/
|
||||
public void enterScope(ISourceElementRequestor requestor)
|
||||
public void enterScope(ISourceElementRequestor requestor, IReferenceManager manager)
|
||||
{
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see org.eclipse.cdt.core.parser.ISourceElementCallbackDelegate#exit(org.eclipse.cdt.core.parser.ISourceElementRequestor)
|
||||
*/
|
||||
public void exitScope(ISourceElementRequestor requestor)
|
||||
public void exitScope(ISourceElementRequestor requestor, IReferenceManager manager)
|
||||
{
|
||||
}
|
||||
|
||||
|
|
|
@ -15,6 +15,7 @@ import org.eclipse.cdt.core.parser.ast.IASTAbstractTypeSpecifierDeclaration;
|
|||
import org.eclipse.cdt.core.parser.ast.IASTScope;
|
||||
import org.eclipse.cdt.core.parser.ast.IASTTemplate;
|
||||
import org.eclipse.cdt.core.parser.ast.IASTTypeSpecifier;
|
||||
import org.eclipse.cdt.core.parser.ast.IReferenceManager;
|
||||
import org.eclipse.cdt.internal.core.parser.ast.Offsets;
|
||||
|
||||
/**
|
||||
|
@ -91,7 +92,7 @@ public class ASTAbstractTypeSpecifierDeclaration
|
|||
/* (non-Javadoc)
|
||||
* @see org.eclipse.cdt.core.parser.ISourceElementCallbackDelegate#accept(org.eclipse.cdt.core.parser.ISourceElementRequestor)
|
||||
*/
|
||||
public void acceptElement(ISourceElementRequestor requestor)
|
||||
public void acceptElement(ISourceElementRequestor requestor, IReferenceManager manager)
|
||||
{
|
||||
try
|
||||
{
|
||||
|
@ -109,14 +110,14 @@ public class ASTAbstractTypeSpecifierDeclaration
|
|||
/* (non-Javadoc)
|
||||
* @see org.eclipse.cdt.core.parser.ISourceElementCallbackDelegate#enter(org.eclipse.cdt.core.parser.ISourceElementRequestor)
|
||||
*/
|
||||
public void enterScope(ISourceElementRequestor requestor)
|
||||
public void enterScope(ISourceElementRequestor requestor, IReferenceManager manager)
|
||||
{
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see org.eclipse.cdt.core.parser.ISourceElementCallbackDelegate#exit(org.eclipse.cdt.core.parser.ISourceElementRequestor)
|
||||
*/
|
||||
public void exitScope(ISourceElementRequestor requestor)
|
||||
public void exitScope(ISourceElementRequestor requestor, IReferenceManager manager)
|
||||
{
|
||||
}
|
||||
|
||||
|
|
|
@ -16,6 +16,7 @@ import org.eclipse.cdt.core.parser.ast.ASTNotImplementedException;
|
|||
import org.eclipse.cdt.core.parser.ast.IASTBaseSpecifier;
|
||||
import org.eclipse.cdt.core.parser.ast.IASTReference;
|
||||
import org.eclipse.cdt.core.parser.ast.IASTTypeSpecifier;
|
||||
import org.eclipse.cdt.core.parser.ast.IReferenceManager;
|
||||
|
||||
/**
|
||||
* @author jcamelon
|
||||
|
@ -86,20 +87,20 @@ public class ASTBaseSpecifier implements IASTBaseSpecifier {
|
|||
/* (non-Javadoc)
|
||||
* @see org.eclipse.cdt.core.parser.ISourceElementCallbackDelegate#acceptElement(org.eclipse.cdt.core.parser.ISourceElementRequestor)
|
||||
*/
|
||||
public void acceptElement(ISourceElementRequestor requestor)
|
||||
public void acceptElement(ISourceElementRequestor requestor, IReferenceManager manager)
|
||||
{
|
||||
// no references to process
|
||||
}
|
||||
/* (non-Javadoc)
|
||||
* @see org.eclipse.cdt.core.parser.ISourceElementCallbackDelegate#enterScope(org.eclipse.cdt.core.parser.ISourceElementRequestor)
|
||||
*/
|
||||
public void enterScope(ISourceElementRequestor requestor)
|
||||
public void enterScope(ISourceElementRequestor requestor, IReferenceManager manager)
|
||||
{
|
||||
}
|
||||
/* (non-Javadoc)
|
||||
* @see org.eclipse.cdt.core.parser.ISourceElementCallbackDelegate#exitScope(org.eclipse.cdt.core.parser.ISourceElementRequestor)
|
||||
*/
|
||||
public void exitScope(ISourceElementRequestor requestor)
|
||||
public void exitScope(ISourceElementRequestor requestor, IReferenceManager manager)
|
||||
{
|
||||
}
|
||||
|
||||
|
|
|
@ -19,6 +19,7 @@ import org.eclipse.cdt.core.parser.ast.ASTClassKind;
|
|||
import org.eclipse.cdt.core.parser.ast.IASTBaseSpecifier;
|
||||
import org.eclipse.cdt.core.parser.ast.IASTDeclaration;
|
||||
import org.eclipse.cdt.core.parser.ast.IASTScope;
|
||||
import org.eclipse.cdt.core.parser.ast.IReferenceManager;
|
||||
import org.eclipse.cdt.internal.core.parser.ast.NamedOffsets;
|
||||
/**
|
||||
* @author jcamelon
|
||||
|
@ -165,13 +166,13 @@ public class ASTClassSpecifier extends ASTScopedTypeSpecifier implements IASTQCl
|
|||
/* (non-Javadoc)
|
||||
* @see org.eclipse.cdt.core.parser.ISourceElementCallbackDelegate#accept(org.eclipse.cdt.core.parser.ISourceElementRequestor)
|
||||
*/
|
||||
public void acceptElement(ISourceElementRequestor requestor)
|
||||
public void acceptElement(ISourceElementRequestor requestor, IReferenceManager manager)
|
||||
{
|
||||
}
|
||||
/* (non-Javadoc)
|
||||
* @see org.eclipse.cdt.core.parser.ISourceElementCallbackDelegate#enter(org.eclipse.cdt.core.parser.ISourceElementRequestor)
|
||||
*/
|
||||
public void enterScope(ISourceElementRequestor requestor)
|
||||
public void enterScope(ISourceElementRequestor requestor, IReferenceManager manager)
|
||||
{
|
||||
try
|
||||
{
|
||||
|
@ -185,7 +186,7 @@ public class ASTClassSpecifier extends ASTScopedTypeSpecifier implements IASTQCl
|
|||
/* (non-Javadoc)
|
||||
* @see org.eclipse.cdt.core.parser.ISourceElementCallbackDelegate#exit(org.eclipse.cdt.core.parser.ISourceElementRequestor)
|
||||
*/
|
||||
public void exitScope(ISourceElementRequestor requestor)
|
||||
public void exitScope(ISourceElementRequestor requestor, IReferenceManager manager)
|
||||
{
|
||||
try
|
||||
{
|
||||
|
|
|
@ -17,6 +17,7 @@ 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;
|
||||
import org.eclipse.cdt.core.parser.ast.IReferenceManager;
|
||||
|
||||
/**
|
||||
* @author jcamelon
|
||||
|
@ -41,13 +42,13 @@ public class ASTCompilationUnit extends ASTNode implements IASTCompilationUnit,
|
|||
/* (non-Javadoc)
|
||||
* @see org.eclipse.cdt.core.parser.ISourceElementCallbackDelegate#accept(org.eclipse.cdt.core.parser.ISourceElementRequestor)
|
||||
*/
|
||||
public void acceptElement(ISourceElementRequestor requestor)
|
||||
public void acceptElement(ISourceElementRequestor requestor, IReferenceManager manager)
|
||||
{
|
||||
}
|
||||
/* (non-Javadoc)
|
||||
* @see org.eclipse.cdt.core.parser.ISourceElementCallbackDelegate#enter(org.eclipse.cdt.core.parser.ISourceElementRequestor)
|
||||
*/
|
||||
public void enterScope(ISourceElementRequestor requestor)
|
||||
public void enterScope(ISourceElementRequestor requestor, IReferenceManager manager)
|
||||
{
|
||||
try
|
||||
{
|
||||
|
@ -62,7 +63,7 @@ public class ASTCompilationUnit extends ASTNode implements IASTCompilationUnit,
|
|||
/* (non-Javadoc)
|
||||
* @see org.eclipse.cdt.core.parser.ISourceElementCallbackDelegate#exit(org.eclipse.cdt.core.parser.ISourceElementRequestor)
|
||||
*/
|
||||
public void exitScope(ISourceElementRequestor requestor)
|
||||
public void exitScope(ISourceElementRequestor requestor, IReferenceManager manager)
|
||||
{
|
||||
try
|
||||
{
|
||||
|
|
|
@ -13,6 +13,7 @@ package org.eclipse.cdt.internal.core.parser.ast.quick;
|
|||
import org.eclipse.cdt.core.parser.ISourceElementRequestor;
|
||||
import org.eclipse.cdt.core.parser.ast.IASTConstructorMemberInitializer;
|
||||
import org.eclipse.cdt.core.parser.ast.IASTExpression;
|
||||
import org.eclipse.cdt.core.parser.ast.IReferenceManager;
|
||||
|
||||
/**
|
||||
* @author jcamelon
|
||||
|
@ -50,19 +51,19 @@ public class ASTConstructorMemberInitializer
|
|||
/* (non-Javadoc)
|
||||
* @see org.eclipse.cdt.core.parser.ISourceElementCallbackDelegate#acceptElement(org.eclipse.cdt.core.parser.ISourceElementRequestor)
|
||||
*/
|
||||
public void acceptElement(ISourceElementRequestor requestor)
|
||||
public void acceptElement(ISourceElementRequestor requestor, IReferenceManager manager)
|
||||
{
|
||||
}
|
||||
/* (non-Javadoc)
|
||||
* @see org.eclipse.cdt.core.parser.ISourceElementCallbackDelegate#enterScope(org.eclipse.cdt.core.parser.ISourceElementRequestor)
|
||||
*/
|
||||
public void enterScope(ISourceElementRequestor requestor)
|
||||
public void enterScope(ISourceElementRequestor requestor, IReferenceManager manager)
|
||||
{
|
||||
}
|
||||
/* (non-Javadoc)
|
||||
* @see org.eclipse.cdt.core.parser.ISourceElementCallbackDelegate#exitScope(org.eclipse.cdt.core.parser.ISourceElementRequestor)
|
||||
*/
|
||||
public void exitScope(ISourceElementRequestor requestor)
|
||||
public void exitScope(ISourceElementRequestor requestor, IReferenceManager manager)
|
||||
{
|
||||
}
|
||||
}
|
||||
|
|
|
@ -15,6 +15,7 @@ import org.eclipse.cdt.core.parser.ast.ASTClassKind;
|
|||
import org.eclipse.cdt.core.parser.ast.ASTNotImplementedException;
|
||||
import org.eclipse.cdt.core.parser.ast.IASTElaboratedTypeSpecifier;
|
||||
import org.eclipse.cdt.core.parser.ast.IASTScope;
|
||||
import org.eclipse.cdt.core.parser.ast.IReferenceManager;
|
||||
import org.eclipse.cdt.internal.core.parser.ast.ASTQualifiedNamedElement;
|
||||
import org.eclipse.cdt.internal.core.parser.ast.NamedOffsets;
|
||||
|
||||
|
@ -105,7 +106,7 @@ public class ASTElaboratedTypeSpecifier extends ASTNode implements IASTElaborate
|
|||
/* (non-Javadoc)
|
||||
* @see org.eclipse.cdt.core.parser.ISourceElementCallbackDelegate#acceptElement(org.eclipse.cdt.core.parser.ISourceElementRequestor)
|
||||
*/
|
||||
public void acceptElement(ISourceElementRequestor requestor)
|
||||
public void acceptElement(ISourceElementRequestor requestor, IReferenceManager manager)
|
||||
{
|
||||
try
|
||||
{
|
||||
|
@ -119,13 +120,13 @@ public class ASTElaboratedTypeSpecifier extends ASTNode implements IASTElaborate
|
|||
/* (non-Javadoc)
|
||||
* @see org.eclipse.cdt.core.parser.ISourceElementCallbackDelegate#enterScope(org.eclipse.cdt.core.parser.ISourceElementRequestor)
|
||||
*/
|
||||
public void enterScope(ISourceElementRequestor requestor)
|
||||
public void enterScope(ISourceElementRequestor requestor, IReferenceManager manager)
|
||||
{
|
||||
}
|
||||
/* (non-Javadoc)
|
||||
* @see org.eclipse.cdt.core.parser.ISourceElementCallbackDelegate#exitScope(org.eclipse.cdt.core.parser.ISourceElementRequestor)
|
||||
*/
|
||||
public void exitScope(ISourceElementRequestor requestor)
|
||||
public void exitScope(ISourceElementRequestor requestor, IReferenceManager manager)
|
||||
{
|
||||
}
|
||||
/* (non-Javadoc)
|
||||
|
|
|
@ -19,6 +19,7 @@ import org.eclipse.cdt.core.parser.ast.IASTEnumerationSpecifier;
|
|||
import org.eclipse.cdt.core.parser.ast.IASTEnumerator;
|
||||
import org.eclipse.cdt.core.parser.ast.IASTOffsetableNamedElement;
|
||||
import org.eclipse.cdt.core.parser.ast.IASTScope;
|
||||
import org.eclipse.cdt.core.parser.ast.IReferenceManager;
|
||||
import org.eclipse.cdt.internal.core.parser.ast.NamedOffsets;
|
||||
|
||||
/**
|
||||
|
@ -109,7 +110,7 @@ public class ASTEnumerationSpecifier extends ASTScopedTypeSpecifier
|
|||
/* (non-Javadoc)
|
||||
* @see org.eclipse.cdt.core.parser.ISourceElementCallbackDelegate#accept(org.eclipse.cdt.core.parser.ISourceElementRequestor)
|
||||
*/
|
||||
public void acceptElement(ISourceElementRequestor requestor)
|
||||
public void acceptElement(ISourceElementRequestor requestor, IReferenceManager manager)
|
||||
{
|
||||
try
|
||||
{
|
||||
|
@ -123,13 +124,13 @@ public class ASTEnumerationSpecifier extends ASTScopedTypeSpecifier
|
|||
/* (non-Javadoc)
|
||||
* @see org.eclipse.cdt.core.parser.ISourceElementCallbackDelegate#enter(org.eclipse.cdt.core.parser.ISourceElementRequestor)
|
||||
*/
|
||||
public void enterScope(ISourceElementRequestor requestor)
|
||||
public void enterScope(ISourceElementRequestor requestor, IReferenceManager manager)
|
||||
{
|
||||
}
|
||||
/* (non-Javadoc)
|
||||
* @see org.eclipse.cdt.core.parser.ISourceElementCallbackDelegate#exit(org.eclipse.cdt.core.parser.ISourceElementRequestor)
|
||||
*/
|
||||
public void exitScope(ISourceElementRequestor requestor)
|
||||
public void exitScope(ISourceElementRequestor requestor, IReferenceManager manager)
|
||||
{
|
||||
}
|
||||
|
||||
|
|
|
@ -15,6 +15,7 @@ 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.IASTOffsetableNamedElement;
|
||||
import org.eclipse.cdt.core.parser.ast.IReferenceManager;
|
||||
import org.eclipse.cdt.internal.core.parser.ast.NamedOffsets;
|
||||
import org.eclipse.cdt.internal.core.parser.ast.complete.ASTNode;
|
||||
|
||||
|
@ -112,19 +113,19 @@ public class ASTEnumerator extends ASTNode
|
|||
/* (non-Javadoc)
|
||||
* @see org.eclipse.cdt.core.parser.ISourceElementCallbackDelegate#acceptElement(org.eclipse.cdt.core.parser.ISourceElementRequestor)
|
||||
*/
|
||||
public void acceptElement(ISourceElementRequestor requestor)
|
||||
public void acceptElement(ISourceElementRequestor requestor, IReferenceManager manager)
|
||||
{
|
||||
}
|
||||
/* (non-Javadoc)
|
||||
* @see org.eclipse.cdt.core.parser.ISourceElementCallbackDelegate#enterScope(org.eclipse.cdt.core.parser.ISourceElementRequestor)
|
||||
*/
|
||||
public void enterScope(ISourceElementRequestor requestor)
|
||||
public void enterScope(ISourceElementRequestor requestor, IReferenceManager manager)
|
||||
{
|
||||
}
|
||||
/* (non-Javadoc)
|
||||
* @see org.eclipse.cdt.core.parser.ISourceElementCallbackDelegate#exitScope(org.eclipse.cdt.core.parser.ISourceElementRequestor)
|
||||
*/
|
||||
public void exitScope(ISourceElementRequestor requestor)
|
||||
public void exitScope(ISourceElementRequestor requestor, IReferenceManager manager)
|
||||
{
|
||||
}
|
||||
|
||||
|
|
|
@ -17,6 +17,7 @@ import java.util.List;
|
|||
import org.eclipse.cdt.core.parser.ISourceElementRequestor;
|
||||
import org.eclipse.cdt.core.parser.ast.IASTExceptionSpecification;
|
||||
import org.eclipse.cdt.core.parser.ast.IASTTypeId;
|
||||
import org.eclipse.cdt.core.parser.ast.IReferenceManager;
|
||||
|
||||
/**
|
||||
* @author jcamelon
|
||||
|
@ -47,21 +48,21 @@ public class ASTExceptionSpecification implements IASTExceptionSpecification
|
|||
/* (non-Javadoc)
|
||||
* @see org.eclipse.cdt.core.parser.ISourceElementCallbackDelegate#acceptElement(org.eclipse.cdt.core.parser.ISourceElementRequestor)
|
||||
*/
|
||||
public void acceptElement(ISourceElementRequestor requestor)
|
||||
public void acceptElement(ISourceElementRequestor requestor, IReferenceManager manager)
|
||||
{
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see org.eclipse.cdt.core.parser.ISourceElementCallbackDelegate#enterScope(org.eclipse.cdt.core.parser.ISourceElementRequestor)
|
||||
*/
|
||||
public void enterScope(ISourceElementRequestor requestor)
|
||||
public void enterScope(ISourceElementRequestor requestor, IReferenceManager manager)
|
||||
{
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see org.eclipse.cdt.core.parser.ISourceElementCallbackDelegate#exitScope(org.eclipse.cdt.core.parser.ISourceElementRequestor)
|
||||
*/
|
||||
public void exitScope(ISourceElementRequestor requestor)
|
||||
public void exitScope(ISourceElementRequestor requestor, IReferenceManager manager)
|
||||
{
|
||||
}
|
||||
}
|
||||
|
|
|
@ -17,6 +17,7 @@ import org.eclipse.cdt.core.parser.ast.IASTExpression;
|
|||
import org.eclipse.cdt.core.parser.ast.IASTField;
|
||||
import org.eclipse.cdt.core.parser.ast.IASTInitializerClause;
|
||||
import org.eclipse.cdt.core.parser.ast.IASTScope;
|
||||
import org.eclipse.cdt.core.parser.ast.IReferenceManager;
|
||||
|
||||
/**
|
||||
* @author jcamelon
|
||||
|
@ -62,7 +63,7 @@ public class ASTField extends ASTVariable implements IASTField
|
|||
return visibility;
|
||||
}
|
||||
|
||||
public void acceptElement( ISourceElementRequestor requestor )
|
||||
public void acceptElement( ISourceElementRequestor requestor, IReferenceManager manager )
|
||||
{
|
||||
try
|
||||
{
|
||||
|
@ -74,11 +75,11 @@ public class ASTField extends ASTVariable implements IASTField
|
|||
}
|
||||
}
|
||||
|
||||
public void enterScope( ISourceElementRequestor requestor )
|
||||
public void enterScope( ISourceElementRequestor requestor, IReferenceManager manager )
|
||||
{
|
||||
}
|
||||
|
||||
public void exitScope( ISourceElementRequestor requestor )
|
||||
public void exitScope( ISourceElementRequestor requestor, IReferenceManager manager )
|
||||
{
|
||||
}
|
||||
|
||||
|
|
|
@ -22,6 +22,7 @@ import org.eclipse.cdt.core.parser.ast.IASTFunction;
|
|||
import org.eclipse.cdt.core.parser.ast.IASTQualifiedNameElement;
|
||||
import org.eclipse.cdt.core.parser.ast.IASTScope;
|
||||
import org.eclipse.cdt.core.parser.ast.IASTTemplate;
|
||||
import org.eclipse.cdt.core.parser.ast.IReferenceManager;
|
||||
import org.eclipse.cdt.internal.core.parser.ast.ASTQualifiedNamedElement;
|
||||
import org.eclipse.cdt.internal.core.parser.ast.NamedOffsets;
|
||||
|
||||
|
@ -184,7 +185,7 @@ public class ASTFunction extends ASTDeclaration implements IASTFunction
|
|||
/* (non-Javadoc)
|
||||
* @see org.eclipse.cdt.core.parser.ISourceElementCallbackDelegate#accept(org.eclipse.cdt.core.parser.ISourceElementRequestor)
|
||||
*/
|
||||
public void acceptElement(ISourceElementRequestor requestor)
|
||||
public void acceptElement(ISourceElementRequestor requestor, IReferenceManager manager)
|
||||
{
|
||||
try
|
||||
{
|
||||
|
@ -202,7 +203,7 @@ public class ASTFunction extends ASTDeclaration implements IASTFunction
|
|||
/* (non-Javadoc)
|
||||
* @see org.eclipse.cdt.core.parser.ISourceElementCallbackDelegate#enter(org.eclipse.cdt.core.parser.ISourceElementRequestor)
|
||||
*/
|
||||
public void enterScope(ISourceElementRequestor requestor)
|
||||
public void enterScope(ISourceElementRequestor requestor, IReferenceManager manager)
|
||||
{
|
||||
try
|
||||
{
|
||||
|
@ -217,7 +218,7 @@ public class ASTFunction extends ASTDeclaration implements IASTFunction
|
|||
/* (non-Javadoc)
|
||||
* @see org.eclipse.cdt.core.parser.ISourceElementCallbackDelegate#exit(org.eclipse.cdt.core.parser.ISourceElementRequestor)
|
||||
*/
|
||||
public void exitScope(ISourceElementRequestor requestor)
|
||||
public void exitScope(ISourceElementRequestor requestor, IReferenceManager manager)
|
||||
{
|
||||
try
|
||||
{
|
||||
|
|
|
@ -18,6 +18,7 @@ import org.eclipse.cdt.core.parser.ast.ASTNotImplementedException;
|
|||
import org.eclipse.cdt.core.parser.ast.IASTExpression;
|
||||
import org.eclipse.cdt.core.parser.ast.IASTInitializerClause;
|
||||
import org.eclipse.cdt.core.parser.ast.IASTVariable;
|
||||
import org.eclipse.cdt.core.parser.ast.IReferenceManager;
|
||||
import org.eclipse.cdt.internal.core.parser.ast.EmptyIterator;
|
||||
|
||||
/**
|
||||
|
@ -60,21 +61,21 @@ public class ASTInitializerClause implements IASTInitializerClause {
|
|||
/* (non-Javadoc)
|
||||
* @see org.eclipse.cdt.core.parser.ISourceElementCallbackDelegate#acceptElement(org.eclipse.cdt.core.parser.ISourceElementRequestor)
|
||||
*/
|
||||
public void acceptElement(ISourceElementRequestor requestor)
|
||||
public void acceptElement(ISourceElementRequestor requestor, IReferenceManager manager)
|
||||
{
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see org.eclipse.cdt.core.parser.ISourceElementCallbackDelegate#enterScope(org.eclipse.cdt.core.parser.ISourceElementRequestor)
|
||||
*/
|
||||
public void enterScope(ISourceElementRequestor requestor)
|
||||
public void enterScope(ISourceElementRequestor requestor, IReferenceManager manager)
|
||||
{
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see org.eclipse.cdt.core.parser.ISourceElementCallbackDelegate#exitScope(org.eclipse.cdt.core.parser.ISourceElementRequestor)
|
||||
*/
|
||||
public void exitScope(ISourceElementRequestor requestor)
|
||||
public void exitScope(ISourceElementRequestor requestor, IReferenceManager manager)
|
||||
{
|
||||
}
|
||||
|
||||
|
|
|
@ -18,6 +18,7 @@ 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;
|
||||
import org.eclipse.cdt.core.parser.ast.IReferenceManager;
|
||||
import org.eclipse.cdt.internal.core.parser.ast.Offsets;
|
||||
|
||||
/**
|
||||
|
@ -92,14 +93,14 @@ public class ASTLinkageSpecification
|
|||
/* (non-Javadoc)
|
||||
* @see org.eclipse.cdt.core.parser.ISourceElementCallbackDelegate#accept(org.eclipse.cdt.core.parser.ISourceElementRequestor)
|
||||
*/
|
||||
public void acceptElement(ISourceElementRequestor requestor)
|
||||
public void acceptElement(ISourceElementRequestor requestor, IReferenceManager manager)
|
||||
{
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see org.eclipse.cdt.core.parser.ISourceElementCallbackDelegate#enter(org.eclipse.cdt.core.parser.ISourceElementRequestor)
|
||||
*/
|
||||
public void enterScope(ISourceElementRequestor requestor)
|
||||
public void enterScope(ISourceElementRequestor requestor, IReferenceManager manager)
|
||||
{
|
||||
try
|
||||
{
|
||||
|
@ -114,7 +115,7 @@ public class ASTLinkageSpecification
|
|||
/* (non-Javadoc)
|
||||
* @see org.eclipse.cdt.core.parser.ISourceElementCallbackDelegate#exit(org.eclipse.cdt.core.parser.ISourceElementRequestor)
|
||||
*/
|
||||
public void exitScope(ISourceElementRequestor requestor)
|
||||
public void exitScope(ISourceElementRequestor requestor, IReferenceManager manager)
|
||||
{
|
||||
try
|
||||
{
|
||||
|
|
|
@ -21,6 +21,7 @@ import org.eclipse.cdt.core.parser.ast.IASTMethod;
|
|||
import org.eclipse.cdt.core.parser.ast.IASTQualifiedNameElement;
|
||||
import org.eclipse.cdt.core.parser.ast.IASTScope;
|
||||
import org.eclipse.cdt.core.parser.ast.IASTTemplate;
|
||||
import org.eclipse.cdt.core.parser.ast.IReferenceManager;
|
||||
import org.eclipse.cdt.internal.core.parser.ast.ASTQualifiedNamedElement;
|
||||
import org.eclipse.cdt.internal.core.parser.ast.EmptyIterator;
|
||||
/**
|
||||
|
@ -167,7 +168,7 @@ public class ASTMethod extends ASTFunction implements IASTMethod
|
|||
*/
|
||||
|
||||
|
||||
public void acceptElement( ISourceElementRequestor requestor )
|
||||
public void acceptElement( ISourceElementRequestor requestor, IReferenceManager manager )
|
||||
{
|
||||
try
|
||||
{
|
||||
|
@ -182,7 +183,7 @@ public class ASTMethod extends ASTFunction implements IASTMethod
|
|||
}
|
||||
}
|
||||
|
||||
public void enterScope( ISourceElementRequestor requestor )
|
||||
public void enterScope( ISourceElementRequestor requestor, IReferenceManager manager )
|
||||
{
|
||||
try
|
||||
{
|
||||
|
@ -194,7 +195,7 @@ public class ASTMethod extends ASTFunction implements IASTMethod
|
|||
}
|
||||
}
|
||||
|
||||
public void exitScope( ISourceElementRequestor requestor )
|
||||
public void exitScope( ISourceElementRequestor requestor, IReferenceManager manager )
|
||||
{
|
||||
try
|
||||
{
|
||||
|
|
|
@ -15,6 +15,7 @@ import org.eclipse.cdt.core.parser.ast.ASTNotImplementedException;
|
|||
import org.eclipse.cdt.core.parser.ast.IASTNamespaceAlias;
|
||||
import org.eclipse.cdt.core.parser.ast.IASTNamespaceDefinition;
|
||||
import org.eclipse.cdt.core.parser.ast.IASTScope;
|
||||
import org.eclipse.cdt.core.parser.ast.IReferenceManager;
|
||||
import org.eclipse.cdt.internal.core.parser.ast.NamedOffsets;
|
||||
|
||||
/**
|
||||
|
@ -48,21 +49,21 @@ public class ASTNamespaceAlias extends ASTDeclaration implements IASTNamespaceAl
|
|||
/* (non-Javadoc)
|
||||
* @see org.eclipse.cdt.core.parser.ISourceElementCallbackDelegate#acceptElement(org.eclipse.cdt.core.parser.ISourceElementRequestor)
|
||||
*/
|
||||
public void acceptElement(ISourceElementRequestor requestor)
|
||||
public void acceptElement(ISourceElementRequestor requestor, IReferenceManager manager)
|
||||
{
|
||||
|
||||
}
|
||||
/* (non-Javadoc)
|
||||
* @see org.eclipse.cdt.core.parser.ISourceElementCallbackDelegate#enterScope(org.eclipse.cdt.core.parser.ISourceElementRequestor)
|
||||
*/
|
||||
public void enterScope(ISourceElementRequestor requestor)
|
||||
public void enterScope(ISourceElementRequestor requestor, IReferenceManager manager)
|
||||
{
|
||||
|
||||
}
|
||||
/* (non-Javadoc)
|
||||
* @see org.eclipse.cdt.core.parser.ISourceElementCallbackDelegate#exitScope(org.eclipse.cdt.core.parser.ISourceElementRequestor)
|
||||
*/
|
||||
public void exitScope(ISourceElementRequestor requestor)
|
||||
public void exitScope(ISourceElementRequestor requestor, IReferenceManager manager)
|
||||
{
|
||||
|
||||
}
|
||||
|
|
|
@ -18,6 +18,7 @@ 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;
|
||||
import org.eclipse.cdt.core.parser.ast.IReferenceManager;
|
||||
import org.eclipse.cdt.internal.core.parser.ast.ASTQualifiedNamedElement;
|
||||
import org.eclipse.cdt.internal.core.parser.ast.NamedOffsets;
|
||||
|
||||
|
@ -113,13 +114,13 @@ public class ASTNamespaceDefinition extends ASTDeclaration implements IASTNamesp
|
|||
/* (non-Javadoc)
|
||||
* @see org.eclipse.cdt.core.parser.ISourceElementCallbackDelegate#accept(org.eclipse.cdt.core.parser.ISourceElementRequestor)
|
||||
*/
|
||||
public void acceptElement(ISourceElementRequestor requestor)
|
||||
public void acceptElement(ISourceElementRequestor requestor, IReferenceManager manager)
|
||||
{
|
||||
}
|
||||
/* (non-Javadoc)
|
||||
* @see org.eclipse.cdt.core.parser.ISourceElementCallbackDelegate#enter(org.eclipse.cdt.core.parser.ISourceElementRequestor)
|
||||
*/
|
||||
public void enterScope(ISourceElementRequestor requestor)
|
||||
public void enterScope(ISourceElementRequestor requestor, IReferenceManager manager)
|
||||
{
|
||||
try
|
||||
{
|
||||
|
@ -133,7 +134,7 @@ public class ASTNamespaceDefinition extends ASTDeclaration implements IASTNamesp
|
|||
/* (non-Javadoc)
|
||||
* @see org.eclipse.cdt.core.parser.ISourceElementCallbackDelegate#exit(org.eclipse.cdt.core.parser.ISourceElementRequestor)
|
||||
*/
|
||||
public void exitScope(ISourceElementRequestor requestor)
|
||||
public void exitScope(ISourceElementRequestor requestor, IReferenceManager manager)
|
||||
{
|
||||
try
|
||||
{
|
||||
|
|
|
@ -13,7 +13,9 @@ package org.eclipse.cdt.internal.core.parser.ast.quick;
|
|||
import java.util.Iterator;
|
||||
|
||||
import org.eclipse.cdt.core.parser.ISourceElementRequestor;
|
||||
import org.eclipse.cdt.core.parser.ast.IReferenceManager;
|
||||
import org.eclipse.cdt.core.parser.ast.IASTExpression.IASTNewExpressionDescriptor;
|
||||
import org.eclipse.cdt.internal.core.parser.ast.EmptyIterator;
|
||||
|
||||
/**
|
||||
* @author jcamelon
|
||||
|
@ -25,45 +27,48 @@ public class ASTNewDescriptor implements IASTNewExpressionDescriptor {
|
|||
* @see org.eclipse.cdt.core.parser.ast.IASTExpression.IASTNewExpressionDescriptor#getNewInitializerExpressions()
|
||||
*/
|
||||
public Iterator getNewInitializerExpressions() {
|
||||
// TODO Auto-generated method stub
|
||||
return null;
|
||||
return EmptyIterator.EMPTY_ITERATOR;
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see org.eclipse.cdt.core.parser.ast.IASTExpression.IASTNewExpressionDescriptor#getNewPlacementExpressions()
|
||||
*/
|
||||
public Iterator getNewPlacementExpressions() {
|
||||
// TODO Auto-generated method stub
|
||||
return null;
|
||||
return EmptyIterator.EMPTY_ITERATOR;
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see org.eclipse.cdt.core.parser.ast.IASTExpression.IASTNewExpressionDescriptor#getTypeIdExpressions()
|
||||
*/
|
||||
public Iterator getNewTypeIdExpressions() {
|
||||
// TODO Auto-generated method stub
|
||||
return null;
|
||||
return EmptyIterator.EMPTY_ITERATOR;
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see org.eclipse.cdt.core.parser.ISourceElementCallbackDelegate#acceptElement(org.eclipse.cdt.core.parser.ISourceElementRequestor)
|
||||
*/
|
||||
public void acceptElement(ISourceElementRequestor requestor)
|
||||
public void acceptElement(ISourceElementRequestor requestor, IReferenceManager manager)
|
||||
{
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see org.eclipse.cdt.core.parser.ISourceElementCallbackDelegate#enterScope(org.eclipse.cdt.core.parser.ISourceElementRequestor)
|
||||
*/
|
||||
public void enterScope(ISourceElementRequestor requestor)
|
||||
public void enterScope(ISourceElementRequestor requestor, IReferenceManager manager)
|
||||
{
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see org.eclipse.cdt.core.parser.ISourceElementCallbackDelegate#exitScope(org.eclipse.cdt.core.parser.ISourceElementRequestor)
|
||||
*/
|
||||
public void exitScope(ISourceElementRequestor requestor)
|
||||
public void exitScope(ISourceElementRequestor requestor, IReferenceManager manager)
|
||||
{
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see org.eclipse.cdt.core.parser.ast.IASTExpression.IASTNewExpressionDescriptor#freeReferences(org.eclipse.cdt.core.parser.ast.IReferenceManager)
|
||||
*/
|
||||
public void freeReferences(IReferenceManager manager) {
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -17,6 +17,7 @@ import org.eclipse.cdt.core.parser.ITokenDuple;
|
|||
import org.eclipse.cdt.core.parser.ast.ASTNotImplementedException;
|
||||
import org.eclipse.cdt.core.parser.ast.IASTSimpleTypeSpecifier;
|
||||
import org.eclipse.cdt.core.parser.ast.IASTTypeSpecifier;
|
||||
import org.eclipse.cdt.core.parser.ast.IReferenceManager;
|
||||
|
||||
/**
|
||||
* @author jcamelon
|
||||
|
@ -136,4 +137,11 @@ public class ASTSimpleTypeSpecifier extends ASTNode implements IASTSimpleTypeSpe
|
|||
{
|
||||
return imaginary;
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see org.eclipse.cdt.core.parser.ast.IASTSimpleTypeSpecifier#releaseReferences(org.eclipse.cdt.core.parser.ast.IReferenceManager)
|
||||
*/
|
||||
public void releaseReferences(IReferenceManager referenceManager) {
|
||||
// DO NOTHING
|
||||
}
|
||||
}
|
||||
|
|
|
@ -19,6 +19,7 @@ import org.eclipse.cdt.core.parser.ast.ASTNotImplementedException;
|
|||
import org.eclipse.cdt.core.parser.ast.IASTDeclaration;
|
||||
import org.eclipse.cdt.core.parser.ast.IASTScope;
|
||||
import org.eclipse.cdt.core.parser.ast.IASTTemplateDeclaration;
|
||||
import org.eclipse.cdt.core.parser.ast.IReferenceManager;
|
||||
import org.eclipse.cdt.internal.core.parser.ast.EmptyIterator;
|
||||
import org.eclipse.cdt.internal.core.parser.ast.Offsets;
|
||||
|
||||
|
@ -106,14 +107,14 @@ public class ASTTemplateDeclaration extends ASTDeclaration implements IASTTempla
|
|||
/* (non-Javadoc)
|
||||
* @see org.eclipse.cdt.core.parser.ISourceElementCallbackDelegate#accept(org.eclipse.cdt.core.parser.ISourceElementRequestor)
|
||||
*/
|
||||
public void acceptElement(ISourceElementRequestor requestor)
|
||||
public void acceptElement(ISourceElementRequestor requestor, IReferenceManager manager)
|
||||
{
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see org.eclipse.cdt.core.parser.ISourceElementCallbackDelegate#enter(org.eclipse.cdt.core.parser.ISourceElementRequestor)
|
||||
*/
|
||||
public void enterScope(ISourceElementRequestor requestor)
|
||||
public void enterScope(ISourceElementRequestor requestor, IReferenceManager manager)
|
||||
{
|
||||
try
|
||||
{
|
||||
|
@ -128,7 +129,7 @@ public class ASTTemplateDeclaration extends ASTDeclaration implements IASTTempla
|
|||
/* (non-Javadoc)
|
||||
* @see org.eclipse.cdt.core.parser.ISourceElementCallbackDelegate#exit(org.eclipse.cdt.core.parser.ISourceElementRequestor)
|
||||
*/
|
||||
public void exitScope(ISourceElementRequestor requestor)
|
||||
public void exitScope(ISourceElementRequestor requestor, IReferenceManager manager)
|
||||
{
|
||||
try
|
||||
{
|
||||
|
|
|
@ -18,6 +18,7 @@ import org.eclipse.cdt.core.parser.ast.IASTDeclaration;
|
|||
import org.eclipse.cdt.core.parser.ast.IASTScope;
|
||||
import org.eclipse.cdt.core.parser.ast.IASTTemplateDeclaration;
|
||||
import org.eclipse.cdt.core.parser.ast.IASTTemplateInstantiation;
|
||||
import org.eclipse.cdt.core.parser.ast.IReferenceManager;
|
||||
import org.eclipse.cdt.internal.core.parser.ast.Offsets;
|
||||
|
||||
/**
|
||||
|
@ -89,14 +90,14 @@ public class ASTTemplateInstantiation extends ASTDeclaration implements IASTTemp
|
|||
/* (non-Javadoc)
|
||||
* @see org.eclipse.cdt.core.parser.ISourceElementCallbackDelegate#accept(org.eclipse.cdt.core.parser.ISourceElementRequestor)
|
||||
*/
|
||||
public void acceptElement(ISourceElementRequestor requestor)
|
||||
public void acceptElement(ISourceElementRequestor requestor, IReferenceManager manager)
|
||||
{
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see org.eclipse.cdt.core.parser.ISourceElementCallbackDelegate#enter(org.eclipse.cdt.core.parser.ISourceElementRequestor)
|
||||
*/
|
||||
public void enterScope(ISourceElementRequestor requestor)
|
||||
public void enterScope(ISourceElementRequestor requestor, IReferenceManager manager)
|
||||
{
|
||||
try
|
||||
{
|
||||
|
@ -112,7 +113,7 @@ public class ASTTemplateInstantiation extends ASTDeclaration implements IASTTemp
|
|||
/* (non-Javadoc)
|
||||
* @see org.eclipse.cdt.core.parser.ISourceElementCallbackDelegate#exit(org.eclipse.cdt.core.parser.ISourceElementRequestor)
|
||||
*/
|
||||
public void exitScope(ISourceElementRequestor requestor)
|
||||
public void exitScope(ISourceElementRequestor requestor, IReferenceManager manager)
|
||||
{
|
||||
try
|
||||
{
|
||||
|
|
|
@ -20,6 +20,7 @@ import org.eclipse.cdt.core.parser.ast.IASTNode;
|
|||
import org.eclipse.cdt.core.parser.ast.IASTOffsetableNamedElement;
|
||||
import org.eclipse.cdt.core.parser.ast.IASTParameterDeclaration;
|
||||
import org.eclipse.cdt.core.parser.ast.IASTTemplateParameter;
|
||||
import org.eclipse.cdt.core.parser.ast.IReferenceManager;
|
||||
import org.eclipse.cdt.internal.core.parser.ast.NamedOffsets;
|
||||
|
||||
/**
|
||||
|
@ -91,18 +92,18 @@ public class ASTTemplateParameter implements IASTTemplateParameter, IASTOffsetab
|
|||
/* (non-Javadoc)
|
||||
* @see org.eclipse.cdt.core.parser.ISourceElementCallbackDelegate#acceptElement(org.eclipse.cdt.core.parser.ISourceElementRequestor)
|
||||
*/
|
||||
public void acceptElement(ISourceElementRequestor requestor) {
|
||||
public void acceptElement(ISourceElementRequestor requestor, IReferenceManager manager) {
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see org.eclipse.cdt.core.parser.ISourceElementCallbackDelegate#enterScope(org.eclipse.cdt.core.parser.ISourceElementRequestor)
|
||||
*/
|
||||
public void enterScope(ISourceElementRequestor requestor) {
|
||||
public void enterScope(ISourceElementRequestor requestor, IReferenceManager manager) {
|
||||
}
|
||||
/* (non-Javadoc)
|
||||
* @see org.eclipse.cdt.core.parser.ISourceElementCallbackDelegate#exitScope(org.eclipse.cdt.core.parser.ISourceElementRequestor)
|
||||
*/
|
||||
public void exitScope(ISourceElementRequestor requestor) {
|
||||
public void exitScope(ISourceElementRequestor requestor, IReferenceManager manager) {
|
||||
}
|
||||
/* (non-Javadoc)
|
||||
* @see org.eclipse.cdt.core.parser.ast.IASTNode#lookup(java.lang.String, org.eclipse.cdt.core.parser.ast.IASTNode.LookupKind[], org.eclipse.cdt.core.parser.ast.IASTNode)
|
||||
|
|
|
@ -13,6 +13,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.IASTTemplateSpecialization;
|
||||
import org.eclipse.cdt.core.parser.ast.IReferenceManager;
|
||||
|
||||
/**
|
||||
* @author jcamelon
|
||||
|
@ -32,14 +33,14 @@ public class ASTTemplateSpecialization extends ASTTemplateDeclaration implements
|
|||
/* (non-Javadoc)
|
||||
* @see org.eclipse.cdt.core.parser.ISourceElementCallbackDelegate#accept(org.eclipse.cdt.core.parser.ISourceElementRequestor)
|
||||
*/
|
||||
public void acceptElement(ISourceElementRequestor requestor)
|
||||
public void acceptElement(ISourceElementRequestor requestor, IReferenceManager manager)
|
||||
{
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see org.eclipse.cdt.core.parser.ISourceElementCallbackDelegate#enter(org.eclipse.cdt.core.parser.ISourceElementRequestor)
|
||||
*/
|
||||
public void enterScope(ISourceElementRequestor requestor)
|
||||
public void enterScope(ISourceElementRequestor requestor, IReferenceManager manager)
|
||||
{
|
||||
try
|
||||
{
|
||||
|
@ -54,7 +55,7 @@ public class ASTTemplateSpecialization extends ASTTemplateDeclaration implements
|
|||
/* (non-Javadoc)
|
||||
* @see org.eclipse.cdt.core.parser.ISourceElementCallbackDelegate#exit(org.eclipse.cdt.core.parser.ISourceElementRequestor)
|
||||
*/
|
||||
public void exitScope(ISourceElementRequestor requestor)
|
||||
public void exitScope(ISourceElementRequestor requestor, IReferenceManager manager)
|
||||
{
|
||||
try
|
||||
{
|
||||
|
|
|
@ -16,6 +16,7 @@ import java.util.List;
|
|||
import org.eclipse.cdt.core.parser.ISourceElementRequestor;
|
||||
import org.eclipse.cdt.core.parser.ast.ASTNotImplementedException;
|
||||
import org.eclipse.cdt.core.parser.ast.IASTTypeId;
|
||||
import org.eclipse.cdt.core.parser.ast.IReferenceManager;
|
||||
import org.eclipse.cdt.core.parser.ast.IASTSimpleTypeSpecifier.Type;
|
||||
import org.eclipse.cdt.internal.core.parser.pst.ISymbol;
|
||||
|
||||
|
@ -153,19 +154,25 @@ public class ASTTypeId implements IASTTypeId
|
|||
/* (non-Javadoc)
|
||||
* @see org.eclipse.cdt.core.parser.ISourceElementCallbackDelegate#acceptElement(org.eclipse.cdt.core.parser.ISourceElementRequestor)
|
||||
*/
|
||||
public void acceptElement(ISourceElementRequestor requestor)
|
||||
public void acceptElement(ISourceElementRequestor requestor, IReferenceManager manager)
|
||||
{
|
||||
}
|
||||
/* (non-Javadoc)
|
||||
* @see org.eclipse.cdt.core.parser.ISourceElementCallbackDelegate#enterScope(org.eclipse.cdt.core.parser.ISourceElementRequestor)
|
||||
*/
|
||||
public void enterScope(ISourceElementRequestor requestor)
|
||||
public void enterScope(ISourceElementRequestor requestor, IReferenceManager manager)
|
||||
{
|
||||
}
|
||||
/* (non-Javadoc)
|
||||
* @see org.eclipse.cdt.core.parser.ISourceElementCallbackDelegate#exitScope(org.eclipse.cdt.core.parser.ISourceElementRequestor)
|
||||
*/
|
||||
public void exitScope(ISourceElementRequestor requestor)
|
||||
public void exitScope(ISourceElementRequestor requestor, IReferenceManager manager)
|
||||
{
|
||||
}
|
||||
/* (non-Javadoc)
|
||||
* @see org.eclipse.cdt.core.parser.ast.IASTTypeId#freeReferences(org.eclipse.cdt.core.parser.ast.IReferenceManager)
|
||||
*/
|
||||
public void freeReferences(IReferenceManager manager) {
|
||||
// do nothing
|
||||
}
|
||||
}
|
||||
|
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Reference in a new issue