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

Method import_interface

crates/csharp/src/world_generator.rs:176–223  ·  view source on GitHub ↗
(
        &mut self,
        resolve: &Resolve,
        key: &WorldKey,
        id: InterfaceId,
        _files: &mut Files,
    )

Source from the content-addressed store, hash-verified

174 }
175
176 fn import_interface(
177 &mut self,
178 resolve: &Resolve,
179 key: &WorldKey,
180 id: InterfaceId,
181 _files: &mut Files,
182 ) -> anyhow::Result<()> {
183 let name = interface_name(self, resolve, key, Direction::Import);
184 self.interface_names.insert(id, name.clone());
185 let mut r#gen = self.interface(resolve, &name, Direction::Import, false);
186
187 let mut old_resources = mem::take(&mut r#gen.csharp_gen.all_resources);
188 r#gen.types(id);
189 let new_resources = mem::take(&mut r#gen.csharp_gen.all_resources);
190 old_resources.extend(new_resources.clone());
191 r#gen.csharp_gen.all_resources = old_resources;
192 let import_module_name = &resolve.name_world_key(key);
193 for (resource, funcs) in by_resource(
194 resolve.interfaces[id]
195 .functions
196 .iter()
197 .map(|(k, v)| (k.as_str(), v)),
198 new_resources.keys().copied(),
199 ) {
200 if let Some(resource) = resource {
201 r#gen.start_resource(resource, Some(key));
202 }
203
204 for func in funcs {
205 r#gen.import(import_module_name, func);
206 }
207
208 if resource.is_some() {
209 r#gen.end_resource();
210 }
211 }
212
213 // for anonymous types
214 r#gen.define_interface_types(id);
215
216 r#gen.add_futures_or_streams(import_module_name, false, true);
217
218 r#gen.add_futures_or_streams(import_module_name, false, false);
219
220 r#gen.add_interface_fragment(false);
221
222 Ok(())
223 }
224
225 fn import_funcs(
226 &mut self,

Callers

nothing calls this directly

Calls 15

interface_nameFunction · 0.85
by_resourceFunction · 0.85
extendMethod · 0.80
mapMethod · 0.80
as_strMethod · 0.80
start_resourceMethod · 0.80
end_resourceMethod · 0.80
insertMethod · 0.45
interfaceMethod · 0.45
typesMethod · 0.45

Tested by

no test coverage detected