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

Function gen_getter

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

Emit a getter function for `setting`.

(setting: &Setting, fmt: &mut Formatter)

Source from the content-addressed store, hash-verified

146
147/// Emit a getter function for `setting`.
148fn gen_getter(setting: &Setting, fmt: &mut Formatter) {
149 fmt.doc_comment(format!("{}\n{}", setting.description, setting.comment));
150 match setting.specific {
151 SpecificSetting::Bool(BoolSetting {
152 predicate_number, ..
153 }) => {
154 fmt.add_block(&format!("pub fn {}(&self) -> bool", setting.name), |fmt| {
155 fmtln!(fmt, "self.numbered_predicate({})", predicate_number);
156 });
157 }
158 SpecificSetting::Enum(ref values) => {
159 let ty = camel_case(setting.name);
160 fmt.add_block(
161 &format!("pub fn {}(&self) -> {}", setting.name, ty),
162 |fmt| {
163 let mut m = Match::new(format!("self.bytes[{}]", setting.byte_offset));
164 for (i, v) in values.iter().enumerate() {
165 m.arm_no_fields(format!("{i}"), format!("{}::{}", ty, camel_case(v)));
166 }
167 m.arm_no_fields("_", "panic!(\"Invalid enum value\")");
168 fmt.add_match(m);
169 },
170 );
171 }
172 SpecificSetting::Num(_) => {
173 fmt.add_block(&format!("pub fn {}(&self) -> u8", setting.name), |fmt| {
174 fmtln!(fmt, "self.bytes[{}]", setting.byte_offset);
175 });
176 }
177 }
178}
179
180/// Emits getters for each setting value.
181fn gen_getters(group: &SettingGroup, fmt: &mut Formatter) {

Callers 1

gen_gettersFunction · 0.85

Calls 7

camel_caseFunction · 0.85
doc_commentMethod · 0.80
arm_no_fieldsMethod · 0.80
add_matchMethod · 0.80
newFunction · 0.50
add_blockMethod · 0.45
iterMethod · 0.45

Tested by

no test coverage detected