use crate::analysis::call_graph::RustCallGraph;
use crate::priority::call_graph::FunctionId;
use anyhow::Result;
pub struct PurityCallGraphAdapter {
rust_graph: RustCallGraph,
}
impl PurityCallGraphAdapter {
pub fn from_rust_graph(rust_graph: RustCallGraph) -> Self {
Self { rust_graph }
}
pub fn get_dependencies(&self, func_id: &FunctionId) -> Vec<FunctionId> {
self.rust_graph.base_graph.get_callees(func_id)
}
pub fn get_dependents(&self, func_id: &FunctionId) -> Vec<FunctionId> {
self.rust_graph.base_graph.get_callers(func_id)
}
pub fn is_in_cycle(&self, func_id: &FunctionId) -> bool {
self.rust_graph.base_graph.is_recursive(func_id)
}
pub fn topological_sort(&self) -> Result<Vec<FunctionId>> {
self.rust_graph
.base_graph
.topological_sort()
.map_err(|e| anyhow::anyhow!(e))
}
}