@@ -512,43 +512,36 @@ impl RegisterExt for Register {
512
512
fmod : & Yaml ,
513
513
config : & Config ,
514
514
) -> 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
+
538
535
match fmod {
539
536
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 ( ) ) ) ;
546
539
if !is_read && !is_write {
547
540
self . process_field_enum ( pname, fspec, fmod, None , config)
548
541
. with_context ( || "Adding read-write enumeratedValues" ) ?;
549
542
} else {
550
543
if is_read {
551
- for ( key, action) in READ_KEYS . into_iter ( ) . zip ( READ_VALS . into_iter ( ) ) {
544
+ for ( key, action) in & READ {
552
545
if let Some ( fmod) = fmod. get_hash ( key) ? {
553
546
if !fmod. is_empty ( ) {
554
547
self . process_field_enum (
@@ -561,14 +554,14 @@ impl RegisterExt for Register {
561
554
. with_context ( || "Adding read-only enumeratedValues" ) ?;
562
555
}
563
556
if let Some ( action) = action {
564
- self . set_field_read_action ( fspec, action) ;
557
+ self . set_field_read_action ( fspec, * action) ;
565
558
}
566
559
break ;
567
560
}
568
561
}
569
562
}
570
563
if is_write {
571
- for ( key, mwv) in WRITE_KEYS . into_iter ( ) . zip ( WRITE_VALS . into_iter ( ) ) {
564
+ for ( key, mwv) in & WRITE {
572
565
if let Some ( fmod) = fmod. get_hash ( key) ? {
573
566
if !fmod. is_empty ( ) {
574
567
self . process_field_enum (
@@ -581,7 +574,7 @@ impl RegisterExt for Register {
581
574
. with_context ( || "Adding write-only enumeratedValues" ) ?;
582
575
}
583
576
if let Some ( mwv) = mwv {
584
- self . set_field_modified_write_values ( fspec, mwv) ;
577
+ self . set_field_modified_write_values ( fspec, * mwv) ;
585
578
}
586
579
}
587
580
}
@@ -749,7 +742,11 @@ impl RegisterExt for Register {
749
742
let ( min_offset, fname, min_offset_pos) =
750
743
offsets. iter ( ) . min_by_key ( |& on| on. 0 ) . unwrap ( ) ;
751
744
let min_pos = offsets. iter ( ) . map ( |on| on. 2 ) . min ( ) . unwrap ( ) ;
752
- let name = make_ev_name ( & fname. replace ( "%s" , "" ) , usage) ?;
745
+ let name = if let Some ( name) = fmod. get_str ( "_name" ) ? {
746
+ name. to_string ( )
747
+ } else {
748
+ make_ev_name ( & fname. replace ( "%s" , "" ) , usage) ?
749
+ } ;
753
750
for ftag in self . iter_fields ( fspec) {
754
751
let access = ftag. access . or ( reg_access) . unwrap_or_default ( ) ;
755
752
let checked_usage = check_usage ( access, usage)
0 commit comments