@@ -74,10 +74,10 @@ std::set<irep_idt> get_reaching_functions(
74
74
std::set<irep_idt> get_functions_reachable_within_n_steps (
75
75
const call_grapht::directed_grapht &graph,
76
76
const std::set<irep_idt> &start_functions,
77
- std::size_t & n)
77
+ std::size_t n)
78
78
{
79
- std::vector<std::size_t > start_indices;
80
79
std::set<irep_idt> result;
80
+ std::vector<std::size_t > start_indices;
81
81
82
82
for (const auto &func : start_functions)
83
83
start_indices.push_back (*(graph.get_node_index (func)));
@@ -91,8 +91,32 @@ std::set<irep_idt> get_functions_reachable_within_n_steps(
91
91
std::set<irep_idt> get_functions_reachable_within_n_steps (
92
92
const call_grapht::directed_grapht &graph,
93
93
const irep_idt &start_function,
94
- std::size_t & n)
94
+ std::size_t n)
95
95
{
96
- std::set<irep_idt> start_functions ({ start_function });
96
+ std::set<irep_idt> start_functions ({start_function});
97
97
return get_functions_reachable_within_n_steps (graph, start_functions, n);
98
98
}
99
+
100
+ void disconnect_unreachable_functions (
101
+ call_grapht::directed_grapht &graph,
102
+ const irep_idt &function)
103
+ {
104
+ graph.disconnect_unreachable (*(graph.get_node_index (function)));
105
+ }
106
+
107
+ std::list<irep_idt> get_shortest_function_path (
108
+ const call_grapht::directed_grapht &graph,
109
+ const irep_idt &src,
110
+ const irep_idt &dest)
111
+ {
112
+ std::list<irep_idt> result;
113
+ std::list<std::size_t > path;
114
+
115
+ graph.shortest_path (
116
+ *(graph.get_node_index (src)), *(graph.get_node_index (dest)), path);
117
+
118
+ for (const auto &n : path)
119
+ result.push_back (graph[n].function );
120
+
121
+ return result;
122
+ }
0 commit comments