witx_codegen/doc/
union.rs
1use std::io::Write;
2
3use super::*;
4
5impl DocGenerator {
6 fn define_union_member<T: Write>(
7 w: &mut PrettyWriter<T>,
8 _union_name: &str,
9 _i: usize,
10 member: &ASUnionMember,
11 ) -> Result<(), Error> {
12 let member_type = member.type_.as_ref();
13 w.write_line(format!(
14 "{}: {}",
15 member.name.as_var(),
16 member_type.as_lang(),
17 ))?;
18 Ok(())
19 }
20
21 pub fn define_as_union<T: Write>(
22 w: &mut PrettyWriter<T>,
23 name: &str,
24 union_: &ASUnion,
25 ) -> Result<(), Error> {
26 let tag_repr = union_.tag_repr.as_ref();
27 w.write_lines(format!(
28 "### {}\nTagged union with tag type: {} and the following possibilities:",
29 name.as_type(),
30 tag_repr.as_lang()
31 ))?
32 .eob()?;
33 {
34 let mut w = w.new_block();
35 for (i, member) in union_.members.iter().enumerate() {
36 Self::define_union_member(&mut w, name, i, member)?;
37 }
38 }
39 Ok(())
40 }
41}