Class GraphReachability<N,E>

java.lang.Object
com.google.javascript.jscomp.graph.GraphReachability<N,E>
Type Parameters:
N - The type of data that the graph node holds.
E - The type of data that the graph edge holds.
All Implemented Interfaces:
FixedPointGraphTraversal.EdgeCallback<N,E>

public final class GraphReachability<N,E> extends Object implements FixedPointGraphTraversal.EdgeCallback<N,E>
Computes all the reachable nodes. Upon execution of compute(Object), the graph nodes will be annotated with REACHABLE if it is reachable from the specified entry node.
See Also:
  • Field Details

    • REACHABLE

      public static final Annotation REACHABLE
  • Constructor Details

    • GraphReachability

      public GraphReachability(DiGraph<N,E> graph)
    • GraphReachability

      public GraphReachability(DiGraph<N,E> graph, @Nullable com.google.common.base.Predicate<GraphReachability.EdgeTuple<N,E>> edgePredicate)
      Parameters:
      graph - The graph.
      edgePredicate - Given the predecessor P of the a node S and the edge coming from P to S, this predicate should return true if S is reachable from P using the edge.
  • Method Details

    • compute

      public void compute(N entry)
    • recompute

      public void recompute(N reachableNode)
    • traverseEdge

      public boolean traverseEdge(N source, E e, N destination)
      Description copied from interface: FixedPointGraphTraversal.EdgeCallback
      Update the state of the destination node when the given edge is traversed.

      Recall that depending on the direction of the traversal, source and destination may be swapped compared to the orientation of the edge in the graph. In either case, only the destination parameter may be mutated.

      Specified by:
      traverseEdge in interface FixedPointGraphTraversal.EdgeCallback<N,E>
      Parameters:
      source - The start node.
      e - The edge.
      destination - The end node.
      Returns:
      Whether the state of the destination node changed.