Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
Copyright (c) 2000, 2010 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;
 
 
 public class TypeReferencePattern extends IntersectingPattern {
 
 	protected char[] qualification;
 	protected char[] simpleName;
 
 	protected char[] currentCategory;
 
 	/* Optimization: case where simpleName == null */
 	public int segmentsSize;
 	protected char[][] segments;
 	protected int currentSegment;
 
 	private final static char[][]
 	private char[][] categories;
 
 	public TypeReferencePattern(char[] qualificationchar[] simpleNameint matchRule) {
 		this(matchRule);
 
 		this. = this. ? qualification : CharOperation.toLowerCase(qualification);
 		this. = (this. || this.) ? simpleName : CharOperation.toLowerCase(simpleName);
 
 		if (simpleName == null)
 			this. = this. == null ?  : CharOperation.splitOn('.'this.);
 		else
 			this. = null;
 
 		if (this. == null)
 			if (this. == null)
 				this. =  0;
 			else
 				this. =  CharOperation.occurencesOf('.'this.) + 1;
 		else
 			this. = this..length;
 
 		this. = true// always resolve (in case of a simple name reference being a potential match)
 	}
 	/*
 	 * Instantiate a type reference pattern with additional information for generics search
 	 */
 	public TypeReferencePattern(char[] qualificationchar[] simpleNameString typeSignatureint matchRule) {
 		this(qualificationsimpleNametypeSignature, 0, matchRule);
 	}
 	/*
 	 * Instantiate a type reference pattern with additional information for generics search and search elements nature
 	 */
 	public TypeReferencePattern(char[] qualificationchar[] simpleNameString typeSignaturechar typeSuffixint matchRule) {
 		this(qualificationsimpleNametypeSignature, 0, typeSuffixmatchRule);
 	}
 
 	/*
 	 * Instanciate a type reference pattern with additional information for generics search, search elements nature and fine grain information
 	 */
 	public TypeReferencePattern(char[] qualificationchar[] simpleNameString typeSignatureint limitTochar typeSuffixint matchRule) {
 		this(qualificationsimpleName,matchRule);
 		this. = typeSuffix;
 		if (typeSignature != null) {
 			// store type signatures and arguments
 			this. = Util.splitTypeLevelsSignature(typeSignature);
 			if (hasTypeArguments()) {
 				this. = getTypeArguments().length + CharOperation.occurencesOf('/'this.[0]) - 1;
 			}
 		}
 	    this. = limitTo & 0xFFFFFFF0;
 	    	this. = ;
 	    }
 	}
 
 	/*
 	 * Instantiate a type reference pattern with additional information for generics search
 	 */
 	public TypeReferencePattern(char[] qualificationchar[] simpleNameIType typeint matchRule) {
 		this(qualificationsimpleNametype, 0, matchRule);
 	}
 
 	/*
 	 * Instanciate a type reference pattern with additional information for generics search
	 */
	public TypeReferencePattern(char[] qualificationchar[] simpleNameIType typeint limitToint matchRule) {
		this(qualificationsimpleName,matchRule);
	    this. = limitTo & 0xFFFFFFF0;
	}
	TypeReferencePattern(int matchRule) {
		super(matchRule);
	}
	public void decodeIndexKey(char[] key) {
		this. = key;
	}
	}
	public char[] getIndexKey() {
		if (this. != null)
			return this.;
		// Optimization, e.g. type reference is 'org.eclipse.jdt.core.*'
		if (this. >= 0)
			return this.[this.];
		return null;
	}
	public char[][] getIndexCategories() {
		return this.;
	}
	protected boolean hasNextQuery() {
		if (this. == nullreturn false;
		// Optimization, e.g. type reference is 'org.eclipse.jdt.core.*'
		// if package has at least 4 segments, don't look at the first 2 since they are mostly
		// redundant (e.g. in 'org.eclipse.jdt.core.*' 'org.eclipse' is used all the time)
		return --this. >= (this..length >= 4 ? 2 : 0);
	}
	public boolean matchesDecodedKey(SearchPattern decodedPattern) {
		return true// index key is not encoded so query results all match
	}
	protected void resetQuery() {
		/* walk the segments from end to start as it will find less potential references using 'lang' than 'java' */
		if (this. != null)
			this. = this..length - 1;
	}
	protected StringBuffer print(StringBuffer output) {
		String patternClassName = getClass().getName();
		output.append(patternClassName.substring(patternClassName.lastIndexOf('.')+1));
		output.append(": qualification<"); //$NON-NLS-1$
		if (this. != null)
			output.append(this.);
		else
			output.append("*"); //$NON-NLS-1$
		output.append(">, type<"); //$NON-NLS-1$
		if (this. != null)
			output.append(this.);
		else
			output.append("*"); //$NON-NLS-1$
		output.append(">"); //$NON-NLS-1$
		return super.print(output);
	}
New to GrepCode? Check out our FAQ X