@@ -2,9 +2,8 @@ use std::borrow::Cow;
2
2
use std:: cmp:: Ordering ;
3
3
use std:: collections:: HashMap ;
4
4
5
- use either:: Either ;
6
5
use quote:: { ToTokens , Tokens } ;
7
- use svd:: { Cluster , ClusterInfo , Defaults , Peripheral , Register , RegisterInfo } ;
6
+ use svd:: { Cluster , ClusterInfo , Defaults , Peripheral , Register , RegisterCluster , RegisterInfo } ;
8
7
use syn:: { self , Ident } ;
9
8
10
9
use errors:: * ;
@@ -118,7 +117,7 @@ pub fn render(
118
117
}
119
118
120
119
// Build up an alternate erc list by expanding any derived registers
121
- let mut alt_erc : Vec < Either < Register , Cluster > > = registers. iter ( ) . filter_map ( |r| {
120
+ let mut alt_erc : Vec < RegisterCluster > = registers. iter ( ) . filter_map ( |r| {
122
121
match r. derived_from {
123
122
Some ( ref derived) => {
124
123
let ancestor = match reg_map. get ( derived) {
@@ -131,27 +130,27 @@ pub fn render(
131
130
132
131
let d = match * * ancestor {
133
132
Register :: Array ( ref info, ref array_info) => {
134
- Some ( Either :: Left ( Register :: Array ( derive_reg_info ( * r, info) , array_info. clone ( ) ) ) )
133
+ Some ( Register :: Array ( derive_reg_info ( * r, info) , array_info. clone ( ) ) . into ( ) )
135
134
}
136
135
Register :: Single ( ref info) => {
137
- Some ( Either :: Left ( Register :: Single ( derive_reg_info ( * r, info) ) ) )
136
+ Some ( Register :: Single ( derive_reg_info ( * r, info) ) . into ( ) )
138
137
}
139
138
} ;
140
139
141
140
d
142
141
}
143
- None => Some ( Either :: Left ( ( * r) . clone ( ) ) ) ,
142
+ None => Some ( ( * r) . clone ( ) . into ( ) ) ,
144
143
}
145
144
} ) . collect ( ) ;
146
145
147
146
// Now add the clusters to our alternate erc list
148
147
let clusters = util:: only_clusters ( ercs) ;
149
148
for cluster in & clusters {
150
- alt_erc. push ( Either :: Right ( ( * cluster) . clone ( ) ) ) ;
149
+ alt_erc. push ( ( * cluster) . clone ( ) . into ( ) ) ;
151
150
}
152
151
153
152
// And revise registers, clusters and ercs to refer to our expanded versions
154
- let registers: & [ & Register ] = & util:: only_registers ( & alt_erc) [ ..] ;
153
+ let registers: & [ & Register ] = & util:: only_registers ( alt_erc. as_slice ( ) ) [ ..] ;
155
154
let clusters = util:: only_clusters ( ercs) ;
156
155
let ercs = & alt_erc;
157
156
@@ -164,7 +163,7 @@ pub fn render(
164
163
165
164
// Push any register or cluster blocks into the output
166
165
let mut mod_items = vec ! [ ] ;
167
- mod_items. push ( register_or_cluster_block ( ercs, defaults, None , nightly) ?) ;
166
+ mod_items. push ( register_or_cluster_block ( ercs. as_slice ( ) , defaults, None , nightly) ?) ;
168
167
169
168
// Push all cluster related information into the peripheral module
170
169
for c in & clusters {
@@ -433,7 +432,7 @@ impl FieldRegions {
433
432
}
434
433
435
434
fn register_or_cluster_block (
436
- ercs : & [ Either < Register , Cluster > ] ,
435
+ ercs : & [ RegisterCluster ] ,
437
436
defs : & Defaults ,
438
437
name : Option < & str > ,
439
438
nightly : bool ,
@@ -446,7 +445,7 @@ fn register_or_cluster_block(
446
445
}
447
446
448
447
fn register_or_cluster_block_stable (
449
- ercs : & [ Either < Register , Cluster > ] ,
448
+ ercs : & [ RegisterCluster ] ,
450
449
defs : & Defaults ,
451
450
name : Option < & str > ,
452
451
) -> Result < Tokens > {
@@ -511,7 +510,7 @@ fn register_or_cluster_block_stable(
511
510
}
512
511
513
512
fn register_or_cluster_block_nightly (
514
- ercs : & [ Either < Register , Cluster > ] ,
513
+ ercs : & [ RegisterCluster ] ,
515
514
defs : & Defaults ,
516
515
name : Option < & str > ,
517
516
) -> Result < Tokens > {
@@ -631,16 +630,16 @@ fn register_or_cluster_block_nightly(
631
630
/// Expand a list of parsed `Register`s or `Cluster`s, and render them to
632
631
/// `RegisterBlockField`s containing `Field`s.
633
632
fn expand (
634
- ercs : & [ Either < Register , Cluster > ] ,
633
+ ercs : & [ RegisterCluster ] ,
635
634
defs : & Defaults ,
636
635
name : Option < & str > ,
637
636
) -> Result < Vec < RegisterBlockField > > {
638
637
let mut ercs_expanded = vec ! [ ] ;
639
638
640
639
for erc in ercs {
641
640
ercs_expanded. extend ( match erc {
642
- Either :: Left ( ref register) => expand_register ( register, defs, name) ?,
643
- Either :: Right ( ref cluster) => expand_cluster ( cluster, defs) ?,
641
+ RegisterCluster :: Register ( ref register) => expand_register ( register, defs, name) ?,
642
+ RegisterCluster :: Cluster ( ref cluster) => expand_cluster ( cluster, defs) ?,
644
643
} ) ;
645
644
}
646
645
@@ -656,15 +655,15 @@ fn cluster_size_in_bits(info: &ClusterInfo, defs: &Defaults) -> Result<u32> {
656
655
657
656
for c in & info. children {
658
657
let end = match * c {
659
- Either :: Left ( ref reg) => {
658
+ RegisterCluster :: Register ( ref reg) => {
660
659
let reg_size: u32 = expand_register ( reg, defs, None ) ?
661
660
. iter ( )
662
661
. map ( |rbf| rbf. size )
663
662
. sum ( ) ;
664
663
665
664
( reg. address_offset * BITS_PER_BYTE ) + reg_size
666
665
}
667
- Either :: Right ( ref clust) => {
666
+ RegisterCluster :: Cluster ( ref clust) => {
668
667
( clust. address_offset * BITS_PER_BYTE ) + cluster_size_in_bits ( clust, defs) ?
669
668
}
670
669
} ;
0 commit comments