Loading uniffi_macros/src/setup_scaffolding.rs +11 −7 Original line number Original line Diff line number Diff line Loading @@ -11,16 +11,20 @@ use uniffi_meta::UNIFFI_CONTRACT_VERSION; pub fn setup_scaffolding(namespace: String) -> Result<TokenStream> { pub fn setup_scaffolding(namespace: String) -> Result<TokenStream> { let module_path = mod_path()?; let module_path = mod_path()?; let ffi_contract_version_ident = format_ident!("ffi_{module_path}_uniffi_contract_version"); let normalized_module_path = module_path.replace("::", "__"); let ffi_contract_version_ident = format_ident!("ffi_{normalized_module_path}_uniffi_contract_version"); let namespace_upper = namespace.to_ascii_uppercase(); let namespace_upper = namespace.to_ascii_uppercase(); let namespace_const_ident = format_ident!("UNIFFI_META_CONST_NAMESPACE_{namespace_upper}"); let namespace_const_ident = format_ident!("UNIFFI_META_CONST_NAMESPACE_{namespace_upper}"); let namespace_static_ident = format_ident!("UNIFFI_META_NAMESPACE_{namespace_upper}"); let namespace_static_ident = format_ident!("UNIFFI_META_NAMESPACE_{namespace_upper}"); let ffi_rustbuffer_alloc_ident = format_ident!("ffi_{module_path}_rustbuffer_alloc"); let ffi_rustbuffer_alloc_ident = format_ident!("ffi_{normalized_module_path}_rustbuffer_alloc"); let ffi_rustbuffer_from_bytes_ident = format_ident!("ffi_{module_path}_rustbuffer_from_bytes"); let ffi_rustbuffer_from_bytes_ident = let ffi_rustbuffer_free_ident = format_ident!("ffi_{module_path}_rustbuffer_free"); format_ident!("ffi_{normalized_module_path}_rustbuffer_from_bytes"); let ffi_rustbuffer_reserve_ident = format_ident!("ffi_{module_path}_rustbuffer_reserve"); let ffi_rustbuffer_free_ident = format_ident!("ffi_{normalized_module_path}_rustbuffer_free"); let reexport_hack_ident = format_ident!("{module_path}_uniffi_reexport_hack"); let ffi_rustbuffer_reserve_ident = let ffi_rust_future_scaffolding_fns = rust_future_scaffolding_fns(&module_path); format_ident!("ffi_{normalized_module_path}_rustbuffer_reserve"); let reexport_hack_ident = format_ident!("{normalized_module_path}_uniffi_reexport_hack"); let ffi_rust_future_scaffolding_fns = rust_future_scaffolding_fns(&normalized_module_path); Ok(quote! { Ok(quote! { // Unit struct to parameterize the FfiConverter trait. // Unit struct to parameterize the FfiConverter trait. Loading uniffi_meta/src/ffi_names.rs +9 −0 Original line number Original line Diff line number Diff line Loading @@ -15,12 +15,14 @@ /// FFI symbol name for a top-level function /// FFI symbol name for a top-level function pub fn fn_symbol_name(namespace: &str, name: &str) -> String { pub fn fn_symbol_name(namespace: &str, name: &str) -> String { let namespace = namespace.replace("::", "__"); let name = name.to_ascii_lowercase(); let name = name.to_ascii_lowercase(); format!("uniffi_{namespace}_fn_func_{name}") format!("uniffi_{namespace}_fn_func_{name}") } } /// FFI symbol name for an object constructor /// FFI symbol name for an object constructor pub fn constructor_symbol_name(namespace: &str, object_name: &str, name: &str) -> String { pub fn constructor_symbol_name(namespace: &str, object_name: &str, name: &str) -> String { let namespace = namespace.replace("::", "__"); let object_name = object_name.to_ascii_lowercase(); let object_name = object_name.to_ascii_lowercase(); let name = name.to_ascii_lowercase(); let name = name.to_ascii_lowercase(); format!("uniffi_{namespace}_fn_constructor_{object_name}_{name}") format!("uniffi_{namespace}_fn_constructor_{object_name}_{name}") Loading @@ -28,6 +30,7 @@ pub fn constructor_symbol_name(namespace: &str, object_name: &str, name: &str) - /// FFI symbol name for an object method /// FFI symbol name for an object method pub fn method_symbol_name(namespace: &str, object_name: &str, name: &str) -> String { pub fn method_symbol_name(namespace: &str, object_name: &str, name: &str) -> String { let namespace = namespace.replace("::", "__"); let object_name = object_name.to_ascii_lowercase(); let object_name = object_name.to_ascii_lowercase(); let name = name.to_ascii_lowercase(); let name = name.to_ascii_lowercase(); format!("uniffi_{namespace}_fn_method_{object_name}_{name}") format!("uniffi_{namespace}_fn_method_{object_name}_{name}") Loading @@ -35,12 +38,14 @@ pub fn method_symbol_name(namespace: &str, object_name: &str, name: &str) -> Str /// FFI symbol name for the `clone` function for an object. /// FFI symbol name for the `clone` function for an object. pub fn clone_fn_symbol_name(namespace: &str, object_name: &str) -> String { pub fn clone_fn_symbol_name(namespace: &str, object_name: &str) -> String { let namespace = namespace.replace("::", "__"); let object_name = object_name.to_ascii_lowercase(); let object_name = object_name.to_ascii_lowercase(); format!("uniffi_{namespace}_fn_clone_{object_name}") format!("uniffi_{namespace}_fn_clone_{object_name}") } } /// FFI symbol name for the `free` function for an object. /// FFI symbol name for the `free` function for an object. pub fn free_fn_symbol_name(namespace: &str, object_name: &str) -> String { pub fn free_fn_symbol_name(namespace: &str, object_name: &str) -> String { let namespace = namespace.replace("::", "__"); let object_name = object_name.to_ascii_lowercase(); let object_name = object_name.to_ascii_lowercase(); format!("uniffi_{namespace}_fn_free_{object_name}") format!("uniffi_{namespace}_fn_free_{object_name}") } } Loading @@ -50,18 +55,21 @@ pub fn init_callback_vtable_fn_symbol_name( namespace: &str, namespace: &str, callback_interface_name: &str, callback_interface_name: &str, ) -> String { ) -> String { let namespace = namespace.replace("::", "__"); let callback_interface_name = callback_interface_name.to_ascii_lowercase(); let callback_interface_name = callback_interface_name.to_ascii_lowercase(); format!("uniffi_{namespace}_fn_init_callback_vtable_{callback_interface_name}") format!("uniffi_{namespace}_fn_init_callback_vtable_{callback_interface_name}") } } /// FFI checksum symbol name for a top-level function /// FFI checksum symbol name for a top-level function pub fn fn_checksum_symbol_name(namespace: &str, name: &str) -> String { pub fn fn_checksum_symbol_name(namespace: &str, name: &str) -> String { let namespace = namespace.replace("::", "__"); let name = name.to_ascii_lowercase(); let name = name.to_ascii_lowercase(); format!("uniffi_{namespace}_checksum_func_{name}") format!("uniffi_{namespace}_checksum_func_{name}") } } /// FFI checksum symbol name for an object constructor /// FFI checksum symbol name for an object constructor pub fn constructor_checksum_symbol_name(namespace: &str, object_name: &str, name: &str) -> String { pub fn constructor_checksum_symbol_name(namespace: &str, object_name: &str, name: &str) -> String { let namespace = namespace.replace("::", "__"); let object_name = object_name.to_ascii_lowercase(); let object_name = object_name.to_ascii_lowercase(); let name = name.to_ascii_lowercase(); let name = name.to_ascii_lowercase(); format!("uniffi_{namespace}_checksum_constructor_{object_name}_{name}") format!("uniffi_{namespace}_checksum_constructor_{object_name}_{name}") Loading @@ -69,6 +77,7 @@ pub fn constructor_checksum_symbol_name(namespace: &str, object_name: &str, name /// FFI checksum symbol name for an object method /// FFI checksum symbol name for an object method pub fn method_checksum_symbol_name(namespace: &str, object_name: &str, name: &str) -> String { pub fn method_checksum_symbol_name(namespace: &str, object_name: &str, name: &str) -> String { let namespace = namespace.replace("::", "__"); let object_name = object_name.to_ascii_lowercase(); let object_name = object_name.to_ascii_lowercase(); let name = name.to_ascii_lowercase(); let name = name.to_ascii_lowercase(); format!("uniffi_{namespace}_checksum_method_{object_name}_{name}") format!("uniffi_{namespace}_checksum_method_{object_name}_{name}") Loading Loading
uniffi_macros/src/setup_scaffolding.rs +11 −7 Original line number Original line Diff line number Diff line Loading @@ -11,16 +11,20 @@ use uniffi_meta::UNIFFI_CONTRACT_VERSION; pub fn setup_scaffolding(namespace: String) -> Result<TokenStream> { pub fn setup_scaffolding(namespace: String) -> Result<TokenStream> { let module_path = mod_path()?; let module_path = mod_path()?; let ffi_contract_version_ident = format_ident!("ffi_{module_path}_uniffi_contract_version"); let normalized_module_path = module_path.replace("::", "__"); let ffi_contract_version_ident = format_ident!("ffi_{normalized_module_path}_uniffi_contract_version"); let namespace_upper = namespace.to_ascii_uppercase(); let namespace_upper = namespace.to_ascii_uppercase(); let namespace_const_ident = format_ident!("UNIFFI_META_CONST_NAMESPACE_{namespace_upper}"); let namespace_const_ident = format_ident!("UNIFFI_META_CONST_NAMESPACE_{namespace_upper}"); let namespace_static_ident = format_ident!("UNIFFI_META_NAMESPACE_{namespace_upper}"); let namespace_static_ident = format_ident!("UNIFFI_META_NAMESPACE_{namespace_upper}"); let ffi_rustbuffer_alloc_ident = format_ident!("ffi_{module_path}_rustbuffer_alloc"); let ffi_rustbuffer_alloc_ident = format_ident!("ffi_{normalized_module_path}_rustbuffer_alloc"); let ffi_rustbuffer_from_bytes_ident = format_ident!("ffi_{module_path}_rustbuffer_from_bytes"); let ffi_rustbuffer_from_bytes_ident = let ffi_rustbuffer_free_ident = format_ident!("ffi_{module_path}_rustbuffer_free"); format_ident!("ffi_{normalized_module_path}_rustbuffer_from_bytes"); let ffi_rustbuffer_reserve_ident = format_ident!("ffi_{module_path}_rustbuffer_reserve"); let ffi_rustbuffer_free_ident = format_ident!("ffi_{normalized_module_path}_rustbuffer_free"); let reexport_hack_ident = format_ident!("{module_path}_uniffi_reexport_hack"); let ffi_rustbuffer_reserve_ident = let ffi_rust_future_scaffolding_fns = rust_future_scaffolding_fns(&module_path); format_ident!("ffi_{normalized_module_path}_rustbuffer_reserve"); let reexport_hack_ident = format_ident!("{normalized_module_path}_uniffi_reexport_hack"); let ffi_rust_future_scaffolding_fns = rust_future_scaffolding_fns(&normalized_module_path); Ok(quote! { Ok(quote! { // Unit struct to parameterize the FfiConverter trait. // Unit struct to parameterize the FfiConverter trait. Loading
uniffi_meta/src/ffi_names.rs +9 −0 Original line number Original line Diff line number Diff line Loading @@ -15,12 +15,14 @@ /// FFI symbol name for a top-level function /// FFI symbol name for a top-level function pub fn fn_symbol_name(namespace: &str, name: &str) -> String { pub fn fn_symbol_name(namespace: &str, name: &str) -> String { let namespace = namespace.replace("::", "__"); let name = name.to_ascii_lowercase(); let name = name.to_ascii_lowercase(); format!("uniffi_{namespace}_fn_func_{name}") format!("uniffi_{namespace}_fn_func_{name}") } } /// FFI symbol name for an object constructor /// FFI symbol name for an object constructor pub fn constructor_symbol_name(namespace: &str, object_name: &str, name: &str) -> String { pub fn constructor_symbol_name(namespace: &str, object_name: &str, name: &str) -> String { let namespace = namespace.replace("::", "__"); let object_name = object_name.to_ascii_lowercase(); let object_name = object_name.to_ascii_lowercase(); let name = name.to_ascii_lowercase(); let name = name.to_ascii_lowercase(); format!("uniffi_{namespace}_fn_constructor_{object_name}_{name}") format!("uniffi_{namespace}_fn_constructor_{object_name}_{name}") Loading @@ -28,6 +30,7 @@ pub fn constructor_symbol_name(namespace: &str, object_name: &str, name: &str) - /// FFI symbol name for an object method /// FFI symbol name for an object method pub fn method_symbol_name(namespace: &str, object_name: &str, name: &str) -> String { pub fn method_symbol_name(namespace: &str, object_name: &str, name: &str) -> String { let namespace = namespace.replace("::", "__"); let object_name = object_name.to_ascii_lowercase(); let object_name = object_name.to_ascii_lowercase(); let name = name.to_ascii_lowercase(); let name = name.to_ascii_lowercase(); format!("uniffi_{namespace}_fn_method_{object_name}_{name}") format!("uniffi_{namespace}_fn_method_{object_name}_{name}") Loading @@ -35,12 +38,14 @@ pub fn method_symbol_name(namespace: &str, object_name: &str, name: &str) -> Str /// FFI symbol name for the `clone` function for an object. /// FFI symbol name for the `clone` function for an object. pub fn clone_fn_symbol_name(namespace: &str, object_name: &str) -> String { pub fn clone_fn_symbol_name(namespace: &str, object_name: &str) -> String { let namespace = namespace.replace("::", "__"); let object_name = object_name.to_ascii_lowercase(); let object_name = object_name.to_ascii_lowercase(); format!("uniffi_{namespace}_fn_clone_{object_name}") format!("uniffi_{namespace}_fn_clone_{object_name}") } } /// FFI symbol name for the `free` function for an object. /// FFI symbol name for the `free` function for an object. pub fn free_fn_symbol_name(namespace: &str, object_name: &str) -> String { pub fn free_fn_symbol_name(namespace: &str, object_name: &str) -> String { let namespace = namespace.replace("::", "__"); let object_name = object_name.to_ascii_lowercase(); let object_name = object_name.to_ascii_lowercase(); format!("uniffi_{namespace}_fn_free_{object_name}") format!("uniffi_{namespace}_fn_free_{object_name}") } } Loading @@ -50,18 +55,21 @@ pub fn init_callback_vtable_fn_symbol_name( namespace: &str, namespace: &str, callback_interface_name: &str, callback_interface_name: &str, ) -> String { ) -> String { let namespace = namespace.replace("::", "__"); let callback_interface_name = callback_interface_name.to_ascii_lowercase(); let callback_interface_name = callback_interface_name.to_ascii_lowercase(); format!("uniffi_{namespace}_fn_init_callback_vtable_{callback_interface_name}") format!("uniffi_{namespace}_fn_init_callback_vtable_{callback_interface_name}") } } /// FFI checksum symbol name for a top-level function /// FFI checksum symbol name for a top-level function pub fn fn_checksum_symbol_name(namespace: &str, name: &str) -> String { pub fn fn_checksum_symbol_name(namespace: &str, name: &str) -> String { let namespace = namespace.replace("::", "__"); let name = name.to_ascii_lowercase(); let name = name.to_ascii_lowercase(); format!("uniffi_{namespace}_checksum_func_{name}") format!("uniffi_{namespace}_checksum_func_{name}") } } /// FFI checksum symbol name for an object constructor /// FFI checksum symbol name for an object constructor pub fn constructor_checksum_symbol_name(namespace: &str, object_name: &str, name: &str) -> String { pub fn constructor_checksum_symbol_name(namespace: &str, object_name: &str, name: &str) -> String { let namespace = namespace.replace("::", "__"); let object_name = object_name.to_ascii_lowercase(); let object_name = object_name.to_ascii_lowercase(); let name = name.to_ascii_lowercase(); let name = name.to_ascii_lowercase(); format!("uniffi_{namespace}_checksum_constructor_{object_name}_{name}") format!("uniffi_{namespace}_checksum_constructor_{object_name}_{name}") Loading @@ -69,6 +77,7 @@ pub fn constructor_checksum_symbol_name(namespace: &str, object_name: &str, name /// FFI checksum symbol name for an object method /// FFI checksum symbol name for an object method pub fn method_checksum_symbol_name(namespace: &str, object_name: &str, name: &str) -> String { pub fn method_checksum_symbol_name(namespace: &str, object_name: &str, name: &str) -> String { let namespace = namespace.replace("::", "__"); let object_name = object_name.to_ascii_lowercase(); let object_name = object_name.to_ascii_lowercase(); let name = name.to_ascii_lowercase(); let name = name.to_ascii_lowercase(); format!("uniffi_{namespace}_checksum_method_{object_name}_{name}") format!("uniffi_{namespace}_checksum_method_{object_name}_{name}") Loading