wast_encoder/instances/
display.rs

1use crate::{
2    helpers::{AliasExport, AliasOuter},
3    wasi_types::functions::WasiFunctionBody,
4};
5
6use super::*;
7
8impl Debug for WasiInstance {
9    fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
10        let resources: Vec<_> = self.resources.values().map(|s| s.wasi_name.as_str()).collect();
11        // let functions: Vec<_> = self.functions.values().map(|s| s.wasi_name.as_str()).collect();
12
13        f.debug_struct("WasiInstance")
14            .field("module", &self.module.to_string())
15            .field("resources", &resources)
16            // .field("functions", &functions)
17            .finish()
18    }
19}
20
21impl ComponentDefine for WasiInstance {
22    fn component_define<W: Write>(&self, w: &mut WastEncoder<W>) -> std::fmt::Result {
23        write!(w, "(import \"{name}\" (instance ${name}", name = self.module)?;
24        w.indent();
25        for wasi in self.resources.values() {
26            w.newline()?;
27            wasi.write_wasi_define(w)?;
28        }
29        for imports in self.dependencies(&w.source.graph) {
30            imports.alias_outer(w)?;
31        }
32        for wasi in self.functions.values() {
33            w.newline()?;
34            w.export_function(wasi)?;
35        }
36        w.dedent(2);
37        for wasi in self.resources.values() {
38            w.newline()?;
39            wasi.alias_export(w, &self.module)?;
40        }
41        for wasi in self.functions.values() {
42            w.newline()?;
43            wasi.alias_export(w, &self.module)?;
44        }
45        Ok(())
46    }
47}