use core::fmt;
#[cfg(feature = "serde")]
use serde::{Deserialize, Serialize};
#[derive(Copy, Clone, Debug, Eq, PartialEq)]
#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
#[cfg_attr(all(feature = "arbitrary", test), miden_test_serde_macros::serde_test)]
pub enum DebugOptions {
StackAll,
StackTop(u8),
MemAll,
MemInterval(u32, u32),
LocalInterval(u16, u16, u16),
AdvStackTop(u16),
}
impl crate::prettier::PrettyPrint for DebugOptions {
fn render(&self) -> crate::prettier::Document {
crate::prettier::display(self)
}
}
impl fmt::Display for DebugOptions {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
match self {
Self::StackAll => write!(f, "stack"),
Self::StackTop(n) => write!(f, "stack.{n}"),
Self::MemAll => write!(f, "mem"),
Self::MemInterval(n, m) => write!(f, "mem.{n}.{m}"),
Self::LocalInterval(start, end, _) => {
write!(f, "local.{start}.{end}")
},
Self::AdvStackTop(n) => write!(f, "adv_stack.{n}"),
}
}
}