diff options
| author | Timo Kröger <[email protected]> | 2021-08-04 11:08:18 +0200 |
|---|---|---|
| committer | Timo Kröger <[email protected]> | 2021-08-04 11:22:54 +0200 |
| commit | 37536695e1790ff6aea7d97464251f1099d9fc85 (patch) | |
| tree | d6f240aa350ab613682688b50641c3a9d47f940b | |
| parent | c985c031d44a9f49aab90b786496ef4afddf69ac (diff) | |
Refactor `find_reg_for_field()`
| -rw-r--r-- | stm32-metapac-gen/src/lib.rs | 30 |
1 files changed, 12 insertions, 18 deletions
diff --git a/stm32-metapac-gen/src/lib.rs b/stm32-metapac-gen/src/lib.rs index 983ced910..2398d5a8c 100644 --- a/stm32-metapac-gen/src/lib.rs +++ b/stm32-metapac-gen/src/lib.rs | |||
| @@ -121,27 +121,21 @@ fn find_reg_for_field<'c>( | |||
| 121 | reg_regex: &str, | 121 | reg_regex: &str, |
| 122 | field_name: &str, | 122 | field_name: &str, |
| 123 | ) -> Option<(&'c str, &'c str)> { | 123 | ) -> Option<(&'c str, &'c str)> { |
| 124 | rcc.fieldsets.iter().find_map(|(name, fieldset)| { | 124 | let reg_regex = Regex::new(reg_regex).unwrap(); |
| 125 | |||
| 126 | for (name, fieldset) in &rcc.fieldsets { | ||
| 125 | // Workaround for some families that prefix register aliases with C1_, which does | 127 | // Workaround for some families that prefix register aliases with C1_, which does |
| 126 | // not help matching for clock name. | 128 | // not help matching for clock name. |
| 127 | if name.starts_with("C1") || name.starts_with("C2") { | 129 | if !name.starts_with("C1") && !name.starts_with("C2") && reg_regex.is_match(name) { |
| 128 | None | 130 | for field in &fieldset.fields { |
| 129 | } else if Regex::new(reg_regex).unwrap().is_match(name) { | 131 | if field_name == field.name { |
| 130 | fieldset | 132 | return Some((name.as_str(), field.name.as_str())); |
| 131 | .fields | 133 | } |
| 132 | .iter() | 134 | } |
| 133 | .find_map(|field| { | ||
| 134 | if field_name == field.name { | ||
| 135 | return Some(field.name.as_str()); | ||
| 136 | } else { | ||
| 137 | None | ||
| 138 | } | ||
| 139 | }) | ||
| 140 | .map(|n| (name.as_str(), n)) | ||
| 141 | } else { | ||
| 142 | None | ||
| 143 | } | 135 | } |
| 144 | }) | 136 | } |
| 137 | |||
| 138 | None | ||
| 145 | } | 139 | } |
| 146 | 140 | ||
| 147 | fn make_peripheral_counts(out: &mut String, data: &BTreeMap<String, u8>) { | 141 | fn make_peripheral_counts(out: &mut String, data: &BTreeMap<String, u8>) { |
