# Package org.eclipse.handly.model.impl.support

Provides basic facilities for implementing handle-based models supporting the API defined in `org.eclipse.handly.model`.

See: Description

- Interface Summary
  Interface | Description
  --- | ---
  ElementDelta.Factory | Represents a factory for creating instances of `ElementDelta`.
  IBodyCache | Represents a cache of element handle/body relationships.
  IElementDeltaBuilder | Builds an `IElementDelta` tree based on elementary changes.
  IElementImplSupport | A "trait-like" interface providing a skeletal implementation of `IElementImplExtension` to minimize the effort required to implement that interface.
  IModelManager | The central point for an element to access information and services related to the model as a whole.
  IModelManager.Provider | Provides access to the model manager.
  INotificationManager | Notifies registered listeners about an element change event.
  ISourceConstructImplSupport | A "trait-like" interface providing a skeletal implementation of `ISourceConstructImplExtension` to minimize the effort required to implement that interface.
  ISourceElementImplSupport | A "trait-like" interface providing a skeletal implementation of `ISourceElementImpl` to minimize the effort required to implement that interface.
  ISourceFileImplSupport | A "trait-like" interface providing a skeletal implementation of `ISourceFileImplExtension` to minimize the effort required to implement that interface.

- Class Summary
  Class | Description
  --- | ---
  BaseSourceFile | Provides a skeletal implementation of `ISourceFileImplExtension` for source files that can have an underlying file in the workspace or outside the workspace.
  Body | Holds cached structure and properties for an `IElement`.
  Element | Provides a skeletal implementation of `IElementImplExtension` to minimize the effort required to implement that interface.
  ElementCache | A bounded LRU cache of element handle/body relationships that is intended to be used in advanced implementations of `IBodyCache`.
  ElementChangeEvent | Default implementation of `IElementChangeEvent`.
  ElementChangeListenerList | A thread safe list of element change listeners.
  ElementChangeListenerList.Entry | An entry of the element change listener list.
  ElementChangeRecorder | Records changes in the state of an element tree between two discrete points in time and produces a delta tree representing the changes.
  ElementDelta | A complete implementation of `IElementDeltaImpl`.
  ElementDelta.Builder | Builds a tree of `ElementDelta` objects based on elementary changes.
  ElementManager | Manages element handle/body relationships for a Handly-based model.
  FsSourceFile | Provides a skeletal implementation of `ISourceFileImplExtension` for source files that have an underlying `IFileStore`.
  ISourceFileImplSupport.NotifyingReconcileOperation | Reconciles a working copy and sends out a delta notification indicating the nature of the change of the working copy since the last time it was reconciled.
  ISourceFileImplSupport.ReconcileOperation | Reconciles a working copy.
  NotificationManager | Default implementation of `INotificationManager`.
  SourceConstruct | Provides a skeletal implementation of `ISourceConstructImplExtension` to minimize the effort required to implement that interface.
  SourceElementBody | Holds cached structure and properties for a source element.
  SourceFile | Provides a skeletal implementation of `ISourceFileImplExtension` to minimize the effort required to implement that interface.
  StructureHelper | A helper class that is typically used when building the inner structure of a source file.
  WorkspaceSourceFile | Provides a skeletal implementation of `ISourceFileImplExtension` for source files residing in the workspace.

## Package org.eclipse.handly.model.impl.support Description

Provides basic facilities for implementing handle-based models supporting the API defined in `org.eclipse.handly.model`.

See Also:
  Handly Core Framework Overview

Copyright (c) 2014, 2020 1C-Soft LLC and others. Made available under the Eclipse Public License 2.0