Interface Graph<EdgeType extends GraphEdge<EdgeType,VertexType>,VertexType extends GraphVertex<VertexType>>

All Known Implementing Classes:
AbstractGraph, CallGraph, CFG, ConstraintGraph, InheritanceGraph, InterproceduralCallGraph

public interface Graph<EdgeType extends GraphEdge<EdgeType,VertexType>,VertexType extends GraphVertex<VertexType>>
Graph interface; defines the operations used to access and manipulate a graph.
  • Method Details

    • getNumEdges

      int getNumEdges()
      Get number of edges in the graph.
    • getNumVertices

      int getNumVertices()
      Get number of vertices in the graph.
    • edgeIterator

      Iterator<EdgeType> edgeIterator()
      Get Iterator over all edges in the graph.
    • vertexIterator

      Iterator<VertexType> vertexIterator()
      Get Iterator over all vertices in the graph.
    • addVertex

      void addVertex(VertexType v)
      Add given vertex to the graph. The vertex should not be part of any other graph.
      Parameters:
      v - the vertex to add
    • containsVertex

      boolean containsVertex(VertexType v)
      Determine if the graph contains the given vertex.
      Parameters:
      v - the vertex
      Returns:
      true if the vertex is part of the graph, false if not
    • createEdge

      EdgeType createEdge(VertexType source, VertexType target)
      Add a new edge to the graph. Duplicate edges (with same source and target vertices) are allowed.
      Parameters:
      source - the source vertex
      target - the target vertex
      Returns:
      the new edge
    • lookupEdge

      EdgeType lookupEdge(VertexType source, VertexType target)
      Look up an edge by source and target vertex. If multiple edges with same source and target vertex exist, one is selected arbitrarily.
      Parameters:
      source - the source vertex
      target - the target vertex
      Returns:
      a matching edge, or null if there is no matching edge
    • getNumVertexLabels

      int getNumVertexLabels()
      Get the number of numeric (integer) labels that have been assigned to vertices in the graph. All vertices in the graph are guaranteed to have labels in the range 0..n, where n is the value returned by this method.
    • setNumVertexLabels

      void setNumVertexLabels(int numLabels)
      Reset number of (integer) labels. This might be necessary if an algorithm has assigned new labels to a graph's vertices.
    • getNumEdgeLabels

      int getNumEdgeLabels()
      Get the number of numeric labels that have been assigned to edges.
    • setNumEdgeLabels

      void setNumEdgeLabels(int numLabels)
      Reset the number of edge labels.
    • removeEdge

      void removeEdge(EdgeType e)
      Remove given edge from the graph.
    • removeVertex

      void removeVertex(VertexType v)
      Remove given vertex from the graph. Note that all edges referencing the vertex will be removed.
    • outgoingEdgeIterator

      Iterator<EdgeType> outgoingEdgeIterator(VertexType source)
      Get an Iterator over outgoing edges from given vertex.
      Parameters:
      source - the source vertex
      Returns:
      an Iterator over outgoing edges
    • incomingEdgeIterator

      Iterator<EdgeType> incomingEdgeIterator(VertexType target)
      Get an Iterator over incoming edges to a given vertex.
      Parameters:
      target - the target vertex
      Returns:
      an Iterator over incoming edges
    • getNumIncomingEdges

      int getNumIncomingEdges(VertexType vertex)
      Get number of edges going into given vertex.
      Parameters:
      vertex - the vertex
      Returns:
      number of edges going into the vertex
    • getNumOutgoingEdges

      int getNumOutgoingEdges(VertexType vertex)
      Get number of edges going out of given vertex.
      Parameters:
      vertex - the vertex
      Returns:
      number of edges going out of the vertex
    • successorIterator

      Iterator<VertexType> successorIterator(VertexType source)
      Get an iterator over the successors of this vertex; i.e., the targets of the vertex's outgoing edges.
      Parameters:
      source - the source vertex
      Returns:
      an Iterator over the successors of the vertex
    • predecessorIterator

      Iterator<VertexType> predecessorIterator(VertexType target)
      Get an iterator over the predecessors of this vertex; i.e., the sources of the vertex's incoming edges.
      Parameters:
      target - the target vertex
      Returns:
      an Iterator over the predecessors of the vertex