cprover
|
#include <cfg.h>
Additional Inherited Members | |
![]() | |
typedef std::size_t | entryt |
![]() | |
typedef cfg_base_nodet< T, I > | nodet |
typedef nodet::edgest | edgest |
typedef std::vector< nodet > | nodest |
typedef nodet::edget | edget |
typedef nodet::node_indext | node_indext |
typedef std::list< node_indext > | patht |
![]() | |
cfg_baset () | |
virtual | ~cfg_baset () |
void | operator() (const goto_functionst &goto_functions) |
void | operator() (P &goto_program) |
I | get_first_node (P &program) const |
I | get_last_node (P &program) const |
bool | nodes_empty (P &program) const |
![]() | |
node_indext | add_node () |
void | swap (grapht &other) |
bool | has_edge (node_indext i, node_indext j) const |
const nodet & | operator[] (node_indext n) const |
nodet & | operator[] (node_indext n) |
void | resize (node_indext s) |
std::size_t | size () const |
bool | empty () const |
const edgest & | in (node_indext n) const |
const edgest & | out (node_indext n) const |
void | add_edge (node_indext a, node_indext b) |
void | remove_edge (node_indext a, node_indext b) |
edget & | edge (node_indext a, node_indext b) |
void | add_undirected_edge (node_indext a, node_indext b) |
void | remove_undirected_edge (node_indext a, node_indext b) |
void | remove_in_edges (node_indext n) |
void | remove_out_edges (node_indext n) |
void | remove_edges (node_indext n) |
void | clear () |
void | shortest_path (node_indext src, node_indext dest, patht &path) const |
void | shortest_loop (node_indext node, patht &path) const |
void | visit_reachable (node_indext src) |
std::vector< node_indext > | get_reachable (node_indext src, bool forwards) const |
Run depth-first search on the graph, starting from a single source node. More... | |
std::vector< node_indext > | get_reachable (const std::vector< node_indext > &src, bool forwards) const |
Run depth-first search on the graph, starting from multiple source nodes. More... | |
void | disconnect_unreachable (node_indext src) |
Removes any edges between nodes in a graph that are unreachable from a given start node. More... | |
void | disconnect_unreachable (const std::vector< node_indext > &src) |
Removes any edges between nodes in a graph that are unreachable from a vector of start nodes. More... | |
std::vector< typename cfg_base_nodet< T, I > ::node_indext > | depth_limited_search (typename cfg_base_nodet< T, I > ::node_indext src, std::size_t limit) const |
Run recursive depth-limited search on the graph, starting from multiple source nodes, to find the nodes reachable within n steps. More... | |
std::vector< typename cfg_base_nodet< T, I > ::node_indext > | depth_limited_search (std::vector< typename cfg_base_nodet< T, I > ::node_indext > &src, std::size_t limit) const |
Run recursive depth-limited search on the graph, starting from multiple source nodes, to find the nodes reachable within n steps. More... | |
void | make_chordal () |
Ensure a graph is chordal (contains no 4+-cycles without an edge crossing the cycle) by adding extra edges. More... | |
std::size_t | connected_subgraphs (std::vector< node_indext > &subgraph_nr) |
Find connected subgraphs in an undirected graph. More... | |
std::size_t | SCCs (std::vector< node_indext > &subgraph_nr) const |
Computes strongly-connected components of a graph and yields a vector expressing a mapping from nodes to components indices. More... | |
bool | is_dag () const |
std::list< node_indext > | topsort () const |
Find a topological order of the nodes if graph is DAG, return empty list for non-DAG or empty graph. More... | |
std::vector< node_indext > | get_successors (const node_indext &n) const |
void | output_dot (std::ostream &out) const |
void | for_each_successor (const node_indext &n, std::function< void(const node_indext &)> f) const |
![]() | |
entry_mapt | entry_map |
![]() | |
nodest | nodes |
|
protectedvirtual |
Definition at line 268 of file cfg.h.
References cfg_baset< T, P, I >::compute_edges_start_thread(), goto_programt::instructiont::get_target(), and goto_program.