Creates a new flow DOT formatter.
Given a node, returns the node that will contain it. By default that is the parent of the node, but subclasses may override this method to visualize other parent-like relationships.
The attributes to add to each edge.
The attributes to add to the graph.
The attributes to add to each node.
Static
cfgStatic
cfgStatic
cfgStatic
cfgStatic
cfgStatic
functionStatic
functionStatic
functionAdds attributes to each edge. Only overrides the attributes that are explicitly set by the function, leaving the others unchanged.
For completely overriding the previous attributes, just set getEdgeAttrs directly.
The same formatter, for chaining.
Adds attributes to the graph. Only overrides the attributes that are explicitly set by the function, leaving the others unchanged.
For completely overriding the previous attributes, just set getGraphAttrs directly.
The function that adds attributes to the graph.
The same formatter, for chaining.
Adds attributes to each node. Only overrides the attributes that are explicitly set by the function, leaving the others unchanged.
For completely overriding the previous attributes, just set getNodeAttrs directly.
The same formatter, for chaining.
Converts a node with children into a DOT subgraph.
The resulting DOT subgraph.
Retrieves all nodes that are contained by a node. This method is based on getContainer.
The nodes that are contained by the given node.
Converts a graph to a DOT string.
The graph to convert.
The resulting DOT string.
Checks if a node is contained by another node. This is based on getContainer.
Whether the node is contained by another node.
Checks if a node contains other nodes. This is based on getContainer.
Whether the node contains other nodes.
Static
defaultPrioritizes the parent of the node as the container. Otherwise, for a ControlFlowNode, its function is used.
The parent of the node.
Static
defaultStatic
defaultStatic
default
A formatter for converting a flow graph into a DOT string.
ControlFlowNodes are visualized as contained inside their respective FunctionNode, unless an explicit parent is specified.
The ControlFlowEndNode is visualized as a distinguished special symbol. The entry control-flow node is represented like a regular control-flow node, but with a double border. If a ControlFlowNode has more than one non-fake outgoing edge, it appears diamond-shaped to represent its conditional nature.
A FunctionNode has its name as the label, while a ControlFlowNode has its id as the label. These labels may (and usually should) be overridden by a subclass or an instance.
Colors help distinguish between different types of nodes and edges. fake edges appear with a dashed line.