@@ -266,51 +266,40 @@ impl Drop for FileEncoder {
266266}
267267
268268macro_rules! write_leb128 {
269- ( $enc: expr, $value: expr, $int_ty: ty, $fun: ident) => { {
270- const MAX_ENCODED_LEN : usize = $crate:: leb128:: max_leb128_len:: <$int_ty>( ) ;
269+ ( $this_fn: ident, $int_ty: ty, $write_leb_fn: ident) => {
270+ #[ inline]
271+ fn $this_fn( & mut self , v: $int_ty) {
272+ const MAX_ENCODED_LEN : usize = $crate:: leb128:: max_leb128_len:: <$int_ty>( ) ;
271273
272- // We ensure this during `FileEncoder` construction.
273- debug_assert!( $enc . capacity( ) >= MAX_ENCODED_LEN ) ;
274+ // We ensure this during `FileEncoder` construction.
275+ debug_assert!( self . capacity( ) >= MAX_ENCODED_LEN ) ;
274276
275- let mut buffered = $enc . buffered;
277+ let mut buffered = self . buffered;
276278
277- // This can't overflow. See assertion in `FileEncoder::with_capacity`.
278- if std:: intrinsics:: unlikely( buffered + MAX_ENCODED_LEN > $enc . capacity( ) ) {
279- $enc . flush( ) ;
280- buffered = 0 ;
281- }
279+ // This can't overflow. See assertion in `FileEncoder::with_capacity`.
280+ if std:: intrinsics:: unlikely( buffered + MAX_ENCODED_LEN > self . capacity( ) ) {
281+ self . flush( ) ;
282+ buffered = 0 ;
283+ }
282284
283- // SAFETY: The above check and flush ensures that there is enough
284- // room to write the encoded value to the buffer.
285- let buf = unsafe {
286- & mut * ( $enc. buf. as_mut_ptr( ) . add( buffered) as * mut [ MaybeUninit <u8 >; MAX_ENCODED_LEN ] )
287- } ;
285+ // SAFETY: The above check and flush ensures that there is enough
286+ // room to write the encoded value to the buffer.
287+ let buf = unsafe {
288+ & mut * ( self . buf. as_mut_ptr( ) . add( buffered)
289+ as * mut [ MaybeUninit <u8 >; MAX_ENCODED_LEN ] )
290+ } ;
288291
289- let encoded = leb128:: $fun( buf, $value) ;
290- $enc. buffered = buffered + encoded. len( ) ;
291- } } ;
292+ let encoded = leb128:: $write_leb_fn( buf, v) ;
293+ self . buffered = buffered + encoded. len( ) ;
294+ }
295+ } ;
292296}
293297
294298impl Encoder for FileEncoder {
295- #[ inline]
296- fn emit_usize ( & mut self , v : usize ) {
297- write_leb128 ! ( self , v, usize , write_usize_leb128)
298- }
299-
300- #[ inline]
301- fn emit_u128 ( & mut self , v : u128 ) {
302- write_leb128 ! ( self , v, u128 , write_u128_leb128)
303- }
304-
305- #[ inline]
306- fn emit_u64 ( & mut self , v : u64 ) {
307- write_leb128 ! ( self , v, u64 , write_u64_leb128)
308- }
309-
310- #[ inline]
311- fn emit_u32 ( & mut self , v : u32 ) {
312- write_leb128 ! ( self , v, u32 , write_u32_leb128)
313- }
299+ write_leb128 ! ( emit_usize, usize , write_usize_leb128) ;
300+ write_leb128 ! ( emit_u128, u128 , write_u128_leb128) ;
301+ write_leb128 ! ( emit_u64, u64 , write_u64_leb128) ;
302+ write_leb128 ! ( emit_u32, u32 , write_u32_leb128) ;
314303
315304 #[ inline]
316305 fn emit_u16 ( & mut self , v : u16 ) {
@@ -322,25 +311,10 @@ impl Encoder for FileEncoder {
322311 self . write_one ( v) ;
323312 }
324313
325- #[ inline]
326- fn emit_isize ( & mut self , v : isize ) {
327- write_leb128 ! ( self , v, isize , write_isize_leb128)
328- }
329-
330- #[ inline]
331- fn emit_i128 ( & mut self , v : i128 ) {
332- write_leb128 ! ( self , v, i128 , write_i128_leb128)
333- }
334-
335- #[ inline]
336- fn emit_i64 ( & mut self , v : i64 ) {
337- write_leb128 ! ( self , v, i64 , write_i64_leb128)
338- }
339-
340- #[ inline]
341- fn emit_i32 ( & mut self , v : i32 ) {
342- write_leb128 ! ( self , v, i32 , write_i32_leb128)
343- }
314+ write_leb128 ! ( emit_isize, isize , write_isize_leb128) ;
315+ write_leb128 ! ( emit_i128, i128 , write_i128_leb128) ;
316+ write_leb128 ! ( emit_i64, i64 , write_i64_leb128) ;
317+ write_leb128 ! ( emit_i32, i32 , write_i32_leb128) ;
344318
345319 #[ inline]
346320 fn emit_i16 ( & mut self , v : i16 ) {
@@ -437,29 +411,19 @@ impl<'a> MemDecoder<'a> {
437411}
438412
439413macro_rules! read_leb128 {
440- ( $dec: expr, $fun: ident) => { { leb128:: $fun( $dec) } } ;
414+ ( $this_fn: ident, $int_ty: ty, $read_leb_fn: ident) => {
415+ #[ inline]
416+ fn $this_fn( & mut self ) -> $int_ty {
417+ leb128:: $read_leb_fn( self )
418+ }
419+ } ;
441420}
442421
443422impl < ' a > Decoder for MemDecoder < ' a > {
444- #[ inline]
445- fn read_usize ( & mut self ) -> usize {
446- read_leb128 ! ( self , read_usize_leb128)
447- }
448-
449- #[ inline]
450- fn read_u128 ( & mut self ) -> u128 {
451- read_leb128 ! ( self , read_u128_leb128)
452- }
453-
454- #[ inline]
455- fn read_u64 ( & mut self ) -> u64 {
456- read_leb128 ! ( self , read_u64_leb128)
457- }
458-
459- #[ inline]
460- fn read_u32 ( & mut self ) -> u32 {
461- read_leb128 ! ( self , read_u32_leb128)
462- }
423+ read_leb128 ! ( read_usize, usize , read_usize_leb128) ;
424+ read_leb128 ! ( read_u128, u128 , read_u128_leb128) ;
425+ read_leb128 ! ( read_u64, u64 , read_u64_leb128) ;
426+ read_leb128 ! ( read_u32, u32 , read_u32_leb128) ;
463427
464428 #[ inline]
465429 fn read_u16 ( & mut self ) -> u16 {
@@ -479,25 +443,10 @@ impl<'a> Decoder for MemDecoder<'a> {
479443 }
480444 }
481445
482- #[ inline]
483- fn read_isize ( & mut self ) -> isize {
484- read_leb128 ! ( self , read_isize_leb128)
485- }
486-
487- #[ inline]
488- fn read_i128 ( & mut self ) -> i128 {
489- read_leb128 ! ( self , read_i128_leb128)
490- }
491-
492- #[ inline]
493- fn read_i64 ( & mut self ) -> i64 {
494- read_leb128 ! ( self , read_i64_leb128)
495- }
496-
497- #[ inline]
498- fn read_i32 ( & mut self ) -> i32 {
499- read_leb128 ! ( self , read_i32_leb128)
500- }
446+ read_leb128 ! ( read_isize, isize , read_isize_leb128) ;
447+ read_leb128 ! ( read_i128, i128 , read_i128_leb128) ;
448+ read_leb128 ! ( read_i64, i64 , read_i64_leb128) ;
449+ read_leb128 ! ( read_i32, i32 , read_i32_leb128) ;
501450
502451 #[ inline]
503452 fn read_i16 ( & mut self ) -> i16 {
0 commit comments