/* * 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(); }