xref: /openbsd-src/gnu/usr.bin/perl/cpan/IO-Compress/lib/IO/Compress/Adapter/Deflate.pm (revision 4c1e55dc91edd6e69ccc60ce855900fbc12cf34f)
1package IO::Compress::Adapter::Deflate ;
2
3use strict;
4use warnings;
5use bytes;
6
7use IO::Compress::Base::Common  2.024 qw(:Status);
8
9use Compress::Raw::Zlib  2.024 qw(Z_OK Z_FINISH MAX_WBITS) ;
10our ($VERSION);
11
12$VERSION = '2.024';
13
14sub 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
37sub 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
55sub 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
75sub 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
85sub 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
102sub 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
133sub compressedBytes
134{
135    my $self = shift ;
136
137    $self->{Def}->compressedBytes();
138}
139
140sub uncompressedBytes
141{
142    my $self = shift ;
143    $self->{Def}->uncompressedBytes();
144}
145
146
147
148
149sub crc32
150{
151    my $self = shift ;
152    $self->{Def}->crc32();
153}
154
155sub adler32
156{
157    my $self = shift ;
158    $self->{Def}->adler32();
159}
160
161
1621;
163
164__END__
165
166