blob: 8429e4763afcb85f45c7b4c02887618509863474 [file] [log] [blame]
package com.intellij.dupLocator.treeHash;
import com.intellij.dupLocator.NodeSpecificHasher;
import com.intellij.dupLocator.util.PsiFragment;
import com.intellij.psi.PsiElement;
import java.util.List;
/**
* @author oleg
*/
public class TreePsiFragment extends PsiFragment {
private final NodeSpecificHasher myHasher;
public TreePsiFragment(final NodeSpecificHasher hasher, final PsiElement root, final int cost) {
super(root, cost);
myHasher = hasher;
}
public TreePsiFragment(final NodeSpecificHasher hasher, final List<? extends PsiElement> element, final int from, final int to) {
super(element, from, to);
myHasher = hasher;
}
public boolean isEqual(PsiElement[] elements, int discardCost) {
if (elements.length != myElementAnchors.length) {
return false;
}
for (int i = 0; i < myElementAnchors.length; i++) {
PsiElement one = myElementAnchors[i].retrieve();
PsiElement two = elements[i];
if (one == null || two == null || !myHasher.areTreesEqual(one, two, discardCost)) {
return false;
}
}
return true;
}
}