@eagleoutice/flowr - v2.13.14
    Preparing search index...

    This class represents the control flow graph of an R program. The control flow may be hierarchical when confronted with function definitions (see CfgVertex and CFG#rootVertexIds|rootVertexIds()).

    There are two very simple visitors to traverse a CFG:

    • visitCfgInOrder visits the graph in the order of the vertices
    • visitCfgInReverseOrder visits the graph in reverse order

    If you want to prohibit modification, please refer to the ReadOnlyControlFlowGraph interface.

    Type Parameters

    Implements

    Index
    • Add a new vertex to the control flow graph.

      Parameters

      • vertex: Vertex
      • rootVertex: boolean = true

      Returns this

      ControlFlowGraph#addEdge|addEdge() - to add an edge

    • Check if a vertex with the given id exists in the graph.

      Parameters

      • id: NodeId

        the id of the vertex to check

      • includeBlocks: boolean = true

        if true, the elements of basic block elements are included in the check, otherwise this will only check the basic blocks themselves

        This is the pendant of DataflowGraph#hasVertex|hasVertex() on a DataflowGraph.

      Returns boolean

    • This Operation is in-place and modifies the current graph. Merge another control flow graph into this one.

      Parameters

      • other: ControlFlowGraph<Vertex>

        the other control flow graph to merge into this one

      • forceNested: boolean = false

        should the other graph be assumed to be fully nested (e.g., within a function definition).

        This is the pendant of DataflowGraph#mergeWith|mergeWith() on a DataflowGraph.

      Returns this

    • Removes a all direct edges between from and to from the control flow graph.

      Parameters

      Returns this

      • ControlFlowGraph#addEdge|addEdge() - to add an edge
      • ControlFlowGraph#removeVertex|removeVertex() - to remove a vertex and all its edges
    • This removes the vertex and all edges to and from it.

      Parameters

      • id: NodeId

        the id of the vertex to remove

      Returns this

      • ControlFlowGraph#addVertex|addVertex() - to add a vertex
      • ControlFlowGraph#removeEdge|removeEdge() - to remove a specific edge
    • Get all ids of the root vertices — vertices that are not part of any function definition or basic block and hence part of the "top-level" control flow.

      This is the pendant of DataflowGraph#rootIds|rootIds() on a DataflowGraph.

      Returns ReadonlySet<NodeId>

      • vertices() - for a way to get all vertices in the graph.
      • getVertex() - for a way to get a specific vertex by its id.
      • edges() - for a way to get all edges in the graph.
    • Provide a view of all vertices in the graph.

      Parameters

      • includeBasicBlockElements: boolean = true

        if true, the elements of basic block elements are included in the result, otherwise only the basic blocks themselves are included

      Returns ReadonlyMap<NodeId, CfgVertex>

      • ReadOnlyControlFlowGraph#rootVertexIds|rootVertexIds() - for a way to get the root vertices of the graph.
      • getVertex() - for a way to get a specific vertex by its id.
      • edges() - for a way to get all edges in the graph.