Compress::Zlib
[p5sagit/p5-mst-13.2.git] / ext / Compress / IO / Zlib / lib / IO / Compress / Adapter / Identity.pm
1 package IO::Compress::Adapter::Identity ;
2
3 use strict;
4 use warnings;
5 use bytes;
6
7 use IO::Compress::Base::Common qw(:Status);
8 use Compress::Raw::Zlib () ;
9 our ($VERSION);
10
11 $VERSION = '2.000_05';
12
13 sub mkCompObject
14 {
15     my $crc32    = shift ;
16     my $adler32  = shift ;
17     my $level    = shift ;
18     my $strategy = shift ;
19
20     return bless {
21                   'CompSize'   => 0,
22                   'UnCompSize' => 0,
23                   'Error'      => '',
24                   'ErrorNo'    => 0,
25                   'wantCRC32'  => $crc32,
26                   'CRC32'      => Compress::Raw::Zlib::crc32(''),
27                   'wantADLER32'=> $adler32,
28                   'ADLER32'    => Compress::Raw::Zlib::adler32(''),                  
29                  } ;     
30 }
31
32 sub compr
33 {
34     my $self = shift ;
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::Raw::Zlib::adler32($_[0],  $self->{ADLER32})
44             if $self->{wantADLER32};
45
46         ${ $_[1] } .= ${ $_[0] };
47     }
48
49     return STATUS_OK ;
50 }
51
52 sub flush
53 {
54     my $self = shift ;
55
56     return STATUS_OK;    
57 }
58
59 sub close
60 {
61     my $self = shift ;
62
63     return STATUS_OK;    
64 }
65
66 sub reset
67 {
68     my $self = shift ;
69
70     $self->{CompSize}   = 0;
71     $self->{UnCompSize} = 0;
72     $self->{CRC32}      = Compress::Raw::Zlib::crc32('');
73     $self->{ADLER32}    = Compress::Raw::Zlib::adler32('');                  
74
75     return STATUS_OK;    
76 }
77
78 sub deflateParams 
79 {
80     my $self = shift ;
81
82     return STATUS_OK;   
83 }
84
85 #sub total_out
86 #{
87 #    my $self = shift ;
88 #    return $self->{UnCompSize} ;
89 #}
90 #
91 #sub total_in
92 #{
93 #    my $self = shift ;
94 #    return $self->{UnCompSize} ;
95 #}
96
97 sub compressedBytes
98 {
99     my $self = shift ;
100     return $self->{UnCompSize} ;
101 }
102
103 sub uncompressedBytes
104 {
105     my $self = shift ;
106     return $self->{UnCompSize} ;
107 }
108
109 sub crc32
110 {
111     my $self = shift ;
112     return $self->{CRC32};
113 }
114
115 sub adler32
116 {
117     my $self = shift ;
118     return $self->{ADLER32};
119 }
120
121
122
123 1;
124
125
126 __END__
127