Package com.google.javascript.jscomp.graph

# Class DiGraph<N,E>

java.lang.Object
com.google.javascript.jscomp.graph.Graph<N,E>
com.google.javascript.jscomp.graph.DiGraph<N,E>

Type Parameters:
  `N` - Value type that the graph node stores.
  `E` - Value type that the graph edge stores.

All Implemented Interfaces:
  `AdjacencyGraph<N,E>`

Direct Known Subclasses:
  `LinkedDirectedGraph`

public abstract class DiGraph<N,E> extends Graph<N,E>
A generic directed graph.

## Nested Class Summary

Nested Classes
Modifier and Type
Class
Description
`static interface`
`DiGraph.DiGraphEdge<N,E>`
A generic directed graph edge.
`static interface`
`DiGraph.DiGraphNode<N,E>`
A generic directed graph node.

## Nested classes/interfaces inherited from class com.google.javascript.jscomp.graph.Graph

`Graph.GraphEdge<N,E>`

## Constructor Summary

Constructors
Constructor
Description
`DiGraph()`

## Method Summary

Modifier and Type
Method
Description
`abstract DiGraph.DiGraphNode<N,E>`
`createDirectedGraphNode(N nodeValue)`
`abstract void`
`disconnectInDirection(N n1, N n2)`
Disconnects all edges from n1 to n2.
`abstract List<DiGraph.DiGraphEdge<N,E>>`
`getDirectedGraphEdges(N n1, N n2)`
`abstract DiGraph.DiGraphNode<N,E>`
`getDirectedGraphNode(N nodeValue)`
`abstract Iterable<DiGraph.DiGraphNode<N,E>>`
`getDirectedGraphNodes()`
Gets an immutable iterable over all the nodes in the graph.
`abstract List<DiGraph.DiGraphNode<N,E>>`
`getDirectedPredNodes(DiGraph.DiGraphNode<N,E> n)`
`abstract List<DiGraph.DiGraphNode<N,E>>`
`getDirectedPredNodes(N nodeValue)`
`abstract List<DiGraph.DiGraphNode<N,E>>`
`getDirectedSuccNodes(DiGraph.DiGraphNode<N,E> n)`
`abstract List<DiGraph.DiGraphNode<N,E>>`
`getDirectedSuccNodes(N nodeValue)`
`abstract List<DiGraph.DiGraphEdge<N,E>>`
`getInEdges(N nodeValue)`
Gets an immutable list of in edges of the given node.
`abstract List<DiGraph.DiGraphEdge<N,E>>`
`getOutEdges(N nodeValue)`
Gets an immutable list of out edges of the given node.
`boolean`
`isConnected(N n1, E e, N n2)`
Checks whether two nodes in the graph are connected by the given edge type.
`boolean`
`isConnected(N n1, N n2)`
Checks whether two nodes in the graph are connected.
`abstract boolean`
`isConnectedInDirection(N n1, E edgeValue, N n2)`
Checks whether two nodes in the graph are connected via a directed edge with the given value.
`abstract boolean`
`isConnectedInDirection(N n1, N n2)`
Checks whether two nodes in the graph are connected via a directed edge.

### Methods inherited from class com.google.javascript.jscomp.graph.Graph

`clearEdgeAnnotations, clearNodeAnnotations, connect, connectIfNotFound, createNode, disconnect, getEdges, getEdges, getFirstEdge, getNeighborNodes, getNeighborNodesIterator, getNodeDegree, getNodes, getWeight, hasNode, popEdgeAnnotations, popNodeAnnotations, pushEdgeAnnotations, pushNodeAnnotations`

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

### Methods inherited from interface com.google.javascript.jscomp.graph.AdjacencyGraph

`getNode, newSubGraph`

## Constructor Details

### DiGraph

public DiGraph()

## Method Details

### getDirectedGraphNodes

public abstract Iterable<DiGraph.DiGraphNode<N,E>> getDirectedGraphNodes()
Gets an immutable iterable over all the nodes in the graph.

### getOutEdges

public abstract List<DiGraph.DiGraphEdge<N,E>> getOutEdges(N nodeValue)
Gets an immutable list of out edges of the given node.

### getInEdges

public abstract List<DiGraph.DiGraphEdge<N,E>> getInEdges(N nodeValue)
Gets an immutable list of in edges of the given node.

### getDirectedPredNodes

public abstract List<DiGraph.DiGraphNode<N,E>> getDirectedPredNodes(DiGraph.DiGraphNode<N,E> n)

### getDirectedSuccNodes

public abstract List<DiGraph.DiGraphNode<N,E>> getDirectedSuccNodes(DiGraph.DiGraphNode<N,E> n)

### getDirectedPredNodes

public abstract List<DiGraph.DiGraphNode<N,E>> getDirectedPredNodes(N nodeValue)

### getDirectedSuccNodes

public abstract List<DiGraph.DiGraphNode<N,E>> getDirectedSuccNodes(N nodeValue)

### createDirectedGraphNode

public abstract DiGraph.DiGraphNode<N,E> createDirectedGraphNode(N nodeValue)

### getDirectedGraphNode

public abstract DiGraph.DiGraphNode<N,E> getDirectedGraphNode(N nodeValue)

### getDirectedGraphEdges

public abstract List<DiGraph.DiGraphEdge<N,E>> getDirectedGraphEdges(N n1, N n2)

### disconnectInDirection

public abstract void disconnectInDirection(N n1, N n2)
Disconnects all edges from n1 to n2.

Parameters:
  `n1` - Source node.
  `n2` - Destination node.

### isConnectedInDirection

public abstract boolean isConnectedInDirection(N n1, N n2)
Checks whether two nodes in the graph are connected via a directed edge.

Parameters:
  `n1` - Node 1.
  `n2` - Node 2.
Returns:
  `true` if the graph contains edge from n1 to n2.

### isConnectedInDirection

public abstract boolean isConnectedInDirection(N n1, E edgeValue, N n2)
Checks whether two nodes in the graph are connected via a directed edge with the given value.

Parameters:
  `n1` - Node 1.
  `edgeValue` - edge value tag
  `n2` - Node 2.
Returns:
  `true` if the edge exists.

### isConnected

public boolean isConnected(N n1, N n2)
Description copied from class: `Graph`
Checks whether two nodes in the graph are connected.

Specified by:
  `isConnected` in class `Graph<N,E>`
Parameters:
  `n1` - Node 1.
  `n2` - Node 2.
Returns:
  `true` if the two nodes are connected.

### isConnected

public boolean isConnected(N n1, E e, N n2)
Description copied from class: `Graph`
Checks whether two nodes in the graph are connected by the given edge type.

Specified by:
  `isConnected` in class `Graph<N,E>`
Parameters:
  `n1` - Node 1.
  `e` - The edge type.
  `n2` - Node 2.