@@ -613,10 +613,10 @@ pub fn fields(
613
613
614
614
let brief_suffix = if let Field :: Array ( _, de) = & f {
615
615
if let Some ( range) = de. indexes_as_range ( ) {
616
- format ! ( "[ {}-{}] " , * range. start( ) , * range. end( ) )
616
+ format ! ( "( {}-{}) " , * range. start( ) , * range. end( ) )
617
617
} else {
618
618
let suffixes: Vec < _ > = de. indexes ( ) . collect ( ) ;
619
- format ! ( "[{}] " , suffixes. join( "," ) )
619
+ format ! ( "({}) " , suffixes. join( "," ) )
620
620
}
621
621
} else {
622
622
String :: new ( )
@@ -905,19 +905,27 @@ pub fn fields(
905
905
let increment = de. dim_increment ;
906
906
let doc = util:: replace_suffix ( & description, & brief_suffix) ;
907
907
let first_name = svd:: array:: names ( f, de) . next ( ) . unwrap ( ) ;
908
- let array_doc =
909
- format ! ( "{doc}\n \n NOTE: `n` is number of field in register. `n == 0` corresponds to `{first_name}` field" ) ;
908
+ let note = format ! ( "NOTE: `n` is number of field in register. `n == 0` corresponds to `{first_name}` field" ) ;
910
909
let offset_calc = calculate_offset ( increment, offset, true ) ;
911
910
let value = quote ! { ( ( self . bits >> #offset_calc) & #hexmask) #cast } ;
912
911
let dim = unsuffixed ( de. dim ) ;
912
+ let name_snake_case_iter = Ident :: new ( & format ! ( "{name_snake_case}_iter" ) , span) ;
913
913
r_impl_items. extend ( quote ! {
914
- #[ doc = #array_doc]
914
+ #[ doc = #doc]
915
+ #[ doc = "" ]
916
+ #[ doc = #note]
915
917
#inline
916
918
pub fn #name_snake_case( & self , n: u8 ) -> #reader_ty {
917
919
#[ allow( clippy:: no_effect) ]
918
920
[ ( ) ; #dim] [ n as usize ] ;
919
921
#reader_ty:: new ( #value )
920
922
}
923
+ #[ doc = "Iterator for array of:" ]
924
+ #[ doc = #doc]
925
+ #inline
926
+ pub fn #name_snake_case_iter( & self ) -> impl Iterator <Item = #reader_ty> + ' _ {
927
+ ( 0 ..#dim) . map( |n| #reader_ty:: new ( #value ) )
928
+ }
921
929
} ) ;
922
930
923
931
for fi in svd:: field:: expand ( f, de) {
@@ -1181,11 +1189,12 @@ pub fn fields(
1181
1189
let offset_calc = calculate_offset ( increment, offset, false ) ;
1182
1190
let doc = & util:: replace_suffix ( & description, & brief_suffix) ;
1183
1191
let first_name = svd:: array:: names ( f, de) . next ( ) . unwrap ( ) ;
1184
- let array_doc =
1185
- format ! ( "{doc}\n \n NOTE: `n` is number of field in register. `n == 0` corresponds to `{first_name}` field" ) ;
1192
+ let note = format ! ( "NOTE: `n` is number of field in register. `n == 0` corresponds to `{first_name}` field" ) ;
1186
1193
let dim = unsuffixed ( de. dim ) ;
1187
1194
w_impl_items. extend ( quote ! {
1188
- #[ doc = #array_doc]
1195
+ #[ doc = #doc]
1196
+ #[ doc = "" ]
1197
+ #[ doc = #note]
1189
1198
#inline
1190
1199
#[ must_use]
1191
1200
pub fn #name_snake_case( & mut self , n: u8 ) -> #writer_ty<#regspec_ident> {
0 commit comments