pub unsafe fn create_cpp_to_rust_pcm_source(
    callback_target: NonNull<Box<dyn PCM_source>>,
) -> NonNull<raw::PCM_source> {
    let instance = crate::bindings::root::reaper_pcm_source::create_cpp_to_rust_pcm_source(
        callback_target.as_ptr() as *mut c_void,
    );
    NonNull::new_unchecked(instance)
}
/// Creates a `PCM_source` object on C++ side and returns a pointer to it.
///
/// This function is provided because Rust structs can't implement C++ virtual base classes.
///
/// # Example
///
/// See [`create_cpp_to_rust_control_surface()`]. Usage is very similar.
///
/// # Cleaning up
///
/// In order to avoid memory leaks, you must take care of removing the C++ counterpart
/// PCM source by calling [`delete_cpp_pcm_source()`].
///
/// # Safety
///
/// This function is highly unsafe. Better use the medium-level API instead.
///
/// [`delete_cpp_pcm_source()`]: fn.remove_cpp_pcm_source.html
/// [`create_cpp_to_rust_control_surface()`]: fn.create_cpp_to_rust_control_surface.html
Creates a `PCM_source` object on C++ side and returns a pointer to it.
This function is provided because Rust structs can't implement C++ virtual base classes.
Creates a ` PCM_source ` object on C ++ side and returns a pointer to it . This function is provided because Rust structs can ' t implement C ++ virtual base classes .
pub unsafe fn create_cpp_to_rust_pcm_source(
    callback_target: NonNull<Box<dyn PCM_source>>,
) -> NonNull<raw::PCM_source> {
    let instance = crate::bindings::root::reaper_pcm_source::create_cpp_to_rust_pcm_source(
        callback_target.as_ptr() as *mut c_void,
    );
    NonNull::new_unchecked(instance)
}
pub unsafe fn create_cpp_to_rust_pcm_source ( callback_target : NonNull < Box < dyn PCM_source > > , ) -> NonNull < raw :: PCM_source > { let instance = crate :: bindings :: root :: reaper_pcm_source :: create_cpp_to_rust_pcm_source ( callback_target . as_ptr ( ) as * mut c_void , ) ; NonNull :: new_unchecked ( instance ) }
Creates a `PCM_source` object on C++ side and returns a pointer to it.
Creates a ` PCM_source ` object on C ++ side and returns a pointer to it .
callback_target
NonNull<Box<dyn PCM_source>>
callback_target
NonNull<Box<dyn PCM_source>>
example
See [`create_cpp_to_rust_control_surface()`]. Usage is very similar.
See [ ` create_cpp_to_rust_control_surface () ` ] . Usage is very similar .
cleaning up
In order to avoid memory leaks, you must take care of removing the C++ counterpart
PCM source by calling [`delete_cpp_pcm_source()`].
In order to avoid memory leaks you must take care of removing the C ++ counterpart PCM source by calling [ ` delete_cpp_pcm_source () ` ] .
safety
This function is highly unsafe. Better use the medium-level API instead.

[`delete_cpp_pcm_source()`]: fn.remove_cpp_pcm_source.html
[`create_cpp_to_rust_control_surface()`]: fn.create_cpp_to_rust_control_surface.html
This function is highly unsafe . Better use the medium - level API instead . [ ` delete_cpp_pcm_source () ` ] : fn . remove_cpp_pcm_source . html [ ` create_cpp_to_rust_control_surface () ` ] : fn . create_cpp_to_rust_control_surface . html