use fmod_sys::*;
use lanyard::Utf8CString;
use std::ffi::{c_int, c_void};
use crate::{FmodResultExt, Result};
use crate::{SoundGroup, System, get_string};
impl SoundGroup {
pub fn get_name(&self) -> Result<Utf8CString> {
get_string(|name| unsafe {
FMOD_SoundGroup_GetName(
self.inner.as_ptr(),
name.as_mut_ptr().cast(),
name.len() as c_int,
)
})
}
pub fn release(&self) -> Result<()> {
unsafe { FMOD_SoundGroup_Release(self.inner.as_ptr()).to_result() }
}
#[allow(clippy::not_unsafe_ptr_arg_deref)] pub fn set_userdata(&self, userdata: *mut c_void) -> Result<()> {
unsafe { FMOD_SoundGroup_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_SoundGroup_GetUserData(self.inner.as_ptr(), &raw mut userdata).to_result()?;
}
Ok(userdata)
}
pub fn get_system(&self) -> Result<System> {
let mut system = std::ptr::null_mut();
unsafe {
FMOD_SoundGroup_GetSystemObject(self.inner.as_ptr(), &raw mut system).to_result()?;
Ok(System::from_ffi(system))
}
}
}