Emits the constructor of the Flags structure.
(group: &SettingGroup, parent: ParentGroup, fmt: &mut Formatter)
| 15 | |
| 16 | /// Emits the constructor of the Flags structure. |
| 17 | fn gen_constructor(group: &SettingGroup, parent: ParentGroup, fmt: &mut Formatter) { |
| 18 | let args = match parent { |
| 19 | ParentGroup::None => "builder: Builder", |
| 20 | ParentGroup::Shared => "shared: &settings::Flags, builder: &Builder", |
| 21 | }; |
| 22 | fmt.add_block("impl Flags", |fmt| { |
| 23 | fmt.doc_comment(format!("Create flags {} settings group.", group.name)); |
| 24 | fmtln!( |
| 25 | fmt, |
| 26 | "#[allow(unused_variables, reason = \"generated code\")]" |
| 27 | ); |
| 28 | fmt.add_block(&format!("pub fn new({args}) -> Self"), |fmt| { |
| 29 | fmtln!(fmt, "let bvec = builder.state_for(\"{}\");", group.name); |
| 30 | fmtln!( |
| 31 | fmt, |
| 32 | "let mut {} = Self {{ bytes: [0; {}] }};", |
| 33 | group.name, |
| 34 | group.byte_size() |
| 35 | ); |
| 36 | fmtln!( |
| 37 | fmt, |
| 38 | "debug_assert_eq!(bvec.len(), {});", |
| 39 | group.settings_size |
| 40 | ); |
| 41 | fmtln!( |
| 42 | fmt, |
| 43 | "{}.bytes[0..{}].copy_from_slice(&bvec);", |
| 44 | group.name, |
| 45 | group.settings_size |
| 46 | ); |
| 47 | |
| 48 | fmtln!(fmt, "{}", group.name); |
| 49 | }); |
| 50 | }); |
| 51 | } |
| 52 | |
| 53 | /// Generates the `iter` function. |
| 54 | fn gen_iterator(group: &SettingGroup, fmt: &mut Formatter) { |
no test coverage detected