package org.implab.gradle.variants.sources;

import java.util.Set;

import org.gradle.api.NamedDomainObjectCollection;

/**
 * Registry of symbolic source set names produced by sources projection.
 *
 * Identity in this registry is the GenericSourceSet name.
 */
public interface SourceSetProjections {

    /**
     * Returns all source set projections. This is a separate
     */
    NamedDomainObjectCollection<SourceSetProjection> getProjections();

    /**
     * Returns all logical bindings projected into the given source set name.
     */
    Set<VariantLayerBinding> getBindings(String sourceSetName);

    /**
     * Returns all logical bindings projected into the given source set name.
     */
    Set<VariantLayerBinding> getBindings(SourceSetProjection projection);
}