@@ -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 }
@@ -749,7 +742,11 @@ impl RegisterExt for Register {
749742 let ( min_offset, fname, min_offset_pos) =
750743 offsets. iter ( ) . min_by_key ( |& on| on. 0 ) . unwrap ( ) ;
751744 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+ } ;
753750 for ftag in self . iter_fields ( fspec) {
754751 let access = ftag. access . or ( reg_access) . unwrap_or_default ( ) ;
755752 let checked_usage = check_usage ( access, usage)
0 commit comments