use miden_core::events::{EventId, EventName};
pub const FRAME_START_EVENT: EventName = EventName::new("readonly::miden_debug::frame_start");
pub const FRAME_END_EVENT: EventName = EventName::new("readonly::miden_debug::frame_end");
pub const PRINT_LN_EVENT: EventName = EventName::new("readonly::miden_debug::println");
#[derive(Debug, Copy, Clone, PartialEq, Eq, PartialOrd, Ord, Hash)]
#[repr(u32)]
pub enum Event {
FrameStart,
FrameEnd,
PrintLn,
Unknown(EventId),
}
impl Event {
#[inline(always)]
pub fn is_frame_start(&self) -> bool {
matches!(self, Self::FrameStart)
}
#[inline(always)]
pub fn is_frame_end(&self) -> bool {
matches!(self, Self::FrameEnd)
}
pub fn as_event_id(self) -> EventId {
match self {
Self::FrameStart => FRAME_START_EVENT.to_event_id(),
Self::FrameEnd => FRAME_END_EVENT.to_event_id(),
Self::PrintLn => PRINT_LN_EVENT.to_event_id(),
Self::Unknown(event) => event,
}
}
}
impl From<Event> for EventId {
fn from(event: Event) -> Self {
event.as_event_id()
}
}