/* * Created on Sep 24, 2005 * * Copyright (c) 2005, the JUNG Project and the Regents of the University * of California * All rights reserved. * * This software is open-source under the BSD license; see either * "license.txt" or * http://jung.sourceforge.net/license.txt for a description. */ package edu.uci.ics.jung.graph.util; import edu.uci.ics.jung.graph.Graph; /** * An interface for a service to access the index of a given edge (in a given graph) * into the set formed by the given edge and all the other edges it is parallel to. * * <p>Note that in current use, this index is assumed to be an integer value in * the interval [0,n-1], where n-1 is the number of edges parallel to <code>e</code>. * * @author Tom Nelson * */ public interface EdgeIndexFunction<V,E> { /** * Returns <code>e</code>'s index in <code>graph</code>. * The index of <code>e</code> is defined as its position in some * consistent ordering of <code>e</code> and all edges parallel to <code>e</code>. * @param graph the graph in which the edge is to be queried * @param e the edge whose index is to be queried * @return <code>e</code>'s index in <code>graph</code> */ int getIndex(Graph<V,E> graph, E e); /** * Resets the indices for <code>edge</code> and its parallel edges in <code>graph</code>. * Should be invoked when an edge parallel to <code>edge</code> * has been added or removed. * * @param g the graph in which <code>edge</code>'s index is to be reset * @param edge the edge whose index is to be reset */ void reset(Graph<V,E> g, E edge); /** * Clears all edge indices for all edges in all graphs. * Does not recalculate the indices. */ void reset(); }