File Coverage

blib/lib/Digest/Adler32/XS.pm
Criterion Covered Total %
statement 23 28 82.1
branch 1 2 50.0
condition n/a
subroutine 6 7 85.7
pod 0 4 0.0
total 30 41 73.1


line stmt bran cond sub pod time code
1             package Digest::Adler32::XS;
2            
3 3     3   88532 use warnings;
  3         80  
  3         106  
4 3     3   15 use strict;
  3         8  
  3         296  
5            
6             our $VERSION = '0.03';
7            
8 3     3   18 use base qw(Digest::base DynaLoader);
  3         10  
  3         1372  
9            
10             bootstrap Digest::Adler32::XS;
11            
12             sub new {
13 1     1 0 16 my $class = shift;
14 1 50       6 if (ref $class) {
15 0         0 $$class = 1; # reset
16 0         0 return $class;
17             }
18 1         2 my $adler_state = 1;
19 1         6 return bless \$adler_state, $class;
20             }
21            
22             sub clone {
23 0     0 0 0 my $self = shift;
24 0         0 my $adler_state = $$self;
25 0         0 return bless \$adler_state, ref($self);
26             }
27            
28             sub add {
29 7     7 0 21 my ($self, @args) = @_;
30 7         11 my $current = $$self;
31 7         12 for my $buf (@args) {
32 7         32 $current = adler32($current, $buf);
33             }
34 7         12 $$self = $current;
35 7         14 return $self;
36             }
37            
38             sub digest {
39 10     10 0 1097 my $self = shift;
40 10         45 my $digest = pack("N", $$self);
41 10         14 $$self = 1; # reset
42 10         90 return $digest;
43             }
44            
45             bootstrap Digest::Adler32::XS;
46            
47             1;
48            
49             __END__