@@ -35,46 +35,49 @@ pub fn make_module(vm: &VirtualMachine) -> PyObjectRef {
35
35
} )
36
36
}
37
37
38
- macro_rules! checksum_fn {
39
- ( $fn_name: ident, $h_new: expr, $h_update: expr, $h_compute: expr, $begin_state: expr) => {
40
- fn $fn_name(
41
- data: PyBytesRef ,
42
- begin_state: OptionalArg <PyIntRef >,
43
- vm: & VirtualMachine ,
44
- ) -> PyResult <PyObjectRef > {
45
- let data = data. get_value( ) ;
46
-
47
- let begin_state = begin_state
48
- . into_option( )
49
- . as_ref( )
50
- . map( |v| v. as_bigint( ) . to_i32( ) . unwrap( ) )
51
- . unwrap_or( $begin_state) ;
52
-
53
- let mut hasher = $h_new( begin_state as u32 ) ;
54
- $h_update( & mut hasher, & data) ;
55
-
56
- let checksum: u32 = $h_compute( hasher) ;
57
-
58
- Ok ( vm. new_int( checksum) )
59
- }
60
- } ;
38
+ /// Compute an Adler-32 checksum of data.
39
+ fn zlib_adler32 (
40
+ data : PyBytesRef ,
41
+ begin_state : OptionalArg < PyIntRef > ,
42
+ vm : & VirtualMachine ,
43
+ ) -> PyResult < PyObjectRef > {
44
+ let data = data. get_value ( ) ;
45
+
46
+ let begin_state = begin_state
47
+ . into_option ( )
48
+ . as_ref ( )
49
+ . map ( |v| v. as_bigint ( ) . to_i32 ( ) . unwrap ( ) )
50
+ . unwrap_or ( 1 ) ;
51
+
52
+ let mut hasher = Adler32 :: from_value ( begin_state as u32 ) ;
53
+ hasher. update_buffer ( data) ;
54
+
55
+ let checksum: u32 = hasher. hash ( ) ;
56
+
57
+ Ok ( vm. new_int ( checksum) )
61
58
}
62
59
63
- checksum_fn ! (
64
- zlib_adler32,
65
- |value| Adler32 :: from_value( value) ,
66
- |hasher: & mut Adler32 , buffer| hasher. update_buffer( buffer) ,
67
- |hasher: Adler32 | hasher. hash( ) ,
68
- 1
69
- ) ;
70
-
71
- checksum_fn ! (
72
- zlib_crc32,
73
- |value| Crc32 :: new_with_initial( value) ,
74
- |hasher: & mut Crc32 , buffer| hasher. update( buffer) ,
75
- |hasher: Crc32 | hasher. finalize( ) ,
76
- 0
77
- ) ;
60
+ /// Compute a CRC-32 checksum of data.
61
+ fn zlib_crc32 (
62
+ data : PyBytesRef ,
63
+ begin_state : OptionalArg < PyIntRef > ,
64
+ vm : & VirtualMachine ,
65
+ ) -> PyResult < PyObjectRef > {
66
+ let data = data. get_value ( ) ;
67
+
68
+ let begin_state = begin_state
69
+ . into_option ( )
70
+ . as_ref ( )
71
+ . map ( |v| v. as_bigint ( ) . to_i32 ( ) . unwrap ( ) )
72
+ . unwrap_or ( 0 ) ;
73
+
74
+ let mut hasher = Crc32 :: new_with_initial ( begin_state as u32 ) ;
75
+ hasher. update ( data) ;
76
+
77
+ let checksum: u32 = hasher. finalize ( ) ;
78
+
79
+ Ok ( vm. new_int ( checksum) )
80
+ }
78
81
79
82
/// Returns a bytes object containing compressed data.
80
83
fn zlib_compress (
0 commit comments