Interface Splitter


  • public interface Splitter
    Given a set of objects that have disjoint applicabilities and a target applicability, this is used to produce a new set where exactly one object has a target applicability and all other have an applicability that does not intersect with target applicability.
    Author:
    Damien Carbonne
    • Method Detail

      • split

        <T> void split​(List<? extends T> objects,
                       Expression targetApplicability,
                       ApplicabilityExtractor<? super T> applicabilityExtractor,
                       FactorizationFeatures features,
                       SplitHandler<T> handler)
        Split a set of objects that have disjoint applicabilities.

        This can:

        • Change (reduce) that applicability of an object
        • Remove an object
        • Create an object, which can happen at most once.
        • Reuse an object (that is the merge of remove/create and can happen at most once).
        Type Parameters:
        T - The object type.
        Parameters:
        objects - The objects.
        targetApplicability - The target applicability.
        applicabilityExtractor - The applicability extractor.
        features - The features to apply.
        handler - The event handler.