use libghostty_vt_sys as sys;
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub enum Error {
OutOfMemory,
InvalidValue,
OutOfSpace,
NoValue,
Unknown(i32),
}
impl std::fmt::Display for Error {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
match self {
Error::OutOfMemory => write!(f, "libghostty-vt: out of memory"),
Error::InvalidValue => write!(f, "libghostty-vt: invalid value"),
Error::OutOfSpace => write!(f, "libghostty-vt: out of space"),
Error::NoValue => write!(f, "libghostty-vt: no value"),
Error::Unknown(code) => write!(f, "libghostty-vt: unknown error {code}"),
}
}
}
impl std::error::Error for Error {}
impl From<sys::GhosttyResult> for Error {
fn from(r: sys::GhosttyResult) -> Self {
match r {
sys::GhosttyResult::GHOSTTY_OUT_OF_MEMORY => Error::OutOfMemory,
sys::GhosttyResult::GHOSTTY_INVALID_VALUE => Error::InvalidValue,
sys::GhosttyResult::GHOSTTY_OUT_OF_SPACE => Error::OutOfSpace,
sys::GhosttyResult::GHOSTTY_NO_VALUE => Error::NoValue,
other => Error::Unknown(other.0),
}
}
}
#[inline]
pub(crate) fn check(r: sys::GhosttyResult) -> Result<(), Error> {
if r == sys::GhosttyResult::GHOSTTY_SUCCESS {
Ok(())
} else {
Err(r.into())
}
}