mod seq;
mod vt100;
pub(crate) use self::seq::Query;
pub(crate) use self::vt100::Vt100Emulator;
use crate::screen::MouseMode;
use crate::Screen;
#[derive(Debug, Clone, PartialEq, Eq)]
pub(crate) enum Stop {
FrameComplete,
Query(Query),
}
#[derive(Debug, Clone)]
pub(crate) struct Processed {
pub(crate) consumed: usize,
pub(crate) stop: Option<Stop>,
}
#[derive(Debug, Clone, Copy)]
pub(crate) struct InputModes {
pub(crate) mouse: MouseMode,
pub(crate) sgr_mouse: bool,
pub(crate) bracketed_paste: bool,
pub(crate) application_cursor: bool,
}
pub(crate) trait Emulator: Send {
fn process(&mut self, bytes: &[u8]) -> Processed;
fn snapshot(&self) -> Screen;
fn mid_sequence(&self) -> bool;
fn in_sync_update(&self) -> bool;
fn input_modes(&self) -> InputModes;
fn set_size(&mut self, rows: u16, cols: u16);
}