# Compare support

If your plug-in defines and manipulates its own resource types, you may have special requirements for comparing resources. Resources are often compared when working with local history or with files from a repository. The compare plug-in supports merging of multiple content streams and the implementation of advanced compare views. Services provided by this plug-in include:

- Interfaces for merging multiple text streams into a single output stream
- Two and three-way compare and merge components for hierarchical structures inferred from text
- Differencing engines for hierarchical structures and character ranges in text

These services are used in the platform to assist with user tasks such as integrating patch files and comparing/merging the workspace with local history.

## Compare viewers

All compare viewers are standard JFace viewers that expect an input object implementing the ICompareInput interface.

Compare viewers are said to be content-oriented if they compare flat inputs such as text or images and structure-oriented if they compare hierarchically structured input elements.