use std::ffi::NulError;
use thiserror::Error;
#[derive(Debug, Error)]
pub enum Error {
#[error("cannot initialize CAVA: {0}")]
InitFailed(String),
#[error("CAVA plan returned null pointer")]
NullPlan,
#[error("Mutex lock operation failed with error code: {0}")]
MutexLock(i32),
#[error("Mutex unlock operation failed with error code: {0}")]
MutexUnlock(i32),
#[error("Mutex initialization failed with error code: {0}")]
MutexInit(i32),
#[error("Condition variable initialization failed with error code: {0}")]
CondInit(i32),
#[error("No audio input function returned")]
NoInputFunction,
#[error("String contains null byte: {0}")]
NullByte(#[from] NulError),
#[error("Audio raw initialization failed with error code: {0}")]
AudioRawInitFailed(i32),
#[error("Invalid parameter: {0}")]
InvalidParameter(String),
}
pub type Result<T> = std::result::Result<T, Error>;