@@ -294,7 +294,7 @@ struct RegisterBlockField {
294294 syn_field : syn:: Field ,
295295 offset : u32 ,
296296 size : u32 ,
297- accessors : Vec < Accessor > ,
297+ accessors : Vec < AccessType > ,
298298}
299299
300300#[ derive( Clone , Debug ) ]
@@ -1003,17 +1003,18 @@ fn expand_cluster(cluster: &Cluster, config: &Config) -> Result<Vec<RegisterBloc
10031003 let doc = make_comment ( cluster_size, info. address_offset , & description) ;
10041004 let name: Ident = ident ( & info. name , config, "cluster_accessor" , span) ;
10051005 let syn_field = new_syn_field ( name. clone ( ) , ty. clone ( ) ) ;
1006+ let accessor = Accessor :: Reg ( RegAccessor {
1007+ doc,
1008+ name,
1009+ ty,
1010+ offset : unsuffixed ( info. address_offset ) ,
1011+ } )
1012+ . raw_if ( false ) ;
10061013 cluster_expanded. push ( RegisterBlockField {
10071014 syn_field,
10081015 offset : info. address_offset ,
10091016 size : cluster_size,
1010- accessors : vec ! [ RegAccessor {
1011- doc,
1012- name,
1013- ty,
1014- offset: unsuffixed( info. address_offset) ,
1015- }
1016- . into( ) ] ,
1017+ accessors : vec ! [ accessor] ,
10171018 } )
10181019 }
10191020 Cluster :: Array ( info, array_info) => {
@@ -1059,28 +1060,18 @@ fn expand_cluster(cluster: &Cluster, config: &Config) -> Result<Vec<RegisterBloc
10591060 info. address_offset ,
10601061 & description,
10611062 ) ;
1062- let mut accessors = Vec :: < Accessor > :: with_capacity ( ( array_info. dim + 1 ) as _ ) ;
1063- accessors. push ( if array_convertible {
1064- ArrayAccessor {
1065- doc,
1066- name : accessor_name. clone ( ) ,
1067- ty : ty. clone ( ) ,
1068- offset : unsuffixed ( info. address_offset ) ,
1069- dim : unsuffixed ( array_info. dim ) ,
1070- increment : unsuffixed ( array_info. dim_increment ) ,
1071- }
1072- . into ( )
1073- } else {
1074- RawArrayAccessor {
1063+ let mut accessors = Vec :: with_capacity ( ( array_info. dim + 1 ) as _ ) ;
1064+ accessors. push (
1065+ Accessor :: Array ( ArrayAccessor {
10751066 doc,
10761067 name : accessor_name. clone ( ) ,
10771068 ty : ty. clone ( ) ,
10781069 offset : unsuffixed ( info. address_offset ) ,
10791070 dim : unsuffixed ( array_info. dim ) ,
10801071 increment : unsuffixed ( array_info. dim_increment ) ,
1081- }
1082- . into ( )
1083- } ) ;
1072+ } )
1073+ . raw_if ( !array_convertible ) ,
1074+ ) ;
10841075 if !sequential_indexes_from0 || !ends_with_index {
10851076 for ( i, ci) in svd:: cluster:: expand ( info, array_info) . enumerate ( ) {
10861077 let idx_name = ident ( & ci. name , config, "cluster_accessor" , span) ;
@@ -1091,14 +1082,14 @@ fn expand_cluster(cluster: &Cluster, config: &Config) -> Result<Vec<RegisterBloc
10911082 ) ;
10921083 let i = unsuffixed ( i as u64 ) ;
10931084 accessors. push (
1094- ArrayElemAccessor {
1085+ Accessor :: ArrayElem ( ArrayElemAccessor {
10951086 doc,
10961087 name : idx_name,
10971088 ty : ty. clone ( ) ,
10981089 basename : accessor_name. clone ( ) ,
10991090 i,
1100- }
1101- . into ( ) ,
1091+ } )
1092+ . raw_if ( false ) ,
11021093 ) ;
11031094 }
11041095 }
@@ -1128,17 +1119,18 @@ fn expand_cluster(cluster: &Cluster, config: &Config) -> Result<Vec<RegisterBloc
11281119 let name = ident ( & ci. name , config, "cluster_accessor" , span) ;
11291120 let syn_field = new_syn_field ( name. clone ( ) , ty. clone ( ) ) ;
11301121
1122+ let accessor = Accessor :: Reg ( RegAccessor {
1123+ doc,
1124+ name,
1125+ ty : ty. clone ( ) ,
1126+ offset : unsuffixed ( info. address_offset ) ,
1127+ } )
1128+ . raw_if ( false ) ;
11311129 cluster_expanded. push ( RegisterBlockField {
11321130 syn_field,
11331131 offset : ci. address_offset ,
11341132 size : cluster_size,
1135- accessors : vec ! [ RegAccessor {
1136- doc,
1137- name,
1138- ty: ty. clone( ) ,
1139- offset: unsuffixed( info. address_offset) ,
1140- }
1141- . into( ) ] ,
1133+ accessors : vec ! [ accessor] ,
11421134 } ) ;
11431135 }
11441136 }
@@ -1179,17 +1171,18 @@ fn expand_register(
11791171 let ty = name_to_ty ( ident ( & ty_str, config, "register" , span) ) ;
11801172 let name: Ident = ident ( & ty_name, config, "register_accessor" , span) ;
11811173 let syn_field = new_syn_field ( name. clone ( ) , ty. clone ( ) ) ;
1174+ let accessor = Accessor :: Reg ( RegAccessor {
1175+ doc,
1176+ name,
1177+ ty,
1178+ offset : unsuffixed ( info. address_offset ) ,
1179+ } )
1180+ . raw_if ( false ) ;
11821181 register_expanded. push ( RegisterBlockField {
11831182 syn_field,
11841183 offset : info. address_offset ,
11851184 size : register_size,
1186- accessors : vec ! [ RegAccessor {
1187- doc,
1188- name,
1189- ty,
1190- offset: unsuffixed( info. address_offset) ,
1191- }
1192- . into( ) ] ,
1185+ accessors : vec ! [ accessor] ,
11931186 } )
11941187 }
11951188 Register :: Array ( info, array_info) => {
@@ -1250,28 +1243,18 @@ fn expand_register(
12501243 info. address_offset ,
12511244 & description,
12521245 ) ;
1253- let mut accessors = Vec :: < Accessor > :: with_capacity ( ( array_info. dim + 1 ) as _ ) ;
1254- accessors. push ( if array_convertible {
1255- ArrayAccessor {
1256- doc,
1257- name : accessor_name. clone ( ) ,
1258- ty : ty. clone ( ) ,
1259- offset : unsuffixed ( info. address_offset ) ,
1260- dim : unsuffixed ( array_info. dim ) ,
1261- increment : unsuffixed ( array_info. dim_increment ) ,
1262- }
1263- . into ( )
1264- } else {
1265- RawArrayAccessor {
1246+ let mut accessors = Vec :: with_capacity ( ( array_info. dim + 1 ) as _ ) ;
1247+ accessors. push (
1248+ Accessor :: Array ( ArrayAccessor {
12661249 doc,
12671250 name : accessor_name. clone ( ) ,
12681251 ty : ty. clone ( ) ,
12691252 offset : unsuffixed ( info. address_offset ) ,
12701253 dim : unsuffixed ( array_info. dim ) ,
12711254 increment : unsuffixed ( array_info. dim_increment ) ,
1272- }
1273- . into ( )
1274- } ) ;
1255+ } )
1256+ . raw_if ( !array_convertible ) ,
1257+ ) ;
12751258 if !sequential_indexes_from0 || !ends_with_index {
12761259 for ( i, ri) in svd:: register:: expand ( info, array_info) . enumerate ( ) {
12771260 let idx_name = ident (
@@ -1287,14 +1270,14 @@ fn expand_register(
12871270 ) ;
12881271 let i = unsuffixed ( i as u64 ) ;
12891272 accessors. push (
1290- ArrayElemAccessor {
1273+ Accessor :: ArrayElem ( ArrayElemAccessor {
12911274 doc,
12921275 name : idx_name,
12931276 ty : ty. clone ( ) ,
12941277 basename : accessor_name. clone ( ) ,
12951278 i,
1296- }
1297- . into ( ) ,
1279+ } )
1280+ . raw_if ( false ) ,
12981281 ) ;
12991282 }
13001283 } ;
@@ -1324,17 +1307,18 @@ fn expand_register(
13241307 let name = ident ( & ri. name , config, "register_accessor" , span) ;
13251308 let syn_field = new_syn_field ( name. clone ( ) , ty. clone ( ) ) ;
13261309
1310+ let accessor = Accessor :: Reg ( RegAccessor {
1311+ doc,
1312+ name,
1313+ ty : ty. clone ( ) ,
1314+ offset : unsuffixed ( info. address_offset ) ,
1315+ } )
1316+ . raw_if ( false ) ;
13271317 register_expanded. push ( RegisterBlockField {
13281318 syn_field,
13291319 offset : ri. address_offset ,
13301320 size : register_size,
1331- accessors : vec ! [ RegAccessor {
1332- doc,
1333- name,
1334- ty: ty. clone( ) ,
1335- offset: unsuffixed( info. address_offset) ,
1336- }
1337- . into( ) ] ,
1321+ accessors : vec ! [ accessor] ,
13381322 } ) ;
13391323 }
13401324 }
0 commit comments