| 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; |
| } |
| |
| } |