pub mod state;
use crate::analysis::cpa::residue::EmptyResidue;
use crate::analysis::cpa::{ConfigurableProgramAnalysis, IntoState};
use crate::analysis::location::bound::state::BoundedBranchState;
use crate::modeling::machine::cpu::concrete::ConcretePcodeAddress;
pub struct BoundedBranchAnalysis {
max_steps: usize,
}
impl BoundedBranchAnalysis {
pub fn new(max_steps: usize) -> Self {
Self { max_steps }
}
}
impl ConfigurableProgramAnalysis for BoundedBranchAnalysis {
type State = BoundedBranchState;
type Reducer<'op> = EmptyResidue<Self::State>;
}
impl IntoState<BoundedBranchAnalysis> for ConcretePcodeAddress {
fn into_state(self, c: &BoundedBranchAnalysis) -> BoundedBranchState {
BoundedBranchState::new(c.max_steps)
}
}