use std::any::Any;
use crate::device::DeviceContext;
use crate::snapshot::Store;
use crate::soc::Width;
use crate::time::{EventId, VirtualNanos};
pub trait Peer: Store + std::fmt::Debug + Send + Any {
fn read(&mut self, offset: u64, width: Width, context: &mut DeviceContext<'_>) -> u64;
fn write(&mut self, offset: u64, width: Width, value: u64, context: &mut DeviceContext<'_>);
fn peek(&self, offset: u64, width: Width, now: VirtualNanos) -> Option<u64> {
let _ = (offset, width, now);
None
}
fn on_event(&mut self, event: EventId, context: &mut DeviceContext<'_>) {
let _ = (event, context);
}
fn poll(&mut self, context: &mut DeviceContext<'_>) {
let _ = context;
}
fn reset(&mut self) {}
}