mirtal-sys 0.1.0

Private native bridge for mirtal
#[allow(let_underscore_drop, clippy::must_use_candidate, clippy::panic, clippy::too_many_arguments)]
#[cxx::bridge(namespace = "mirtal")]
pub mod ffi {
    unsafe extern "C++" {
        include!("mirtal/bridge.h");

        type Array = crate::ffi::Array;
        type Arrays = crate::ffi::Arrays;
        type AliasingPlan;
        type MetalLibrary = crate::ffi::MetalLibrary;
        type Stream = crate::ffi::Stream;

        fn new_aliasing_plan(
            input_arity: usize,
            constant_arity: usize,
            output_aliases: &[u32],
            stride_inputs: &[u32],
            stride_axes: &[u32],
            function: &str,
            library: &MetalLibrary,
        ) -> Result<UniquePtr<AliasingPlan>>;

        fn aliasing_plan_set_input(
            plan: Pin<&mut AliasingPlan>,
            index: usize,
            input: &Array,
        ) -> Result<()>;

        fn aliasing_plan_dispatch(
            plan: Pin<&mut AliasingPlan>,
            constants: &[u32],
            grid_x: u32,
            grid_y: u32,
            grid_z: u32,
            group_x: u32,
            group_y: u32,
            group_z: u32,
            stream: &Stream,
        ) -> Result<UniquePtr<Arrays>>;

        fn aliasing_dispatch(
            inputs: &Arrays,
            output_aliases: &[u32],
            constants: &[u32],
            stride_inputs: &[u32],
            stride_axes: &[u32],
            function: &str,
            library: &MetalLibrary,
            grid_x: u32,
            grid_y: u32,
            grid_z: u32,
            group_x: u32,
            group_y: u32,
            group_z: u32,
            stream: &Stream,
        ) -> Result<UniquePtr<Arrays>>;
    }
}