@@ -14,6 +14,15 @@ pub struct BitRange {
14
14
pub range_type : BitRangeType ,
15
15
}
16
16
17
+ impl BitRange {
18
+ pub fn lsb ( & self ) -> u32 {
19
+ self . offset
20
+ }
21
+ pub fn msb ( & self ) -> u32 {
22
+ self . offset + self . width - 1
23
+ }
24
+ }
25
+
17
26
#[ cfg_attr( feature = "serde" , derive( serde:: Deserialize , serde:: Serialize ) ) ]
18
27
#[ derive( Clone , Copy , Debug , PartialEq ) ]
19
28
pub enum BitRangeType {
@@ -125,15 +134,11 @@ impl BitRange {
125
134
match self . range_type {
126
135
BitRangeType :: BitRange => Ok ( vec ! [ new_element(
127
136
"bitRange" ,
128
- Some ( format!(
129
- "[{}:{}]" ,
130
- self . offset + self . width - 1 ,
131
- self . offset
132
- ) ) ,
137
+ Some ( format!( "[{}:{}]" , self . msb( ) , self . lsb( ) ) ) ,
133
138
) ] ) ,
134
139
BitRangeType :: MsbLsb => Ok ( vec ! [
135
- new_element( "lsb" , Some ( format!( "{}" , self . offset ) ) ) ,
136
- new_element( "msb" , Some ( format!( "{}" , self . offset + self . width - 1 ) ) ) ,
140
+ new_element( "lsb" , Some ( format!( "{}" , self . lsb ( ) ) ) ) ,
141
+ new_element( "msb" , Some ( format!( "{}" , self . msb ( ) ) ) ) ,
137
142
] ) ,
138
143
BitRangeType :: OffsetWidth => Ok ( vec ! [
139
144
new_element( "bitOffset" , Some ( format!( "{}" , self . offset) ) ) ,
0 commit comments