#[cfg(test)]
#[path = "./breakpoints_test.rs"]
mod breakpoints_test;
#[derive(Default)]
pub struct Breakpoints {
breakpoints: Vec<u32>,
}
impl Breakpoints {
pub fn add(&mut self, bp: u32) -> Option<u32> {
if self.breakpoints.iter().find(|&&x|x == bp).is_none() {
self.breakpoints.push(bp);
Some(bp)
} else {
None
}
}
pub fn remove(&mut self, bp: u32) -> Option<u32> {
match self.breakpoints.iter().position(|x| *x == bp) {
Some(pos) => {
self.breakpoints.remove(pos);
Some(bp)
},
None => None,
}
}
pub fn get(&self) -> Vec<u32> {
let mut sorted = self.breakpoints.clone();
sorted.sort();
sorted
}
pub fn clear(&mut self) {
self.breakpoints.clear();
}
pub fn hit(&self, address: u32) -> bool {
self.breakpoints.iter().any(|&x| x == address)
}
}