diff options
Diffstat (limited to 'platform/duplicates-analysis/src/com/intellij/dupLocator/treeHash/DuplicatesProfileBase.java')
-rw-r--r-- | platform/duplicates-analysis/src/com/intellij/dupLocator/treeHash/DuplicatesProfileBase.java | 55 |
1 files changed, 55 insertions, 0 deletions
diff --git a/platform/duplicates-analysis/src/com/intellij/dupLocator/treeHash/DuplicatesProfileBase.java b/platform/duplicates-analysis/src/com/intellij/dupLocator/treeHash/DuplicatesProfileBase.java new file mode 100644 index 000000000000..d416f29b0646 --- /dev/null +++ b/platform/duplicates-analysis/src/com/intellij/dupLocator/treeHash/DuplicatesProfileBase.java @@ -0,0 +1,55 @@ +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; + } + +} |