Emit a getter function for `setting`.
(setting: &Setting, fmt: &mut Formatter)
| 146 | |
| 147 | /// Emit a getter function for `setting`. |
| 148 | fn 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. |
| 181 | fn gen_getters(group: &SettingGroup, fmt: &mut Formatter) { |
no test coverage detected