This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Update IO-Compress to CPAN version 2.036
[perl5.git] / cpan / IO-Compress / lib / IO / Uncompress / Adapter / Identity.pm
1 package IO::Uncompress::Adapter::Identity;
2
3 use warnings;
4 use strict;
5 use bytes;
6
7 use IO::Compress::Base::Common  2.036 qw(:Status);
8
9 our ($VERSION);
10
11 $VERSION = '2.036';
12
13 use Compress::Raw::Zlib  2.036 ();
14
15 sub mkUncompObject
16 {
17     my $crc32 = 1; #shift ;
18     my $adler32 = shift;
19
20     bless { 'CompSize'   => 0,
21             'UnCompSize' => 0,
22             'wantCRC32'  => $crc32,
23             'CRC32'      => Compress::Raw::Zlib::crc32(''),
24             'wantADLER32'=> $adler32,
25             'ADLER32'    => Compress::Raw::Zlib::adler32(''),
26             'ConsumesInput' => 1,
27
28           } ;
29 }
30
31 sub uncompr
32 {
33     my $self = shift;
34     my $eof = $_[2];
35
36     if (defined ${ $_[0] } && length ${ $_[0] }) {
37         $self->{CompSize} += length ${ $_[0] } ;
38         $self->{UnCompSize} = $self->{CompSize} ;
39
40         $self->{CRC32} = Compress::Raw::Zlib::crc32($_[0],  $self->{CRC32})
41             if $self->{wantCRC32};
42
43         $self->{ADLER32} = Compress::Zlib::adler32($_[0],  $self->{ADLER32})
44             if $self->{wantADLER32};
45
46         ${ $_[1] } .= ${ $_[0] };
47         ${ $_[0] } = "";
48     }
49
50     return STATUS_ENDSTREAM if $eof;
51     return STATUS_OK ;
52 }
53
54 sub reset
55 {
56     my $self = shift;
57
58     $self->{CompSize}   = 0;
59     $self->{UnCompSize} = 0;
60     $self->{CRC32}      = Compress::Raw::Zlib::crc32('');
61     $self->{ADLER32}    = Compress::Raw::Zlib::adler32('');      
62
63     return STATUS_OK ;
64 }
65
66
67 #sub count
68 #{
69 #    my $self = shift ;
70 #    return $self->{UnCompSize} ;
71 #}
72
73 sub compressedBytes
74 {
75     my $self = shift ;
76     return $self->{UnCompSize} ;
77 }
78
79 sub uncompressedBytes
80 {
81     my $self = shift ;
82     return $self->{UnCompSize} ;
83 }
84
85 sub sync
86 {
87     return STATUS_OK ;
88 }
89
90 sub crc32
91 {
92     my $self = shift ;
93     return $self->{CRC32};
94 }
95
96 sub adler32
97 {
98     my $self = shift ;
99     return $self->{ADLER32};
100 }
101
102
103 1;
104
105 __END__