import FlowGraph from "@specs-feup/flow/flow/FlowGraph"; import BaseEdge from "@specs-feup/flow/graph/BaseEdge"; import BaseNode from "@specs-feup/flow/graph/BaseNode"; import DefaultDotFormatter from "@specs-feup/flow/graph/dot/DefaultDotFormatter"; /** * A formatter for converting a flow graph into a DOT string. * * {@link ControlFlowNode | ControlFlowNodes} are visualized as contained * inside their respective {@link FunctionNode | FunctionNode}, unless an * explicit parent is specified. * * The {@link ControlFlowEndNode | 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 * {@link ControlFlowNode | ControlFlowNode} has more than one non-fake outgoing edge, * it appears diamond-shaped to represent its conditional nature. * * A {@link FunctionNode | FunctionNode} has its name as the label, while a * {@link ControlFlowNode | 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. * {@link ControlFlowEdge.Class.isFake | fake edges} appear with a dashed line. * * @typeParam G - The type of the graph. This parameter exists so that * the formatter may be extended into a formatter that requires a more * specific graph type. */ export default class FlowDotFormatter extends DefaultDotFormatter { static functionDarkColor: string; static functionColor: string; static functionFontSize: string; static cfgEndNodeSize: string; static cfgNodeColor: string; static cfgNodeDarkColor: string; static cfgEdgeTransparency: string; static cfgDefaultEdgeColor: string; /** * @param node The node to get the attributes for. * @returns The attributes of the node. */ static defaultGetNodeAttrs(node: BaseNode.Class): Record; /** * @param edge The edge to get the attributes for. * @returns The attributes of the edge. */ static defaultGetEdgeAttrs(edge: BaseEdge.Class): Record; /** * Prioritizes the parent of the node as the container. * Otherwise, for a {@link ControlFlowNode}, its function is used. * * @param node The node to find the container of. * @returns The parent of the node. */ static defaultGetContainer(node: BaseNode.Class): BaseNode.Class | undefined; /** * Creates a new flow DOT formatter. */ constructor(); } //# sourceMappingURL=FlowDotFormatter.d.ts.map