// License: GPL. For details, see LICENSE file. package org.openstreetmap.josm.plugins.graphview.core.property; import java.util.List; import org.openstreetmap.josm.plugins.graphview.core.graph.ConnectorEvaluationGroup; import org.openstreetmap.josm.plugins.graphview.core.graph.GraphEdge; import org.openstreetmap.josm.plugins.graphview.core.graph.JunctionEvaluationGroup; import org.openstreetmap.josm.plugins.graphview.core.transition.Segment; import org.openstreetmap.josm.plugins.graphview.core.transition.TransitionStructure; /** * type of a {@link GraphEdge} property * * GraphEdgePropertyType objects should be stateless (except for performance speedups). * * @param <V> property value type */ public interface GraphEdgePropertyType<V> { /** * determines the property value for segments created from junction groups */ V evaluate(JunctionEvaluationGroup junctionGroup, List<Segment> segmentSequence, TransitionStructure transitionStructure); /** * determines the property value for segments created from connector groups */ V evaluate(ConnectorEvaluationGroup connectorGroup, List<Segment> segmentSequence, TransitionStructure transitionStructure); }