diff options
Diffstat (limited to 'ext/Compress/Zlib/lib/UncompressPlugin/Identity.pm')
-rw-r--r-- | ext/Compress/Zlib/lib/UncompressPlugin/Identity.pm | 93 |
1 files changed, 93 insertions, 0 deletions
diff --git a/ext/Compress/Zlib/lib/UncompressPlugin/Identity.pm b/ext/Compress/Zlib/lib/UncompressPlugin/Identity.pm new file mode 100644 index 0000000000..3041a9f5a2 --- /dev/null +++ b/ext/Compress/Zlib/lib/UncompressPlugin/Identity.pm @@ -0,0 +1,93 @@ +package UncompressPlugin::Identity; + +use warnings; +use strict; + +use Compress::Zlib::Common qw(:Status); + +our ($VERSION); + +$VERSION = '2.000_05'; + +use Compress::Zlib (); + +sub mkUncompObject +{ + my $crc32 = 1; #shift ; + my $adler32 = shift; + + bless { 'CompSize' => 0, + 'UnCompSize' => 0, + 'wantCRC32' => $crc32, + 'CRC32' => Compress::Zlib::crc32(''), + 'wantADLER32'=> $adler32, + 'ADLER32' => Compress::Zlib::adler32(''), + } ; +} + +sub uncompr +{ + my $self = shift; + my $eof = $_[2]; + + if (defined ${ $_[0] } && length ${ $_[0] }) { + $self->{CompSize} += length ${ $_[0] } ; + $self->{UnCompSize} = $self->{CompSize} ; + + $self->{CRC32} = Compress::Zlib::crc32($_[0], $self->{CRC32}) + if $self->{wantCRC32}; + + $self->{ADLER32} = Compress::Zlib::adler32($_[0], $self->{ADLER32}) + if $self->{wantADLER32}; + + ${ $_[1] } .= ${ $_[0] }; + } + + return STATUS_ENDSTREAM if $eof; + return STATUS_OK ; +} + +sub reset +{ + return STATUS_OK ; +} + + +sub count +{ + my $self = shift ; + return $self->{UnCompSize} ; +} + +sub compressedBytes +{ + my $self = shift ; + return $self->{UnCompSize} ; +} + +sub uncompressedBytes +{ + my $self = shift ; + return $self->{UnCompSize} ; +} + +sub sync +{ + return STATUS_OK ; +} + +sub crc32 +{ + my $self = shift ; + return $self->{CRC32}; +} + +sub adler32 +{ + my $self = shift ; + return $self->{ADLER32}; +} + +1; + +__END__ |