use crate::crate_name;
pub fn fn_symbol_name(module_path: &str, name: &str) -> String {
let namespace = crate_name(module_path).replace("::", "__");
let name = name.to_ascii_lowercase();
format!("uniffi_{namespace}_fn_func_{name}")
}
pub fn constructor_symbol_name(module_path: &str, object_name: &str, name: &str) -> String {
let namespace = crate_name(module_path).replace("::", "__");
let object_name = object_name.to_ascii_lowercase();
let name = name.to_ascii_lowercase();
format!("uniffi_{namespace}_fn_constructor_{object_name}_{name}")
}
pub fn method_symbol_name(module_path: &str, object_name: &str, name: &str) -> String {
let namespace = crate_name(module_path).replace("::", "__");
let object_name = object_name.to_ascii_lowercase();
let name = name.to_ascii_lowercase();
format!("uniffi_{namespace}_fn_method_{object_name}_{name}")
}
pub fn clone_fn_symbol_name(module_path: &str, object_name: &str) -> String {
let namespace = crate_name(module_path).replace("::", "__");
let object_name = object_name.to_ascii_lowercase();
format!("uniffi_{namespace}_fn_clone_{object_name}")
}
pub fn free_fn_symbol_name(module_path: &str, object_name: &str) -> String {
let namespace = crate_name(module_path).replace("::", "__");
let object_name = object_name.to_ascii_lowercase();
format!("uniffi_{namespace}_fn_free_{object_name}")
}
pub fn init_callback_vtable_fn_symbol_name(
module_path: &str,
callback_interface_name: &str,
) -> String {
let namespace = crate_name(module_path).replace("::", "__");
let callback_interface_name = callback_interface_name.to_ascii_lowercase();
format!("uniffi_{namespace}_fn_init_callback_vtable_{callback_interface_name}")
}
pub fn fn_checksum_symbol_name(module_path: &str, name: &str) -> String {
let namespace = crate_name(module_path).replace("::", "__");
let name = name.to_ascii_lowercase();
format!("uniffi_{namespace}_checksum_func_{name}")
}
pub fn constructor_checksum_symbol_name(
module_path: &str,
object_name: &str,
name: &str,
) -> String {
let namespace = crate_name(module_path).replace("::", "__");
let object_name = object_name.to_ascii_lowercase();
let name = name.to_ascii_lowercase();
format!("uniffi_{namespace}_checksum_constructor_{object_name}_{name}")
}
pub fn method_checksum_symbol_name(module_path: &str, object_name: &str, name: &str) -> String {
let namespace = crate_name(module_path).replace("::", "__");
let object_name = object_name.to_ascii_lowercase();
let name = name.to_ascii_lowercase();
format!("uniffi_{namespace}_checksum_method_{object_name}_{name}")
}
pub fn ffi_buffer_symbol_name(fn_name: &str) -> String {
match fn_name.strip_prefix("uniffi_") {
Some(rest) => format!("uniffi_ffibuffer_{rest}"),
None => format!("uniffi_ffibuffer_{fn_name}"),
}
}