Debian lenny version packages
[pkg-perl] / deb-src / libio-compress-zlib-perl / libio-compress-zlib-perl-2.012 / lib / IO / Compress / Adapter / Deflate.pm
1 package IO::Compress::Adapter::Deflate ;
2
3 use strict;
4 use warnings;
5 use bytes;
6
7 use IO::Compress::Base::Common  2.012 qw(:Status);
8
9 use Compress::Raw::Zlib  2.012 qw(Z_OK Z_FINISH MAX_WBITS) ;
10 our ($VERSION);
11
12 $VERSION = '2.012';
13
14 sub mkCompObject
15 {
16     my $crc32    = shift ;
17     my $adler32  = shift ;
18     my $level    = shift ;
19     my $strategy = shift ;
20
21     my ($def, $status) = new Compress::Raw::Zlib::Deflate
22                                 -AppendOutput   => 1,
23                                 -CRC32          => $crc32,
24                                 -ADLER32        => $adler32,
25                                 -Level          => $level,
26                                 -Strategy       => $strategy,
27                                 -WindowBits     => - MAX_WBITS;
28
29     return (undef, "Cannot create Deflate object: $status", $status) 
30         if $status != Z_OK;    
31
32     return bless {'Def'        => $def,
33                   'Error'      => '',
34                  } ;     
35 }
36
37 sub compr
38 {
39     my $self = shift ;
40
41     my $def   = $self->{Def};
42
43     my $status = $def->deflate($_[0], $_[1]) ;
44     $self->{ErrorNo} = $status;
45
46     if ($status != Z_OK)
47     {
48         $self->{Error} = "Deflate Error: $status"; 
49         return STATUS_ERROR;
50     }
51
52     return STATUS_OK;    
53 }
54
55 sub flush
56 {
57     my $self = shift ;
58
59     my $def   = $self->{Def};
60
61     my $opt = $_[1] || Z_FINISH;
62     my $status = $def->flush($_[0], $opt);
63     $self->{ErrorNo} = $status;
64
65     if ($status != Z_OK)
66     {
67         $self->{Error} = "Deflate Error: $status"; 
68         return STATUS_ERROR;
69     }
70
71     return STATUS_OK;    
72     
73 }
74
75 sub close
76 {
77     my $self = shift ;
78
79     my $def   = $self->{Def};
80
81     $def->flush($_[0], Z_FINISH)
82         if defined $def ;
83 }
84
85 sub reset
86 {
87     my $self = shift ;
88
89     my $def   = $self->{Def};
90
91     my $status = $def->deflateReset() ;
92     $self->{ErrorNo} = $status;
93     if ($status != Z_OK)
94     {
95         $self->{Error} = "Deflate Error: $status"; 
96         return STATUS_ERROR;
97     }
98
99     return STATUS_OK;    
100 }
101
102 sub deflateParams 
103 {
104     my $self = shift ;
105
106     my $def   = $self->{Def};
107
108     my $status = $def->deflateParams(@_);
109     $self->{ErrorNo} = $status;
110     if ($status != Z_OK)
111     {
112         $self->{Error} = "deflateParams Error: $status"; 
113         return STATUS_ERROR;
114     }
115
116     return STATUS_OK;   
117 }
118
119
120
121 #sub total_out
122 #{
123 #    my $self = shift ;
124 #    $self->{Def}->total_out();
125 #}
126 #
127 #sub total_in
128 #{
129 #    my $self = shift ;
130 #    $self->{Def}->total_in();
131 #}
132
133 sub compressedBytes
134 {
135     my $self = shift ;
136
137     $self->{Def}->compressedBytes();
138 }
139
140 sub uncompressedBytes
141 {
142     my $self = shift ;
143     $self->{Def}->uncompressedBytes();
144 }
145
146
147
148
149 sub crc32
150 {
151     my $self = shift ;
152     $self->{Def}->crc32();
153 }
154
155 sub adler32
156 {
157     my $self = shift ;
158     $self->{Def}->adler32();
159 }
160
161
162 1;
163
164 __END__
165