in uniffi_bindgen/src/macro_metadata/ci.rs [70:124]
fn add_item_to_ci(iface: &mut ComponentInterface, item: Metadata) -> anyhow::Result<()> {
match item {
Metadata::Namespace(_) => unreachable!(),
Metadata::UdlFile(_) => (),
Metadata::Func(meta) => {
iface.add_function_definition(meta.into())?;
}
Metadata::Constructor(meta) => {
iface.add_constructor_meta(meta)?;
}
Metadata::Method(meta) => {
iface.add_method_meta(meta)?;
}
Metadata::Record(meta) => {
let ty = Type::Record {
name: meta.name.clone(),
module_path: meta.module_path.clone(),
};
iface.types.add_known_type(&ty)?;
let record: Record = meta.try_into()?;
iface.add_record_definition(record)?;
}
Metadata::Enum(meta) => {
add_enum_to_ci(iface, meta)?;
}
Metadata::Object(meta) => {
iface.types.add_known_type(&Type::Object {
module_path: meta.module_path.clone(),
name: meta.name.clone(),
imp: meta.imp,
})?;
iface.add_object_meta(meta)?;
}
Metadata::UniffiTrait(meta) => {
iface.add_uniffitrait_meta(meta)?;
}
Metadata::ObjectTraitImpl(meta) => {
iface.add_object_trait_impl(meta)?;
}
Metadata::CallbackInterface(meta) => {
iface.add_callback_interface_definition(CallbackInterface::try_from(meta)?)?;
}
Metadata::TraitMethod(meta) => {
iface.add_trait_method_meta(meta)?;
}
Metadata::CustomType(meta) => {
iface.types.add_known_type(&Type::Custom {
module_path: meta.module_path.clone(),
name: meta.name,
builtin: Box::new(meta.builtin),
})?;
}
}
Ok(())
}