use std::ffi::NulError;
use std::str::Utf8Error;
use thiserror::Error;
#[non_exhaustive]
#[derive(Error, Debug)]
pub enum CpdbError {
#[error("Null pointer encountered")]
NullPointer,
#[error("Invalid printer object")]
InvalidPrinter,
#[error("Not found: {0}")]
NotFound(String),
#[error("Printer error: {0}")]
PrinterError(String),
#[error("Print job failed: {0}")]
JobFailed(String),
#[error("Backend error: {0}")]
BackendError(String),
#[error("Frontend error: {0}")]
FrontendError(String),
#[error("Option error: {0}")]
OptionError(String),
#[error("Invalid UTF-8 string: {0}")]
Utf8Error(#[from] Utf8Error),
#[error("Nul byte in string: {0}")]
NulError(#[from] NulError),
#[error("IO error: {0}")]
IoError(#[from] std::io::Error),
#[error("Invalid status code: {0}")]
InvalidStatus(i32),
#[error("Unsupported operation")]
Unsupported,
}
pub type Result<T> = std::result::Result<T, CpdbError>;