use oxforge::mdk::*; pub struct PassthroughModule {} #[unsafe(no_mangle)] pub extern "C" fn create_module( config: &GlobalConfig, ) -> *mut Box { let module = PassthroughModule::new(config); let boxed_trait: Box = Box::new(module); let boxed_box = Box::new(boxed_trait); Box::into_raw(boxed_box) } #[unsafe(no_mangle)] pub unsafe extern "C" fn destroy_module(module_ptr: *mut Box) { if !module_ptr.is_null() { let _ = unsafe { Box::from_raw(module_ptr) }; } } impl OxideModule for PassthroughModule { fn new(_config: &GlobalConfig) -> Self { Self {} } fn process(&mut self, mut ports: Ports, _context: &ProcessContext) { if let (Some(input), Some(mut output)) = (ports.main_audio_in.take(), ports.main_audio_out.take()) { output.buffer_mut().copy_from_slice(input.buffer()); } } }