MCPcopy Create free account
hub / github.com/bytecodealliance/wasmtime / gen_constructor

Function gen_constructor

cranelift/codegen/meta/src/gen_settings.rs:17–51  ·  view source on GitHub ↗

Emits the constructor of the Flags structure.

(group: &SettingGroup, parent: ParentGroup, fmt: &mut Formatter)

Source from the content-addressed store, hash-verified

15
16/// Emits the constructor of the Flags structure.
17fn 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.
54fn gen_iterator(group: &SettingGroup, fmt: &mut Formatter) {

Callers 1

gen_groupFunction · 0.85

Calls 2

doc_commentMethod · 0.80
add_blockMethod · 0.45

Tested by

no test coverage detected