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 Details

    • 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.
    • split

      <T> List<SplitEvent<T>> split(List<? extends T> objects, Expression targetApplicability, ApplicabilityExtractor<? super T> applicabilityExtractor, FactorizationFeatures features)