MCPcopy Create free account
hub / github.com/bytecodealliance/wit-bindgen / import_interface

Method import_interface

crates/cpp/src/lib.rs:513–567  ·  view source on GitHub ↗
(
        &mut self,
        resolve: &Resolve,
        name: &WorldKey,
        id: InterfaceId,
        _files: &mut Files,
    )

Source from the content-addressed store, hash-verified

511 }
512
513 fn import_interface(
514 &mut self,
515 resolve: &Resolve,
516 name: &WorldKey,
517 id: InterfaceId,
518 _files: &mut Files,
519 ) -> anyhow::Result<()> {
520 self.imported_interfaces.insert(id);
521
522 let full_name = resolve.name_world_key(name);
523 match self.opts.with.iter().find(|e| e.0 == full_name) {
524 None => {
525 if let Some(prefix) = self
526 .interface_prefixes
527 .get(&(Direction::Import, name.clone()))
528 {
529 self.import_prefix = Some(prefix.clone());
530 }
531
532 let store = self.start_new_file(None);
533 let wasm_import_module = resolve.name_world_key(name);
534 let binding = Some(name);
535 let mut r#gen = self.interface(resolve, binding, true, Some(wasm_import_module));
536 r#gen.interface = Some(id);
537 let namespace =
538 namespace(resolve, &TypeOwner::Interface(id), false, &r#gen.r#gen.opts);
539 let docs = resolve.interfaces[id].docs.contents.as_deref();
540 r#gen
541 .r#gen
542 .h_src
543 .change_namespace_with_docs(&namespace, docs);
544 r#gen.types(id);
545
546 for (_name, func) in resolve.interfaces[id].functions.iter() {
547 if matches!(func.kind, FunctionKind::Freestanding) {
548 r#gen.r#gen.h_src.change_namespace(&namespace);
549 r#gen.generate_function(
550 func,
551 &TypeOwner::Interface(id),
552 AbiVariant::GuestImport,
553 );
554 }
555 }
556 self.finish_file(&namespace, store);
557 }
558 Some((_, val)) => {
559 let with_quotes = format!("\"{val}\"");
560 if !self.includes.contains(&with_quotes) {
561 self.includes.push(with_quotes);
562 }
563 }
564 }
565 let _ = self.import_prefix.take();
566 Ok(())
567 }
568
569 fn export_interface(
570 &mut self,

Callers

nothing calls this directly

Calls 13

namespaceFunction · 0.85
findMethod · 0.80
start_new_fileMethod · 0.80
change_namespaceMethod · 0.80
generate_functionMethod · 0.80
finish_fileMethod · 0.80
insertMethod · 0.45
iterMethod · 0.45
getMethod · 0.45
interfaceMethod · 0.45
typesMethod · 0.45

Tested by

no test coverage detected