Package org.eclipse.viatra.query.runtime.matchers.planning

## Interface IOperationCompiler<Collector>

- Type Parameters:
    `Collector` - the handle of a receiver-like RETE ending to which plans can be connected

      public interface IOperationCompiler<Collector>

  An implicit common parameter is the "effort" PatternDescription. This indicates that the build request is part of an effort to build the matcher of the given pattern; it it important to record this during code generation so that the generated code can be separated according to patterns.
  No Implement:
    This interface is not intended to be implemented by clients.

- - ### Method Summary

    All Methods Instance Methods Abstract Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `SubPlan` | `binaryEdgeTypePlan​(Tuple nodes, java.lang.Object supplierKey)` |
    `SubPlan` | `buildBetaNode​(SubPlan primaryPlan, SubPlan sidePlan, TupleMask primaryMask, TupleMask sideMask, TupleMask complementer, boolean negative)` |
    `void` | `buildConnection​(SubPlan parentPlan, Collector collector)` |
    `SubPlan` | `buildCountCheckBetaNode​(SubPlan primaryPlan, SubPlan sidePlan, TupleMask primaryMask, TupleMask originalSideMask, int resultPositionInSignature)` |
    `SubPlan` | `buildCounterBetaNode​(SubPlan primaryPlan, SubPlan sidePlan, TupleMask primaryMask, TupleMask originalSideMask, TupleMask complementer, java.lang.Object aggregateResultCalibrationElement)` |
    `SubPlan` | `buildEqualityChecker​(SubPlan parentPlan, int[] indices)` |
    `SubPlan` | `buildFunctionEvaluator​(IExpressionEvaluator evaluator, java.util.Map<java.lang.String,​java.lang.Integer> tupleNameMap, SubPlan parentPlan, java.lang.Object computedResultCalibrationElement)` |
    `SubPlan` | `buildInjectivityChecker​(SubPlan parentPlan, int subject, int[] inequalIndices)` |
    `SubPlan` | `buildPredicateChecker​(IExpressionEvaluator evaluator, java.util.Map<java.lang.String,​java.lang.Integer> tupleNameMap, SubPlan parentPlan)` |
    `SubPlan` | `buildStartingPlan​(java.lang.Object[] constantValues, java.lang.Object[] constantNames)` |
    `SubPlan` | `buildTransitiveClosure​(SubPlan parentPlan)` |
    `SubPlan` | `buildTrimmer​(SubPlan parentPlan, TupleMask trimMask, boolean enforceUniqueness)` |
    `SubPlan` | `directContainmentPlan​(Tuple nodes)` |
    `SubPlan` | `directGeneralizationPlan​(Tuple nodes)` |
    `SubPlan` | `directInstantiationPlan​(Tuple nodes)` |
    `IOperationCompiler<Collector>` | `getNextContainer()` |
    `SubPlan` | `patternCallPlan​(Tuple nodes, PQuery supplierKey)` |
    `Collector` | `patternCollector​(PQuery pattern)` |
    `void` | `patternFinished​(PQuery pattern, Collector collector)` |
    `IOperationCompiler<Collector>` | `putOnTab​(PQuery effort)` |
    `void` | `reinitialize()` |
    `SubPlan` | `ternaryEdgeTypePlan​(Tuple nodes, java.lang.Object supplierKey)` |
    `SubPlan` | `transitiveContainmentPlan​(Tuple nodes)` |
    `SubPlan` | `transitiveGeneralizationPlan​(Tuple nodes)` |
    `SubPlan` | `transitiveInstantiationPlan​(Tuple nodes)` |
    `SubPlan` | `unaryTypePlan​(Tuple nodes, java.lang.Object supplierKey)` |

- - ### Method Detail

    - #### patternCollector

          Collector patternCollector​(PQuery pattern)

      Throws:
        `ViatraQueryRuntimeException`

    - #### buildConnection

          void buildConnection​(SubPlan parentPlan,
                               Collector collector)

    - #### patternFinished

          void patternFinished​(PQuery pattern,
                               Collector collector)

      Since:
        0.9

    - #### patternCallPlan

          SubPlan patternCallPlan​(Tuple nodes,
                                  PQuery supplierKey)

      Throws:
        `ViatraQueryRuntimeException`

    - #### transitiveInstantiationPlan

          SubPlan transitiveInstantiationPlan​(Tuple nodes)

    - #### directInstantiationPlan

          SubPlan directInstantiationPlan​(Tuple nodes)

    - #### transitiveGeneralizationPlan

          SubPlan transitiveGeneralizationPlan​(Tuple nodes)

    - #### directGeneralizationPlan

          SubPlan directGeneralizationPlan​(Tuple nodes)

    - #### transitiveContainmentPlan

          SubPlan transitiveContainmentPlan​(Tuple nodes)

    - #### directContainmentPlan

          SubPlan directContainmentPlan​(Tuple nodes)

    - #### binaryEdgeTypePlan

          SubPlan binaryEdgeTypePlan​(Tuple nodes,
                                     java.lang.Object supplierKey)

    - #### ternaryEdgeTypePlan

          SubPlan ternaryEdgeTypePlan​(Tuple nodes,
                                      java.lang.Object supplierKey)

    - #### unaryTypePlan

          SubPlan unaryTypePlan​(Tuple nodes,
                                java.lang.Object supplierKey)

    - #### buildStartingPlan

          SubPlan buildStartingPlan​(java.lang.Object[] constantValues,
                                    java.lang.Object[] constantNames)

    - #### buildEqualityChecker

          SubPlan buildEqualityChecker​(SubPlan parentPlan,
                                       int[] indices)

    - #### buildInjectivityChecker

          SubPlan buildInjectivityChecker​(SubPlan parentPlan,
                                          int subject,
                                          int[] inequalIndices)

    - #### buildTransitiveClosure

          SubPlan buildTransitiveClosure​(SubPlan parentPlan)

    - #### buildTrimmer

          SubPlan buildTrimmer​(SubPlan parentPlan,
                               TupleMask trimMask,
                               boolean enforceUniqueness)

    - #### buildBetaNode

          SubPlan buildBetaNode​(SubPlan primaryPlan,
                                SubPlan sidePlan,
                                TupleMask primaryMask,
                                TupleMask sideMask,
                                TupleMask complementer,
                                boolean negative)

    - #### buildCounterBetaNode

          SubPlan buildCounterBetaNode​(SubPlan primaryPlan,
                                       SubPlan sidePlan,
                                       TupleMask primaryMask,
                                       TupleMask originalSideMask,
                                       TupleMask complementer,
                                       java.lang.Object aggregateResultCalibrationElement)

    - #### buildCountCheckBetaNode

          SubPlan buildCountCheckBetaNode​(SubPlan primaryPlan,
                                          SubPlan sidePlan,
                                          TupleMask primaryMask,
                                          TupleMask originalSideMask,
                                          int resultPositionInSignature)

    - #### buildPredicateChecker

          SubPlan buildPredicateChecker​(IExpressionEvaluator evaluator,
                                        java.util.Map<java.lang.String,​java.lang.Integer> tupleNameMap,
                                        SubPlan parentPlan)

    - #### buildFunctionEvaluator

          SubPlan buildFunctionEvaluator​(IExpressionEvaluator evaluator,
                                         java.util.Map<java.lang.String,​java.lang.Integer> tupleNameMap,
                                         SubPlan parentPlan,
                                         java.lang.Object computedResultCalibrationElement)

    - #### getNextContainer

          IOperationCompiler<Collector> getNextContainer()

      Returns:
        an operation compiler that potentially acts on a separate container

    - #### putOnTab

          IOperationCompiler<Collector> putOnTab​(PQuery effort)

      Returns:
        an operation compiler that puts build actions on the tab of the given pattern
      Since:
        0.9

    - #### reinitialize

          void reinitialize()