@@ -51,7 +51,9 @@ macro_rules! impl_try_from {
5151#[ serde( untagged) ]
5252pub enum DataNumber {
5353 U8 ( u8 ) ,
54+ I8 ( i8 ) ,
5455 U16 ( u16 ) ,
56+ I16 ( i16 ) ,
5557 U24 ( u32 ) ,
5658 I24 ( i32 ) ,
5759 U32 ( u32 ) ,
@@ -128,9 +130,9 @@ impl DataNumber {
128130 pub fn parse ( i : & [ u8 ] , field_length : u16 , signed : bool ) -> IResult < & [ u8 ] , DataNumber > {
129131 match ( field_length, signed) {
130132 ( 1 , false ) => Ok ( u8:: parse ( i) ?) . map ( |( i, j) | ( i, Self :: U8 ( j) ) ) ,
131- ( 1 , true ) => Ok ( i8:: parse ( i) ?) . map ( |( i, j) | ( i, Self :: I32 ( i32 :: from ( j ) ) ) ) ,
133+ ( 1 , true ) => Ok ( i8:: parse ( i) ?) . map ( |( i, j) | ( i, Self :: I8 ( j ) ) ) ,
132134 ( 2 , false ) => Ok ( u16:: parse ( i) ?) . map ( |( i, j) | ( i, Self :: U16 ( j) ) ) ,
133- ( 2 , true ) => Ok ( i16:: parse ( i) ?) . map ( |( i, j) | ( i, Self :: I32 ( i32 :: from ( j ) ) ) ) ,
135+ ( 2 , true ) => Ok ( i16:: parse ( i) ?) . map ( |( i, j) | ( i, Self :: I16 ( j ) ) ) ,
134136 ( 3 , false ) => Ok ( be_u24 ( i) . map ( |( i, j) | ( i, Self :: U24 ( j) ) ) ?) ,
135137 ( 3 , true ) => Ok ( be_i24 ( i) . map ( |( i, j) | ( i, Self :: I24 ( j) ) ) ?) ,
136138 ( 4 , true ) => Ok ( i32:: parse ( i) ?) . map ( |( i, j) | ( i, Self :: I32 ( j) ) ) ,
@@ -146,7 +148,9 @@ impl DataNumber {
146148 fn to_be_bytes ( & self ) -> Result < Vec < u8 > , std:: io:: Error > {
147149 match self {
148150 DataNumber :: U8 ( n) => Ok ( n. to_be_bytes ( ) . to_vec ( ) ) ,
151+ DataNumber :: I8 ( n) => Ok ( n. to_be_bytes ( ) . to_vec ( ) ) ,
149152 DataNumber :: U16 ( n) => Ok ( n. to_be_bytes ( ) . to_vec ( ) ) ,
153+ DataNumber :: I16 ( n) => Ok ( n. to_be_bytes ( ) . to_vec ( ) ) ,
150154 DataNumber :: U24 ( n) => {
151155 let mut wtr = Vec :: new ( ) ;
152156 wtr. write_u24 :: < BigEndian > ( * n) ?;
@@ -172,11 +176,13 @@ impl From<DataNumber> for usize {
172176 fn from ( val : DataNumber ) -> Self {
173177 match val {
174178 DataNumber :: U8 ( i) => usize:: from ( i) ,
179+ DataNumber :: I8 ( i) => i as usize ,
180+ DataNumber :: U16 ( i) => i as usize ,
181+ DataNumber :: I16 ( i) => i as usize ,
175182 DataNumber :: I24 ( i) => i as usize ,
176183 DataNumber :: U24 ( i) => i as usize ,
177184 DataNumber :: U32 ( i) => i as usize ,
178185 DataNumber :: I32 ( i) => i as usize ,
179- DataNumber :: U16 ( i) => i as usize ,
180186 DataNumber :: U64 ( i) => i as usize ,
181187 DataNumber :: I64 ( i) => i as usize ,
182188 DataNumber :: U128 ( i) => i as usize ,
0 commit comments