use std::fmt::Debug;
use vmi_core::{Va, os::ProcessObject};
use super::super::{bpm, ptm};
pub trait ReactorEvent: bpm::TagType + ptm::TagType + 'static {
type Module: Debug + Copy + 'static;
const METADATA: &'static [EventMetadata<Self>];
}
pub struct EventMetadata<Event>
where
Event: ReactorEvent,
{
pub name: &'static str,
pub alias: &'static [&'static str],
pub module: Option<Event::Module>,
pub event: Event,
pub optional: bool,
}
pub struct ResolvedEvent<Event>
where
Event: ReactorEvent,
{
pub process: Option<ProcessObject>,
pub address: Va,
pub event: Event,
}