Copyright (c) 2000, 2011 IBM Corporation and others. This program and the accompanying materials are made available under the terms of the Eclipse Public License 2.0 which accompanies this distribution, and is available at https://www.eclipse.org/legal/epl-2.0/ SPDX-License-Identifier: EPL-2.0 Contributors: IBM Corporation - initial API and implementation
/******************************************************************************* * Copyright (c) 2000, 2011 IBM Corporation and others. * * This program and the accompanying materials * are made available under the terms of the Eclipse Public License 2.0 * which accompanies this distribution, and is available at * https://www.eclipse.org/legal/epl-2.0/ * * SPDX-License-Identifier: EPL-2.0 * * Contributors: * IBM Corporation - initial API and implementation *******************************************************************************/
package org.eclipse.compare.rangedifferencer; import java.util.ArrayList; import java.util.List;
A custom iterator to iterate over a List of RangeDifferences. It is used internally by the RangeDifferencer.
/** * 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<RangeDifference> fRange; int fIndex; RangeDifference[] fArray; RangeDifference fDifference; /* * Creates a differences iterator on an array of <code>RangeDifference</code>s. */ DifferencesIterator(RangeDifference[] differenceRanges) { this.fArray= differenceRanges; this.fIndex= 0; this.fRange= new ArrayList<>(); if (this.fIndex < this.fArray.length) this.fDifference= this.fArray[this.fIndex++]; else this.fDifference= null; } /* * Returns the number of RangeDifferences */ int getCount() { return this.fRange.size(); } /* * Appends the edit to its list and moves to the next <code>RangeDifference</code>. */ void next() { this.fRange.add(this.fDifference); if (this.fDifference != null) { if (this.fIndex < this.fArray.length) this.fDifference= this.fArray[this.fIndex++]; else this.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() { this.fRange.clear(); } }