Class MutableGDirectedGraphWrapper<V,E extends GEdge<V>>
- Type Parameters:
V- the vertex typeE- the edge type
- All Implemented Interfaces:
GDirectedGraph<V,,E> GImplicitDirectedGraph<V,E>
GDirectedGraph and allows for vertex and edge additions
without changing the underlying graph.
Warning: As mentioned above, this graph is meant for additive operations. In its
current form, removal operations will not work. To facilitate removals, this class will
have to be updated to track removed vertices and edges, using them to correctly report
the state of the graph for methods like containsVertex(Object) and
containsEdge(GEdge).
Implementation Note: there is some 'magic' in this class to add 'dummy' vertices to the
graph. To facilitate this, the mutated graph in this class does not have the V
type, but rather is typed on Object. This means that this class can only be used
generically, with templated types (like by algorithms and such). Any usage of this class
that expects concrete implementations to be returned can trigger ClassCastExceptions.
-
Nested Class Summary
Nested Classes -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionaddDummyEdge(V start, V end) addDummyVertex(String name) voidAdd an edgebooleanAdd a vertexbooleancontainsEdge(E e) Test if the graph contains a given edgebooleancontainsEdge(V from, V to) Test if the graph contains an edge from one given vertex to anotherbooleancontainsVertex(V v) Test if the graph contains a given vertexcopy()Copy this graph.Creates a new instance of this graph with no vertices or edges.Locates the edge object for the two verticesintCount the number of edges in the graphgetEdges()Retrieve all the edgesgetInEdges(V v) Compute the incident edges that end at the given vertexgetOutEdges(V v) Compute the incident edges that start at the given vertexgetPredecessors(V v) Compute a vertex's predecessorsgetSuccessors(V v) Compute a vertex's successorsintCount the number of vertices in the graphRetrieve all the verticesbooleanbooleanbooleanisEmpty()Test if the graph is empty, i.e., contains no vertices or edgesbooleanremoveEdge(E e) Removes an edgevoidremoveEdges(Iterable<E> edges) Removes the given edges from the graphbooleanremoveVertex(V v) Remove a vertexvoidremoveVertices(Iterable<V> vertices) Removes the given vertices from the graphMethods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface ghidra.graph.GDirectedGraph
getIncidentEdges
-
Constructor Details
-
MutableGDirectedGraphWrapper
-
-
Method Details
-
addDummyVertex
-
isDummy
-
isDummy
-
addDummyEdge
-
addVertex
Description copied from interface:GDirectedGraphAdd a vertex -
removeVertex
Description copied from interface:GDirectedGraphRemove a vertex- Specified by:
removeVertexin interfaceGDirectedGraph<V,E extends GEdge<V>> - Parameters:
v- the vertex- Returns:
- true
-
removeVertices
Description copied from interface:GDirectedGraphRemoves the given vertices from the graph- Specified by:
removeVerticesin interfaceGDirectedGraph<V,E extends GEdge<V>> - Parameters:
vertices- the vertices to remove
-
removeEdges
Description copied from interface:GDirectedGraphRemoves the given edges from the graph- Specified by:
removeEdgesin interfaceGDirectedGraph<V,E extends GEdge<V>> - Parameters:
edges- the edges to remove
-
addEdge
Description copied from interface:GDirectedGraphAdd an edge -
removeEdge
Description copied from interface:GDirectedGraphRemoves an edge- Specified by:
removeEdgein interfaceGDirectedGraph<V,E extends GEdge<V>> - Parameters:
e- the edge- Returns:
- true if the graph contained the given edge
-
getVertices
Description copied from interface:GDirectedGraphRetrieve all the vertices- Specified by:
getVerticesin interfaceGDirectedGraph<V,E extends GEdge<V>> - Returns:
- the vertices
-
getEdges
Description copied from interface:GDirectedGraphRetrieve all the edges -
containsVertex
Description copied from interface:GDirectedGraphTest if the graph contains a given vertex- Specified by:
containsVertexin interfaceGDirectedGraph<V,E extends GEdge<V>> - Parameters:
v- the vertex- Returns:
- true if the vertex is in the graph, or false
-
containsEdge
Description copied from interface:GDirectedGraphTest if the graph contains a given edge- Specified by:
containsEdgein interfaceGDirectedGraph<V,E extends GEdge<V>> - Parameters:
e- the ege- Returns:
- true if the edge is in the graph, or false
-
containsEdge
Description copied from interface:GDirectedGraphTest if the graph contains an edge from one given vertex to another- Specified by:
containsEdgein interfaceGDirectedGraph<V,E extends GEdge<V>> - Parameters:
from- the source vertexto- the destination vertex- Returns:
- true if such an edge exists, or false
-
findEdge
Description copied from interface:GDirectedGraphLocates the edge object for the two vertices -
isEmpty
public boolean isEmpty()Description copied from interface:GDirectedGraphTest if the graph is empty, i.e., contains no vertices or edges -
getVertexCount
public int getVertexCount()Description copied from interface:GDirectedGraphCount the number of vertices in the graph- Specified by:
getVertexCountin interfaceGDirectedGraph<V,E extends GEdge<V>> - Returns:
- the count
-
getEdgeCount
public int getEdgeCount()Description copied from interface:GDirectedGraphCount the number of edges in the graph- Specified by:
getEdgeCountin interfaceGDirectedGraph<V,E extends GEdge<V>> - Returns:
- the count
-
getInEdges
Description copied from interface:GDirectedGraphCompute the incident edges that end at the given vertex- Specified by:
getInEdgesin interfaceGDirectedGraph<V,E extends GEdge<V>> - Specified by:
getInEdgesin interfaceGImplicitDirectedGraph<V,E extends GEdge<V>> - Parameters:
v- the destination vertex- Returns:
- the in-edges to the given vertex
-
getOutEdges
Description copied from interface:GDirectedGraphCompute the incident edges that start at the given vertex- Specified by:
getOutEdgesin interfaceGDirectedGraph<V,E extends GEdge<V>> - Specified by:
getOutEdgesin interfaceGImplicitDirectedGraph<V,E extends GEdge<V>> - Parameters:
v- the source vertex- Returns:
- the out-edges from the given vertex
-
getPredecessors
Description copied from interface:GDirectedGraphCompute a vertex's predecessorsThe default implementation computes this from the in-edges
- Specified by:
getPredecessorsin interfaceGDirectedGraph<V,E extends GEdge<V>> - Specified by:
getPredecessorsin interfaceGImplicitDirectedGraph<V,E extends GEdge<V>> - Parameters:
v- the destination vertex- Returns:
- the predecessors
-
getSuccessors
Description copied from interface:GDirectedGraphCompute a vertex's successorsThe default implementation compute this from the out-edges
- Specified by:
getSuccessorsin interfaceGDirectedGraph<V,E extends GEdge<V>> - Specified by:
getSuccessorsin interfaceGImplicitDirectedGraph<V,E extends GEdge<V>> - Parameters:
v- the source vertex- Returns:
- the successors
-
copy
Description copied from interface:GDirectedGraphCopy this graph.Note: the vertices and edges in the copy may be the same instances in the new graph and not themselves copies.
-
emptyCopy
Description copied from interface:GDirectedGraphCreates a new instance of this graph with no vertices or edges. This is useful when you wish to build a new graph using the same type as this graph.
-