/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package automenta.spacenet.var.graph;
import edu.uci.ics.jung.graph.util.EdgeType;
import java.util.Iterator;
/**
* combination of directed graph and hypergraph.
* modified from JUNG graph library
* @author seh
*/
public interface Graph<V, H> {
public V addNode(V node);
public boolean removeNode(V node);
public H addEdge(H edge, EdgeType edgeType, V... vList);
public boolean removeEdge(H hyperedge);
public EdgeType getEdgeType(H edge);
public void add(IfGraphChanges ic);
public void remove(IfGraphChanges<V,H> ic);
public Iterator<H> iterateEdges();
public Iterator<V> iterateNodes();
//TODO add time-aware visitors for nodes and edges
}