blob: d416f29b06465f0c9e2dea39e11fb317bf0a1a24 [file] [log] [blame]
package com.intellij.dupLocator.treeHash;
import com.intellij.dupLocator.*;
import com.intellij.dupLocator.util.DuplocatorUtil;
import com.intellij.dupLocator.util.PsiFragment;
import com.intellij.lang.Language;
import com.intellij.psi.PsiElement;
import com.intellij.psi.tree.TokenSet;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
/**
* @author Eugene.Kudelevsky
*/
public abstract class DuplicatesProfileBase extends DuplicatesProfile {
@NotNull
@Override
public DuplocateVisitor createVisitor(@NotNull FragmentsCollector collector) {
return new NodeSpecificHasherBase(DuplocatorSettings.getInstance(), collector, this);
}
public abstract int getNodeCost(@NotNull PsiElement element);
public TokenSet getLiterals() {
return TokenSet.EMPTY;
}
@Override
@NotNull
public ExternalizableDuplocatorState getDuplocatorState(@NotNull Language language) {
return DuplocatorUtil.registerAndGetState(language);
}
@Override
public boolean isMyDuplicate(@NotNull DupInfo info, int index) {
PsiFragment[] fragments = info.getFragmentOccurences(index);
if (fragments.length > 0) {
PsiElement[] elements = fragments[0].getElements();
if (elements.length > 0) {
final PsiElement first = elements[0];
if (first != null) {
Language language = first.getLanguage();
return isMyLanguage(language);
}
}
}
return false;
}
@Nullable
public PsiElementRole getRole(@NotNull PsiElement element) {
return null;
}
}