Package org.eclipse.compare.rangedifferencer

## Class RangeDifferencer

- java.lang.Object
- - org.eclipse.compare.rangedifferencer.RangeDifferencer

    public final class RangeDifferencer
    extends Object

A `RangeDifferencer` finds the differences between two or three `IRangeComparator`s.

To use the differencer, clients provide an `IRangeComparator` that breaks their input data into a sequence of comparable entities. The differencer returns the differences among these sequences as an array of `RangeDifference` objects (`findDifferences` methods). Every `RangeDifference` represents a single kind of difference and the corresponding ranges of the underlying comparable entities in the left, right, and optionally ancestor sides.

Alternatively, the `findRanges` methods not only return objects for the differing ranges but for non-differing ranges too.

See Also:
  `IRangeComparator`, `RangeDifference`

### Method Summary

All Methods Static Methods Concrete Methods
`static RangeDifference[]` `findDifferences​(AbstractRangeDifferenceFactory factory, IProgressMonitor pm, IRangeComparator left, IRangeComparator right)` Finds the differences between two `IRangeComparator`s.
`static RangeDifference[]` `findDifferences​(AbstractRangeDifferenceFactory factory, IProgressMonitor pm, IRangeComparator ancestor, IRangeComparator left, IRangeComparator right)` Finds the differences among three `IRangeComparator`s.
`static RangeDifference[]` `findDifferences​(IRangeComparator left, IRangeComparator right)` Finds the differences between two `IRangeComparator`s.
`static RangeDifference[]` `findDifferences​(IRangeComparator ancestor, IRangeComparator left, IRangeComparator right)` Finds the differences among three `IRangeComparator`s.
`static RangeDifference[]` `findDifferences​(IProgressMonitor pm, IRangeComparator left, IRangeComparator right)` Finds the differences between two `IRangeComparator`s.
`static RangeDifference[]` `findDifferences​(IProgressMonitor pm, IRangeComparator ancestor, IRangeComparator left, IRangeComparator right)` Finds the differences among three `IRangeComparator`s.
`static RangeDifference[]` `findRanges​(AbstractRangeDifferenceFactory factory, IProgressMonitor pm, IRangeComparator left, IRangeComparator right)` Finds the differences among two `IRangeComparator`s.
`static RangeDifference[]` `findRanges​(AbstractRangeDifferenceFactory factory, IProgressMonitor pm, IRangeComparator ancestor, IRangeComparator left, IRangeComparator right)` Finds the differences among three `IRangeComparator`s.
`static RangeDifference[]` `findRanges​(IRangeComparator left, IRangeComparator right)` Finds the differences among two `IRangeComparator`s.
`static RangeDifference[]` `findRanges​(IRangeComparator ancestor, IRangeComparator left, IRangeComparator right)` Finds the differences among three `IRangeComparator`s.
`static RangeDifference[]` `findRanges​(IProgressMonitor pm, IRangeComparator left, IRangeComparator right)` Finds the differences among two `IRangeComparator`s.
`static RangeDifference[]` `findRanges​(IProgressMonitor pm, IRangeComparator ancestor, IRangeComparator left, IRangeComparator right)` Finds the differences among three `IRangeComparator`s.

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

### Method Detail

#### findDifferences

    public static RangeDifference[] findDifferences​(IRangeComparator left,
                                                    IRangeComparator right)

Finds the differences between two `IRangeComparator`s. The differences are returned as an array of `RangeDifference`s. If no differences are detected an empty array is returned.

Parameters:
  `left` - the left range comparator
  `right` - the right range comparator
Returns:
  an array of range differences, or an empty array if no differences were found

#### findDifferences

    public static RangeDifference[] findDifferences​(IProgressMonitor pm,
                                                    IRangeComparator left,
                                                    IRangeComparator right)

Finds the differences between two `IRangeComparator`s. The differences are returned as an array of `RangeDifference`s. If no differences are detected an empty array is returned.

Parameters:
  `pm` - if not `null` used to report progress
  `left` - the left range comparator
  `right` - the right range comparator
Returns:
  an array of range differences, or an empty array if no differences were found
Since:
  2.0

#### findDifferences

    public static RangeDifference[] findDifferences​(AbstractRangeDifferenceFactory factory,
                                                    IProgressMonitor pm,
                                                    IRangeComparator left,
                                                    IRangeComparator right)

Finds the differences between two `IRangeComparator`s. The differences are returned as an array of `RangeDifference`s. If no differences are detected an empty array is returned.

Parameters:
  `factory` -
  `pm` - if not `null` used to report progress
  `left` - the left range comparator
  `right` - the right range comparator
Returns:
  an array of range differences, or an empty array if no differences were found
Since:
  org.eclipse.compare.core 3.5

#### findDifferences

    public static RangeDifference[] findDifferences​(IRangeComparator ancestor,
                                                    IRangeComparator left,
                                                    IRangeComparator right)

Finds the differences among three `IRangeComparator`s. The differences are returned as a list of `RangeDifference`s. If no differences are detected an empty list is returned. If the ancestor range comparator is `null`, a two-way comparison is performed.

Parameters:
  `ancestor` - the ancestor range comparator or `null`
  `left` - the left range comparator
  `right` - the right range comparator
Returns:
  an array of range differences, or an empty array if no differences were found

#### findDifferences

    public static RangeDifference[] findDifferences​(IProgressMonitor pm,
                                                    IRangeComparator ancestor,
                                                    IRangeComparator left,
                                                    IRangeComparator right)

Finds the differences among three `IRangeComparator`s. The differences are returned as a list of `RangeDifference`s. If no differences are detected an empty list is returned. If the ancestor range comparator is `null`, a two-way comparison is performed.

Parameters:
  `pm` - if not `null` used to report progress
  `ancestor` - the ancestor range comparator or `null`
  `left` - the left range comparator
  `right` - the right range comparator
Returns:
  an array of range differences, or an empty array if no differences were found
Since:
  2.0

#### findDifferences

    public static RangeDifference[] findDifferences​(AbstractRangeDifferenceFactory factory,
                                                    IProgressMonitor pm,
                                                    IRangeComparator ancestor,
                                                    IRangeComparator left,
                                                    IRangeComparator right)

Finds the differences among three `IRangeComparator`s. The differences are returned as a list of `RangeDifference`s. If no differences are detected an empty list is returned. If the ancestor range comparator is `null`, a two-way comparison is performed.

Parameters:
  `factory` -
  `pm` - if not `null` used to report progress
  `ancestor` - the ancestor range comparator or `null`
  `left` - the left range comparator
  `right` - the right range comparator
Returns:
  an array of range differences, or an empty array if no differences were found
Since:
  org.eclipse.compare.core 3.5

#### findRanges

    public static RangeDifference[] findRanges​(IRangeComparator left,
                                               IRangeComparator right)

Finds the differences among two `IRangeComparator`s. In contrast to `findDifferences`, the result contains `RangeDifference` elements for non-differing ranges too.

Parameters:
  `left` - the left range comparator
  `right` - the right range comparator
Returns:
  an array of range differences

#### findRanges

    public static RangeDifference[] findRanges​(IProgressMonitor pm,
                                               IRangeComparator left,
                                               IRangeComparator right)

Finds the differences among two `IRangeComparator`s. In contrast to `findDifferences`, the result contains `RangeDifference` elements for non-differing ranges too.

Parameters:
  `pm` - if not `null` used to report progress
  `left` - the left range comparator
  `right` - the right range comparator
Returns:
  an array of range differences
Since:
  2.0

#### findRanges

    public static RangeDifference[] findRanges​(AbstractRangeDifferenceFactory factory,
                                               IProgressMonitor pm,
                                               IRangeComparator left,
                                               IRangeComparator right)

Finds the differences among two `IRangeComparator`s. In contrast to `findDifferences`, the result contains `RangeDifference` elements for non-differing ranges too.

Parameters:
  `factory` -
  `pm` - if not `null` used to report progress
  `left` - the left range comparator
  `right` - the right range comparator
Returns:
  an array of range differences
Since:
  org.eclipse.compare.core 3.5

#### findRanges

    public static RangeDifference[] findRanges​(IRangeComparator ancestor,
                                               IRangeComparator left,
                                               IRangeComparator right)

Finds the differences among three `IRangeComparator`s. In contrast to `findDifferences`, the result contains `RangeDifference` elements for non-differing ranges too. If the ancestor range comparator is `null`, a two-way comparison is performed.

Parameters:
  `ancestor` - the ancestor range comparator or `null`
  `left` - the left range comparator
  `right` - the right range comparator
Returns:
  an array of range differences

#### findRanges

    public static RangeDifference[] findRanges​(IProgressMonitor pm,
                                               IRangeComparator ancestor,
                                               IRangeComparator left,
                                               IRangeComparator right)

Finds the differences among three `IRangeComparator`s. In contrast to `findDifferences`, the result contains `RangeDifference` elements for non-differing ranges too. If the ancestor range comparator is `null`, a two-way comparison is performed.

Parameters:
  `pm` - if not `null` used to report progress
  `ancestor` - the ancestor range comparator or `null`
  `left` - the left range comparator
  `right` - the right range comparator
Returns:
  an array of range differences
Since:
  2.0

#### findRanges

    public static RangeDifference[] findRanges​(AbstractRangeDifferenceFactory factory,
                                               IProgressMonitor pm,
                                               IRangeComparator ancestor,
                                               IRangeComparator left,
                                               IRangeComparator right)

Finds the differences among three `IRangeComparator`s. In contrast to `findDifferences`, the result contains `RangeDifference` elements for non-differing ranges too. If the ancestor range comparator is `null`, a two-way comparison is performed.

Parameters:
  `factory` -
  `pm` - if not `null` used to report progress
  `ancestor` - the ancestor range comparator or `null`
  `left` - the left range comparator
  `right` - the right range comparator
Returns:
  an array of range differences
Since:
  org.eclipse.compare.core 3.5