Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
Copyright (c) 2000, 2009 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;
 
 
A set of matches and possible matches, which need to be resolved.
 
 public class MatchingNodeSet {

Map of matching ast nodes that don't need to be resolved to their accuracy level. Each node is removed as it is reported.
 
 SimpleLookupTable matchingNodes = new SimpleLookupTable(3); // node -> accuracy
 private HashtableOfLong matchingNodesKeys = new HashtableOfLong(3); // sourceRange -> node
Tell whether locators need to resolve or not for current matching node set.
 
 public boolean mustResolve;

Set of possible matching ast nodes. They need to be resolved to determine if they really match the search pattern.
 
 
 
 public MatchingNodeSet(boolean mustResolvePattern) {
 	super();
 	this. = mustResolvePattern;
 }
 
 public int addMatch(ASTNode nodeint matchLevel) {
 	int maskedLevel = matchLevel & .;
 	switch (maskedLevel) {
 			if (matchLevel != maskedLevel) {
 			} else {
 			}
 			break;
 			break;
 			if (matchLevel != maskedLevel) {
 			} else {
 			}
 			break;
 			if (matchLevel != maskedLevel) {
 			} else {
 			}
 			break;
 	}
 	return matchLevel;
 }
 public void addPossibleMatch(ASTNode node) {
 	// remove existing node at same position from set
 	// (case of recovery that created the same node several time
 	// see http://bugs.eclipse.org/bugs/show_bug.cgi?id=29366)
 	long key = (((longnode.sourceStart) << 32) + node.sourceEnd;
 	ASTNode existing = (ASTNodethis..get(key);
 	if (existing != null && existing.getClass().equals(node.getClass()))
 
 	// add node to set
 	this..put(keynode);
 }
 public void addTrustedMatch(ASTNode nodeboolean isExact) {
void addTrustedMatch(ASTNode nodeInteger level) {
	// remove existing node at same position from set
	// (case of recovery that created the same node several time
	// see http://bugs.eclipse.org/bugs/show_bug.cgi?id=29366)
	long key = (((longnode.sourceStart) << 32) + node.sourceEnd;
	ASTNode existing = (ASTNodethis..get(key);
	if (existing != null && existing.getClass().equals(node.getClass()))
		this..removeKey(existing);
	// map node to its accuracy level
	this..put(nodelevel);
	this..put(keynode);
protected boolean hasPossibleNodes(int startint end) {
	for (int i = 0, l = nodes.lengthi < li++) {
		ASTNode node = (ASTNodenodes[i];
		if (node != null && start <= node.sourceStart && node.sourceEnd <= end)
			return true;
	}
	nodes = this..;
	for (int i = 0, l = nodes.lengthi < li++) {
		ASTNode node = (ASTNodenodes[i];
		if (node != null && start <= node.sourceStart && node.sourceEnd <= end)
			return true;
	}
	return false;
Returns the matching nodes that are in the given range in the source order.
protected ASTNode[] matchingNodes(int startint end) {
	ArrayList nodes = null;
	Object[] keyTable = this..;
	for (int i = 0, l = keyTable.lengthi < li++) {
		ASTNode node = (ASTNodekeyTable[i];
		if (node != null && start <= node.sourceStart && node.sourceEnd <= end) {
			if (nodes == nullnodes = new ArrayList();
			nodes.add(node);
		}
	}
	if (nodes == nullreturn null;
	ASTNode[] result = new ASTNode[nodes.size()];
	nodes.toArray(result);
	// sort nodes by source starts
	Util.Comparer comparer = new Util.Comparer() {
		public int compare(Object o1Object o2) {
			return ((ASTNodeo1). - ((ASTNodeo2).;
		}
	};
	Util.sort(resultcomparer);
	return result;
	long key = (((longnode.sourceStart) << 32) + node.sourceEnd;
	ASTNode existing = (ASTNodethis..get(key);
	if (existing == nullreturn null;
	return this..remove(node);
	long key = (((longnode.sourceStart) << 32) + node.sourceEnd;
	ASTNode existing = (ASTNodethis..get(key);
	if (existing == nullreturn null;
	this..put(keynull);
	return this..removeKey(node);
public String toString() {
	// TODO (jerome) should show both tables
	StringBuffer result = new StringBuffer();
	result.append("Exact matches:"); //$NON-NLS-1$
	Object[] keyTable = this..;
	Object[] valueTable = this..;
	for (int i = 0, l = keyTable.lengthi < li++) {
		ASTNode node = (ASTNodekeyTable[i];
		if (node == nullcontinue;
		result.append("\n\t"); //$NON-NLS-1$
		switch (((Integer)valueTable[i]).intValue()) {
				result.append("ACCURATE_MATCH: "); //$NON-NLS-1$
				break;
				result.append("INACCURATE_MATCH: "); //$NON-NLS-1$
				break;
				result.append("ERASURE_MATCH: "); //$NON-NLS-1$
				break;
		}
		node.print(0, result);
	}
	result.append("\nPossible matches:"); //$NON-NLS-1$
	for (int i = 0, l = nodes.lengthi < li++) {
		ASTNode node = (ASTNodenodes[i];
		if (node == nullcontinue;
		result.append("\nPOSSIBLE_MATCH: "); //$NON-NLS-1$
		node.print(0, result);
	}
	return result.toString();
New to GrepCode? Check out our FAQ X