use std::convert::TryFrom;
use ncursesw::{ChtypeChar, ChtypeString, ComplexChar, ComplexString, WideString, WINDOW};
use crate::{NCurseswWinError, gen::HasHandle};
pub trait HasAddFunctions: HasHandle<WINDOW> {
fn addchnstr(&self, chstr: &ChtypeString, length: Option<u16>) -> result!(()) {
Ok(ncursesw::waddchnstr(self._handle(), chstr, option_length!(length)?)?)
}
fn addch(&self, ch: ChtypeChar) -> result!(()) {
Ok(ncursesw::waddch(self._handle(), ch)?)
}
fn addchstr(&self, chstr: &ChtypeString) -> result!(()) {
Ok(ncursesw::waddchstr(self._handle(), chstr)?)
}
fn addnstr<S: Into<String>>(&self, str: S, length: Option<u16>) -> result!(()) {
Ok(ncursesw::waddnstr(self._handle(), str, option_length!(length)?)?)
}
fn addnwstr(&self, wstr: &WideString, length: Option<u16>) -> result!(()) {
Ok(ncursesw::waddnwstr(self._handle(), wstr, option_length!(length)?)?)
}
fn addstr<S: Into<String>>(&self, str: S) -> result!(()) {
Ok(ncursesw::waddstr(self._handle(), str)?)
}
fn add_wchnstr(&self, wchstr: &ComplexString, length: Option<u16>) -> result!(()) {
Ok(ncursesw::wadd_wchnstr(self._handle(), wchstr, option_length!(length)?)?)
}
fn add_wch(&self, wch: ComplexChar) -> result!(()) {
Ok(ncursesw::wadd_wch(self._handle(), wch)?)
}
fn add_wchstr(&self, wchstr: &ComplexString) -> result!(()) {
Ok(ncursesw::wadd_wchstr(self._handle(), wchstr)?)
}
fn addwstr(&self, wstr: &WideString) -> result!(()) {
Ok(ncursesw::waddwstr(self._handle(), wstr)?)
}
}