use std::ffi::c_void;
use fmod_sys::*;
use crate::{Dsp, DspConnection, DspConnectionType};
use crate::{FmodResultExt, Result};
impl DspConnection {
pub fn get_input(&self) -> Result<Dsp> {
let mut dsp = std::ptr::null_mut();
unsafe {
FMOD_DSPConnection_GetInput(self.inner.as_ptr(), &raw mut dsp).to_result()?;
Ok(Dsp::from_ffi(dsp))
}
}
pub fn get_output(&self) -> Result<Dsp> {
let mut dsp = std::ptr::null_mut();
unsafe {
FMOD_DSPConnection_GetOutput(self.inner.as_ptr(), &raw mut dsp).to_result()?;
Ok(Dsp::from_ffi(dsp))
}
}
pub fn get_type(&self) -> Result<DspConnectionType> {
let mut connection_type = 0;
unsafe {
FMOD_DSPConnection_GetType(self.inner.as_ptr(), &raw mut connection_type)
.to_result()?;
};
let connection_type = connection_type.try_into()?;
Ok(connection_type)
}
#[allow(clippy::not_unsafe_ptr_arg_deref)] pub fn set_userdata(&self, userdata: *mut c_void) -> Result<()> {
unsafe { FMOD_DSPConnection_SetUserData(self.inner.as_ptr(), userdata).to_result() }
}
pub fn get_userdata(&self) -> Result<*mut c_void> {
let mut userdata = std::ptr::null_mut();
unsafe {
FMOD_DSPConnection_GetUserData(self.inner.as_ptr(), &raw mut userdata).to_result()?;
}
Ok(userdata)
}
}