From c6c90a1e95d075bfd70627998a2f0a9a4dd0e2d1 Mon Sep 17 00:00:00 2001 From: Andrew Niefer Date: Tue, 3 Aug 2004 15:12:09 +0000 Subject: [PATCH] further removal of iterators --- .../core/parser/DeclarationWrapper.java | 15 ++++---- .../internal/core/parser/SelectionParser.java | 8 ++--- .../parser/ast/ASTAbstractDeclaration.java | 7 ++-- .../ast/complete/ASTClassSpecifier.java | 13 +++++-- .../parser/ast/complete/ASTExpression.java | 1 - .../core/parser/ast/complete/ASTFunction.java | 6 ++-- .../ast/complete/ASTInitializerClause.java | 7 ++-- .../core/parser/ast/complete/ASTMethod.java | 12 +++++-- .../core/parser/ast/complete/ASTTypeId.java | 7 ++-- .../ast/complete/CompleteParseASTFactory.java | 35 ++++++++++--------- .../core/parser/token/BasicTokenDuple.java | 11 +++--- 11 files changed, 71 insertions(+), 51 deletions(-) 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 55d46afa730..a25c06cd98b 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 @@ -319,6 +319,9 @@ public class DeclarationWrapper implements IDeclaratorOwner { return declarators.iterator(); } + private List getDeclaratorsList(){ + return declarators; + } /** * @return */ @@ -397,10 +400,10 @@ public class DeclarationWrapper implements IDeclaratorOwner { Declarator d = declarator.getOwnedDeclarator(); - Iterator i = d.getPointerOperators().iterator(); + List ptrOps = d.getPointerOperators(); boolean isWithinClass = scope instanceof IASTClassSpecifier; boolean isFunction = (declarator.getParameters().size() != 0); - if( !i.hasNext() ) + if( ptrOps.size() == 0 ) { if (isTypedef()) @@ -427,7 +430,7 @@ public class DeclarationWrapper implements IDeclaratorOwner declarator.getPointerOperators(), declarator.getArrayModifiers(), convertedParms, - (ASTPointerOperator)i.next()); + (ASTPointerOperator)ptrOps.get( 0 )); ITokenDuple nameDuple = ( d.getPointerOperatorNameDuple() != null ) ? TokenFactory.createTokenDuple( d.getPointerOperatorNameDuple(), d.getNameDuple() ) : d.getNameDuple(); @@ -548,10 +551,10 @@ public class DeclarationWrapper implements IDeclaratorOwner for( int i = 0; i < currentParameters.size(); ++i ) { DeclarationWrapper wrapper = (DeclarationWrapper)currentParameters.get(i); - Iterator j = wrapper.getDeclarators(); - while (j.hasNext()) + List declarators = wrapper.getDeclaratorsList(); + for( int j = 0; j < declarators.size(); j++ ) { - Declarator declarator = (Declarator)j.next(); + Declarator declarator = (Declarator)declarators.get(j); result.add( astFactory.createParameterDeclaration( diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/SelectionParser.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/SelectionParser.java index 9389767fe3d..1c22a7e2b0c 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/SelectionParser.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/SelectionParser.java @@ -11,7 +11,6 @@ package org.eclipse.cdt.internal.core.parser; import java.util.Arrays; -import java.util.Iterator; import org.eclipse.cdt.core.parser.EndOfFileException; import org.eclipse.cdt.core.parser.IParserLogService; @@ -250,12 +249,13 @@ public class SelectionParser extends ContextualParser { return; } int tokensFound = 0; - Iterator i = tokenDuple.iterator(); - while( i.hasNext() ) + + for( IToken token = tokenDuple.getFirstToken(); token != null; token = token.getNext() ) { - IToken token = (IToken) i.next(); if( token == firstTokenOfDuple ) ++tokensFound; if( token == lastTokenOfDuple ) ++tokensFound; + if( token == tokenDuple.getLastToken() ) + break; } if( tokensFound == 2 ) { diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/ast/ASTAbstractDeclaration.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/ast/ASTAbstractDeclaration.java index ae872f19714..59a0e3da318 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/ast/ASTAbstractDeclaration.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/ast/ASTAbstractDeclaration.java @@ -129,9 +129,10 @@ public class ASTAbstractDeclaration implements IASTAbstractDeclaration */ public void acceptElement(ISourceElementRequestor requestor, IReferenceManager manager) { - Iterator arrayMods = getArrayModifiers(); - while( arrayMods.hasNext() ) - ((IASTArrayModifier)arrayMods.next()).acceptElement(requestor, manager); + List arrayMods = getArrayModifiersList(); + int size = arrayMods.size(); + for( int i = 0; i< size; i++ ) + ((IASTArrayModifier)arrayMods.get(i)).acceptElement(requestor, manager); } /* (non-Javadoc) * @see org.eclipse.cdt.core.parser.ISourceElementCallbackDelegate#enterScope(org.eclipse.cdt.core.parser.ISourceElementRequestor) diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/ast/complete/ASTClassSpecifier.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/ast/complete/ASTClassSpecifier.java index c8a2eacb6e0..0f33341e70f 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/ast/complete/ASTClassSpecifier.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/ast/complete/ASTClassSpecifier.java @@ -128,6 +128,11 @@ public class ASTClassSpecifier extends ASTScope implements IASTClassSpecifier { return new BaseIterator( (IDerivableContainerSymbol)getSymbol() ); } + + private List getBaseClausesList(){ + List clauses = ((IDerivableContainerSymbol)getSymbol()).getParents(); + return (clauses != null) ? clauses : Collections.EMPTY_LIST; + } /* (non-Javadoc) * @see org.eclipse.cdt.core.parser.ast.IASTClassSpecifier#getCurrentVisibilityMode() */ @@ -175,10 +180,12 @@ public class ASTClassSpecifier extends ASTScope implements IASTClassSpecifier { /* do nothing */ } - Iterator i = getBaseClauses(); - while( i.hasNext() ) + List bases = getBaseClausesList(); + int size = bases.size(); + for( int i = 0; i < size; i++ ) { - IASTBaseSpecifier baseSpec = (IASTBaseSpecifier)i.next(); + IParentSymbol pw = (IParentSymbol)bases.get(i); + IASTBaseSpecifier baseSpec = new ASTBaseSpecifier( pw.getParent(), pw.isVirtual(), pw.getAccess(), pw.getOffset(), pw.getReferences() ); baseSpec.acceptElement(requestor, manager); } } diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/ast/complete/ASTExpression.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/ast/complete/ASTExpression.java index 0d8a618aa88..b5677893868 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/ast/complete/ASTExpression.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/ast/complete/ASTExpression.java @@ -10,7 +10,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; diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/ast/complete/ASTFunction.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/ast/complete/ASTFunction.java index 45cca2ce45c..2be12217173 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/ast/complete/ASTFunction.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/ast/complete/ASTFunction.java @@ -193,10 +193,10 @@ public class ASTFunction extends ASTScope implements IASTFunction */ protected void processParameterInitializersAndArrayMods(ISourceElementRequestor requestor, IReferenceManager manager) { - Iterator i = parameters.iterator(); - while( i.hasNext() ) + int size = parameters.size(); + for( int i = 0; i < size; i++ ) { - IASTParameterDeclaration parm = (IASTParameterDeclaration)i.next(); + IASTParameterDeclaration parm = (IASTParameterDeclaration)parameters.get(i); if( parm.getDefaultValue() != null ) parm.getDefaultValue().acceptElement(requestor, manager); Iterator arrays = parm.getArrayModifiers(); diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/ast/complete/ASTInitializerClause.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/ast/complete/ASTInitializerClause.java index e1c6974a256..268e495c415 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/ast/complete/ASTInitializerClause.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/ast/complete/ASTInitializerClause.java @@ -81,9 +81,10 @@ public class ASTInitializerClause implements IASTInitializerClause */ public void acceptElement(ISourceElementRequestor requestor, IReferenceManager manager) { - Iterator i = getInitializers(); - while( i.hasNext() ) - ((IASTInitializerClause)i.next()).acceptElement(requestor, manager); + List initializers = getInitializersList(); + int size = initializers.size(); + for( int i = 0; i < size; i++ ) + ((IASTInitializerClause)initializers.get(i)).acceptElement(requestor, manager); if( assignmentExpression != null ) assignmentExpression.acceptElement( requestor, manager ); diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/ast/complete/ASTMethod.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/ast/complete/ASTMethod.java index 4f62a28392f..b01725e76a7 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/ast/complete/ASTMethod.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/ast/complete/ASTMethod.java @@ -10,6 +10,7 @@ ***********************************************************************/ package org.eclipse.cdt.internal.core.parser.ast.complete; +import java.util.Collections; import java.util.Iterator; import java.util.List; @@ -159,10 +160,10 @@ public class ASTMethod extends ASTFunction implements IASTMethod { if( constructorChain != null ) { - Iterator i = getConstructorChainInitializers(); - while( i.hasNext() ) + List initializers = getConstructorChainInitializersList(); + for( int i = 0; i < initializers.size(); i++ ) { - IASTConstructorMemberInitializer c = (IASTConstructorMemberInitializer)i.next(); + IASTConstructorMemberInitializer c = (IASTConstructorMemberInitializer)initializers.get(i); c.acceptElement(requestor, manager); } } @@ -204,6 +205,11 @@ public class ASTMethod extends ASTFunction implements IASTMethod if( constructorChain == null ) return EmptyIterator.EMPTY_ITERATOR; return constructorChain.iterator(); + } + public List getConstructorChainInitializersList(){ + if( constructorChain == null) + return Collections.EMPTY_LIST; + return constructorChain; } /* (non-Javadoc) * @see org.eclipse.cdt.core.parser.ast.IASTMethod#getOwnerClassSpecifier() diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/ast/complete/ASTTypeId.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/ast/complete/ASTTypeId.java index 1d2a1004164..ca4f9acce0f 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/ast/complete/ASTTypeId.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/ast/complete/ASTTypeId.java @@ -206,10 +206,11 @@ public class ASTTypeId implements IASTTypeId if( tokenDuple != null ) tokenDuple.acceptElement( requestor, manager ); - Iterator arrayMods = getArrayModifiers(); - while( arrayMods.hasNext() ) + List arrayMods = getArrayModifiersList(); + int size = arrayMods.size(); + for( int i = 0; i < size; i++ ) { - ((IASTArrayModifier)arrayMods.next()).acceptElement(requestor, manager); + ((IASTArrayModifier)arrayMods.get(i)).acceptElement(requestor, manager); } } diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/ast/complete/CompleteParseASTFactory.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/ast/complete/CompleteParseASTFactory.java index dbaa075c66a..86329f54517 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/ast/complete/CompleteParseASTFactory.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/ast/complete/CompleteParseASTFactory.java @@ -1144,15 +1144,17 @@ public class CompleteParseASTFactory extends BaseASTFactory implements IASTFacto if( createConstructorReference( symbol, exp, duple, references ) ){ //if we have a constructor reference, get rid of the class reference. - Iterator i = ((ASTTypeId)typeId).getReferences().iterator(); - while( i.hasNext() ) + List refs = ((ASTTypeId)typeId).getReferences(); + int size = refs.size(); + for( int i = 0; i < size; i++ ) { - ReferenceCache.ASTReference ref = (ReferenceCache.ASTReference) i.next(); + ReferenceCache.ASTReference ref = (ReferenceCache.ASTReference) refs.get(i); if( CharArrayUtils.equals( ref.getNameCharArray(), duple.toCharArray() ) && ref.getOffset() == duple.getStartOffset() ) { cache.returnReference( ref ); - i.remove(); + refs.remove( i-- ); + size--; } } } @@ -1206,16 +1208,18 @@ public class CompleteParseASTFactory extends BaseASTFactory implements IASTFacto kind == Kind.POSTFIX_DOT_IDEXPRESSION || kind == Kind.POSTFIX_DOT_TEMPL_IDEXPRESS ) { ASTExpression astExpression = (ASTExpression) rhs; - Iterator refs = astExpression.getReferences().iterator(); char[] idExpression = astExpression.getIdExpressionCharArray(); if( idExpression.length > 0 ) //$NON-NLS-1$ { - while( refs.hasNext() ) + List refs = astExpression.getReferences(); + int size = refs.size(); + for( int i = 0; i < size; i++ ) { - IASTReference r = (IASTReference) refs.next(); + IASTReference r = (IASTReference) refs.get(i); if( CharArrayUtils.equals( r.getNameCharArray(), idExpression ) ) { - refs.remove(); + refs.remove(i--); + size--; cache.returnReference(r); } } @@ -2151,7 +2155,7 @@ public class CompleteParseASTFactory extends BaseASTFactory implements IASTFacto symbol.prepareForParameters( parameters.size() ); setParameter( symbol, returnType, false, references ); - setParameters( symbol, references, parameters.iterator() ); + setParameters( symbol, references, parameters ); symbol.setIsForwardDeclaration(!isFunctionDefinition); boolean previouslyDeclared = false; @@ -2213,11 +2217,12 @@ public class CompleteParseASTFactory extends BaseASTFactory implements IASTFacto * @param symbol * @param iterator */ - protected void setParameters(IParameterizedSymbol symbol, List references, Iterator iterator) throws ASTSemanticException + protected void setParameters(IParameterizedSymbol symbol, List references, List params) throws ASTSemanticException { - while( iterator.hasNext() ) + int size = params.size(); + for( int i = 0; i < size; i++) { - setParameter( symbol, (IASTParameterDeclaration)iterator.next(), true, references ); + setParameter( symbol, (IASTParameterDeclaration)params.get(i), true, references ); } } @@ -2489,7 +2494,7 @@ public class CompleteParseASTFactory extends BaseASTFactory implements IASTFacto symbol.prepareForParameters( parameters.size() ); if( returnType.getTypeSpecifier() != null ) setParameter( symbol, returnType, false, references ); - setParameters( symbol, references, parameters.iterator() ); + setParameters( symbol, references, parameters ); IASTClassSpecifier classifier = null; if( scope instanceof IASTTemplateDeclaration ){ @@ -2555,7 +2560,6 @@ public class CompleteParseASTFactory extends BaseASTFactory implements IASTFacto { functionDeclaration.setForwardSymbol( symbol ); // set the definition visibility = declaration visibility -// ASTMethodReference reference = (ASTMethodReference) functionReferences.iterator().next(); visibility = ((IASTMethod)(functionDeclaration.getASTExtension().getPrimaryDeclaration())).getVisiblity(); } } @@ -2963,8 +2967,7 @@ public class CompleteParseASTFactory extends BaseASTFactory implements IASTFacto { previouslyDeclared = true; fieldDeclaration.setForwardSymbol( newSymbol ); -// // set the definition visibility = declaration visibility -// ASTReference reference = (ASTReference) fieldReferences.iterator().next(); + // set the definition visibility = declaration visibility visibility = ((IASTField)fieldDeclaration.getASTExtension().getPrimaryDeclaration()).getVisiblity(); } provider.returnTypeInfo( newInfo ); diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/token/BasicTokenDuple.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/token/BasicTokenDuple.java index 5e9fb0ff69e..410bde5028f 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/token/BasicTokenDuple.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/token/BasicTokenDuple.java @@ -449,13 +449,12 @@ public class BasicTokenDuple implements ITokenDuple { if( duple == null ) return false; boolean foundFirst = false; boolean foundLast = false; - Iterator i = iterator(); - while( i.hasNext() ) + for( IToken current = getFirstToken(); current != null; current = current.getNext() ) { - IToken current = (IToken) i.next(); - if( current == firstToken ) foundFirst = true; - if( current == lastToken ) foundLast = true; - if( foundFirst && foundLast ) break; + if( current == duple.getFirstToken() ) foundFirst = true; + if( current == duple.getLastToken() ) foundLast = true; + if( foundFirst && foundLast ) break; + if( current == getLastToken() ) break; } return ( foundFirst && foundLast );