1use crate::cpu::Cpu;
2use crate::device::IoHandler;
3use crate::mmu::{MemRead, MemWrite, Mmu};
4
5pub trait Debugger: IoHandler {
9 fn init(&mut self, mmu: &Mmu);
11
12 fn take_cpu_snapshot(&mut self, cpu: Cpu);
14
15 fn on_decode(&mut self, mmu: &Mmu);
17
18 fn check_signal(&mut self);
20}
21
22impl dyn Debugger {
23 pub fn empty() -> NullDebugger {
25 NullDebugger
26 }
27}
28
29pub struct NullDebugger;
31
32impl Debugger for NullDebugger {
33 fn init(&mut self, _: &Mmu) {}
34
35 fn take_cpu_snapshot(&mut self, _: Cpu) {}
36
37 fn on_decode(&mut self, _: &Mmu) {}
38
39 fn check_signal(&mut self) {}
40}
41
42impl IoHandler for NullDebugger {
43 fn on_read(&mut self, _: &Mmu, _: u16) -> MemRead {
44 MemRead::PassThrough
45 }
46
47 fn on_write(&mut self, _: &Mmu, _: u16, _: u8) -> MemWrite {
48 MemWrite::PassThrough
49 }
50}