1use std::ptr::NonNull;
8
9use fmod_sys::*;
10
11mod callback;
12mod channel_format;
13mod connections;
14mod data_parameters;
15pub mod effects;
16mod general;
17mod metering;
18mod parameter_traits;
19mod parameters;
20mod processing;
21
22pub use callback::DspCallback;
23pub use data_parameters::*;
24pub use parameter_traits::*;
25
26#[cfg(doc)]
27use crate::System;
28
29#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
33#[repr(transparent)] pub struct Dsp {
35 pub(crate) inner: NonNull<FMOD_DSP>,
36}
37
38#[cfg(not(feature = "thread-unsafe"))]
39unsafe impl Send for Dsp {}
40#[cfg(not(feature = "thread-unsafe"))]
41unsafe impl Sync for Dsp {}
42
43impl Dsp {
44 pub unsafe fn from_ffi(value: *mut FMOD_DSP) -> Self {
52 let inner = NonNull::new(value).unwrap();
53 Dsp { inner }
54 }
55
56 pub fn as_ptr(self) -> *mut FMOD_DSP {
58 self.inner.as_ptr()
59 }
60}
61
62impl From<Dsp> for *mut FMOD_DSP {
63 fn from(value: Dsp) -> Self {
64 value.inner.as_ptr()
65 }
66}