mod cursor;
#[cfg(test)]
mod test;
mod ansi_cursor;
#[cfg(target_os = "windows")]
mod winapi_cursor;
use self::ansi_cursor::AnsiCursor;
#[cfg(target_os = "windows")]
use self::winapi_cursor::WinApiCursor;
pub use self::cursor::{cursor, from_screen, TerminalCursor};
use super::functions;
use std::sync::Arc;
use TerminalOutput;
trait ITerminalCursor: Sync + Send {
fn goto(&self, x: u16, y: u16, stdout: &Option<&Arc<TerminalOutput>>);
fn pos(&self) -> (u16, u16);
fn move_up(&self, count: u16, stdout: &Option<&Arc<TerminalOutput>>);
fn move_right(&self, count: u16, stdout: &Option<&Arc<TerminalOutput>>);
fn move_down(&self, count: u16, stdout: &Option<&Arc<TerminalOutput>>);
fn move_left(&self, count: u16, stdout: &Option<&Arc<TerminalOutput>>);
fn save_position(&self, stdout: &Option<&Arc<TerminalOutput>>);
fn reset_position(&self, stdout: &Option<&Arc<TerminalOutput>>);
fn hide(&self, stdout: &Option<&Arc<TerminalOutput>>);
fn show(&self, stdout: &Option<&Arc<TerminalOutput>>);
fn blink(&self, blink: bool, stdout: &Option<&Arc<TerminalOutput>>);
}