org.eclipse.viatra.query.runtime.matchers.psystem.rewriters

## Interface IPTraceableTraceProvider

- All Known Subinterfaces:
    IRewriterTraceCollector
  All Known Implementing Classes:
    MappingTraceCollector, NopTraceCollector

      public interface IPTraceableTraceProvider

  This interface provides methods to trace the `PTraceable`s of a transformed `PQuery` produced by a `PDisjunctionRewriter`. In case the associated rewriter is a composite (a.k.a. `PDisjunctionRewriterCacher`), this trace provider handles traces end-to-end, hiding all the intermediate transformation steps.
  Since:
    1.6
  No Implement:
    This interface is not intended to be implemented by clients.

- - ### Method Summary

    All Methods Instance Methods Abstract Methods
    Modifier and Type | Method and Description
    --- | ---
    `java.util.stream.Stream<PTraceable>` | `getCanonicalTraceables(PTraceable derivative)` Find and return the canonical `PTraceable`s in the original query which are the sources of the given derivative `PTraceable` according to the transformation.
    `java.util.stream.Stream<IDerivativeModificationReason>` | `getRemovalReasons(PTraceable traceable)` Returns the reasons for which the traceable element has been removed by the rewriters.
    `java.util.stream.Stream<PTraceable>` | `getRewrittenTraceables(PTraceable source)` Find and return the `PTraceable`s in the rewritten query which are the destinations of the given source `PTraceable` according to the transformation.
    `boolean` | `isRemoved(PTraceable traceable)` Returns whether the given traceable element has been removed by every rewriter for a reason.

- - ### Method Detail

    - #### getCanonicalTraceables

          java.util.stream.Stream<PTraceable> getCanonicalTraceables(PTraceable derivative)

      Find and return the canonical `PTraceable`s in the original query which are the sources of the given derivative `PTraceable` according to the transformation.
      Parameters:
        `derivative` - a `PTraceable` which is contained by the `PQuery` produced by the associated rewriter
      Since:
        2.0

    - #### getRewrittenTraceables

          java.util.stream.Stream<PTraceable> getRewrittenTraceables(PTraceable source)

      Find and return the `PTraceable`s in the rewritten query which are the destinations of the given source `PTraceable` according to the transformation.
      Parameters:
        `source` - a `PTraceable` which is contained by a `PQuery` before rewriting
      Since:
        2.0

    - #### isRemoved

          boolean isRemoved(PTraceable traceable)

      Returns whether the given traceable element has been removed by every rewriter for a reason.

    - #### getRemovalReasons

          java.util.stream.Stream<IDerivativeModificationReason> getRemovalReasons(PTraceable traceable)

      Returns the reasons for which the traceable element has been removed by the rewriters.
      Returns:
        the reasons of removal during rewriting
      Since:
        2.0