uniffi_bindgen 0.31.1

a multi-language bindings generator for rust (codegen and cli tooling)
Documentation
/* This Source Code Form is subject to the terms of the Mozilla Public
 * License, v. 2.0. If a copy of the MPL was not distributed with this
 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */

//! RustBuffer-related FFI functions

use super::*;

pub fn pass(namespace: &mut Namespace) -> Result<()> {
    namespace.ffi_rustbuffer_alloc =
        RustFfiFunctionName(format!("ffi_{}_rustbuffer_alloc", &namespace.crate_name));
    namespace.ffi_rustbuffer_from_bytes = RustFfiFunctionName(format!(
        "ffi_{}_rustbuffer_from_bytes",
        &namespace.crate_name
    ));
    namespace.ffi_rustbuffer_free =
        RustFfiFunctionName(format!("ffi_{}_rustbuffer_free", &namespace.crate_name));
    namespace.ffi_rustbuffer_reserve =
        RustFfiFunctionName(format!("ffi_{}_rustbuffer_reserve", &namespace.crate_name));
    namespace.ffi_definitions.extend([
        FfiFunction {
            name: RustFfiFunctionName(format!("ffi_{}_rustbuffer_alloc", &namespace.crate_name)),
            async_data: None,
            arguments: vec![FfiArgument {
                name: "size".to_string(),
                ty: FfiType::UInt64.into(),
            }],
            return_type: FfiReturnType {
                ty: Some(FfiType::RustBuffer(None).into()),
            },
            has_rust_call_status_arg: true,
            kind: FfiFunctionKind::RustBufferAlloc,
            ..FfiFunction::default()
        }
        .into(),
        FfiFunction {
            name: RustFfiFunctionName(format!(
                "ffi_{}_rustbuffer_from_bytes",
                &namespace.crate_name
            )),
            async_data: None,
            arguments: vec![FfiArgument {
                name: "bytes".to_string(),
                ty: FfiType::ForeignBytes.into(),
            }],
            return_type: FfiReturnType {
                ty: Some(FfiType::RustBuffer(None).into()),
            },
            has_rust_call_status_arg: true,
            kind: FfiFunctionKind::RustBufferFromBytes,
            ..FfiFunction::default()
        }
        .into(),
        FfiFunction {
            name: RustFfiFunctionName(format!("ffi_{}_rustbuffer_free", &namespace.crate_name)),
            async_data: None,
            arguments: vec![FfiArgument {
                name: "buf".to_string(),
                ty: FfiType::RustBuffer(None).into(),
            }],
            return_type: FfiReturnType { ty: None },
            has_rust_call_status_arg: true,
            kind: FfiFunctionKind::RustBufferFree,
            ..FfiFunction::default()
        }
        .into(),
        FfiFunction {
            name: RustFfiFunctionName(format!("ffi_{}_rustbuffer_reserve", &namespace.crate_name)),
            async_data: None,
            arguments: vec![
                FfiArgument {
                    name: "buf".to_string(),
                    ty: FfiType::RustBuffer(None).into(),
                },
                FfiArgument {
                    name: "additional".to_string(),
                    ty: FfiType::UInt64.into(),
                },
            ],
            return_type: FfiReturnType {
                ty: Some(FfiType::RustBuffer(None).into()),
            },
            has_rust_call_status_arg: true,
            kind: FfiFunctionKind::RustBufferReserve,
            ..FfiFunction::default()
        }
        .into(),
    ]);
    Ok(())
}