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

Method export_interface

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

Source from the content-addressed store, hash-verified

257 }
258
259 fn export_interface(
260 &mut self,
261 resolve: &Resolve,
262 key: &WorldKey,
263 id: InterfaceId,
264 _files: &mut Files,
265 ) -> anyhow::Result<()> {
266 let name = interface_name(self, resolve, key, Direction::Export);
267 self.interface_names.insert(id, name.clone());
268 let mut r#gen = self.interface(resolve, &name, Direction::Export, false);
269
270 let mut old_resources = mem::take(&mut r#gen.csharp_gen.all_resources);
271 r#gen.types(id);
272 let new_resources = mem::take(&mut r#gen.csharp_gen.all_resources);
273 old_resources.extend(new_resources.clone());
274 r#gen.csharp_gen.all_resources = old_resources;
275 for (resource, funcs) in by_resource(
276 resolve.interfaces[id]
277 .functions
278 .iter()
279 .map(|(k, v)| (k.as_str(), v)),
280 new_resources.keys().copied(),
281 ) {
282 if let Some(resource) = resource {
283 r#gen.start_resource(resource, Some(key));
284 }
285
286 for func in funcs {
287 r#gen.export(func, Some(key));
288 }
289
290 if resource.is_some() {
291 r#gen.end_resource();
292 }
293 }
294
295 // for anonymous types
296 r#gen.define_interface_types(id);
297
298 let import_module_name = &resolve.name_world_key(key);
299 r#gen.add_futures_or_streams(&format!("[export]{import_module_name}"), true, true);
300
301 r#gen.add_futures_or_streams(&format!("[export]{import_module_name}"), true, false);
302
303 r#gen.add_interface_fragment(true);
304 Ok(())
305 }
306
307 fn export_funcs(
308 &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