
#[derive(PartialEq)]
pub struct Interrupt {
    level: InterruptStatus
}

impl Interrupt {

    pub fn new() -> Self {
        Self {
            level: InterruptStatus::InterruptOff
        }
    }

    pub fn set_status(&mut self, new_status: InterruptStatus) -> InterruptStatus {
        let old = self.level;
        self.level = new_status;
        if new_status == InterruptStatus::InterruptOn && old == InterruptStatus::InterruptOff {
            self.one_tick(1);
        }
        old
    }

    fn one_tick(&self, nb_cycle: i32) {
        todo!();
    }

    pub fn get_status(&self) -> InterruptStatus {
        self.level
    }

}

#[derive(PartialEq, Clone, Copy)]
pub enum InterruptStatus {
    InterruptOff,
    InterruptOn
}