@@ -294,7 +294,7 @@ struct RegisterBlockField {
294
294
syn_field : syn:: Field ,
295
295
offset : u32 ,
296
296
size : u32 ,
297
- accessors : Vec < Accessor > ,
297
+ accessors : Vec < AccessType > ,
298
298
}
299
299
300
300
#[ derive( Clone , Debug ) ]
@@ -1003,17 +1003,18 @@ fn expand_cluster(cluster: &Cluster, config: &Config) -> Result<Vec<RegisterBloc
1003
1003
let doc = make_comment ( cluster_size, info. address_offset , & description) ;
1004
1004
let name: Ident = ident ( & info. name , config, "cluster_accessor" , span) ;
1005
1005
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 ) ;
1006
1013
cluster_expanded. push ( RegisterBlockField {
1007
1014
syn_field,
1008
1015
offset : info. address_offset ,
1009
1016
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] ,
1017
1018
} )
1018
1019
}
1019
1020
Cluster :: Array ( info, array_info) => {
@@ -1059,28 +1060,18 @@ fn expand_cluster(cluster: &Cluster, config: &Config) -> Result<Vec<RegisterBloc
1059
1060
info. address_offset ,
1060
1061
& description,
1061
1062
) ;
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 {
1075
1066
doc,
1076
1067
name : accessor_name. clone ( ) ,
1077
1068
ty : ty. clone ( ) ,
1078
1069
offset : unsuffixed ( info. address_offset ) ,
1079
1070
dim : unsuffixed ( array_info. dim ) ,
1080
1071
increment : unsuffixed ( array_info. dim_increment ) ,
1081
- }
1082
- . into ( )
1083
- } ) ;
1072
+ } )
1073
+ . raw_if ( !array_convertible ) ,
1074
+ ) ;
1084
1075
if !sequential_indexes_from0 || !ends_with_index {
1085
1076
for ( i, ci) in svd:: cluster:: expand ( info, array_info) . enumerate ( ) {
1086
1077
let idx_name = ident ( & ci. name , config, "cluster_accessor" , span) ;
@@ -1091,14 +1082,14 @@ fn expand_cluster(cluster: &Cluster, config: &Config) -> Result<Vec<RegisterBloc
1091
1082
) ;
1092
1083
let i = unsuffixed ( i as u64 ) ;
1093
1084
accessors. push (
1094
- ArrayElemAccessor {
1085
+ Accessor :: ArrayElem ( ArrayElemAccessor {
1095
1086
doc,
1096
1087
name : idx_name,
1097
1088
ty : ty. clone ( ) ,
1098
1089
basename : accessor_name. clone ( ) ,
1099
1090
i,
1100
- }
1101
- . into ( ) ,
1091
+ } )
1092
+ . raw_if ( false ) ,
1102
1093
) ;
1103
1094
}
1104
1095
}
@@ -1128,17 +1119,18 @@ fn expand_cluster(cluster: &Cluster, config: &Config) -> Result<Vec<RegisterBloc
1128
1119
let name = ident ( & ci. name , config, "cluster_accessor" , span) ;
1129
1120
let syn_field = new_syn_field ( name. clone ( ) , ty. clone ( ) ) ;
1130
1121
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 ) ;
1131
1129
cluster_expanded. push ( RegisterBlockField {
1132
1130
syn_field,
1133
1131
offset : ci. address_offset ,
1134
1132
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] ,
1142
1134
} ) ;
1143
1135
}
1144
1136
}
@@ -1179,17 +1171,18 @@ fn expand_register(
1179
1171
let ty = name_to_ty ( ident ( & ty_str, config, "register" , span) ) ;
1180
1172
let name: Ident = ident ( & ty_name, config, "register_accessor" , span) ;
1181
1173
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 ) ;
1182
1181
register_expanded. push ( RegisterBlockField {
1183
1182
syn_field,
1184
1183
offset : info. address_offset ,
1185
1184
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] ,
1193
1186
} )
1194
1187
}
1195
1188
Register :: Array ( info, array_info) => {
@@ -1250,28 +1243,18 @@ fn expand_register(
1250
1243
info. address_offset ,
1251
1244
& description,
1252
1245
) ;
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 {
1266
1249
doc,
1267
1250
name : accessor_name. clone ( ) ,
1268
1251
ty : ty. clone ( ) ,
1269
1252
offset : unsuffixed ( info. address_offset ) ,
1270
1253
dim : unsuffixed ( array_info. dim ) ,
1271
1254
increment : unsuffixed ( array_info. dim_increment ) ,
1272
- }
1273
- . into ( )
1274
- } ) ;
1255
+ } )
1256
+ . raw_if ( !array_convertible ) ,
1257
+ ) ;
1275
1258
if !sequential_indexes_from0 || !ends_with_index {
1276
1259
for ( i, ri) in svd:: register:: expand ( info, array_info) . enumerate ( ) {
1277
1260
let idx_name = ident (
@@ -1287,14 +1270,14 @@ fn expand_register(
1287
1270
) ;
1288
1271
let i = unsuffixed ( i as u64 ) ;
1289
1272
accessors. push (
1290
- ArrayElemAccessor {
1273
+ Accessor :: ArrayElem ( ArrayElemAccessor {
1291
1274
doc,
1292
1275
name : idx_name,
1293
1276
ty : ty. clone ( ) ,
1294
1277
basename : accessor_name. clone ( ) ,
1295
1278
i,
1296
- }
1297
- . into ( ) ,
1279
+ } )
1280
+ . raw_if ( false ) ,
1298
1281
) ;
1299
1282
}
1300
1283
} ;
@@ -1324,17 +1307,18 @@ fn expand_register(
1324
1307
let name = ident ( & ri. name , config, "register_accessor" , span) ;
1325
1308
let syn_field = new_syn_field ( name. clone ( ) , ty. clone ( ) ) ;
1326
1309
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 ) ;
1327
1317
register_expanded. push ( RegisterBlockField {
1328
1318
syn_field,
1329
1319
offset : ri. address_offset ,
1330
1320
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] ,
1338
1322
} ) ;
1339
1323
}
1340
1324
}
0 commit comments