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

## Interface ISearchOperation

- All Known Subinterfaces:
    `IIteratingSearchOperation`
  All Known Implementing Classes:
    `AggregatorCheck`, `AggregatorExtend`, `BinaryTransitiveClosureCheck`, `CheckConstant`, `CheckPositivePatternCall`, `ContainmentCheck`, `CountCheck`, `CountOperation`, `ExpressionCheck`, `ExpressionEval`, `ExpressionEvalCheck`, `ExtendBinaryTransitiveClosure`, `ExtendBinaryTransitiveClosure.Backward`, `ExtendBinaryTransitiveClosure.Forward`, `ExtendConstant`, `ExtendPositivePatternCall`, `ExtendToEStructuralFeatureSource`, `ExtendToEStructuralFeatureTarget`, `InequalityCheck`, `InstanceOfClassCheck`, `InstanceOfDataTypeCheck`, `InstanceOfJavaClassCheck`, `IterateOverChildren`, `IterateOverContainers`, `IterateOverEClassInstances`, `IterateOverEDatatypeInstances`, `IterateOverEStructuralFeatureInstances`, `NACOperation`, `StructuralFeatureCheck`

      public interface ISearchOperation

  Represents a search operation executable by the LS engine. It is expected that an operation can be shared among multiple LS matchers, but the created executors are not.

- - ### Nested Class Summary

    Nested Classes
    Modifier and Type | Interface | Description
    --- | --- | ---
    `static interface` | `ISearchOperation.ISearchOperationExecutor` |

  - ### Method Summary

    All Methods Instance Methods Abstract Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `ISearchOperation.ISearchOperationExecutor` | `createExecutor()` | Initializes a new operation executor for the given operation.
    `java.util.List<java.lang.Integer>` | `getVariablePositions()` |
    `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.

- - ### Method Detail

    - #### createExecutor

          ISearchOperation.ISearchOperationExecutor createExecutor()

      Initializes a new operation executor for the given operation. Repeated calls must return different executor instances.
      Since:
        2.0

    - #### getVariablePositions

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

      Returns:
        the ordered list of the variable numbers that are affected by the search operation

    - #### 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. It is expected that the provided function does return a non-null value for each variable index that is returned by `getVariablePositions()`; otherwise a `NullPointerException` will be thrown during the calculation of the string.
      Since:
        2.0