org.eclipse.viatra.query.runtime.localsearch.operations.extend

## Class ExtendBinaryTransitiveClosure

- java.lang.Object
- - org.eclipse.viatra.query.runtime.localsearch.operations.extend.ExtendBinaryTransitiveClosure

- All Implemented Interfaces:
    IPatternMatcherOperation, ISearchOperation
  Direct Known Subclasses:
    ExtendBinaryTransitiveClosure.Backward, ExtendBinaryTransitiveClosure.Forward

      public abstract class ExtendBinaryTransitiveClosure
      extends java.lang.Object
      implements ISearchOperation, IPatternMatcherOperation

  Checking for a transitive closure expressed as a local search pattern matcher. The matched pattern must have two parameters of the same model type.
  Since:
    1.7

- - ### Nested Class Summary

    Nested Classes
    Modifier and Type | Class and Description
    --- | ---
    `static class` | `ExtendBinaryTransitiveClosure.Backward` Calculates the transitive closure of a pattern match in a backward direction (first parameter unbound, second bound)
    `static class` | `ExtendBinaryTransitiveClosure.Forward` Calculates the transitive closure of a pattern match in a forward direction (first parameter bound, second unbound).

    - ### Nested classes/interfaces inherited from interface org.eclipse.viatra.query.runtime.localsearch.operations.ISearchOperation

      `ISearchOperation.ISearchOperationExecutor`

  - ### Constructor Summary

    Constructors
    Modifier | Constructor and Description
    --- | ---
    `protected` | `ExtendBinaryTransitiveClosure(CallInformation information, int seedPosition, int targetPosition, boolean reflexive)` The source position will be matched in the called pattern to the first parameter; while target to the second.

  - ### Method Summary

    All Methods Instance Methods Abstract Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `protected abstract java.lang.Object[]` | `calculateCallFrame(java.lang.Object seed)`
    `ISearchOperation.ISearchOperationExecutor` | `createExecutor()` Initializes a new operation executor for the given operation.
    `CallInformation` | `getCallInformation()` Returns the precomputed call information associated with the current operation
    `protected abstract java.lang.Object` | `getTarget(Tuple frame)`
    `java.util.List<java.lang.Integer>` | `getVariablePositions()`
    `java.lang.String` | `toString()`
    `java.lang.String` | `toString(java.util.function.Function<java.lang.Integer,java.lang.String> variableMapping)` Creates a string representation of the search operation by replacing the variable numbers according to the parameter function.

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

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

- - ### Constructor Detail

    - #### ExtendBinaryTransitiveClosure

          protected ExtendBinaryTransitiveClosure(CallInformation information,
                                                  int seedPosition,
                                                  int targetPosition,
                                                  boolean reflexive)

      The source position will be matched in the called pattern to the first parameter; while target to the second.
      Since:
        2.0

  - ### Method Detail

    - #### calculateCallFrame

          protected abstract java.lang.Object[] calculateCallFrame(java.lang.Object seed)

    - #### getTarget

          protected abstract java.lang.Object getTarget(Tuple frame)

    - #### createExecutor

          public ISearchOperation.ISearchOperationExecutor createExecutor()

      Description copied from interface: `ISearchOperation`
      Initializes a new operation executor for the given operation. Repeated calls must return different executor instances.
      Specified by:
        `createExecutor` in interface `ISearchOperation`

    - #### toString

          public java.lang.String toString()

      Overrides:
        `toString` in class `java.lang.Object`

    - #### toString

          public java.lang.String toString(java.util.function.Function<java.lang.Integer,java.lang.String> variableMapping)

      Description copied from interface: `ISearchOperation`
      Creates a string representation of the search operation by replacing the variable numbers according to the parameter function. It is expected that the provided function does return a non-null value for each variable index that is returned by `ISearchOperation.getVariablePositions()`; otherwise a `NullPointerException` will be thrown during the calculation of the string.
      Specified by:
        `toString` in interface `ISearchOperation`

    - #### getVariablePositions

          public java.util.List<java.lang.Integer> getVariablePositions()

      Specified by:
        `getVariablePositions` in interface `ISearchOperation`
      Returns:
        the ordered list of the variable numbers that are affected by the search operation

    - #### getCallInformation

          public CallInformation getCallInformation()

      Description copied from interface: `IPatternMatcherOperation`
      Returns the precomputed call information associated with the current operation
      Specified by:
        `getCallInformation` in interface `IPatternMatcherOperation`