📄 inflate.pm
字号:
package IO::Uncompress::Adapter::Inflate;use strict;use warnings;use bytes;use IO::Compress::Base::Common 2.008 qw(:Status);use Compress::Raw::Zlib 2.008 qw(Z_OK Z_DATA_ERROR Z_STREAM_END Z_FINISH MAX_WBITS);our ($VERSION);$VERSION = '2.008';sub mkUncompObject{ my $crc32 = shift || 1; my $adler32 = shift || 1; my $scan = shift || 0; my $inflate ; my $status ; if ($scan) { ($inflate, $status) = new Compress::Raw::Zlib::InflateScan CRC32 => $crc32, ADLER32 => $adler32, WindowBits => - MAX_WBITS ; } else { ($inflate, $status) = new Compress::Raw::Zlib::Inflate AppendOutput => 1, CRC32 => $crc32, ADLER32 => $adler32, WindowBits => - MAX_WBITS ; } return (undef, "Could not create Inflation object: $status", $status) if $status != Z_OK ; return bless {'Inf' => $inflate, 'CompSize' => 0, 'UnCompSize' => 0, 'Error' => '', } ; }sub uncompr{ my $self = shift ; my $from = shift ; my $to = shift ; my $eof = shift ; my $inf = $self->{Inf}; my $status = $inf->inflate($from, $to, $eof); $self->{ErrorNo} = $status; if ($status != Z_STREAM_END && $eof) { $self->{Error} = "unexpected end of file"; return STATUS_ERROR; } if ($status != Z_OK && $status != Z_STREAM_END ) { $self->{Error} = "Inflation Error: $status"; return STATUS_ERROR; } return STATUS_OK if $status == Z_OK ; return STATUS_ENDSTREAM if $status == Z_STREAM_END ; return STATUS_ERROR ;}sub reset{ my $self = shift ; $self->{Inf}->inflateReset(); return STATUS_OK ;}#sub count#{# my $self = shift ;# $self->{Inf}->inflateCount();#}sub crc32{ my $self = shift ; $self->{Inf}->crc32();}sub compressedBytes{ my $self = shift ; $self->{Inf}->compressedBytes();}sub uncompressedBytes{ my $self = shift ; $self->{Inf}->uncompressedBytes();}sub adler32{ my $self = shift ; $self->{Inf}->adler32();}sub sync{ my $self = shift ; ( $self->{Inf}->inflateSync(@_) == Z_OK) ? STATUS_OK : STATUS_ERROR ;}sub getLastBlockOffset{ my $self = shift ; $self->{Inf}->getLastBlockOffset();}sub getEndOffset{ my $self = shift ; $self->{Inf}->getEndOffset();}sub resetLastBlockByte{ my $self = shift ; $self->{Inf}->resetLastBlockByte(@_);}sub createDeflateStream{ my $self = shift ; my $deflate = $self->{Inf}->createDeflateStream(@_); return bless {'Def' => $deflate, 'CompSize' => 0, 'UnCompSize' => 0, 'Error' => '', }, 'IO::Compress::Adapter::Deflate';}1;__END__
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -