use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, PartialEq, Eq, Hash, Serialize, Deserialize)]
pub enum RefEdge {
Routes,
TransitionsTo,
Delegates,
Invokes,
Reads,
Writes,
Chains,
Escalates,
}
impl RefEdge {
pub fn label(&self) -> &'static str {
match self {
RefEdge::Routes => "routes",
RefEdge::TransitionsTo => "transitions_to",
RefEdge::Delegates => "delegates",
RefEdge::Invokes => "invokes",
RefEdge::Reads => "reads",
RefEdge::Writes => "writes",
RefEdge::Chains => "chains",
RefEdge::Escalates => "escalates",
}
}
pub fn is_control_flow(&self) -> bool {
matches!(
self,
RefEdge::Routes
| RefEdge::TransitionsTo
| RefEdge::Delegates
| RefEdge::Invokes
| RefEdge::Chains
| RefEdge::Escalates
)
}
pub fn is_data_flow(&self) -> bool {
matches!(self, RefEdge::Reads | RefEdge::Writes)
}
}