(
&mut self,
resolve: &Resolve,
name: &WorldKey,
id: InterfaceId,
_files: &mut Files,
)
| 567 | } |
| 568 | |
| 569 | fn export_interface( |
| 570 | &mut self, |
| 571 | resolve: &Resolve, |
| 572 | name: &WorldKey, |
| 573 | id: InterfaceId, |
| 574 | _files: &mut Files, |
| 575 | ) -> anyhow::Result<()> { |
| 576 | let old_prefix = self.opts.export_prefix.clone(); |
| 577 | if let Some(prefix) = self |
| 578 | .interface_prefixes |
| 579 | .get(&(Direction::Export, name.clone())) |
| 580 | { |
| 581 | self.opts.export_prefix = |
| 582 | Some(prefix.clone() + old_prefix.as_ref().unwrap_or(&String::new())); |
| 583 | } |
| 584 | let store = self.start_new_file(None); |
| 585 | self.h_src |
| 586 | .src |
| 587 | .push_str(&format!("// export_interface {name:?}\n")); |
| 588 | self.imported_interfaces.remove(&id); |
| 589 | let wasm_import_module = resolve.name_world_key(name); |
| 590 | let binding = Some(name); |
| 591 | let mut r#gen = self.interface(resolve, binding, false, Some(wasm_import_module)); |
| 592 | r#gen.interface = Some(id); |
| 593 | let namespace = namespace(resolve, &TypeOwner::Interface(id), true, &r#gen.r#gen.opts); |
| 594 | let docs = resolve.interfaces[id].docs.contents.as_deref(); |
| 595 | r#gen |
| 596 | .r#gen |
| 597 | .h_src |
| 598 | .change_namespace_with_docs(&namespace, docs); |
| 599 | r#gen.types(id); |
| 600 | |
| 601 | for (_name, func) in resolve.interfaces[id].functions.iter() { |
| 602 | if matches!(func.kind, FunctionKind::Freestanding) { |
| 603 | r#gen.r#gen.h_src.change_namespace(&namespace); |
| 604 | r#gen.generate_function(func, &TypeOwner::Interface(id), AbiVariant::GuestExport); |
| 605 | } |
| 606 | } |
| 607 | self.finish_file(&namespace, store); |
| 608 | self.opts.export_prefix = old_prefix; |
| 609 | Ok(()) |
| 610 | } |
| 611 | |
| 612 | fn import_funcs( |
| 613 | &mut self, |
nothing calls this directly
no test coverage detected