![]() |
lingua-franca 0.10.1
Lingua Franca code generator
|
Elaboration of DirectedGraph that is capable of identifying strongly connected components and topologically sorting its nodes. More...
Inherits org.lflang.graph.DirectedGraph< T >.
Inherited by org.lflang.generator.ReactionInstanceGraph.
Public Member Functions | |
| void | addEdge (T sink, T source) |
| Add a new directed edge to the graph. | |
| void | addEdges (T sink, List< T > sources) |
| Add new directed edges to the graph. | |
| void | addNode (T node) |
| Add the given node to the graph. | |
| void | clear () |
| DirectedGraph< T > | copy () |
| Obtain a copy of this graph by creating an new instance and copying the adjacency maps. | |
| void | detectCycles () |
| Run Tarjan's algorithm for finding strongly connected components. | |
| int | edgeCount () |
| Return the number of directed edges in this graph. | |
| List< Set< T > > | getCycles () |
| Return a list of strongly connected components that exist in this graph. | |
| Set< T > | getDownstreamAdjacentNodes (T node) |
| Return all immediate downstream neighbors of a given node. | |
| Set< T > | getUpstreamAdjacentNodes (T node) |
| Return all immediate upstream neighbors of a given node. | |
| void | graphChanged () |
| Invalidate cached analysis due to changes in the graph structure. | |
| boolean | hasCycles () |
| Report whether this graph has any cycles in it. | |
| boolean | hasNode (T node) |
| Return true if this graph has the given node in it. | |
| Set< T > | leafNodes () |
| Return the leaf nodes of this graph. | |
| void | merge (DirectedGraph< T > another) |
| Merge another directed graph into this one. | |
| int | nodeCount () |
| Return the number of nodes in this graph. | |
| Set< T > | nodes () |
| Return an unmodifiable set of nodes in this graph. | |
| List< T > | nodesInReverseTopologicalOrder () |
| Return the nodes of this graph in reverse topological order. | |
| List< T > | nodesInTopologicalOrder () |
| Return the nodes of this graph in reverse topological order. | |
| PrecedenceGraph () | |
| Construct a new dependency graph. | |
| void | removeEdge (T sink, T source) |
| Remove a directed edge from the graph. | |
| void | removeNode (T node) |
| Remove the given node from the graph. | |
| Set< T > | rootNodes () |
| Return the root nodes of this graph. | |
| void | strongConnect (T node) |
| Traverse the graph to visit unvisited dependencies and determine whether they are part of a cycle. | |
| String | toDOT () |
| Return the DOT (GraphViz) representation of the graph. | |
| String | toString () |
| Return a textual list of the nodes. | |
Protected Attributes | |
| List< Set< T > > | cycles = new ArrayList<>() |
| After analysis has completed, this list contains all all sets of nodes that are part of the same strongly connected component. | |
Elaboration of DirectedGraph that is capable of identifying strongly connected components and topologically sorting its nodes.
| org.lflang.graph.PrecedenceGraph< T extends Object >.PrecedenceGraph | ( | ) |
Construct a new dependency graph.
|
inherited |
Add a new directed edge to the graph.
The first argument is the downstream node, the second argument the upstream node. If either argument is null, do nothing.
| sink | The downstream immediate neighbor. |
| source | The upstream immediate neighbor. |
Implements org.lflang.graph.Graph< T >.
|
inherited |
Add new directed edges to the graph.
The first argument is the downstream node, the second argument a set of upstream nodes.
| sink | The downstream immediate neighbor. |
| sources | The upstream immediate neighbors. |
Implements org.lflang.graph.Graph< T >.
|
inherited |
Add the given node to the graph.
Implements org.lflang.graph.Graph< T >.
|
inherited |
|
inherited |
Obtain a copy of this graph by creating an new instance and copying the adjacency maps.
| void org.lflang.graph.PrecedenceGraph< T extends Object >.detectCycles | ( | ) |
Run Tarjan's algorithm for finding strongly connected components.
After invoking this method, the detected cycles with be listed in the class variable cycles.
|
inherited |
Return the number of directed edges in this graph.
Implements org.lflang.graph.Graph< T >.
| List< Set< T > > org.lflang.graph.PrecedenceGraph< T extends Object >.getCycles | ( | ) |
Return a list of strongly connected components that exist in this graph.
|
inherited |
Return all immediate downstream neighbors of a given node.
| node | The node to report the immediate downstream neighbors of. |
|
inherited |
Return all immediate upstream neighbors of a given node.
| node | The node to report the immediate upstream neighbors of. |
| void org.lflang.graph.PrecedenceGraph< T extends Object >.graphChanged | ( | ) |
Invalidate cached analysis due to changes in the graph structure.
Reimplemented from org.lflang.graph.DirectedGraph< T >.
| boolean org.lflang.graph.PrecedenceGraph< T extends Object >.hasCycles | ( | ) |
Report whether this graph has any cycles in it.
|
inherited |
Return true if this graph has the given node in it.
| node | The node to look for. |
Implements org.lflang.graph.Graph< T >.
|
inherited |
Return the leaf nodes of this graph.
Leaf nodes have no downstream neighbors.
|
inherited |
Merge another directed graph into this one.
| another | The graph to merge into this one. |
|
inherited |
Return the number of nodes in this graph.
Implements org.lflang.graph.Graph< T >.
|
inherited |
Return an unmodifiable set of nodes in this graph.
Implements org.lflang.graph.Graph< T >.
| List< T > org.lflang.graph.PrecedenceGraph< T extends Object >.nodesInReverseTopologicalOrder | ( | ) |
Return the nodes of this graph in reverse topological order.
Each node in the returned list is succeeded by the nodes that it depends on.
| List< T > org.lflang.graph.PrecedenceGraph< T extends Object >.nodesInTopologicalOrder | ( | ) |
Return the nodes of this graph in reverse topological order.
Each node in the returned list is preceded by the nodes that it depends on.
|
inherited |
Remove a directed edge from the graph.
| sink | The downstream immediate neighbor. |
| source | The upstream immediate neighbor. |
Implements org.lflang.graph.Graph< T >.
|
inherited |
Remove the given node from the graph.
This also eliminates any edges from upstream and to downstream neighbors of this node.
| node | The node to remove. |
Implements org.lflang.graph.Graph< T >.
|
inherited |
Return the root nodes of this graph.
Root nodes have no upstream neighbors.
| void org.lflang.graph.PrecedenceGraph< T extends Object >.strongConnect | ( | T | node | ) |
Traverse the graph to visit unvisited dependencies and determine whether they are part of a cycle.
|
inherited |
Return the DOT (GraphViz) representation of the graph.
Implements org.lflang.graph.Graph< T >.
Reimplemented in org.lflang.generator.ReactionInstanceGraph.
|
inherited |
Return a textual list of the nodes.
|
protected |
After analysis has completed, this list contains all all sets of nodes that are part of the same strongly connected component.