Compress::Raw::Zlib#
Low-level interface to the zlib compression library.
Compress::Raw::Zlib is the thin binding layer underneath Compress::Zlib and the whole IO::Compress::* family. It exposes zlib’s streaming deflate/inflate state machines directly, plus the crc32/adler32 checksums and the zlib manifest constants.
use Compress::Raw::Zlib;
my ($d, $status) = Compress::Raw::Zlib::Deflate->new();
$d->deflate($input, my $output);
$d->flush($output);
my ($i, $istatus) = Compress::Raw::Zlib::Inflate->new();
$i->inflate($output, my $roundtrip);
This is a 1:1 transliteration of cpan/Compress-Raw-Zlib/Zlib.xs (upstream 2.222). The Perl half of Compress/Raw/Zlib.pm - the Parameters option parser and the Deflate/Inflate/InflateScan constructors - is embedded verbatim and injected with eval_pv_boot, the same faithful-mirror technique B.rs uses for B.pm.
zlib itself is reached through dlopen (libz.so.1), exactly the library the upstream XS links against. No DEFLATE implementation lives here.
Functions#
Other Functions#
ret_iv#
typemap T_IV: sv_setiv(TARG, (IV)RETVAL); ST(0) = TARG;
ret_uv#
typemap T_UV: xsubpp emits TARGu((IV)RETVAL, 1); ST(0) = TARG;
ret_pv#
typemap T_PV: sv_setpv((SV*)TARG, RETVAL); ST(0) = TARG; A NULL RETVAL sets undef - which is what msg() wants.
ret_bool#
typemap T_BOOL: ST(0) = boolSV(RETVAL);
ret_dual#
typemap T_DUAL (DualType): SV * RETVALSV = sv_newmortal(); setDUALstatus(RETVALSV, RETVAL); ST(0) = RETVALSV;