// License: GPL. For details, see LICENSE file.
package org.openstreetmap.josm.plugins.graphview.core.transition;
import java.util.Collection;
/**
* physical or legal restriction that forbids entering and leaving a set
* of {@link Segment}s using certain in- and outbound segments
* despite those Segments being connected by sharing nodes
*/
public interface Restriction {
/**
* returns the starting segment that will trigger the restriction when used;
* != null
*/
Segment getFrom();
/**
* returns the "via" segments.
* The restriction will remain active as long as only via segments are used.
*
* @return unmodifiable collection of segments; != null
*/
Collection<Segment> getVias();
/**
* returns the forbidden "to" segments.
* The restriction prevents leaving the via segment set by using one of the to segments.
*
* @return unmodifiable collection of segments; != null
*/
Collection<Segment> getTos();
}