Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/rangedifferencer/DifferencesIterator.java')
-rw-r--r--bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/rangedifferencer/DifferencesIterator.java73
1 files changed, 73 insertions, 0 deletions
diff --git a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/rangedifferencer/DifferencesIterator.java b/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/rangedifferencer/DifferencesIterator.java
new file mode 100644
index 000000000..7ea31ef38
--- /dev/null
+++ b/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/rangedifferencer/DifferencesIterator.java
@@ -0,0 +1,73 @@
+/*
+ * Licensed Materials - Property of IBM,
+ * WebSphere Studio Workbench
+ * (c) Copyright IBM Corp 2000, 2001
+ */
+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();
+ }
+}

Back to the top