Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/ast/complete/ReferenceCache.java')
-rw-r--r--core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/ast/complete/ReferenceCache.java1372
1 files changed, 0 insertions, 1372 deletions
diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/ast/complete/ReferenceCache.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/ast/complete/ReferenceCache.java
deleted file mode 100644
index 9ca823943d8..00000000000
--- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/ast/complete/ReferenceCache.java
+++ /dev/null
@@ -1,1372 +0,0 @@
-/**********************************************************************
- * Copyright (c) 2002-2004 Rational Software Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v0.5
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v05.html
- *
- * Contributors:
- * IBM Rational Software - Initial API and implementation
- ***********************************************************************/
-package org.eclipse.cdt.internal.core.parser.ast.complete;
-
-import java.util.List;
-
-import org.eclipse.cdt.core.parser.ISourceElementCallbackDelegate;
-import org.eclipse.cdt.core.parser.ISourceElementRequestor;
-import org.eclipse.cdt.core.parser.ast.IASTClassReference;
-import org.eclipse.cdt.core.parser.ast.IASTClassSpecifier;
-import org.eclipse.cdt.core.parser.ast.IASTEnumerationReference;
-import org.eclipse.cdt.core.parser.ast.IASTEnumerationSpecifier;
-import org.eclipse.cdt.core.parser.ast.IASTEnumerator;
-import org.eclipse.cdt.core.parser.ast.IASTEnumeratorReference;
-import org.eclipse.cdt.core.parser.ast.IASTField;
-import org.eclipse.cdt.core.parser.ast.IASTFieldReference;
-import org.eclipse.cdt.core.parser.ast.IASTFunction;
-import org.eclipse.cdt.core.parser.ast.IASTFunctionReference;
-import org.eclipse.cdt.core.parser.ast.IASTMethod;
-import org.eclipse.cdt.core.parser.ast.IASTMethodReference;
-import org.eclipse.cdt.core.parser.ast.IASTNamespaceDefinition;
-import org.eclipse.cdt.core.parser.ast.IASTNamespaceReference;
-import org.eclipse.cdt.core.parser.ast.IASTOffsetableNamedElement;
-import org.eclipse.cdt.core.parser.ast.IASTParameterDeclaration;
-import org.eclipse.cdt.core.parser.ast.IASTParameterReference;
-import org.eclipse.cdt.core.parser.ast.IASTReference;
-import org.eclipse.cdt.core.parser.ast.IASTTemplateParameter;
-import org.eclipse.cdt.core.parser.ast.IASTTemplateParameterReference;
-import org.eclipse.cdt.core.parser.ast.IASTTypeSpecifier;
-import org.eclipse.cdt.core.parser.ast.IASTTypedefDeclaration;
-import org.eclipse.cdt.core.parser.ast.IASTTypedefReference;
-import org.eclipse.cdt.core.parser.ast.IASTVariable;
-import org.eclipse.cdt.core.parser.ast.IASTVariableReference;
-import org.eclipse.cdt.core.parser.ast.IReferenceManager;
-
-/**
- * @author jcamelon
- *
- */
-public class ReferenceCache implements IReferenceManager {
-
- /**
- * @author jcamelon
- *
- */
- private interface IReferenceFactory {
- ASTReference createReference();
- ASTReference [] createReferenceArray( int size );
- }
-
- private static final int DEFAULT_CACHE_SIZE = 64;
-
- private boolean[] classReferencesAvailable;
- private ASTReference[] classReferences;
- private boolean[] variableReferencesAvailable;
- private ASTReference[] variableReferences;
- private boolean[] fieldReferencesAvailable;
- private ASTReference[] fieldReferences;
- private boolean[] functionReferencesAvailable;
- private ASTReference[] functionReferences;
- private boolean[] methodReferencesAvailable;
- private ASTReference[] methodReferences;
- private boolean[] enumerationReferencesAvailable;
- private ASTReference[] enumerationReferences;
- private boolean[] enumeratorReferencesAvailable;
- private ASTReference[] enumeratorReferences;
- private boolean[] namespaceReferencesAvailable;
- private ASTReference[] namespaceReferences;
- private boolean[] typedefReferencesAvailable;
- private ASTReference[] typedefReferences;
- private boolean[] parameterReferencesAvailable;
- private ASTReference[] parameterReferences;
- private boolean[] templateParameterReferencesAvailable;
- private ASTReference[] templateParameterReferences;
-
-
-
- private abstract static class BaseReferenceFactory implements IReferenceFactory
- {
- public ASTReference[] createReferenceArray(int size) {
- return new ASTReference[ size ];
- }
- }
-
- private static final IReferenceFactory TYPEDEFREF_FACTORY =
- new BaseReferenceFactory() {
- public ASTReference createReference() { return new ASTTypedefReference(); }
- };
-
- private static final IReferenceFactory NAMESPACEREF_FACTORY =
- new BaseReferenceFactory() {
- public ASTReference createReference() { return new ASTNamespaceReference(); }
- };
-
- private static final IReferenceFactory PARMREF_FACTORY =
- new BaseReferenceFactory() {
- public ASTReference createReference() { return new ASTParameterReference(); }
- };
-
- private static final IReferenceFactory TEMPPARMREF_FACTORY =
- new BaseReferenceFactory() {
- public ASTReference createReference() { return new ASTTemplateParameterReference(); }
- };
-
-
-
- private static final IReferenceFactory CLASSREF_FACTORY =
- new BaseReferenceFactory() {
- public ASTReference createReference() { return new ASTClassReference(); }
-
-
- };
-
- private static final IReferenceFactory FUNCTIONREF_FACTORY =
- new BaseReferenceFactory() {
-
- public ASTReference createReference() {
- return new ASTFunctionReference();
- }
-
- };
-
- private static final IReferenceFactory METHODREF_FACTORY =
- new BaseReferenceFactory() {
-
- public ASTReference createReference() {
- return new ASTMethodReference();
- }
-
- };
-
- private static final IReferenceFactory VARIABLEREF_FACTORY =
- new BaseReferenceFactory() {
-
- public ASTReference createReference() {
- return new ASTVariableReference();
- }
-
- };
-
- private static final IReferenceFactory FIELDREF_FACTORY = new BaseReferenceFactory()
- {
- public ASTReference createReference()
- {
- return new ASTFieldReference();
- }
- };
-
- private static final IReferenceFactory ENUMSPECREF_FACTORY = new BaseReferenceFactory()
- {
- public ASTReference createReference()
- {
- return new ASTEnumerationReference();
- }
- };
-
- private static final IReferenceFactory ENUMERATORREF_FACTORY = new BaseReferenceFactory()
- {
- public ASTReference createReference()
- {
- return new ASTEnumeratorReference();
- }
- };
-
-
- {
- classReferences = CLASSREF_FACTORY.createReferenceArray(DEFAULT_CACHE_SIZE);
- variableReferences = VARIABLEREF_FACTORY.createReferenceArray(DEFAULT_CACHE_SIZE);
- fieldReferences = FIELDREF_FACTORY.createReferenceArray(DEFAULT_CACHE_SIZE);
- functionReferences = FUNCTIONREF_FACTORY.createReferenceArray(DEFAULT_CACHE_SIZE);
- methodReferences = METHODREF_FACTORY.createReferenceArray(DEFAULT_CACHE_SIZE);
- enumerationReferences = ENUMSPECREF_FACTORY.createReferenceArray(DEFAULT_CACHE_SIZE);
- enumeratorReferences = ENUMERATORREF_FACTORY.createReferenceArray(DEFAULT_CACHE_SIZE);
- namespaceReferences = NAMESPACEREF_FACTORY.createReferenceArray(DEFAULT_CACHE_SIZE);
- typedefReferences = TYPEDEFREF_FACTORY.createReferenceArray(DEFAULT_CACHE_SIZE);
- parameterReferences = PARMREF_FACTORY.createReferenceArray(DEFAULT_CACHE_SIZE);
- templateParameterReferences = TEMPPARMREF_FACTORY.createReferenceArray(DEFAULT_CACHE_SIZE);
- classReferencesAvailable = new boolean[DEFAULT_CACHE_SIZE];
- variableReferencesAvailable = new boolean[DEFAULT_CACHE_SIZE];
- fieldReferencesAvailable = new boolean[ DEFAULT_CACHE_SIZE ];
- functionReferencesAvailable = new boolean[ DEFAULT_CACHE_SIZE ];
- methodReferencesAvailable = new boolean[ DEFAULT_CACHE_SIZE ];
- enumerationReferencesAvailable = new boolean[DEFAULT_CACHE_SIZE];
- enumeratorReferencesAvailable = new boolean[DEFAULT_CACHE_SIZE];
- templateParameterReferencesAvailable = new boolean[DEFAULT_CACHE_SIZE];
- namespaceReferencesAvailable = new boolean[DEFAULT_CACHE_SIZE];
- typedefReferencesAvailable = new boolean[DEFAULT_CACHE_SIZE];
- parameterReferencesAvailable = new boolean[DEFAULT_CACHE_SIZE];
- for (int i = 0; i < DEFAULT_CACHE_SIZE; ++i) {
- classReferencesAvailable[i] = true;
- variableReferencesAvailable[i] = true;
- fieldReferencesAvailable[i] = true;
- functionReferencesAvailable[i] = true;
- methodReferencesAvailable[i] = true;
- enumerationReferencesAvailable[i] = true;
- enumeratorReferencesAvailable[i] = true;
- namespaceReferencesAvailable[i] = true;
- typedefReferencesAvailable[i] = true;
- parameterReferencesAvailable[i] = true;
- templateParameterReferencesAvailable[i] = true;
- methodReferences[i] = METHODREF_FACTORY.createReference();
- classReferences[i] = CLASSREF_FACTORY.createReference();
- variableReferences[i] = VARIABLEREF_FACTORY.createReference();
- fieldReferences[i] = FIELDREF_FACTORY.createReference();
- functionReferences[i] = FUNCTIONREF_FACTORY.createReference();
- enumerationReferences[i] = ENUMSPECREF_FACTORY.createReference();
- enumeratorReferences[i] = ENUMERATORREF_FACTORY.createReference();
- typedefReferences[i] = TYPEDEFREF_FACTORY.createReference();
- namespaceReferences[i] = NAMESPACEREF_FACTORY.createReference();
- parameterReferences[i] = PARMREF_FACTORY.createReference();
- templateParameterReferences[i] = TEMPPARMREF_FACTORY.createReference();
- }
- }
-
- public void returnReference(IASTReference reference) {
- if (reference instanceof IASTClassReference)
- {
- returnReference(classReferencesAvailable, classReferences,
- reference);
- return;
- }
- if( reference instanceof IASTVariableReference )
- {
- returnReference( variableReferencesAvailable, variableReferences, reference );
- return;
- }
- if( reference instanceof IASTFieldReference )
- {
- returnReference( fieldReferencesAvailable, fieldReferences, reference );
- return;
- }
- if( reference instanceof IASTFunctionReference )
- {
- returnReference( functionReferencesAvailable, functionReferences, reference );
- return;
- }
- if( reference instanceof IASTMethodReference )
- {
- returnReference( methodReferencesAvailable, methodReferences, reference );
- return;
- }
- if( reference instanceof IASTEnumerationReference )
- {
- returnReference( enumerationReferencesAvailable, enumerationReferences, reference );
- return;
- }
- if( reference instanceof IASTEnumeratorReference )
- {
- returnReference( enumeratorReferencesAvailable, enumeratorReferences, reference );
- return;
- }
- if( reference instanceof IASTNamespaceReference )
- {
- returnReference( namespaceReferencesAvailable, namespaceReferences, reference );
- return;
- }
- if( reference instanceof IASTTypedefReference )
- {
- returnReference( typedefReferencesAvailable, typedefReferences, reference );
- return;
- }
- if( reference instanceof IASTParameterReference )
- {
- returnReference( parameterReferencesAvailable, parameterReferences, reference );
- return;
- }
- if( reference instanceof IASTTemplateParameterReference)
- {
- returnReference( templateParameterReferencesAvailable, templateParameterReferences, reference );
- }
- }
-
- /**
- * @param referencesAvailable
- * @param references
- * @param reference
- */
- private void returnReference(boolean[] referencesAvailable,
- ASTReference[] references, IASTReference reference) {
- for (int i = 0; i < referencesAvailable.length; ++i)
- if (references[i] == reference) {
- referencesAvailable[i] = true;
- references[i].reset();
- break;
- }
-
- }
-
- public IASTReference getReference(int offset,
- ISourceElementCallbackDelegate referencedElement) {
- if (referencedElement instanceof IASTTypedefDeclaration)
- return getTypedefReference(offset,
- (IASTTypedefDeclaration) referencedElement);
- if (referencedElement instanceof IASTEnumerationSpecifier)
- return getEnumerationReference(offset,
- (IASTEnumerationSpecifier) referencedElement);
- if (referencedElement instanceof IASTTemplateParameter)
- return getTemplateParameterReference(offset,
- (IASTTemplateParameter) referencedElement);
- if (referencedElement instanceof IASTParameterDeclaration)
- return getParameterReference(offset,
- (IASTParameterDeclaration) referencedElement);
- if (referencedElement instanceof IASTTypeSpecifier)
- return getClassReference(offset, referencedElement);
- if (referencedElement instanceof IASTNamespaceDefinition)
- return getNamespaceReference(offset,
- (IASTNamespaceDefinition) referencedElement);
- if (referencedElement instanceof IASTMethod)
- return getMethodReference(offset, (IASTMethod) referencedElement);
- if (referencedElement instanceof IASTFunction)
- return getFunctionReference(offset,
- (IASTFunction) referencedElement);
- if (referencedElement instanceof IASTField)
- return getFieldReference(offset, (IASTField) referencedElement);
- if (referencedElement instanceof IASTVariable)
- return getVariableReference(offset,
- (IASTVariable) referencedElement);
- if (referencedElement instanceof IASTEnumerator)
- return getEnumeratorReference(offset,
- (IASTEnumerator) referencedElement);
- return null;
- }
-
- private IASTReference getClassReference(int offset,
- ISourceElementCallbackDelegate referencedElement) {
- for (int i = 0; i < classReferencesAvailable.length; ++i) {
- if (classReferencesAvailable[i]) {
- classReferencesAvailable[i] = false;
- classReferences[i].initialize(offset, referencedElement);
- return classReferences[i];
- }
- }
- int currentSize = classReferences.length;
- GrowResult g = growArrays(classReferences, classReferencesAvailable, CLASSREF_FACTORY );
- classReferences = g.getReferences();
- classReferencesAvailable = g.getAvailables();
- classReferencesAvailable[currentSize] = false;
- classReferences[currentSize].initialize(offset, referencedElement);
- return classReferences[currentSize];
- }
-
- protected static class GrowResult
- {
- private boolean[] b;
- private ASTReference[] r;
-
- public void initialize( boolean [] bools, ASTReference [] refs )
- {
- this.b = bools;
- this.r = refs;
- }
- /**
- * @return Returns the b.
- */
- public boolean[] getAvailables() {
- return b;
- }
- /**
- * @return Returns the r.
- */
- public ASTReference[] getReferences() {
- return r;
- }
- }
-
- protected static final GrowResult growResult = new GrowResult();
-
- /**
- * @param inReferences, boolean [] inReferencesAvailable, IReferenceFactory factory
- * @return
- */
- protected static GrowResult growArrays(ASTReference[] inReferences, boolean [] inReferencesAvailable, IReferenceFactory factory ) {
- int currentSize = inReferences.length;
- boolean[] availables = new boolean[currentSize * 2];
- System.arraycopy(inReferencesAvailable, 0, availables, 0, currentSize);
- ASTReference[] refs = factory.createReferenceArray(currentSize * 2);
- System.arraycopy(inReferences, 0, refs, 0, currentSize);
- for (int i = currentSize; i < availables.length; ++i) {
- refs[i] = factory.createReference();
- availables[i] = true;
- }
- growResult.initialize( availables, refs );
- return growResult;
- }
-
- /**
- * @param offset
- * @param declaration
- * @return
- */
- private IASTReference getTypedefReference(int offset,
- IASTTypedefDeclaration referencedElement) {
- for (int i = 0; i < typedefReferencesAvailable.length; ++i) {
- if (typedefReferencesAvailable[i]) {
- typedefReferencesAvailable[i] = false;
- typedefReferences[i].initialize(offset, referencedElement);
- return typedefReferences[i];
- }
- }
- int currentSize = typedefReferences.length;
- GrowResult g = growArrays( typedefReferences, typedefReferencesAvailable, TYPEDEFREF_FACTORY);
- typedefReferencesAvailable = g.getAvailables();
- typedefReferences = g.getReferences();
- typedefReferencesAvailable[currentSize] = false;
- typedefReferences[currentSize].initialize(offset, referencedElement);
- return typedefReferences[currentSize];
- }
-
- /**
- * @param offset
- * @param variable
- * @return
- */
- private IASTReference getVariableReference(int offset, IASTVariable referencedElement) {
- for (int i = 0; i < variableReferencesAvailable.length; ++i) {
- if (variableReferencesAvailable[i]) {
- variableReferencesAvailable[i] = false;
- variableReferences[i].initialize(offset, referencedElement);
- return variableReferences[i];
- }
- }
- int currentSize = variableReferences.length;
- GrowResult g = growArrays( variableReferences, variableReferencesAvailable, VARIABLEREF_FACTORY );
- variableReferencesAvailable = g.getAvailables();
- variableReferences = g.getReferences();
- variableReferencesAvailable[currentSize] = false;
- variableReferences[currentSize].initialize(offset, referencedElement);
- return variableReferences[currentSize];
- }
-
- /**
- * @param offset
- * @param declaration
- * @return
- */
- private IASTReference getParameterReference(int offset,
- IASTParameterDeclaration referencedElement) {
- for (int i = 0; i < parameterReferencesAvailable.length; ++i) {
- if (parameterReferencesAvailable[i]) {
- parameterReferencesAvailable[i] = false;
- parameterReferences[i].initialize(offset, referencedElement);
- return parameterReferences[i];
- }
- }
- int currentSize = parameterReferences.length;
- GrowResult g = growArrays( parameterReferences, parameterReferencesAvailable, PARMREF_FACTORY);
- parameterReferencesAvailable = g.getAvailables();
- parameterReferences = g.getReferences();
- parameterReferencesAvailable[currentSize] = false;
- parameterReferences[currentSize].initialize(offset, referencedElement);
- return parameterReferences[currentSize];
- }
-
- /**
- * @param offset
- * @param parameter
- * @return
- */
- private IASTReference getTemplateParameterReference(int offset,
- IASTTemplateParameter referencedElement) {
- for (int i = 0; i < templateParameterReferencesAvailable.length; ++i) {
- if (templateParameterReferencesAvailable[i]) {
- templateParameterReferencesAvailable[i] = false;
- templateParameterReferences[i].initialize(offset, referencedElement);
- return templateParameterReferences[i];
- }
- }
- int currentSize = templateParameterReferences.length;
- GrowResult g = growArrays( templateParameterReferences, templateParameterReferencesAvailable, TEMPPARMREF_FACTORY);
- templateParameterReferencesAvailable = g.getAvailables();
- templateParameterReferences = g.getReferences();
- templateParameterReferencesAvailable[currentSize] = false;
- templateParameterReferences[currentSize].initialize(offset, referencedElement);
- return templateParameterReferences[currentSize];
- }
-
- /**
- * @param offset
- * @param definition
- * @return
- */
- private IASTReference getNamespaceReference(int offset,
- IASTNamespaceDefinition referencedElement) {
- for (int i = 0; i < namespaceReferencesAvailable.length; ++i) {
- if (namespaceReferencesAvailable[i]) {
- namespaceReferencesAvailable[i] = false;
- namespaceReferences[i].initialize(offset, referencedElement);
- return namespaceReferences[i];
- }
- }
- int currentSize = namespaceReferences.length;
- GrowResult g = growArrays( namespaceReferences, namespaceReferencesAvailable, NAMESPACEREF_FACTORY);
- namespaceReferencesAvailable = g.getAvailables();
- namespaceReferences = g.getReferences();
- namespaceReferencesAvailable[currentSize] = false;
- namespaceReferences[currentSize].initialize(offset, referencedElement);
- return namespaceReferences[currentSize];
- }
-
- /**
- * @param offset
- * @param specifier
- * @return
- */
- private IASTReference getEnumerationReference(int offset,
- IASTEnumerationSpecifier referencedElement) {
- for (int i = 0; i < enumerationReferencesAvailable.length; ++i) {
- if (enumerationReferencesAvailable[i]) {
- enumerationReferencesAvailable[i] = false;
- enumerationReferences[i].initialize(offset, referencedElement);
- return enumerationReferences[i];
- }
- }
- int currentSize = enumerationReferences.length;
- GrowResult g = growArrays( enumerationReferences, enumerationReferencesAvailable, ENUMSPECREF_FACTORY );
- enumerationReferencesAvailable = g.getAvailables();
- enumerationReferences = g.getReferences();
- enumerationReferencesAvailable[currentSize] = false;
- enumerationReferences[currentSize].initialize(offset, referencedElement);
- return enumerationReferences[currentSize];
- }
-
- /**
- * @param offset
- * @param enumerator
- * @return
- */
- private IASTReference getEnumeratorReference(int offset,
- IASTEnumerator referencedElement ) {
- for (int i = 0; i < enumeratorReferencesAvailable.length; ++i) {
- if (enumeratorReferencesAvailable[i]) {
- enumeratorReferencesAvailable[i] = false;
- enumeratorReferences[i].initialize(offset, referencedElement);
- return enumeratorReferences[i];
- }
- }
- int currentSize = enumeratorReferences.length;
- GrowResult g = growArrays( enumeratorReferences, enumeratorReferencesAvailable, ENUMERATORREF_FACTORY );
- enumeratorReferencesAvailable = g.getAvailables();
- enumeratorReferences = g.getReferences();
- enumeratorReferencesAvailable[currentSize] = false;
- enumeratorReferences[currentSize].initialize(offset, referencedElement);
- return enumeratorReferences[currentSize];
- }
-
- /**
- * @param offset
- * @param method
- * @return
- */
- private IASTReference getMethodReference(int offset, IASTMethod referencedElement ) {
- for (int i = 0; i < methodReferencesAvailable.length; ++i) {
- if (methodReferencesAvailable[i]) {
- methodReferencesAvailable[i] = false;
- methodReferences[i].initialize(offset, referencedElement);
- return methodReferences[i];
- }
- }
- int currentSize = methodReferences.length;
- GrowResult g = growArrays( methodReferences, methodReferencesAvailable, METHODREF_FACTORY );
- methodReferencesAvailable = g.getAvailables();
- methodReferences = g.getReferences();
- methodReferencesAvailable[currentSize] = false;
- methodReferences[currentSize].initialize(offset, referencedElement);
- return methodReferences[currentSize];
- }
-
- /**
- * @param offset
- * @param function
- * @return
- */
- private IASTReference getFunctionReference(int offset, IASTFunction referencedElement ) {
- for (int i = 0; i < functionReferencesAvailable.length; ++i) {
- if (functionReferencesAvailable[i]) {
- functionReferencesAvailable[i] = false;
- functionReferences[i].initialize(offset, referencedElement);
- return functionReferences[i];
- }
- }
- int currentSize = functionReferences.length;
- GrowResult g = growArrays( functionReferences, functionReferencesAvailable, FUNCTIONREF_FACTORY );
- functionReferencesAvailable = g.getAvailables();
- functionReferences = g.getReferences();
- functionReferencesAvailable[currentSize] = false;
- functionReferences[currentSize].initialize(offset, referencedElement);
- return functionReferences[currentSize];
- }
-
- /**
- * @param offset
- * @param field
- * @return
- */
- private IASTReference getFieldReference(int offset, IASTField referencedElement) {
- for (int i = 0; i < fieldReferencesAvailable.length; ++i) {
- if (fieldReferencesAvailable[i]) {
- fieldReferencesAvailable[i] = false;
- fieldReferences[i].initialize(offset, referencedElement);
- return fieldReferences[i];
- }
- }
- int currentSize = fieldReferences.length;
- GrowResult g = growArrays( fieldReferences, fieldReferencesAvailable, FIELDREF_FACTORY );
- fieldReferencesAvailable = g.getAvailables();
- fieldReferences = g.getReferences();
- fieldReferencesAvailable[currentSize] = false;
- fieldReferences[currentSize].initialize(offset, referencedElement);
- return fieldReferences[currentSize];
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.parser.ast.IASTReferenceStore#processReferences()
- */
- public void processReferences(List references, ISourceElementRequestor requestor)
- {
- if( references == null || references.isEmpty() )
- return;
-
- for( int i = 0; i < references.size(); ++i )
- {
- IASTReference reference = ((IASTReference)references.get(i));
- reference.acceptElement(requestor, this );
- returnReference( reference );
- }
-
- references.clear();
- }
-
- public abstract static class ASTReference implements IASTReference {
- protected int offset;
- private static final String EMPTY_STRING = ""; //$NON-NLS-1$
-
- public abstract void reset();
-
- protected void resetOffset() {
- offset = 0;
- }
-
- /**
- * @param offset2
- * @param re
- */
- public abstract void initialize(int o, ISourceElementCallbackDelegate re );
-
-
- protected void initialize(int o) {
- this.offset = o;
- }
-
- /**
- *
- */
- public ASTReference(int offset) {
- this.offset = offset;
- }
- /*
- * (non-Javadoc)
- *
- * @see org.eclipse.cdt.core.parser.ast.IASTReference#getOffset()
- */
- public int getOffset() {
- return offset;
- }
- /*
- * (non-Javadoc)
- *
- * @see org.eclipse.cdt.core.parser.ast.IASTReference#getName()
- */
- public String getName() {
- if (getReferencedElement() instanceof IASTOffsetableNamedElement)
- return ((IASTOffsetableNamedElement) getReferencedElement())
- .getName();
- return EMPTY_STRING;
- }
-
- public boolean equals(Object obj) {
- if (obj == null)
- return false;
- if (!(obj instanceof IASTReference))
- return false;
-
- if (((IASTReference) obj).getName().equals(getName())
- && ((IASTReference) obj).getOffset() == getOffset())
- return true;
- return false;
- }
-
- public void enterScope(ISourceElementRequestor requestor, IReferenceManager manager) {
- }
-
- public void exitScope(ISourceElementRequestor requestor, IReferenceManager manager) {
- }
- }
- public static class ASTClassReference extends ASTReference
- implements
- IASTClassReference {
- private IASTTypeSpecifier reference;
- /**
- * @param i
- * @param specifier
- */
- public ASTClassReference(int i, IASTTypeSpecifier specifier) {
- super(i);
- reference = specifier;
- }
-
- /*
- * (non-Javadoc)
- *
- * @see org.eclipse.cdt.internal.core.parser.ast.complete.ASTReference#initialize(int)
- */
- public void initialize(int o, ISourceElementCallbackDelegate specifier) {
- super.initialize(o);
- reference = (IASTTypeSpecifier) specifier;
- }
- /*
- * (non-Javadoc)
- *
- * @see org.eclipse.cdt.internal.core.parser.ast.complete.ASTReference#reset()
- */
- public void reset() {
- super.resetOffset();
- reference = null;
- }
- /**
- *
- */
- public ASTClassReference() {
- super(0);
- reference = null;
- }
- /*
- * (non-Javadoc)
- *
- * @see org.eclipse.cdt.core.parser.ast.IASTReference#getReferencedElement()
- */
- public ISourceElementCallbackDelegate getReferencedElement() {
- return (ISourceElementCallbackDelegate) reference;
- }
- /*
- * (non-Javadoc)
- *
- * @see org.eclipse.cdt.core.parser.ISourceElementCallbackDelegate#acceptElement(org.eclipse.cdt.core.parser.ISourceElementRequestor)
- */
- public void acceptElement(ISourceElementRequestor requestor, IReferenceManager manager) {
- try {
- requestor.acceptClassReference(this);
- } catch (Exception e) {
- /* do nothing */
- }
- }
- /*
- * (non-Javadoc)
- *
- * @see org.eclipse.cdt.core.parser.ast.IASTClassReference#isResolved()
- */
- public boolean isResolved() {
- return (reference instanceof IASTClassSpecifier);
- }
- }
-
- public static class ASTEnumerationReference extends ASTReference
- implements
- IASTEnumerationReference {
- private IASTEnumerationSpecifier referencedElement;
- /**
- * @param offset
- * @param specifier
- */
- public ASTEnumerationReference(int offset,
- IASTEnumerationSpecifier specifier) {
- super(offset);
- referencedElement = specifier;
- }
-
- /**
- *
- */
- public ASTEnumerationReference() {
- super( 0 );
- referencedElement = null;
- }
-
- /*
- * (non-Javadoc)
- *
- * @see org.eclipse.cdt.core.parser.ast.IASTReference#getReferencedElement()
- */
- public ISourceElementCallbackDelegate getReferencedElement() {
- return referencedElement;
- }
- /*
- * (non-Javadoc)
- *
- * @see org.eclipse.cdt.core.parser.ISourceElementCallbackDelegate#acceptElement(org.eclipse.cdt.core.parser.ISourceElementRequestor)
- */
- public void acceptElement(ISourceElementRequestor requestor, IReferenceManager manager) {
- try {
- requestor.acceptEnumerationReference(this);
- } catch (Exception e) {
- /* do nothing */
- }
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.internal.core.parser.ast.complete.ReferenceCache.ASTReference#initialize(int, org.eclipse.cdt.core.parser.ISourceElementCallbackDelegate)
- */
- public void initialize(int o, ISourceElementCallbackDelegate re) {
- initialize(o);
- this.referencedElement = (IASTEnumerationSpecifier) re;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.internal.core.parser.ast.complete.ReferenceCache.ASTReference#reset()
- */
- public void reset() {
- super.resetOffset();
- this.referencedElement = null;
- }
- }
-
- public static class ASTEnumeratorReference extends ASTReference
- implements
- IASTEnumeratorReference {
-
- private IASTEnumerator enumerator;
- /**
- * @param offset
- * @param enumerator
- */
- public ASTEnumeratorReference(int offset, IASTEnumerator enumerator) {
- super(offset);
- this.enumerator = enumerator;
- }
-
- /**
- *
- */
- public ASTEnumeratorReference() {
- super( 0 );
- enumerator = null;
- }
-
- /*
- * (non-Javadoc)
- *
- * @see org.eclipse.cdt.core.parser.ast.IASTReference#getReferencedElement()
- */
- public ISourceElementCallbackDelegate getReferencedElement() {
- return enumerator;
- }
- /*
- * (non-Javadoc)
- *
- * @see org.eclipse.cdt.core.parser.ISourceElementCallbackDelegate#acceptElement(org.eclipse.cdt.core.parser.ISourceElementRequestor)
- */
- public void acceptElement(ISourceElementRequestor requestor, IReferenceManager manager) {
- try {
- requestor.acceptEnumeratorReference(this);
- } catch (Exception e) {
- /* do nothing */
- }
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.internal.core.parser.ast.complete.ReferenceCache.ASTReference#initialize(int, org.eclipse.cdt.core.parser.ISourceElementCallbackDelegate)
- */
- public void initialize(int o, ISourceElementCallbackDelegate referencedElement) {
- super.initialize(o);
- this.enumerator = (IASTEnumerator) referencedElement;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.internal.core.parser.ast.complete.ReferenceCache.ASTReference#reset()
- */
- public void reset() {
- super.resetOffset();
- this.enumerator = null;
- }
- }
- public static class ASTFieldReference extends ASTReference
- implements
- IASTReference,
- IASTFieldReference {
- private IASTField referencedElement;
- /**
- * @param offset
- * @param field
- */
- public ASTFieldReference(int offset, IASTField field) {
- super(offset);
- referencedElement = field;
- }
- /**
- *
- */
- public ASTFieldReference() {
- super(0);
- referencedElement = null;
- }
- /*
- * (non-Javadoc)
- *
- * @see org.eclipse.cdt.core.parser.ast.IASTReference#getReferencedElement()
- */
- public ISourceElementCallbackDelegate getReferencedElement() {
- return referencedElement;
- }
- /*
- * (non-Javadoc)
- *
- * @see org.eclipse.cdt.core.parser.ISourceElementCallbackDelegate#acceptElement(org.eclipse.cdt.core.parser.ISourceElementRequestor)
- */
- public void acceptElement(ISourceElementRequestor requestor, IReferenceManager manager) {
- try {
- requestor.acceptFieldReference(this);
- } catch (Exception e) {
- /* do nothing */
- }
- }
- /* (non-Javadoc)
- * @see org.eclipse.cdt.internal.core.parser.ast.complete.ReferenceCache.ASTReference#initialize(int, org.eclipse.cdt.core.parser.ISourceElementCallbackDelegate)
- */
- public void initialize(int o, ISourceElementCallbackDelegate re) {
- initialize(o);
- this.referencedElement = (IASTField) re;
- }
- /* (non-Javadoc)
- * @see org.eclipse.cdt.internal.core.parser.ast.complete.ReferenceCache.ASTReference#reset()
- */
- public void reset() {
- resetOffset();
- this.referencedElement = null;
- }
- }
-
- public static class ASTFunctionReference extends ASTReference
- implements
- IASTReference,
- IASTFunctionReference {
- private IASTFunction declaration;
- /**
- * @param offset
- */
- public ASTFunctionReference(int offset,
- IASTFunction referencedDeclaration) {
- super(offset);
- this.declaration = referencedDeclaration;
- }
- /**
- *
- */
- public ASTFunctionReference() {
- super(0);
- declaration = null;
- }
- /*
- * (non-Javadoc)
- *
- * @see org.eclipse.cdt.core.parser.ast.IASTReference#getReferencedElement()
- */
- public ISourceElementCallbackDelegate getReferencedElement() {
- return declaration;
- }
- /*
- * (non-Javadoc)
- *
- * @see org.eclipse.cdt.core.parser.ISourceElementCallbackDelegate#acceptElement(org.eclipse.cdt.core.parser.ISourceElementRequestor)
- */
- public void acceptElement(ISourceElementRequestor requestor, IReferenceManager manager) {
- try {
- requestor.acceptFunctionReference(this);
- } catch (Exception e) {
- /* do nothing */
- }
- }
- /* (non-Javadoc)
- * @see org.eclipse.cdt.internal.core.parser.ast.complete.ReferenceCache.ASTReference#initialize(int, org.eclipse.cdt.core.parser.ISourceElementCallbackDelegate)
- */
- public void initialize(int o, ISourceElementCallbackDelegate referencedElement) {
- super.initialize(o);
- this.declaration = (IASTFunction) referencedElement;
- }
- /* (non-Javadoc)
- * @see org.eclipse.cdt.internal.core.parser.ast.complete.ReferenceCache.ASTReference#reset()
- */
- public void reset() {
- resetOffset();
- this.declaration = null;
- }
- }
- public static class ASTMethodReference extends ASTReference
- implements
- IASTMethodReference {
- private IASTMethod method;
- /**
- * @param offset
- */
- public ASTMethodReference(int offset, IASTMethod method) {
- super(offset);
- this.method = method;
- }
- /**
- *
- */
- public ASTMethodReference() {
- super(0);
- this.method = null;
- }
- /*
- * (non-Javadoc)
- *
- * @see org.eclipse.cdt.core.parser.ast.IASTReference#getReferencedElement()
- */
- public ISourceElementCallbackDelegate getReferencedElement() {
- return method;
- }
- /*
- * (non-Javadoc)
- *
- * @see org.eclipse.cdt.core.parser.ISourceElementCallbackDelegate#acceptElement(org.eclipse.cdt.core.parser.ISourceElementRequestor)
- */
- public void acceptElement(ISourceElementRequestor requestor, IReferenceManager manager) {
- try {
- requestor.acceptMethodReference(this);
- } catch (Exception e) {
- /* do nothing */
- }
- }
- /* (non-Javadoc)
- * @see org.eclipse.cdt.internal.core.parser.ast.complete.ReferenceCache.ASTReference#initialize(int, org.eclipse.cdt.core.parser.ISourceElementCallbackDelegate)
- */
- public void initialize(int o, ISourceElementCallbackDelegate referencedElement) {
- super.initialize(o);
- this.method = (IASTMethod) referencedElement;
- }
- /* (non-Javadoc)
- * @see org.eclipse.cdt.internal.core.parser.ast.complete.ReferenceCache.ASTReference#reset()
- */
- public void reset() {
- resetOffset();
- this.method= null;
- }
- }
- public static class ASTNamespaceReference extends ASTReference
- implements
- IASTNamespaceReference {
- private IASTNamespaceDefinition reference;
-
- /**
- * @param offset
- * @param definition
- */
- public ASTNamespaceReference(int offset,
- IASTNamespaceDefinition definition) {
- super(offset);
- reference = definition;
- }
-
- /**
- *
- */
- public ASTNamespaceReference() {
- super(0);
- reference = null;
- }
-
- /*
- * (non-Javadoc)
- *
- * @see org.eclipse.cdt.core.parser.ast.IASTReference#getReferencedElement()
- */
- public ISourceElementCallbackDelegate getReferencedElement() {
- return reference;
- }
- /*
- * (non-Javadoc)
- *
- * @see org.eclipse.cdt.core.parser.ISourceElementCallbackDelegate#acceptElement(org.eclipse.cdt.core.parser.ISourceElementRequestor)
- */
- public void acceptElement(ISourceElementRequestor requestor, IReferenceManager manager) {
- try {
- requestor.acceptNamespaceReference(this);
- } catch (Exception e) {
- /* do nothing */
- }
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.internal.core.parser.ast.complete.ReferenceCache.ASTReference#initialize(int, org.eclipse.cdt.core.parser.ISourceElementCallbackDelegate)
- */
- public void initialize(int o, ISourceElementCallbackDelegate referencedElement) {
- super.initialize(o);
- this.reference = (IASTNamespaceDefinition) referencedElement;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.internal.core.parser.ast.complete.ReferenceCache.ASTReference#reset()
- */
- public void reset() {
- resetOffset();
- this.reference = null;
- }
- }
-
- public static class ASTParameterReference extends ASTReference
- implements
- IASTParameterReference {
- private IASTParameterDeclaration parm;
-
- /**
- * @param offset
- * @param declaration
- */
- public ASTParameterReference(int offset,
- IASTParameterDeclaration declaration) {
- super(offset);
- parm = declaration;
- }
-
- /**
- *
- */
- public ASTParameterReference() {
- super(0);
- parm = null;
- }
-
- /*
- * (non-Javadoc)
- *
- * @see org.eclipse.cdt.core.parser.ast.IASTReference#getReferencedElement()
- */
- public ISourceElementCallbackDelegate getReferencedElement() {
- return parm;
- }
- /*
- * (non-Javadoc)
- *
- * @see org.eclipse.cdt.core.parser.ISourceElementCallbackDelegate#acceptElement(org.eclipse.cdt.core.parser.ISourceElementRequestor)
- */
- public void acceptElement(ISourceElementRequestor requestor, IReferenceManager manager) {
- try {
- requestor.acceptParameterReference(this);
- } catch (Exception e) {
- /* do nothing */
- }
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.internal.core.parser.ast.complete.ReferenceCache.ASTReference#initialize(int, org.eclipse.cdt.core.parser.ISourceElementCallbackDelegate)
- */
- public void initialize(int o, ISourceElementCallbackDelegate referencedElement) {
- initialize(o);
- this.parm = (IASTParameterDeclaration) referencedElement;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.internal.core.parser.ast.complete.ReferenceCache.ASTReference#reset()
- */
- public void reset() {
- resetOffset();
- this.parm = null;
- }
- }
- public static class ASTTemplateParameterReference extends ASTReference
- implements
- IASTTemplateParameterReference {
- private IASTTemplateParameter parameter;
- /**
- * @param offset
- */
- public ASTTemplateParameterReference(int offset,
- IASTTemplateParameter param) {
- super(offset);
- parameter = param;
- }
-
- /**
- *
- */
- public ASTTemplateParameterReference() {
- super(0);
- parameter = null;
- }
-
- /*
- * (non-Javadoc)
- *
- * @see org.eclipse.cdt.core.parser.ast.IASTReference#getReferencedElement()
- */
- public ISourceElementCallbackDelegate getReferencedElement() {
- return parameter;
- }
- /*
- * (non-Javadoc)
- *
- * @see org.eclipse.cdt.core.parser.ISourceElementCallbackDelegate#acceptElement(org.eclipse.cdt.core.parser.ISourceElementRequestor)
- */
- public void acceptElement(ISourceElementRequestor requestor, IReferenceManager manager) {
- try {
- requestor.acceptTemplateParameterReference(this);
- } catch (Exception e) {
- /* do nothing */
- }
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.internal.core.parser.ast.complete.ReferenceCache.ASTReference#initialize(int, org.eclipse.cdt.core.parser.ISourceElementCallbackDelegate)
- */
- public void initialize(int o, ISourceElementCallbackDelegate referencedElement) {
- super.initialize(o);
- parameter = (IASTTemplateParameter) referencedElement;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.internal.core.parser.ast.complete.ReferenceCache.ASTReference#reset()
- */
- public void reset() {
- resetOffset();
- this.parameter = null;
- }
- }
- public static class ASTTypedefReference extends ASTReference
- implements
- IASTTypedefReference {
- private IASTTypedefDeclaration referencedItem;
- /**
- * @param offset
- */
- public ASTTypedefReference(int offset,
- IASTTypedefDeclaration referencedItem) {
- super(offset);
- this.referencedItem = referencedItem;
- }
- /**
- *
- */
- public ASTTypedefReference() {
- super( 0 );
- this.referencedItem = null;
- }
- /*
- * (non-Javadoc)
- *
- * @see org.eclipse.cdt.core.parser.ast.IASTReference#getReferencedElement()
- */
- public ISourceElementCallbackDelegate getReferencedElement() {
- return referencedItem;
- }
- /*
- * (non-Javadoc)
- *
- * @see org.eclipse.cdt.core.parser.ISourceElementCallbackDelegate#acceptElement(org.eclipse.cdt.core.parser.ISourceElementRequestor)
- */
- public void acceptElement(ISourceElementRequestor requestor, IReferenceManager manager) {
- try {
- requestor.acceptTypedefReference(this);
- } catch (Exception e) {
- /* do nothing */
- }
- }
- /* (non-Javadoc)
- * @see org.eclipse.cdt.internal.core.parser.ast.complete.ReferenceCache.ASTReference#initialize(int, org.eclipse.cdt.core.parser.ISourceElementCallbackDelegate)
- */
- public void initialize(int o, ISourceElementCallbackDelegate referencedElement) {
- super.initialize(o);
- referencedItem = (IASTTypedefDeclaration) referencedElement;
- }
- /* (non-Javadoc)
- * @see org.eclipse.cdt.internal.core.parser.ast.complete.ReferenceCache.ASTReference#reset()
- */
- public void reset() {
- super.resetOffset();
- referencedItem = null;
- }
- }
- public static class ASTVariableReference extends ASTReference
- implements
- IASTReference,
- IASTVariableReference {
-
- private IASTVariable referencedElement;
- /**
- * @param offset
- * @param variable
- */
- public ASTVariableReference(int offset, IASTVariable variable) {
- super(offset);
- referencedElement = variable;
- }
- /* (non-Javadoc)
- * @see org.eclipse.cdt.internal.core.parser.ast.complete.ReferenceCache.ASTReference#initialize(int)
- */
- public void initialize(int o, ISourceElementCallbackDelegate var ) {
- super.initialize(o);
- referencedElement = (IASTVariable) var;
- }
- /* (non-Javadoc)
- * @see org.eclipse.cdt.internal.core.parser.ast.complete.ReferenceCache.ASTReference#reset()
- */
- public void reset() {
- super.resetOffset();
- referencedElement = null;
- }
- /**
- *
- */
- public ASTVariableReference() {
- super(0);
- referencedElement = null;
- }
- /*
- * (non-Javadoc)
- *
- * @see org.eclipse.cdt.core.parser.ast.IASTReference#getReferencedElement()
- */
- public ISourceElementCallbackDelegate getReferencedElement() {
- return referencedElement;
- }
- /*
- * (non-Javadoc)
- *
- * @see org.eclipse.cdt.core.parser.ISourceElementCallbackDelegate#acceptElement(org.eclipse.cdt.core.parser.ISourceElementRequestor)
- */
- public void acceptElement(ISourceElementRequestor requestor, IReferenceManager manager) {
- try {
- requestor.acceptVariableReference(this);
- } catch (Exception e) {
- /* do nothing */
- }
- }
- }
- /**
- * @return
- */
- public boolean isBalanced() {
- return isBalanced( classReferencesAvailable ) &&
- isBalanced( variableReferencesAvailable ) &&
- isBalanced( fieldReferencesAvailable ) &&
- isBalanced( functionReferencesAvailable ) &&
- isBalanced( methodReferencesAvailable ) &&
- isBalanced( enumerationReferencesAvailable ) &&
- isBalanced( enumeratorReferencesAvailable ) &&
- isBalanced( parameterReferencesAvailable ) &&
- isBalanced( templateParameterReferencesAvailable ) &&
- isBalanced( typedefReferencesAvailable);
- }
-
- /**
- * @param referencesAvailable
- * @return
- */
- private boolean isBalanced(boolean[] referencesAvailable ) {
- for( int i = 0; i < referencesAvailable.length; ++i )
- {
- if( !referencesAvailable[i] )
- return false;
- }
- return true;
- }
-
-} \ No newline at end of file

Back to the top