(
&mut self,
resolve: &Resolve,
key: &WorldKey,
id: InterfaceId,
_files: &mut Files,
)
| 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, |
nothing calls this directly
no test coverage detected