package prefuse.data;
/**
* Tuple sub-interface that represents an edge in a graph structure. Each edge
* has both a source node and a target node. For directed edges, this
* distinction indicates the directionality of the edge. For undirected edges
* this distinction merely reflects the underlying storage of the nodes.
*
* @author <a href="http://jheer.org">jeffrey heer</a>
*/
public interface Edge extends Tuple {
/**
* Returns the graph of which this Edge is a member.
* @return the Graph containing this Edge
*/
public Graph getGraph();
/**
* Indicates if this edge is directed or undirected.
* @return true if directed, false if undirected.
*/
public boolean isDirected();
/**
* Returns the first, or source, node upon which this Edge
* is incident.
* @return the source Node
*/
public Node getSourceNode();
/**
* Returns the second, or target, node upon which this Edge
* is incident.
* @return the source Node
*/
public Node getTargetNode();
/**
* Given a Node upon which this Edge is incident, the opposite incident
* Node is returned. Throws an exception if the input node is not incident
* on this Edge.
* @param n a Node upon which this Edge is incident
* @return the other Node touched by this Edge
*/
public Node getAdjacentNode(Node n);
} // end of interface Edge