From 91794dcff981f8e806e181a6f0e7eb66bdcfeccb Mon Sep 17 00:00:00 2001 From: John Camelon Date: Mon, 7 Jul 2003 13:46:16 +0000 Subject: [PATCH] Further restructuring. --- core/org.eclipse.cdt.core.tests/ChangeLog | 3 + .../parser/tests/ParserSymbolTableTest.java | 6 +- .../tests/ClassDeclarationPatternTests.java | 4 +- .../cdt/internal/core/dom/DOMBuilder.java | 8 --- .../core/search/indexing/AbstractIndexer.java | 8 +-- .../indexing/SourceIndexerRequestor.java | 9 --- core/org.eclipse.cdt.core/parser/ChangeLog | 4 ++ .../core/parser/ISourceElementRequestor.java | 2 - ...sibility.java => ASTAccessVisibility.java} | 10 +-- .../ast/{ClassKind.java => ASTClassKind.java} | 12 ++-- .../core/parser/ast/ASTPointerOperator.java | 37 ++++++++++ ...e.java => ASTTemplateDeclarationType.java} | 14 ++-- .../parser/ast/IASTAbstractDeclarator.java | 23 +++++++ .../core/parser/ast/IASTBaseSpecifier.java | 2 +- .../core/parser/ast/IASTClassSpecifier.java | 8 +-- .../ast/IASTElaboratedTypeSpecifier.java | 2 +- .../cdt/core/parser/ast/IASTFactory.java | 10 +-- .../cdt/core/parser/ast/IASTField.java | 2 +- .../cdt/core/parser/ast/IASTFunction.java | 6 ++ .../cdt/core/parser/ast/IASTMethod.java | 8 ++- .../parser/ast/IASTNamespaceDefinition.java | 2 +- ...tor.java => IASTQualifiedNameElement.java} | 5 +- .../parser/ast/IASTTemplateDeclaration.java | 2 +- .../parser/ast/IASTTemplateInstantiation.java | 2 +- .../ast/IASTTemplateSpecialization.java | 2 +- .../cdt/core/parser/ast/IASTVariable.java | 9 +++ .../core/parser/DeclarationWrapper.java | 15 ++-- .../cdt/internal/core/parser/Declarator.java | 52 ++++++++------ .../core/parser/IDeclaratorOwner.java | 23 +++++++ .../parser/NullSourceElementRequestor.java | 7 -- .../cdt/internal/core/parser/Parser.java | 69 ++++++++----------- .../core/parser/ast/ASTBaseSpecifier.java | 8 +-- .../parser/{ => ast}/IASTArrayModifier.java | 2 +- .../parser/ast/full/ASTClassSpecifier.java | 12 ++-- .../ast/full/ASTNamespaceDefinition.java | 11 ++- .../parser/ast/full/FullParseASTFactory.java | 12 ++-- .../parser/ast/quick/ASTBaseSpecifier.java | 17 ++--- .../parser/ast/quick/ASTClassSpecifier.java | 57 +++------------ .../ast/quick/ASTElaboratedTypeSpecifier.java | 8 +-- .../ast/quick/ASTNamespaceDefinition.java | 4 +- .../quick/ASTQualifiedNamedDeclaration.java | 68 ++++++++++++++++++ .../ast/quick/QuickParseASTFactory.java | 12 ++-- .../parser/pst/IDerivableContainerSymbol.java | 4 +- .../core/parser/pst/ParserSymbolTable.java | 12 ++-- .../core/search/matching/CSearchPattern.java | 12 ++-- .../matching/ClassDeclarationPattern.java | 6 +- .../core/search/matching/MatchLocator.java | 1 - 47 files changed, 369 insertions(+), 243 deletions(-) rename core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/ast/{AccessVisibility.java => ASTAccessVisibility.java} (67%) rename core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/ast/{ClassKind.java => ASTClassKind.java} (67%) create mode 100644 core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/ast/ASTPointerOperator.java rename core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/ast/{TemplateDeclarationType.java => ASTTemplateDeclarationType.java} (54%) create mode 100644 core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/ast/IASTAbstractDeclarator.java rename core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/ast/{IASTConstructor.java => IASTQualifiedNameElement.java} (87%) create mode 100644 core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/IDeclaratorOwner.java rename core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/{ => ast}/IASTArrayModifier.java (92%) create mode 100644 core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/ast/quick/ASTQualifiedNamedDeclaration.java diff --git a/core/org.eclipse.cdt.core.tests/ChangeLog b/core/org.eclipse.cdt.core.tests/ChangeLog index 9a07c0e8b09..52cd4e025be 100644 --- a/core/org.eclipse.cdt.core.tests/ChangeLog +++ b/core/org.eclipse.cdt.core.tests/ChangeLog @@ -1,3 +1,6 @@ +2003-07-07 John Camelon + Update ClassDeclarationPatternTests::testBug39652(). + 2003-07-04 John Camelon Moved testBug39652() from failed search tests to ClassDeclarationPatternTests. diff --git a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ParserSymbolTableTest.java b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ParserSymbolTableTest.java index 9461df0e711..6e3bf312fc1 100644 --- a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ParserSymbolTableTest.java +++ b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ParserSymbolTableTest.java @@ -17,7 +17,7 @@ import java.util.Map; import junit.framework.TestCase; -import org.eclipse.cdt.core.parser.ast.AccessVisibility; +import org.eclipse.cdt.core.parser.ast.ASTAccessVisibility; import org.eclipse.cdt.internal.core.parser.ast.full.ASTCompilationUnit; import org.eclipse.cdt.internal.core.parser.ast.full.IASTFCompilationUnit; import org.eclipse.cdt.internal.core.parser.pst.IContainerSymbol; @@ -266,10 +266,10 @@ public class ParserSymbolTableTest extends TestCase { IDerivableContainerSymbol c = table.newDerivableContainerSymbol("C"); IDerivableContainerSymbol a = table.newDerivableContainerSymbol("A"); - a.addParent( c, true, AccessVisibility.PUBLIC ); + a.addParent( c, true, ASTAccessVisibility.PUBLIC ); IDerivableContainerSymbol b = table.newDerivableContainerSymbol("B"); - b.addParent( c, true, AccessVisibility.PUBLIC ); + b.addParent( c, true, ASTAccessVisibility.PUBLIC ); decl.addParent( a ); decl.addParent( b ); diff --git a/core/org.eclipse.cdt.core.tests/search/org/eclipse/cdt/core/search/tests/ClassDeclarationPatternTests.java b/core/org.eclipse.cdt.core.tests/search/org/eclipse/cdt/core/search/tests/ClassDeclarationPatternTests.java index 9c3ffea07e8..54b66a34ca4 100644 --- a/core/org.eclipse.cdt.core.tests/search/org/eclipse/cdt/core/search/tests/ClassDeclarationPatternTests.java +++ b/core/org.eclipse.cdt.core.tests/search/org/eclipse/cdt/core/search/tests/ClassDeclarationPatternTests.java @@ -96,13 +96,13 @@ public class ClassDeclarationPatternTests extends TestCase implements ICSearchCo initialize( pattern ); matchLocator.locateMatches( new String[] { cppPath }, null, null ); matches = resultCollector.getMatches(); - assertTrue( matches == null ); + assertTrue( matches != null ); pattern = CSearchPattern.createPattern( "NS::B::A", TYPE, DECLARATIONS, EXACT_MATCH, true ); initialize( pattern ); matchLocator.locateMatches( new String[] { cppPath }, null, null ); matches = resultCollector.getMatches(); - assertTrue( matches == null ); + assertTrue( matches != null ); } public void failingtestMatchStruct(){ diff --git a/core/org.eclipse.cdt.core/dom/org/eclipse/cdt/internal/core/dom/DOMBuilder.java b/core/org.eclipse.cdt.core/dom/org/eclipse/cdt/internal/core/dom/DOMBuilder.java index 97da4fff7ba..fbdade55b2a 100644 --- a/core/org.eclipse.cdt.core/dom/org/eclipse/cdt/internal/core/dom/DOMBuilder.java +++ b/core/org.eclipse.cdt.core/dom/org/eclipse/cdt/internal/core/dom/DOMBuilder.java @@ -9,7 +9,6 @@ import org.eclipse.cdt.core.parser.IToken; import org.eclipse.cdt.core.parser.ast.IASTASMDefinition; import org.eclipse.cdt.core.parser.ast.IASTClassSpecifier; import org.eclipse.cdt.core.parser.ast.IASTCompilationUnit; -import org.eclipse.cdt.core.parser.ast.IASTConstructor; import org.eclipse.cdt.core.parser.ast.IASTElaboratedTypeSpecifier; import org.eclipse.cdt.core.parser.ast.IASTEnumerationSpecifier; import org.eclipse.cdt.core.parser.ast.IASTField; @@ -1178,13 +1177,6 @@ public class DOMBuilder implements IParserCallback, ISourceElementRequestor } - /* (non-Javadoc) - * @see org.eclipse.cdt.core.parser.ISourceElementRequestor#acceptConstructor(org.eclipse.cdt.core.parser.ast.IASTConstructor) - */ - public void acceptConstructor(IASTConstructor constructor) { - // TODO Auto-generated method stub - - } /* (non-Javadoc) * @see org.eclipse.cdt.core.parser.ISourceElementRequestor#exitTemplateDeclaration(org.eclipse.cdt.core.parser.ast.IASTTemplateDeclaration) diff --git a/core/org.eclipse.cdt.core/index/org/eclipse/cdt/internal/core/search/indexing/AbstractIndexer.java b/core/org.eclipse.cdt.core/index/org/eclipse/cdt/internal/core/search/indexing/AbstractIndexer.java index 7ede85528c2..0d5369f3a9f 100644 --- a/core/org.eclipse.cdt.core/index/org/eclipse/cdt/internal/core/search/indexing/AbstractIndexer.java +++ b/core/org.eclipse.cdt.core/index/org/eclipse/cdt/internal/core/search/indexing/AbstractIndexer.java @@ -13,7 +13,7 @@ package org.eclipse.cdt.internal.core.search.indexing; import java.io.IOException; -import org.eclipse.cdt.core.parser.ast.ClassKind; +import org.eclipse.cdt.core.parser.ast.ASTClassKind; import org.eclipse.cdt.core.parser.ast.IASTClassSpecifier; import org.eclipse.cdt.core.search.ICSearchConstants; import org.eclipse.cdt.internal.core.index.IDocument; @@ -33,15 +33,15 @@ public abstract class AbstractIndexer implements IIndexer, IIndexConstants, ICSe } public void addClassSpecifier(IASTClassSpecifier classSpecification){ - if (classSpecification.getClassKind().equals(ClassKind.CLASS)) + if (classSpecification.getClassKind().equals(ASTClassKind.CLASS)) { this.output.addRef(encodeTypeEntry(classSpecification.getName().toCharArray(),CLASS)); } - else if (classSpecification.getClassKind().equals(ClassKind.STRUCT)) + else if (classSpecification.getClassKind().equals(ASTClassKind.STRUCT)) { this.output.addRef(encodeTypeEntry(classSpecification.getName().toCharArray(),STRUCT)); } - else if (classSpecification.getClassKind().equals(ClassKind.UNION)) + else if (classSpecification.getClassKind().equals(ASTClassKind.UNION)) { this.output.addRef(encodeTypeEntry(classSpecification.getName().toCharArray(),UNION)); } diff --git a/core/org.eclipse.cdt.core/index/org/eclipse/cdt/internal/core/search/indexing/SourceIndexerRequestor.java b/core/org.eclipse.cdt.core/index/org/eclipse/cdt/internal/core/search/indexing/SourceIndexerRequestor.java index 32871a52797..85ec812f10b 100644 --- a/core/org.eclipse.cdt.core/index/org/eclipse/cdt/internal/core/search/indexing/SourceIndexerRequestor.java +++ b/core/org.eclipse.cdt.core/index/org/eclipse/cdt/internal/core/search/indexing/SourceIndexerRequestor.java @@ -23,7 +23,6 @@ import org.eclipse.cdt.core.parser.IToken; import org.eclipse.cdt.core.parser.ast.IASTASMDefinition; import org.eclipse.cdt.core.parser.ast.IASTClassSpecifier; import org.eclipse.cdt.core.parser.ast.IASTCompilationUnit; -import org.eclipse.cdt.core.parser.ast.IASTConstructor; import org.eclipse.cdt.core.parser.ast.IASTElaboratedTypeSpecifier; import org.eclipse.cdt.core.parser.ast.IASTEnumerationSpecifier; import org.eclipse.cdt.core.parser.ast.IASTField; @@ -254,14 +253,6 @@ public class SourceIndexerRequestor implements IParserCallback,ISourceElementReq //System.out.println("acceptField"); } - /* (non-Javadoc) - * @see org.eclipse.cdt.core.parser.ISourceElementRequestor#acceptConstructor(org.eclipse.cdt.core.parser.ast.IASTConstructor) - */ - public void acceptConstructor(IASTConstructor constructor) { - // TODO Auto-generated method stub - //System.out.println("acceptConstructor"); - } - /* (non-Javadoc) * @see org.eclipse.cdt.core.parser.ISourceElementRequestor#acceptClassReference(org.eclipse.cdt.core.parser.ast.IASTClassSpecifier, int) */ diff --git a/core/org.eclipse.cdt.core/parser/ChangeLog b/core/org.eclipse.cdt.core/parser/ChangeLog index e566d7a32d8..679cff2b274 100644 --- a/core/org.eclipse.cdt.core/parser/ChangeLog +++ b/core/org.eclipse.cdt.core/parser/ChangeLog @@ -1,3 +1,7 @@ +2003-07-07 John Camelon + Bug 39652 - AST: Nested Classes incorrectly report null qualified Names + Fuller specification of Field/Method interfaces. + 2003-07-04 John Camelon Fixed NPE in Parser::declarator(). Bug 39652 - AST: Nested Classes incorrectly report null qualified Names diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/ISourceElementRequestor.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/ISourceElementRequestor.java index 0a06d18b96f..ed9e9036c6d 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/ISourceElementRequestor.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/ISourceElementRequestor.java @@ -13,7 +13,6 @@ package org.eclipse.cdt.core.parser; import org.eclipse.cdt.core.parser.ast.IASTASMDefinition; import org.eclipse.cdt.core.parser.ast.IASTClassSpecifier; import org.eclipse.cdt.core.parser.ast.IASTCompilationUnit; -import org.eclipse.cdt.core.parser.ast.IASTConstructor; import org.eclipse.cdt.core.parser.ast.IASTElaboratedTypeSpecifier; import org.eclipse.cdt.core.parser.ast.IASTEnumerationSpecifier; import org.eclipse.cdt.core.parser.ast.IASTField; @@ -65,7 +64,6 @@ public interface ISourceElementRequestor { public void enterMethodBody( IASTMethod method ); public void exitMethodBody( IASTMethod method ); public void acceptField( IASTField field ); - public void acceptConstructor( IASTConstructor constructor ); public void acceptClassReference( IASTClassSpecifier classSpecifier, int referenceOffset ); diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/ast/AccessVisibility.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/ast/ASTAccessVisibility.java similarity index 67% rename from core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/ast/AccessVisibility.java rename to core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/ast/ASTAccessVisibility.java index 30ad9ddd795..7329a5a144a 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/ast/AccessVisibility.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/ast/ASTAccessVisibility.java @@ -16,13 +16,13 @@ import org.eclipse.cdt.core.parser.Enum; * @author jcamelon * */ -public class AccessVisibility extends Enum { +public class ASTAccessVisibility extends Enum { - public static final AccessVisibility PUBLIC = new AccessVisibility( 1 ); - public static final AccessVisibility PROTECTED = new AccessVisibility( 2 ); - public static final AccessVisibility PRIVATE = new AccessVisibility( 3 ); + public static final ASTAccessVisibility PUBLIC = new ASTAccessVisibility( 1 ); + public static final ASTAccessVisibility PROTECTED = new ASTAccessVisibility( 2 ); + public static final ASTAccessVisibility PRIVATE = new ASTAccessVisibility( 3 ); - private AccessVisibility( int constant) + private ASTAccessVisibility( int constant) { super( constant ); } diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/ast/ClassKind.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/ast/ASTClassKind.java similarity index 67% rename from core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/ast/ClassKind.java rename to core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/ast/ASTClassKind.java index 9776a30f079..3a7270fda48 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/ast/ClassKind.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/ast/ASTClassKind.java @@ -16,14 +16,14 @@ import org.eclipse.cdt.core.parser.Enum; * @author jcamelon * */ -public class ClassKind extends Enum { +public class ASTClassKind extends Enum { - public final static ClassKind CLASS = new ClassKind( 1 ); - public final static ClassKind STRUCT = new ClassKind( 2 ); - public final static ClassKind UNION = new ClassKind( 3 ); - public final static ClassKind ENUM = new ClassKind( 4 ); + public final static ASTClassKind CLASS = new ASTClassKind( 1 ); + public final static ASTClassKind STRUCT = new ASTClassKind( 2 ); + public final static ASTClassKind UNION = new ASTClassKind( 3 ); + public final static ASTClassKind ENUM = new ASTClassKind( 4 ); - private ClassKind( int value ) + private ASTClassKind( int value ) { super( value ); } diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/ast/ASTPointerOperator.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/ast/ASTPointerOperator.java new file mode 100644 index 00000000000..5dde84d2a37 --- /dev/null +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/ast/ASTPointerOperator.java @@ -0,0 +1,37 @@ +/********************************************************************** + * Copyright (c) 2002,2003 Rational Software Corporation and others. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Common Public License v0.5 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/cpl-v05.html + * + * Contributors: + * IBM Rational Software - Initial API and implementation +***********************************************************************/ +package org.eclipse.cdt.core.parser.ast; + +import org.eclipse.cdt.core.parser.Enum; + +/** + * @author jcamelon + * + */ +public class ASTPointerOperator extends Enum +{ + public static final ASTPointerOperator REFERENCE = new ASTPointerOperator( 0 ); + public static final ASTPointerOperator POINTER = new ASTPointerOperator( 1 ); + public static final ASTPointerOperator CONST_POINTER = new ASTPointerOperator( 2 ); + public static final ASTPointerOperator VOLATILE_POINTER = new ASTPointerOperator( 3 ); + public static final ASTPointerOperator POINTER_TO_FUNCTION = new ASTPointerOperator( 4 ); + public static final ASTPointerOperator CONST_POINTER_TO_FUNCTION = new ASTPointerOperator( 5 ); + public static final ASTPointerOperator VOLATILE_POINTER_TO_FUNCTION = new ASTPointerOperator( 6 ); + + + /** + * @param enumValue + */ + protected ASTPointerOperator(int enumValue) + { + super(enumValue); + } +} diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/ast/TemplateDeclarationType.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/ast/ASTTemplateDeclarationType.java similarity index 54% rename from core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/ast/TemplateDeclarationType.java rename to core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/ast/ASTTemplateDeclarationType.java index 7398bc2396a..c393ac87cc2 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/ast/TemplateDeclarationType.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/ast/ASTTemplateDeclarationType.java @@ -16,15 +16,15 @@ import org.eclipse.cdt.core.parser.Enum; * @author jcamelon * */ -public class TemplateDeclarationType extends Enum { +public class ASTTemplateDeclarationType extends Enum { - public static final TemplateDeclarationType CLASS = new TemplateDeclarationType(1); - public static final TemplateDeclarationType FUNCTION = new TemplateDeclarationType( 2 ); - public static final TemplateDeclarationType MEMBERCLASS = new TemplateDeclarationType( 3 ); - public static final TemplateDeclarationType METHOD = new TemplateDeclarationType( 4 ); - public static final TemplateDeclarationType FIELD = new TemplateDeclarationType( 5 ); + public static final ASTTemplateDeclarationType CLASS = new ASTTemplateDeclarationType(1); + public static final ASTTemplateDeclarationType FUNCTION = new ASTTemplateDeclarationType( 2 ); + public static final ASTTemplateDeclarationType MEMBERCLASS = new ASTTemplateDeclarationType( 3 ); + public static final ASTTemplateDeclarationType METHOD = new ASTTemplateDeclarationType( 4 ); + public static final ASTTemplateDeclarationType FIELD = new ASTTemplateDeclarationType( 5 ); - private TemplateDeclarationType( int t ) + private ASTTemplateDeclarationType( int t ) { super( t ); } diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/ast/IASTAbstractDeclarator.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/ast/IASTAbstractDeclarator.java new file mode 100644 index 00000000000..96a33119c9a --- /dev/null +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/ast/IASTAbstractDeclarator.java @@ -0,0 +1,23 @@ +/********************************************************************** + * Copyright (c) 2002,2003 Rational Software Corporation and others. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Common Public License v0.5 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/cpl-v05.html + * + * Contributors: + * IBM Rational Software - Initial API and implementation +***********************************************************************/ +package org.eclipse.cdt.core.parser.ast; + +import java.util.List; + +/** + * @author jcamelon + * + */ +public interface IASTAbstractDeclarator +{ + public IASTTypeSpecifier getTypeSpecifier(); + public List getPointerOperators(); +} diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/ast/IASTBaseSpecifier.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/ast/IASTBaseSpecifier.java index e086c38cedd..36d555b87c2 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/ast/IASTBaseSpecifier.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/ast/IASTBaseSpecifier.java @@ -17,7 +17,7 @@ package org.eclipse.cdt.core.parser.ast; */ public interface IASTBaseSpecifier { - public AccessVisibility getAccess(); + public ASTAccessVisibility getAccess(); public boolean isVirtual(); public IASTClassSpecifier getParent(); diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/ast/IASTClassSpecifier.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/ast/IASTClassSpecifier.java index 788f33152a9..fbdad5e8e2c 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/ast/IASTClassSpecifier.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/ast/IASTClassSpecifier.java @@ -18,7 +18,7 @@ import org.eclipse.cdt.core.parser.Enum; * @author jcamelon * */ -public interface IASTClassSpecifier extends IASTTypeSpecifier, IASTScope, IASTOffsetableNamedElement, IASTTemplatedDeclaration { +public interface IASTClassSpecifier extends IASTTypeSpecifier, IASTScope, IASTOffsetableNamedElement, IASTTemplatedDeclaration, IASTQualifiedNameElement { public class ClassNameType extends Enum { @@ -33,12 +33,10 @@ public interface IASTClassSpecifier extends IASTTypeSpecifier, IASTScope, IASTOf public ClassNameType getClassNameType(); - public ClassKind getClassKind(); + public ASTClassKind getClassKind(); public Iterator getBaseClauses(); - public AccessVisibility getCurrentVisibilityMode(); - - public String[] getFullyQualifiedName(); + public ASTAccessVisibility getCurrentVisibilityMode(); } diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/ast/IASTElaboratedTypeSpecifier.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/ast/IASTElaboratedTypeSpecifier.java index 8e7efdf3668..a13ad9ad15c 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/ast/IASTElaboratedTypeSpecifier.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/ast/IASTElaboratedTypeSpecifier.java @@ -18,6 +18,6 @@ package org.eclipse.cdt.core.parser.ast; public interface IASTElaboratedTypeSpecifier extends IASTTypeSpecifier, IASTOffsetableElement { public String getTypeName(); - public ClassKind getClassKind(); + public ASTClassKind getClassKind(); } diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/ast/IASTFactory.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/ast/IASTFactory.java index dcfc4c8d6d7..6f6e7fa8150 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/ast/IASTFactory.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/ast/IASTFactory.java @@ -16,7 +16,7 @@ import org.eclipse.cdt.core.parser.Backtrack; import org.eclipse.cdt.core.parser.ITokenDuple; import org.eclipse.cdt.core.parser.ast.IASTClassSpecifier.ClassNameType; import org.eclipse.cdt.core.parser.ast.IASTExpression.IASTNewExpressionDescriptor; -import org.eclipse.cdt.internal.core.parser.IASTArrayModifier; +import org.eclipse.cdt.internal.core.parser.ast.IASTArrayModifier; /** * @author jcamelon @@ -55,9 +55,9 @@ public interface IASTFactory { public IASTClassSpecifier createClassSpecifier( IASTScope scope, String name, - ClassKind kind, + ASTClassKind kind, ClassNameType type, - AccessVisibility access, + ASTAccessVisibility access, IASTTemplateDeclaration ownerTemplateDeclaration, int startingOffset, int nameOffset ); /** @@ -66,9 +66,9 @@ public interface IASTFactory { * @param visibility * @param string */ - public void addBaseSpecifier(IASTClassSpecifier astClassSpec, boolean isVirtual, AccessVisibility visibility, String string); + public void addBaseSpecifier(IASTClassSpecifier astClassSpec, boolean isVirtual, ASTAccessVisibility visibility, String string); - public IASTElaboratedTypeSpecifier createElaboratedTypeSpecifier(ClassKind elaboratedClassKind, String typeName, int startingOffset, int endOffset ); + public IASTElaboratedTypeSpecifier createElaboratedTypeSpecifier(ASTClassKind elaboratedClassKind, String typeName, int startingOffset, int endOffset ); public IASTEnumerationSpecifier createEnumerationSpecifier(String name, int startingOffset, int nameOffset ); public void addEnumerator(IASTEnumerationSpecifier enumeration, String string, int startingOffset, int endingOffset); diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/ast/IASTField.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/ast/IASTField.java index e18feaaad7d..5813d615514 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/ast/IASTField.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/ast/IASTField.java @@ -14,6 +14,6 @@ package org.eclipse.cdt.core.parser.ast; * @author jcamelon * */ -public interface IASTField { +public interface IASTField extends IASTVariable { } diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/ast/IASTFunction.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/ast/IASTFunction.java index 16987a55c87..069d1ba1eb0 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/ast/IASTFunction.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/ast/IASTFunction.java @@ -15,5 +15,11 @@ package org.eclipse.cdt.core.parser.ast; * */ public interface IASTFunction { + + public boolean isInline(); + public boolean isFriend(); + public boolean isStatic(); + + public IASTAbstractDeclarator getReturnType(); } diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/ast/IASTMethod.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/ast/IASTMethod.java index 3ec85c86f87..d44754c1303 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/ast/IASTMethod.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/ast/IASTMethod.java @@ -14,6 +14,12 @@ package org.eclipse.cdt.core.parser.ast; * @author jcamelon * */ -public interface IASTMethod { +public interface IASTMethod extends IASTFunction { + public boolean isVirtual(); + public boolean isExplicit(); + + public boolean isConstructor(); + public boolean isDestructor(); + } diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/ast/IASTNamespaceDefinition.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/ast/IASTNamespaceDefinition.java index 953e22d2053..a0b55da13a3 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/ast/IASTNamespaceDefinition.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/ast/IASTNamespaceDefinition.java @@ -14,6 +14,6 @@ package org.eclipse.cdt.core.parser.ast; * @author jcamelon * */ -public interface IASTNamespaceDefinition extends IASTOffsetableNamedElement, IASTScope, IASTDeclaration { +public interface IASTNamespaceDefinition extends IASTOffsetableNamedElement, IASTScope, IASTDeclaration, IASTQualifiedNameElement { } diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/ast/IASTConstructor.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/ast/IASTQualifiedNameElement.java similarity index 87% rename from core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/ast/IASTConstructor.java rename to core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/ast/IASTQualifiedNameElement.java index 0a5beca6c79..0f79f068ae8 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/ast/IASTConstructor.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/ast/IASTQualifiedNameElement.java @@ -14,6 +14,7 @@ package org.eclipse.cdt.core.parser.ast; * @author jcamelon * */ -public interface IASTConstructor { - +public interface IASTQualifiedNameElement +{ + public String[] getFullyQualifiedName(); } diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/ast/IASTTemplateDeclaration.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/ast/IASTTemplateDeclaration.java index 46d064098c6..cf4260698cd 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/ast/IASTTemplateDeclaration.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/ast/IASTTemplateDeclaration.java @@ -18,7 +18,7 @@ import java.util.Iterator; */ public interface IASTTemplateDeclaration { - public TemplateDeclarationType getTemplateDeclarationType(); + public ASTTemplateDeclarationType getTemplateDeclarationType(); public Iterator getTemplateParameters(); } diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/ast/IASTTemplateInstantiation.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/ast/IASTTemplateInstantiation.java index f6bbd64a9bb..b5f1bacb668 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/ast/IASTTemplateInstantiation.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/ast/IASTTemplateInstantiation.java @@ -16,6 +16,6 @@ package org.eclipse.cdt.core.parser.ast; */ public interface IASTTemplateInstantiation { - public TemplateDeclarationType getTemplateDeclarationType(); + public ASTTemplateDeclarationType getTemplateDeclarationType(); public IASTTemplateDeclaration getTemplateDeclaration(); } diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/ast/IASTTemplateSpecialization.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/ast/IASTTemplateSpecialization.java index e639b3091e1..fbd669c03b2 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/ast/IASTTemplateSpecialization.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/ast/IASTTemplateSpecialization.java @@ -16,6 +16,6 @@ package org.eclipse.cdt.core.parser.ast; */ public interface IASTTemplateSpecialization { - public TemplateDeclarationType getTemplateDeclarationType(); + public ASTTemplateDeclarationType getTemplateDeclarationType(); public IASTTemplateDeclaration getTemplateDeclaration(); } diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/ast/IASTVariable.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/ast/IASTVariable.java index 54f80c0dd81..8f20e7dbcdd 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/ast/IASTVariable.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/ast/IASTVariable.java @@ -16,4 +16,13 @@ package org.eclipse.cdt.core.parser.ast; */ public interface IASTVariable { + public boolean isAuto(); + public boolean isRegister(); + public boolean isStatic(); + public boolean isExtern(); + public boolean isMutable(); + + public IASTAbstractDeclarator getAbstractDeclaration(); + public String getName(); + public IASTInitializerClause getInitializerClause(); } diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/DeclarationWrapper.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/DeclarationWrapper.java index f3eaef6d15d..4c865a2a927 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/DeclarationWrapper.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/DeclarationWrapper.java @@ -27,7 +27,7 @@ import org.eclipse.cdt.core.parser.ast.IASTVariable; * @author jcamelon * */ -public class DeclarationWrapper +public class DeclarationWrapper implements IDeclaratorOwner { private final IASTScope scope; private IASTTypeSpecifier typeSpecifier; @@ -285,9 +285,9 @@ public class DeclarationWrapper declarators.add( d ); } - public List getDeclarators() + public Iterator getDeclarators() { - return Collections.unmodifiableList( declarators ); + return Collections.unmodifiableList( declarators ).iterator(); } /** @@ -342,7 +342,7 @@ public class DeclarationWrapper */ private IASTMethod createMethodASTNode(Declarator declarator) { - // TODO Auto-generated method stub + return null; } /** @@ -372,6 +372,13 @@ public class DeclarationWrapper // TODO Auto-generated method stub return null; } + /* (non-Javadoc) + * @see org.eclipse.cdt.internal.core.parser.IDeclaratorOwner#getDeclarationWrapper() + */ + public DeclarationWrapper getDeclarationWrapper() + { + return this; + } } diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/Declarator.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/Declarator.java index e65da1a8406..2d724fd2751 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/Declarator.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/Declarator.java @@ -12,6 +12,7 @@ package org.eclipse.cdt.internal.core.parser; import java.util.ArrayList; import java.util.Collections; +import java.util.Iterator; import java.util.List; import org.eclipse.cdt.core.parser.ITokenDuple; @@ -19,19 +20,19 @@ import org.eclipse.cdt.core.parser.ast.IASTConstructorMemberInitializer; import org.eclipse.cdt.core.parser.ast.IASTExceptionSpecification; import org.eclipse.cdt.core.parser.ast.IASTExpression; import org.eclipse.cdt.core.parser.ast.IASTInitializerClause; +import org.eclipse.cdt.internal.core.parser.ast.*; /** * @author jcamelon * */ -public class Declarator implements IParameterCollection +public class Declarator implements IParameterCollection, IDeclaratorOwner { private boolean isFunction; private boolean hasFunctionBody; private IASTExpression constructorExpression; private boolean pureVirtual = false; - private final DeclarationWrapper owner1; - private final Declarator owner2; + private final IDeclaratorOwner owner; private Declarator ownedDeclarator = null; private String name = ""; private IASTInitializerClause initializerClause = null; @@ -48,17 +49,11 @@ public class Declarator implements IParameterCollection private int nameStartOffset, nameEndOffset; - public Declarator( DeclarationWrapper owner ) + public Declarator( IDeclaratorOwner owner ) { - this.owner1 = owner; - owner2 = null; + this.owner = owner; } - public Declarator( Declarator owner ) - { - owner2 = owner; - owner1 = null; - } /** * @return */ @@ -86,9 +81,9 @@ public class Declarator implements IParameterCollection /** * @return */ - public DeclarationWrapper getOwner() + public IDeclaratorOwner getOwner() { - return owner1; + return owner; } /** @@ -115,14 +110,6 @@ public class Declarator implements IParameterCollection nameStartOffset = i; } - /** - * @return - */ - public Declarator getOwnerDeclarator() - { - return owner2; - } - /** * @return */ @@ -354,4 +341,27 @@ public class Declarator implements IParameterCollection isFunction = b; } + /* (non-Javadoc) + * @see org.eclipse.cdt.internal.core.parser.IDeclaratorOwner#getDeclarators() + */ + public Iterator getDeclarators() + { + List l = new ArrayList(); + if( ownedDeclarator != null ) + l.add( ownedDeclarator ); + return l.iterator(); + } + + /* (non-Javadoc) + * @see org.eclipse.cdt.internal.core.parser.IDeclaratorOwner#getDeclarationWrapper() + */ + public DeclarationWrapper getDeclarationWrapper() + { + Declarator d = this; + while( d.getOwner() instanceof Declarator ) + d = (Declarator)d.getOwner(); + return (DeclarationWrapper)d.getOwner(); + } + + } diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/IDeclaratorOwner.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/IDeclaratorOwner.java new file mode 100644 index 00000000000..2904f0b2231 --- /dev/null +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/IDeclaratorOwner.java @@ -0,0 +1,23 @@ +/********************************************************************** + * Copyright (c) 2002,2003 Rational Software Corporation and others. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Common Public License v0.5 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/cpl-v05.html + * + * Contributors: + * IBM Rational Software - Initial API and implementation +***********************************************************************/ +package org.eclipse.cdt.internal.core.parser; + +import java.util.Iterator; + +/** + * @author jcamelon + * + */ +public interface IDeclaratorOwner +{ + public Iterator getDeclarators(); + public DeclarationWrapper getDeclarationWrapper(); +} diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/NullSourceElementRequestor.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/NullSourceElementRequestor.java index a2075509ae3..a34d06b21b0 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/NullSourceElementRequestor.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/NullSourceElementRequestor.java @@ -8,7 +8,6 @@ import org.eclipse.cdt.core.parser.IToken; import org.eclipse.cdt.core.parser.ast.IASTASMDefinition; import org.eclipse.cdt.core.parser.ast.IASTClassSpecifier; import org.eclipse.cdt.core.parser.ast.IASTCompilationUnit; -import org.eclipse.cdt.core.parser.ast.IASTConstructor; import org.eclipse.cdt.core.parser.ast.IASTElaboratedTypeSpecifier; import org.eclipse.cdt.core.parser.ast.IASTEnumerationSpecifier; import org.eclipse.cdt.core.parser.ast.IASTField; @@ -163,12 +162,6 @@ public class NullSourceElementRequestor implements ISourceElementRequestor, IPar public void acceptField(IASTField field) { } - /* (non-Javadoc) - * @see org.eclipse.cdt.core.parser.ISourceElementRequestor#acceptConstructor(org.eclipse.cdt.core.parser.ast.IASTConstructor) - */ - public void acceptConstructor(IASTConstructor constructor) { - } - /* (non-Javadoc) * @see org.eclipse.cdt.core.parser.ISourceElementRequestor#exitTemplateDeclaration(org.eclipse.cdt.core.parser.ast.IASTTemplateDeclaration) */ diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/Parser.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/Parser.java index 0d683f084cb..f421a0290bc 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/Parser.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/Parser.java @@ -25,8 +25,8 @@ import org.eclipse.cdt.core.parser.ITranslationResult; import org.eclipse.cdt.core.parser.ParserFactory; import org.eclipse.cdt.core.parser.ParserMode; import org.eclipse.cdt.core.parser.ScannerException; -import org.eclipse.cdt.core.parser.ast.AccessVisibility; -import org.eclipse.cdt.core.parser.ast.ClassKind; +import org.eclipse.cdt.core.parser.ast.ASTAccessVisibility; +import org.eclipse.cdt.core.parser.ast.ASTClassKind; import org.eclipse.cdt.core.parser.ast.IASTASMDefinition; import org.eclipse.cdt.core.parser.ast.IASTClassSpecifier; import org.eclipse.cdt.core.parser.ast.IASTCompilationUnit; @@ -43,6 +43,7 @@ import org.eclipse.cdt.core.parser.ast.IASTUsingDirective; import org.eclipse.cdt.core.parser.ast.IASTClassSpecifier.ClassNameType; import org.eclipse.cdt.core.parser.ast.IASTExpression.Kind; import org.eclipse.cdt.internal.core.model.Util; +import org.eclipse.cdt.internal.core.parser.ast.*; /** @@ -1668,21 +1669,21 @@ public class Parser implements IParser // this is an elaborated class specifier Object elab = null; IToken t = consume(); - ClassKind eck = null; + ASTClassKind eck = null; switch( t.getType() ) { case Token.t_class: - eck = ClassKind.CLASS; + eck = ASTClassKind.CLASS; break; case Token.t_struct: - eck = ClassKind.STRUCT; + eck = ASTClassKind.STRUCT; break; case Token.t_union: - eck = ClassKind.UNION; + eck = ASTClassKind.UNION; break; case Token.t_enum: - eck = ClassKind.ENUM; + eck = ASTClassKind.ENUM; break; default: break; @@ -1922,7 +1923,7 @@ public class Parser implements IParser protected DeclaratorDuple initDeclarator(Object owner, DeclarationWrapper sdw) throws Backtrack { - DeclaratorDuple duple = declarator(owner, sdw, null); + DeclaratorDuple duple = declarator(owner, sdw); Object declarator = duple.getObject(); Declarator d = duple.getDeclarator(); @@ -2076,21 +2077,17 @@ public class Parser implements IParser * @return declarator that this parsing produced. * @throws Backtrack request a backtrack */ - protected DeclaratorDuple declarator(Object container, DeclarationWrapper sdw, Declarator owningDeclarator) throws Backtrack + protected DeclaratorDuple declarator(Object container, IDeclaratorOwner owner) throws Backtrack { Object declarator = null; Declarator d = null; + DeclarationWrapper sdw = owner.getDeclarationWrapper(); overallLoop: do { declarator = null; - d = null; - - if( sdw != null ) - d = new Declarator( sdw ); - else if( owningDeclarator != null ) - d = new Declarator( owningDeclarator ); + d = new Declarator( owner ); try { @@ -2113,7 +2110,7 @@ public class Parser implements IParser if (LT(1) == IToken.tLPAREN) { consume(); - DeclaratorDuple subDeclarator = declarator(declarator, null, d); + DeclaratorDuple subDeclarator = declarator(declarator, d); consume(IToken.tRPAREN); try { @@ -2354,23 +2351,12 @@ public class Parser implements IParser try { do - { - IASTScope s = null; - if( sdw != null ) - s = sdw.getScope(); - else - { - Declarator i = owningDeclarator; - while( i.getOwnerDeclarator() != null ) - i = i.getOwnerDeclarator(); - s = i.getOwner().getScope(); - } - + { simpleDeclaration( oldKRParameterDeclarationClause, false, true, - s); + sdw.getScope()); } while (LT(1) != IToken.tLBRACE); } @@ -2495,8 +2481,9 @@ public class Parser implements IParser } } while (true); - if( sdw == null ) - owningDeclarator.setOwnedDeclarator(d); + + if( d.getOwner() instanceof Declarator ) + ((Declarator)d.getOwner()).setOwnedDeclarator(d); return new DeclaratorDuple( declarator, d ); } @@ -2849,8 +2836,8 @@ public class Parser implements IParser throws Backtrack { ClassNameType nameType = ClassNameType.IDENTIFIER; - ClassKind classKind = null; - AccessVisibility access = AccessVisibility.PUBLIC; + ASTClassKind classKind = null; + ASTAccessVisibility access = ASTAccessVisibility.PUBLIC; IToken classKey = null; IToken mark = mark(); // class key @@ -2858,16 +2845,16 @@ public class Parser implements IParser { case IToken.t_class : classKey = consume(); - classKind = ClassKind.CLASS; - access = AccessVisibility.PRIVATE; + classKind = ASTClassKind.CLASS; + access = ASTAccessVisibility.PRIVATE; break; case IToken.t_struct : classKey = consume(); - classKind = ClassKind.STRUCT; + classKind = ASTClassKind.STRUCT; break; case IToken.t_union : classKey = consume(); - classKind = ClassKind.UNION; + classKind = ASTClassKind.UNION; break; default : throw backtrack; @@ -3008,7 +2995,7 @@ public class Parser implements IParser { } boolean isVirtual = false; - AccessVisibility visibility = AccessVisibility.PUBLIC; + ASTAccessVisibility visibility = ASTAccessVisibility.PUBLIC; ITokenDuple nameDuple = null; baseSpecifierLoop : for (;;) { @@ -3046,10 +3033,10 @@ public class Parser implements IParser catch (Exception e) { } - visibility = AccessVisibility.PROTECTED; + visibility = ASTAccessVisibility.PROTECTED; break; case IToken.t_private : - visibility = AccessVisibility.PRIVATE; + visibility = ASTAccessVisibility.PRIVATE; try { callback.baseSpecifierVisibility( @@ -3080,7 +3067,7 @@ public class Parser implements IParser visibility, nameDuple.toString()); isVirtual = false; - visibility = AccessVisibility.PUBLIC; + visibility = ASTAccessVisibility.PUBLIC; nameDuple = null; callback.baseSpecifierEnd(baseSpecifier); baseSpecifier = diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/ast/ASTBaseSpecifier.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/ast/ASTBaseSpecifier.java index c82a5e2ec8d..dc75d3ec985 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/ast/ASTBaseSpecifier.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/ast/ASTBaseSpecifier.java @@ -10,7 +10,7 @@ ***********************************************************************/ package org.eclipse.cdt.internal.core.parser.ast; -import org.eclipse.cdt.core.parser.ast.AccessVisibility; +import org.eclipse.cdt.core.parser.ast.ASTAccessVisibility; import org.eclipse.cdt.core.parser.ast.IASTBaseSpecifier; import org.eclipse.cdt.core.parser.ast.IASTClassSpecifier; @@ -22,9 +22,9 @@ public class ASTBaseSpecifier implements IASTBaseSpecifier { private final IASTClassSpecifier baseClass; private final boolean isVirtual; - private final AccessVisibility visibility; + private final ASTAccessVisibility visibility; - public ASTBaseSpecifier( IASTClassSpecifier c, AccessVisibility a, boolean virtual ) + public ASTBaseSpecifier( IASTClassSpecifier c, ASTAccessVisibility a, boolean virtual ) { isVirtual = virtual; baseClass = c; @@ -34,7 +34,7 @@ public class ASTBaseSpecifier implements IASTBaseSpecifier { /* (non-Javadoc) * @see org.eclipse.cdt.core.parser.ast.IASTBaseSpecifier#getAccess() */ - public AccessVisibility getAccess() { + public ASTAccessVisibility getAccess() { return visibility; } diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/IASTArrayModifier.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/ast/IASTArrayModifier.java similarity index 92% rename from core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/IASTArrayModifier.java rename to core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/ast/IASTArrayModifier.java index 56e9e938dda..39aa95eaa6d 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/IASTArrayModifier.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/ast/IASTArrayModifier.java @@ -8,7 +8,7 @@ * Contributors: * IBM Rational Software - Initial API and implementation ***********************************************************************/ -package org.eclipse.cdt.internal.core.parser; +package org.eclipse.cdt.internal.core.parser.ast; /** * @author jcamelon diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/ast/full/ASTClassSpecifier.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/ast/full/ASTClassSpecifier.java index 1e03223eecb..e3280cff243 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/ast/full/ASTClassSpecifier.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/ast/full/ASTClassSpecifier.java @@ -12,8 +12,8 @@ package org.eclipse.cdt.internal.core.parser.ast.full; import java.util.Iterator; -import org.eclipse.cdt.core.parser.ast.AccessVisibility; -import org.eclipse.cdt.core.parser.ast.ClassKind; +import org.eclipse.cdt.core.parser.ast.ASTAccessVisibility; +import org.eclipse.cdt.core.parser.ast.ASTClassKind; import org.eclipse.cdt.core.parser.ast.IASTTemplateDeclaration; import org.eclipse.cdt.internal.core.parser.pst.IDerivableContainerSymbol; import org.eclipse.cdt.internal.core.parser.pst.ISymbol; @@ -26,11 +26,11 @@ import org.eclipse.cdt.internal.core.parser.pst.ParserSymbolTable; public class ASTClassSpecifier implements IASTFClassSpecifier, IPSTSymbolExtension { private final IDerivableContainerSymbol symbol; - private final ClassKind classKind; + private final ASTClassKind classKind; private final ClassNameType type; private final String name; - public ASTClassSpecifier( IDerivableContainerSymbol symbol, String name, ClassNameType type, ClassKind kind ) + public ASTClassSpecifier( IDerivableContainerSymbol symbol, String name, ClassNameType type, ASTClassKind kind ) { this.name = name; this.symbol = symbol; @@ -56,7 +56,7 @@ public class ASTClassSpecifier implements IASTFClassSpecifier, IPSTSymbolExtensi /* (non-Javadoc) * @see org.eclipse.cdt.core.parser.ast.IASTClassSpecifier#getClassKind() */ - public ClassKind getClassKind() { + public ASTClassKind getClassKind() { return classKind; } @@ -137,7 +137,7 @@ public class ASTClassSpecifier implements IASTFClassSpecifier, IPSTSymbolExtensi /* (non-Javadoc) * @see org.eclipse.cdt.core.parser.ast.IASTClassSpecifier#getCurrentVisiblity() */ - public AccessVisibility getCurrentVisibilityMode() { + public ASTAccessVisibility getCurrentVisibilityMode() { // TODO Auto-generated method stub return null; } diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/ast/full/ASTNamespaceDefinition.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/ast/full/ASTNamespaceDefinition.java index 808a32e70f2..3006da0959c 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/ast/full/ASTNamespaceDefinition.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/ast/full/ASTNamespaceDefinition.java @@ -108,5 +108,14 @@ public class ASTNamespaceDefinition implements IASTFNamespaceDefinition { */ public IASTScope getOwnerScope() { return (IPSTContainerExtension)symbol.getContainingSymbol().getASTNode(); - } + } + + /* (non-Javadoc) + * @see org.eclipse.cdt.core.parser.ast.IASTQualifiedNameElement#getFullyQualifiedName() + */ + public String[] getFullyQualifiedName() + { + // TODO Auto-generated method stub + return null; + } } diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/ast/full/FullParseASTFactory.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/ast/full/FullParseASTFactory.java index 275df0044d4..88342dcb963 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/ast/full/FullParseASTFactory.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/ast/full/FullParseASTFactory.java @@ -16,8 +16,8 @@ import java.util.List; import org.eclipse.cdt.core.parser.Backtrack; import org.eclipse.cdt.core.parser.IToken; import org.eclipse.cdt.core.parser.ITokenDuple; -import org.eclipse.cdt.core.parser.ast.AccessVisibility; -import org.eclipse.cdt.core.parser.ast.ClassKind; +import org.eclipse.cdt.core.parser.ast.ASTAccessVisibility; +import org.eclipse.cdt.core.parser.ast.ASTClassKind; import org.eclipse.cdt.core.parser.ast.IASTASMDefinition; import org.eclipse.cdt.core.parser.ast.IASTClassSpecifier; import org.eclipse.cdt.core.parser.ast.IASTCompilationUnit; @@ -39,8 +39,8 @@ import org.eclipse.cdt.core.parser.ast.IASTClassSpecifier.ClassNameType; import org.eclipse.cdt.core.parser.ast.IASTExpression.IASTNewExpressionDescriptor; import org.eclipse.cdt.core.parser.ast.IASTExpression.Kind; import org.eclipse.cdt.core.parser.ast.IASTSimpleTypeSpecifier.SimpleType; -import org.eclipse.cdt.internal.core.parser.IASTArrayModifier; import org.eclipse.cdt.internal.core.parser.ast.BaseASTFactory; +import org.eclipse.cdt.internal.core.parser.ast.IASTArrayModifier; import org.eclipse.cdt.internal.core.parser.pst.IContainerSymbol; import org.eclipse.cdt.internal.core.parser.pst.ISymbol; import org.eclipse.cdt.internal.core.parser.pst.ParserSymbolTable; @@ -165,7 +165,7 @@ public class FullParseASTFactory extends BaseASTFactory implements IASTFactory { /* (non-Javadoc) * @see org.eclipse.cdt.core.parser.ast.IASTFactory#createClassSpecifier(org.eclipse.cdt.core.parser.ast.IASTScope, java.lang.String, org.eclipse.cdt.core.parser.ast.ClassKind, org.eclipse.cdt.core.parser.ast.ClassNameType, org.eclipse.cdt.core.parser.ast.AccessVisibility, org.eclipse.cdt.core.parser.ast.IASTTemplateDeclaration) */ - public IASTClassSpecifier createClassSpecifier(IASTScope scope, String name, ClassKind kind, ClassNameType type, AccessVisibility access, IASTTemplateDeclaration ownerTemplateDeclaration, int startingOffset, int nameOffset) { + public IASTClassSpecifier createClassSpecifier(IASTScope scope, String name, ASTClassKind kind, ClassNameType type, ASTAccessVisibility access, IASTTemplateDeclaration ownerTemplateDeclaration, int startingOffset, int nameOffset) { // TODO Auto-generated method stub return null; } @@ -173,7 +173,7 @@ public class FullParseASTFactory extends BaseASTFactory implements IASTFactory { /* (non-Javadoc) * @see org.eclipse.cdt.core.parser.ast.IASTFactory#addBaseSpecifier(org.eclipse.cdt.core.parser.ast.IASTClassSpecifier, boolean, org.eclipse.cdt.core.parser.ast.AccessVisibility, java.lang.String) */ - public void addBaseSpecifier(IASTClassSpecifier astClassSpec, boolean isVirtual, AccessVisibility visibility, String string) { + public void addBaseSpecifier(IASTClassSpecifier astClassSpec, boolean isVirtual, ASTAccessVisibility visibility, String string) { // TODO Auto-generated method stub } @@ -181,7 +181,7 @@ public class FullParseASTFactory extends BaseASTFactory implements IASTFactory { /* (non-Javadoc) * @see org.eclipse.cdt.core.parser.ast.IASTFactory#createElaboratedTypeSpecifier(org.eclipse.cdt.core.parser.ast.ClassKind, java.lang.String, int, int) */ - public IASTElaboratedTypeSpecifier createElaboratedTypeSpecifier(ClassKind elaboratedClassKind, String typeName, int startingOffset, int endOffset ) + public IASTElaboratedTypeSpecifier createElaboratedTypeSpecifier(ASTClassKind elaboratedClassKind, String typeName, int startingOffset, int endOffset ) { // TODO Auto-generated method stub return null; diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/ast/quick/ASTBaseSpecifier.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/ast/quick/ASTBaseSpecifier.java index bad47bdab96..b5f4176705e 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/ast/quick/ASTBaseSpecifier.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/ast/quick/ASTBaseSpecifier.java @@ -10,7 +10,7 @@ ***********************************************************************/ package org.eclipse.cdt.internal.core.parser.ast.quick; -import org.eclipse.cdt.core.parser.ast.AccessVisibility; +import org.eclipse.cdt.core.parser.ast.ASTAccessVisibility; import org.eclipse.cdt.core.parser.ast.IASTBaseSpecifier; import org.eclipse.cdt.core.parser.ast.IASTClassSpecifier; @@ -20,11 +20,11 @@ import org.eclipse.cdt.core.parser.ast.IASTClassSpecifier; */ public class ASTBaseSpecifier implements IASTBaseSpecifier { - private final AccessVisibility visibility; + private final ASTAccessVisibility visibility; private final boolean isVirtual; private final IASTClassSpecifier parentClass; - public ASTBaseSpecifier( IASTClassSpecifier classSpec, boolean v, AccessVisibility a ) + public ASTBaseSpecifier( IASTClassSpecifier classSpec, boolean v, ASTAccessVisibility a ) { parentClass = classSpec; isVirtual = v; @@ -33,25 +33,22 @@ public class ASTBaseSpecifier implements IASTBaseSpecifier { /* (non-Javadoc) * @see org.eclipse.cdt.core.parser.ast.IASTBaseSpecifier#getAccess() */ - public AccessVisibility getAccess() { - // TODO Auto-generated method stub - return null; + public ASTAccessVisibility getAccess() { + return visibility; } /* (non-Javadoc) * @see org.eclipse.cdt.core.parser.ast.IASTBaseSpecifier#isVirtual() */ public boolean isVirtual() { - // TODO Auto-generated method stub - return false; + return isVirtual; } /* (non-Javadoc) * @see org.eclipse.cdt.core.parser.ast.IASTBaseSpecifier#getParent() */ public IASTClassSpecifier getParent() { - // TODO Auto-generated method stub - return null; + return parentClass; } } diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/ast/quick/ASTClassSpecifier.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/ast/quick/ASTClassSpecifier.java index 087d454eee3..8f2ff4911de 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/ast/quick/ASTClassSpecifier.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/ast/quick/ASTClassSpecifier.java @@ -12,15 +12,11 @@ package org.eclipse.cdt.internal.core.parser.ast.quick; import java.util.ArrayList; import java.util.Iterator; import java.util.List; -import java.util.Stack; -import org.eclipse.cdt.core.parser.ast.AccessVisibility; -import org.eclipse.cdt.core.parser.ast.ClassKind; +import org.eclipse.cdt.core.parser.ast.ASTAccessVisibility; +import org.eclipse.cdt.core.parser.ast.ASTClassKind; import org.eclipse.cdt.core.parser.ast.IASTBaseSpecifier; -import org.eclipse.cdt.core.parser.ast.IASTClassSpecifier; import org.eclipse.cdt.core.parser.ast.IASTDeclaration; -import org.eclipse.cdt.core.parser.ast.IASTNamespaceDefinition; -import org.eclipse.cdt.core.parser.ast.IASTOffsetableNamedElement; import org.eclipse.cdt.core.parser.ast.IASTScope; import org.eclipse.cdt.core.parser.ast.IASTTemplateDeclaration; import org.eclipse.cdt.internal.core.parser.ast.NamedOffsets; @@ -29,57 +25,33 @@ import org.eclipse.cdt.internal.core.parser.ast.NamedOffsets; * */ public class ASTClassSpecifier - extends ASTDeclaration + extends ASTQualifiedNamedDeclaration implements IASTQClassSpecifier, IASTQScope { public ASTClassSpecifier( IASTScope scope, String name, - ClassKind kind, + ASTClassKind kind, ClassNameType type, - AccessVisibility access, + ASTAccessVisibility access, IASTTemplateDeclaration ownerTemplateDeclaration) { - super(scope); + super(scope, name ); classNameType = type; classKind = kind; this.access = access; this.name = name; templateOwner = ownerTemplateDeclaration; - - Stack names = new Stack(); - IASTScope parent = getOwnerScope(); - - names.push( name ); // push on our own name - while (parent != null) - { - if (parent instanceof IASTNamespaceDefinition - || parent instanceof IASTClassSpecifier) - { - names.push(((IASTOffsetableNamedElement)parent).getName()); - parent = ((IASTDeclaration)parent).getOwnerScope(); - } - break; - } - if (names.size() != 0) - { - qualifiedNames = new String[names.size()]; - int counter = 0; - while (!names.empty()) - qualifiedNames[counter++] = (String)names.pop(); - } - else - qualifiedNames = null; } - private final String[] qualifiedNames; + private IASTTemplateDeclaration templateOwner = null; private final String name; private List declarations = new ArrayList(); private List baseClauses = new ArrayList(); - private AccessVisibility access; + private ASTAccessVisibility access; private NamedOffsets offsets = new NamedOffsets(); private final ClassNameType classNameType; - private final ClassKind classKind; + private final ASTClassKind classKind; /* (non-Javadoc) * @see org.eclipse.cdt.core.parser.ast.IASTClassSpecifier#getClassNameType() */ @@ -90,7 +62,7 @@ public class ASTClassSpecifier /* (non-Javadoc) * @see org.eclipse.cdt.core.parser.ast.IASTClassSpecifier#getClassKind() */ - public ClassKind getClassKind() + public ASTClassKind getClassKind() { return classKind; } @@ -104,7 +76,7 @@ public class ASTClassSpecifier /* (non-Javadoc) * @see org.eclipse.cdt.core.parser.ast.IASTClassSpecifier#getCurrentVisiblity() */ - public AccessVisibility getCurrentVisibilityMode() + public ASTAccessVisibility getCurrentVisibilityMode() { return access; } @@ -185,11 +157,4 @@ public class ASTClassSpecifier { baseClauses.add(baseSpecifier); } - /* (non-Javadoc) - * @see org.eclipse.cdt.core.parser.ast.IASTClassSpecifier#getFullyQualifiedName() - */ - public String[] getFullyQualifiedName() - { - return qualifiedNames; - } } diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/ast/quick/ASTElaboratedTypeSpecifier.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/ast/quick/ASTElaboratedTypeSpecifier.java index a8ba6ee68af..9e9198bef57 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/ast/quick/ASTElaboratedTypeSpecifier.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/ast/quick/ASTElaboratedTypeSpecifier.java @@ -10,7 +10,7 @@ ***********************************************************************/ package org.eclipse.cdt.internal.core.parser.ast.quick; -import org.eclipse.cdt.core.parser.ast.ClassKind; +import org.eclipse.cdt.core.parser.ast.ASTClassKind; import org.eclipse.cdt.core.parser.ast.IASTElaboratedTypeSpecifier; import org.eclipse.cdt.internal.core.parser.ast.Offsets; @@ -23,14 +23,14 @@ public class ASTElaboratedTypeSpecifier implements IASTElaboratedTypeSpecifier private Offsets offsets = new Offsets(); private final String typeName; - private final ClassKind classKind; + private final ASTClassKind classKind; /** * @param elaboratedClassKind * @param typeName * @param startingOffset * @param endOffset */ - public ASTElaboratedTypeSpecifier(ClassKind elaboratedClassKind, String typeName, int startingOffset, int endOffset) + public ASTElaboratedTypeSpecifier(ASTClassKind elaboratedClassKind, String typeName, int startingOffset, int endOffset) { classKind = elaboratedClassKind; this.typeName = typeName; @@ -47,7 +47,7 @@ public class ASTElaboratedTypeSpecifier implements IASTElaboratedTypeSpecifier /* (non-Javadoc) * @see org.eclipse.cdt.core.parser.ast.IASTElaboratedTypeSpecifier#getClassKind() */ - public ClassKind getClassKind() + public ASTClassKind getClassKind() { return classKind; } diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/ast/quick/ASTNamespaceDefinition.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/ast/quick/ASTNamespaceDefinition.java index 6622e23da8a..e908dc3dd0c 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/ast/quick/ASTNamespaceDefinition.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/ast/quick/ASTNamespaceDefinition.java @@ -23,14 +23,14 @@ import org.eclipse.cdt.internal.core.parser.ast.NamedOffsets; * @author jcamelon * */ -public class ASTNamespaceDefinition extends ASTDeclaration implements IASTNamespaceDefinition, IASTQScope { +public class ASTNamespaceDefinition extends ASTQualifiedNamedDeclaration implements IASTNamespaceDefinition, IASTQScope { private final String name; private NamedOffsets offsets = new NamedOffsets(); public ASTNamespaceDefinition( IASTScope scope, String name ) { - super( scope ); + super( scope, name ); this.name = name; } /* (non-Javadoc) diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/ast/quick/ASTQualifiedNamedDeclaration.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/ast/quick/ASTQualifiedNamedDeclaration.java new file mode 100644 index 00000000000..d1dc663702c --- /dev/null +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/ast/quick/ASTQualifiedNamedDeclaration.java @@ -0,0 +1,68 @@ +/********************************************************************** + * 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.quick; + +import java.util.Stack; + +import org.eclipse.cdt.core.parser.ast.IASTClassSpecifier; +import org.eclipse.cdt.core.parser.ast.IASTDeclaration; +import org.eclipse.cdt.core.parser.ast.IASTNamespaceDefinition; +import org.eclipse.cdt.core.parser.ast.IASTOffsetableNamedElement; +import org.eclipse.cdt.core.parser.ast.IASTScope; + +/** + * @author jcamelon + * + */ +public class ASTQualifiedNamedDeclaration extends ASTDeclaration +{ + + /** + * @param scope + */ + public ASTQualifiedNamedDeclaration(IASTScope scope, String name ) + { + super(scope); + Stack names = new Stack(); + IASTScope parent = getOwnerScope(); + + names.push( name ); // push on our own name + while (parent != null) + { + if (parent instanceof IASTNamespaceDefinition + || parent instanceof IASTClassSpecifier ) + { + names.push(((IASTOffsetableNamedElement)parent).getName()); + parent = ((IASTDeclaration)parent).getOwnerScope(); + } + else + break; + } + if (names.size() != 0) + { + qualifiedNames = new String[names.size()]; + int counter = 0; + while (!names.empty()) + qualifiedNames[counter++] = (String)names.pop(); + } + else + qualifiedNames = null; + + } + + public String[] getFullyQualifiedName() + { + return qualifiedNames; + } + + private final String[] qualifiedNames; + +} diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/ast/quick/QuickParseASTFactory.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/ast/quick/QuickParseASTFactory.java index 31d8a292e60..b14cdd56aa3 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/ast/quick/QuickParseASTFactory.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/ast/quick/QuickParseASTFactory.java @@ -14,8 +14,8 @@ import java.util.List; import org.eclipse.cdt.core.parser.Backtrack; import org.eclipse.cdt.core.parser.ITokenDuple; -import org.eclipse.cdt.core.parser.ast.AccessVisibility; -import org.eclipse.cdt.core.parser.ast.ClassKind; +import org.eclipse.cdt.core.parser.ast.ASTAccessVisibility; +import org.eclipse.cdt.core.parser.ast.ASTClassKind; import org.eclipse.cdt.core.parser.ast.IASTASMDefinition; import org.eclipse.cdt.core.parser.ast.IASTBaseSpecifier; import org.eclipse.cdt.core.parser.ast.IASTClassSpecifier; @@ -39,8 +39,8 @@ import org.eclipse.cdt.core.parser.ast.IASTClassSpecifier.ClassNameType; import org.eclipse.cdt.core.parser.ast.IASTExpression.IASTNewExpressionDescriptor; import org.eclipse.cdt.core.parser.ast.IASTExpression.Kind; import org.eclipse.cdt.core.parser.ast.IASTSimpleTypeSpecifier.SimpleType; -import org.eclipse.cdt.internal.core.parser.IASTArrayModifier; import org.eclipse.cdt.internal.core.parser.ast.BaseASTFactory; +import org.eclipse.cdt.internal.core.parser.ast.IASTArrayModifier; /** * @author jcamelon @@ -99,7 +99,7 @@ public class QuickParseASTFactory extends BaseASTFactory implements IASTFactory /* (non-Javadoc) * @see org.eclipse.cdt.core.parser.ast.IASTFactory#createClassSpecifier(org.eclipse.cdt.core.parser.ast.IASTScope, java.lang.String, org.eclipse.cdt.core.parser.ast.ClassKind, org.eclipse.cdt.core.parser.ast.ClassNameType, org.eclipse.cdt.core.parser.ast.AccessVisibility, org.eclipse.cdt.core.parser.ast.IASTTemplateDeclaration) */ - public IASTClassSpecifier createClassSpecifier(IASTScope scope, String name, ClassKind kind, ClassNameType type, AccessVisibility access, IASTTemplateDeclaration ownerTemplateDeclaration, int startingOffset, int nameOffset) { + public IASTClassSpecifier createClassSpecifier(IASTScope scope, String name, ASTClassKind kind, ClassNameType type, ASTAccessVisibility access, IASTTemplateDeclaration ownerTemplateDeclaration, int startingOffset, int nameOffset) { IASTClassSpecifier spec = new ASTClassSpecifier( scope, name, kind, type, access, ownerTemplateDeclaration ); spec.setStartingOffset( startingOffset ); spec.setNameOffset( nameOffset ); @@ -109,7 +109,7 @@ public class QuickParseASTFactory extends BaseASTFactory implements IASTFactory /* (non-Javadoc) * @see org.eclipse.cdt.core.parser.ast.IASTFactory#addBaseSpecifier(org.eclipse.cdt.core.parser.ast.IASTClassSpecifier, boolean, org.eclipse.cdt.core.parser.ast.AccessVisibility, java.lang.String) */ - public void addBaseSpecifier(IASTClassSpecifier astClassSpec, boolean isVirtual, AccessVisibility visibility, String string) { + public void addBaseSpecifier(IASTClassSpecifier astClassSpec, boolean isVirtual, ASTAccessVisibility visibility, String string) { IASTBaseSpecifier baseSpecifier = new ASTBaseSpecifier( astClassSpec, isVirtual, visibility ); ((IASTQClassSpecifier)astClassSpec).addBaseClass(baseSpecifier); } @@ -117,7 +117,7 @@ public class QuickParseASTFactory extends BaseASTFactory implements IASTFactory /* (non-Javadoc) * @see org.eclipse.cdt.core.parser.ast.IASTFactory#createElaboratedTypeSpecifier(org.eclipse.cdt.core.parser.ast.ClassKind, java.lang.String, int, int) */ - public IASTElaboratedTypeSpecifier createElaboratedTypeSpecifier(ClassKind elaboratedClassKind, String typeName, int startingOffset, int endOffset) + public IASTElaboratedTypeSpecifier createElaboratedTypeSpecifier(ASTClassKind elaboratedClassKind, String typeName, int startingOffset, int endOffset) { return new ASTElaboratedTypeSpecifier( elaboratedClassKind, typeName, startingOffset, endOffset ); } diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/pst/IDerivableContainerSymbol.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/pst/IDerivableContainerSymbol.java index 6c985781410..c764b355171 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/pst/IDerivableContainerSymbol.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/pst/IDerivableContainerSymbol.java @@ -18,7 +18,7 @@ package org.eclipse.cdt.internal.core.parser.pst; import java.util.List; -import org.eclipse.cdt.core.parser.ast.AccessVisibility; +import org.eclipse.cdt.core.parser.ast.ASTAccessVisibility; /** * @author aniefer @@ -29,7 +29,7 @@ import org.eclipse.cdt.core.parser.ast.AccessVisibility; public interface IDerivableContainerSymbol extends IContainerSymbol { public void addParent( ISymbol parent ); - public void addParent( ISymbol parent, boolean virtual, AccessVisibility visibility ); + public void addParent( ISymbol parent, boolean virtual, ASTAccessVisibility visibility ); public List getParents(); public boolean hasParents(); diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/pst/ParserSymbolTable.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/pst/ParserSymbolTable.java index 75f66e20147..07dad7a78b0 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/pst/ParserSymbolTable.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/pst/ParserSymbolTable.java @@ -22,7 +22,7 @@ import java.util.ListIterator; import java.util.Map; import java.util.Set; -import org.eclipse.cdt.core.parser.ast.AccessVisibility; +import org.eclipse.cdt.core.parser.ast.ASTAccessVisibility; import org.eclipse.cdt.internal.core.parser.ast.full.IPSTSymbolExtension; /** @@ -2337,9 +2337,9 @@ public class ParserSymbolTable { } public void addParent( ISymbol parent ){ - addParent( parent, false, AccessVisibility.PUBLIC ); + addParent( parent, false, ASTAccessVisibility.PUBLIC ); } - public void addParent( ISymbol parent, boolean virtual, AccessVisibility visibility ){ + public void addParent( ISymbol parent, boolean virtual, ASTAccessVisibility visibility ){ if( _parentScopes == null ){ _parentScopes = new LinkedList(); } @@ -3104,7 +3104,7 @@ public class ParserSymbolTable { public class ParentWrapper implements IDerivableContainerSymbol.IParentSymbol { - public ParentWrapper( ISymbol p, boolean v, AccessVisibility s ){ + public ParentWrapper( ISymbol p, boolean v, ASTAccessVisibility s ){ parent = p; isVirtual = v; access = s; @@ -3128,11 +3128,11 @@ public class ParserSymbolTable { private boolean isVirtual = false; private ISymbol parent = null; - private final AccessVisibility access; + private final ASTAccessVisibility access; /** * @return */ - public AccessVisibility getAccess() { + public ASTAccessVisibility getAccess() { return access; } diff --git a/core/org.eclipse.cdt.core/search/org/eclipse/cdt/internal/core/search/matching/CSearchPattern.java b/core/org.eclipse.cdt.core/search/org/eclipse/cdt/internal/core/search/matching/CSearchPattern.java index 6048b619d99..0a246787be8 100644 --- a/core/org.eclipse.cdt.core/search/org/eclipse/cdt/internal/core/search/matching/CSearchPattern.java +++ b/core/org.eclipse.cdt.core/search/org/eclipse/cdt/internal/core/search/matching/CSearchPattern.java @@ -22,7 +22,7 @@ import org.eclipse.cdt.core.parser.IToken; import org.eclipse.cdt.core.parser.ParserFactory; import org.eclipse.cdt.core.parser.ParserMode; import org.eclipse.cdt.core.parser.ScannerException; -import org.eclipse.cdt.core.parser.ast.ClassKind; +import org.eclipse.cdt.core.parser.ast.ASTClassKind; import org.eclipse.cdt.core.search.ICSearchConstants; import org.eclipse.cdt.core.search.ICSearchPattern; import org.eclipse.cdt.internal.core.search.CharOperation; @@ -146,15 +146,15 @@ public abstract class CSearchPattern implements ICSearchConstants, ICSearchPatte } catch (ScannerException e) { } - ClassKind kind = null; + ASTClassKind kind = null; if( searchFor == CLASS ){ - kind = ClassKind.CLASS; + kind = ASTClassKind.CLASS; } else if( searchFor == STRUCT ) { - kind = ClassKind.STRUCT; + kind = ASTClassKind.STRUCT; } else if ( searchFor == ENUM ) { - kind = ClassKind.ENUM; + kind = ASTClassKind.ENUM; } else if ( searchFor == UNION ) { - kind = ClassKind.UNION; + kind = ASTClassKind.UNION; } char [][] qualifications = new char[0][]; diff --git a/core/org.eclipse.cdt.core/search/org/eclipse/cdt/internal/core/search/matching/ClassDeclarationPattern.java b/core/org.eclipse.cdt.core/search/org/eclipse/cdt/internal/core/search/matching/ClassDeclarationPattern.java index 8f02ee33bfb..496e41d502c 100644 --- a/core/org.eclipse.cdt.core/search/org/eclipse/cdt/internal/core/search/matching/ClassDeclarationPattern.java +++ b/core/org.eclipse.cdt.core/search/org/eclipse/cdt/internal/core/search/matching/ClassDeclarationPattern.java @@ -13,7 +13,7 @@ */ package org.eclipse.cdt.internal.core.search.matching; -import org.eclipse.cdt.core.parser.ast.ClassKind; +import org.eclipse.cdt.core.parser.ast.ASTClassKind; import org.eclipse.cdt.core.parser.ast.IASTClassSpecifier; import org.eclipse.cdt.core.parser.ast.IASTOffsetableElement; import org.eclipse.cdt.internal.core.search.CharOperation; @@ -30,7 +30,7 @@ public class ClassDeclarationPattern extends CSearchPattern { super( matchMode, caseSensitive ); } - public ClassDeclarationPattern( char[] name, char[][] containers, ClassKind kind, int mode, boolean caseSensitive ){ + public ClassDeclarationPattern( char[] name, char[][] containers, ASTClassKind kind, int mode, boolean caseSensitive ){ super( mode, caseSensitive ); simpleName = caseSensitive ? name : CharOperation.toLowerCase( name ); if( caseSensitive || containers == null ){ @@ -90,6 +90,6 @@ public class ClassDeclarationPattern extends CSearchPattern { private char[] simpleName; private char[][] containingTypes; - private ClassKind classKind; + private ASTClassKind classKind; } diff --git a/core/org.eclipse.cdt.core/search/org/eclipse/cdt/internal/core/search/matching/MatchLocator.java b/core/org.eclipse.cdt.core/search/org/eclipse/cdt/internal/core/search/matching/MatchLocator.java index 1931869dbe2..335941df525 100644 --- a/core/org.eclipse.cdt.core/search/org/eclipse/cdt/internal/core/search/matching/MatchLocator.java +++ b/core/org.eclipse.cdt.core/search/org/eclipse/cdt/internal/core/search/matching/MatchLocator.java @@ -77,7 +77,6 @@ public class MatchLocator implements ISourceElementRequestor { public void acceptElaboratedTypeSpecifier(IASTElaboratedTypeSpecifier elaboratedTypeSpec){ } public void acceptMethodDeclaration(IASTMethod method) { } public void acceptField(IASTField field) { } - public void acceptConstructor(IASTConstructor constructor) { } public void enterFunctionBody(IASTFunction function) { } public void enterCompilationUnit(IASTCompilationUnit compilationUnit) { } public void enterNamespaceDefinition(IASTNamespaceDefinition namespaceDefinition) { }