use crate::mem::Access;
use std::ops::RangeInclusive;

// TODO: Use Address
#[allow(dead_code)]
#[derive(Debug, Clone, PartialEq, Eq)]
pub(crate) enum Address {
    Addr(u16),
    AddrRange(RangeInclusive<u16>),
}

// Conditions:
// - A/X/Y/P/SP
// - PC
// - Opcode
// - Scanline
// - Cycle
// - Memory value
// - Branched
// - IRQ/NMI
// - Spr0 Hit/Spr Overflow
// - VBlank
#[derive(Debug, Copy, Clone, PartialEq, Eq)]
pub(crate) struct Condition {}

#[derive(Debug, Clone, PartialEq, Eq)]
pub(crate) struct Breakpoint {
    pub(crate) addr: Address,
    pub(crate) access: Vec<Access>,
    pub(crate) conditions: Vec<Condition>,
    pub(crate) enabled: bool,
}
