| package com.intellij.dupLocator.iterators; |
| |
| import com.intellij.psi.PsiElement; |
| |
| /** |
| * Iterates over siblings |
| */ |
| public final class SiblingNodeIterator extends NodeIterator { |
| private final PsiElement start; |
| private PsiElement current; |
| private PsiElement previous; |
| |
| public SiblingNodeIterator(final PsiElement element) { |
| previous = current = start = element; |
| } |
| |
| public boolean hasNext() { |
| return current!=null; |
| } |
| |
| public PsiElement current() { |
| return current; |
| } |
| |
| public void advance() { |
| previous = current; |
| current = current != null ? current.getNextSibling():null; |
| } |
| |
| public void rewind() { |
| current = previous; |
| previous = current != null ? current.getPrevSibling():null; |
| } |
| |
| public void reset() { |
| previous = current = start; |
| } |
| } |