1- use crate :: ebml:: vint:: VInt ;
1+ use crate :: ebml:: vint:: { ElementId , VInt } ;
22use crate :: error:: Result ;
33use crate :: macros:: { decode_err, try_vec} ;
44
@@ -10,8 +10,8 @@ use lofty_attr::ebml_master_elements;
1010
1111#[ derive( Copy , Clone , Eq , PartialEq , Debug ) ]
1212pub struct ElementHeader {
13- pub ( crate ) id : VInt ,
14- pub ( crate ) size : VInt ,
13+ pub ( crate ) id : ElementId ,
14+ pub ( crate ) size : VInt < u64 > ,
1515}
1616
1717impl ElementHeader {
@@ -20,8 +20,8 @@ impl ElementHeader {
2020 R : Read ,
2121 {
2222 Ok ( Self {
23- id : VInt :: parse_from_element_id ( reader, max_id_length) ?,
24- size : VInt :: parse ( reader, max_vint_length) ?,
23+ id : ElementId :: parse ( reader, max_id_length) ?,
24+ size : VInt :: < u64 > :: parse ( reader, max_vint_length) ?,
2525 } )
2626 }
2727}
@@ -41,7 +41,7 @@ pub enum ElementDataType {
4141#[ derive( Copy , Clone , Debug ) ]
4242struct MasterElement {
4343 id : ElementIdent ,
44- children : & ' static [ ( VInt , ChildElementDescriptor ) ] ,
44+ children : & ' static [ ( ElementId , ChildElementDescriptor ) ] ,
4545}
4646
4747#[ derive( Copy , Clone , Debug ) ]
@@ -247,7 +247,7 @@ const ROOT_DEPTH: u8 = 1;
247247#[ derive( Copy , Clone , Debug ) ]
248248struct Depth {
249249 level : u8 ,
250- length : VInt ,
250+ length : VInt < u64 > ,
251251}
252252
253253#[ derive( Copy , Clone , Debug ) ]
@@ -302,7 +302,7 @@ impl ElementReaderContext {
302302 self . masters . get ( ( self . depth - 1 ) as usize ) . copied ( )
303303 }
304304
305- fn current_master_length ( & self ) -> VInt {
305+ fn current_master_length ( & self ) -> VInt < u64 > {
306306 assert ! ( self . depth > 0 ) ;
307307 self . current_master ( )
308308 . expect ( "should have current master element" )
@@ -316,7 +316,7 @@ impl ElementReaderContext {
316316 }
317317 }
318318
319- fn remaining_lock_length ( & self ) -> VInt {
319+ fn remaining_lock_length ( & self ) -> VInt < u64 > {
320320 assert ! ( self . locked && !self . lock_depths. is_empty( ) ) ;
321321
322322 let lock_depth = * self . lock_depths . last ( ) . unwrap ( ) ;
@@ -326,8 +326,8 @@ impl ElementReaderContext {
326326
327327#[ derive( Debug ) ]
328328pub ( crate ) enum ElementReaderYield {
329- Master ( ( ElementIdent , VInt ) ) ,
330- Child ( ( ChildElementDescriptor , VInt ) ) ,
329+ Master ( ( ElementIdent , VInt < u64 > ) ) ,
330+ Child ( ( ChildElementDescriptor , VInt < u64 > ) ) ,
331331 Unknown ( ElementHeader ) ,
332332 Eof ,
333333}
@@ -412,7 +412,7 @@ where
412412 self . ctx . max_size_length = len
413413 }
414414
415- fn push_new_master ( & mut self , master : MasterElement , size : VInt ) -> Result < ( ) > {
415+ fn push_new_master ( & mut self , master : MasterElement , size : VInt < u64 > ) -> Result < ( ) > {
416416 log:: debug!( "New master element: {:?}" , master. id) ;
417417
418418 if self . ctx . depth == MAX_DEPTH {
@@ -662,7 +662,7 @@ where
662662 // https://www.rfc-editor.org/rfc/rfc8794.html#section-7.8
663663 // A Binary Element MUST declare a length in octets from zero to VINTMAX.
664664
665- if element_length > VInt :: MAX {
665+ if element_length > VInt :: < u64 > :: MAX {
666666 decode_err ! ( @BAIL Ebml , "Binary element length is too large" )
667667 }
668668
0 commit comments