/******************************************************************************* * Copyright (c) 2000, 2008 IBM Corporation and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * IBM Corporation - initial API and implementation *******************************************************************************/ package org.eclipse.jdt.internal.core.search.matching; import org.eclipse.jdt.core.compiler.CharOperation; import org.eclipse.jdt.core.search.IJavaSearchConstants; public abstract class VariablePattern extends JavaSearchPattern { protected boolean findDeclarations = false; protected boolean findReferences = false; protected boolean readAccess = false; protected boolean writeAccess = false; protected char[] name; public final static int FINE_GRAIN_MASK = IJavaSearchConstants.SUPER_REFERENCE | IJavaSearchConstants.QUALIFIED_REFERENCE | IJavaSearchConstants.THIS_REFERENCE | IJavaSearchConstants.IMPLICIT_THIS_REFERENCE; public VariablePattern(int patternKind, char[] name, int limitTo, int matchRule) { super(patternKind, matchRule); this.fineGrain = limitTo & FINE_GRAIN_MASK; if (this.fineGrain == 0) { switch (limitTo & 0xF) { case IJavaSearchConstants.DECLARATIONS : this.findDeclarations = true; break; case IJavaSearchConstants.REFERENCES : this.readAccess = true; this.writeAccess = true; break; case IJavaSearchConstants.READ_ACCESSES : this.readAccess = true; break; case IJavaSearchConstants.WRITE_ACCESSES : this.writeAccess = true; break; case IJavaSearchConstants.ALL_OCCURRENCES : this.findDeclarations = true; this.readAccess = true; this.writeAccess = true; break; } this.findReferences = this.readAccess || this.writeAccess; } this.name = (this.isCaseSensitive || this.isCamelCase) ? name : CharOperation.toLowerCase(name); } /* * Returns whether a method declaration or message send will need to be resolved to * find out if this method pattern matches it. */ protected boolean mustResolve() { // would like to change this so that we only do it if generic references are found return this.findReferences || this.fineGrain != 0; // always resolve (in case of a simple name reference being a potential match) } }