/* | |
* (c) Copyright IBM Corp. 2000, 2001. | |
* All Rights Reserved. | |
*/ | |
package org.eclipse.compare.rangedifferencer; | |
import java.util.ArrayList; | |
import java.util.Iterator; | |
import java.util.List; | |
/** | |
* A custom iterator to iterate over a List of <code>RangeDifferences</code>. | |
* It is used internally by the <code>RangeDifferencer</code>. | |
*/ | |
/* package */ class DifferencesIterator { | |
List fRange; | |
int fIndex; | |
RangeDifference[] fArray; | |
RangeDifference fDifference; | |
/** | |
* Creates a differences iterator on an array of <code>RangeDifference</code>s. | |
*/ | |
DifferencesIterator(RangeDifference[] differenceRanges) { | |
fArray= differenceRanges; | |
fIndex= 0; | |
fRange= new ArrayList(); | |
if (fIndex < fArray.length) | |
fDifference= fArray[fIndex++]; | |
else | |
fDifference= null; | |
} | |
/** | |
* Returns the number of RangeDifferences | |
*/ | |
int getCount() { | |
return fRange.size(); | |
} | |
/** | |
* Appends the edit to its list and moves to the next <code>RangeDifference</code>. | |
*/ | |
void next() { | |
fRange.add(fDifference); | |
if (fDifference != null) { | |
if (fIndex < fArray.length) | |
fDifference= fArray[fIndex++]; | |
else | |
fDifference= null; | |
} | |
} | |
/** | |
* Difference iterators are used in pairs. | |
* This method returns the other iterator. | |
*/ | |
DifferencesIterator other(DifferencesIterator right, DifferencesIterator left) { | |
if (this == right) | |
return left; | |
return right; | |
} | |
/** | |
* Removes all <code>RangeDifference</code>s | |
*/ | |
void removeAll() { | |
fRange.clear(); | |
} | |
} |