Skip to content

Commit 81bd5da

Browse files
committed
phf
1 parent 0c36eae commit 81bd5da

File tree

2 files changed

+27
-33
lines changed

2 files changed

+27
-33
lines changed

Cargo.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,7 @@ once_cell = "1.18.0"
4848
rayon = "1.7.0"
4949
regex = "1.9.1"
5050
itertools = "0.12.0"
51+
phf = { version = "0.11", features = ["macros"] }
5152

5253
[dev-dependencies]
5354
tempfile = "3.3"

src/patch/register.rs

Lines changed: 26 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -512,43 +512,36 @@ impl RegisterExt for Register {
512512
fmod: &Yaml,
513513
config: &Config,
514514
) -> PatchResult {
515-
const READ_KEYS: [&str; 5] = ["_read", "_RM", "_RS", "_RC", "_RME"];
516-
const READ_VALS: [Option<ReadAction>; 5] = [
517-
None,
518-
Some(ReadAction::Modify),
519-
Some(ReadAction::Set),
520-
Some(ReadAction::Clear),
521-
Some(ReadAction::ModifyExternal),
522-
];
523-
const WRITE_KEYS: [&str; 10] = [
524-
"_write", "_WM", "_WS", "_WC", "_W1S", "_W0C", "_W1C", "_W0S", "_W1T", "_W0T",
525-
];
526-
const WRITE_VALS: [Option<ModifiedWriteValues>; 10] = [
527-
None,
528-
Some(ModifiedWriteValues::Modify),
529-
Some(ModifiedWriteValues::Set),
530-
Some(ModifiedWriteValues::Clear),
531-
Some(ModifiedWriteValues::OneToSet),
532-
Some(ModifiedWriteValues::ZeroToClear),
533-
Some(ModifiedWriteValues::OneToClear),
534-
Some(ModifiedWriteValues::ZeroToSet),
535-
Some(ModifiedWriteValues::OneToToggle),
536-
Some(ModifiedWriteValues::ZeroToToggle),
537-
];
515+
const READ: phf::Map<&'static str, Option<ReadAction>> = phf::phf_map! {
516+
"_read" => None,
517+
"_RM" => Some(ReadAction::Modify),
518+
"_RS" => Some(ReadAction::Set),
519+
"_RC" => Some(ReadAction::Clear),
520+
"_RME" => Some(ReadAction::ModifyExternal),
521+
};
522+
const WRITE: phf::Map<&'static str, Option<ModifiedWriteValues>> = phf::phf_map! {
523+
"_write" => None,
524+
"_WM" => Some(ModifiedWriteValues::Modify),
525+
"_WS" => Some(ModifiedWriteValues::Set),
526+
"_WC" => Some(ModifiedWriteValues::Clear),
527+
"_W1S" => Some(ModifiedWriteValues::OneToSet),
528+
"_W0C" => Some(ModifiedWriteValues::ZeroToClear),
529+
"_W1C" => Some(ModifiedWriteValues::OneToClear),
530+
"_W0S" => Some(ModifiedWriteValues::ZeroToSet),
531+
"_W1T" => Some(ModifiedWriteValues::OneToToggle),
532+
"_W0T" => Some(ModifiedWriteValues::ZeroToToggle),
533+
};
534+
538535
match fmod {
539536
Yaml::Hash(fmod) => {
540-
let is_read = READ_KEYS
541-
.iter()
542-
.any(|key| fmod.contains_key(&key.to_yaml()));
543-
let is_write = WRITE_KEYS
544-
.iter()
545-
.any(|key| fmod.contains_key(&key.to_yaml()));
537+
let is_read = READ.keys().any(|key| fmod.contains_key(&key.to_yaml()));
538+
let is_write = WRITE.keys().any(|key| fmod.contains_key(&key.to_yaml()));
546539
if !is_read && !is_write {
547540
self.process_field_enum(pname, fspec, fmod, None, config)
548541
.with_context(|| "Adding read-write enumeratedValues")?;
549542
} else {
550543
if is_read {
551-
for (key, action) in READ_KEYS.into_iter().zip(READ_VALS.into_iter()) {
544+
for (key, action) in &READ {
552545
if let Some(fmod) = fmod.get_hash(key)? {
553546
if !fmod.is_empty() {
554547
self.process_field_enum(
@@ -561,14 +554,14 @@ impl RegisterExt for Register {
561554
.with_context(|| "Adding read-only enumeratedValues")?;
562555
}
563556
if let Some(action) = action {
564-
self.set_field_read_action(fspec, action);
557+
self.set_field_read_action(fspec, *action);
565558
}
566559
break;
567560
}
568561
}
569562
}
570563
if is_write {
571-
for (key, mwv) in WRITE_KEYS.into_iter().zip(WRITE_VALS.into_iter()) {
564+
for (key, mwv) in &WRITE {
572565
if let Some(fmod) = fmod.get_hash(key)? {
573566
if !fmod.is_empty() {
574567
self.process_field_enum(
@@ -581,7 +574,7 @@ impl RegisterExt for Register {
581574
.with_context(|| "Adding write-only enumeratedValues")?;
582575
}
583576
if let Some(mwv) = mwv {
584-
self.set_field_modified_write_values(fspec, mwv);
577+
self.set_field_modified_write_values(fspec, *mwv);
585578
}
586579
}
587580
}

0 commit comments

Comments
 (0)