Compress-Deflate7
view release on metacpan or search on metacpan
Deflate7.xs view on Meta::CPAN
hr = c->SetCoderProperties(&cyclProp, &v, 1);
if (hr != S_OK)
croak("Bad cycles value");
}
SV* internalZlib7(const char* data, size_t len, unsigned int algo, unsigned int pass, unsigned int fast, unsigned int cycles) {
NCompress::NZlib::CEncoder c;
CBufInStream* inStream = new CBufInStream;
CDynBufSeqOutStream* outStream = new CDynBufSeqOutStream;
inStream->Init((const Byte*)data, len);
CMyComPtr<ISequentialInStream> in(inStream);
CMyComPtr<ISequentialOutStream> out(outStream);
c.Create();
setCoderProps(c.DeflateEncoderSpec, algo, pass, fast, cycles);
c.Code(in, out, NULL, NULL, NULL);
const char* deflated = (const char*)outStream->GetBuffer();
return newSVpvn(deflated, outStream->GetSize());
}
SV* internalDeflate7(const char* data, size_t len, unsigned int algo, unsigned int pass, unsigned int fast, unsigned int cycles) {
// TODO: Factor the common code
NCompress::NDeflate::NEncoder::CCOMCoder c;
CBufInStream* inStream = new CBufInStream;
CDynBufSeqOutStream* outStream = new CDynBufSeqOutStream;
inStream->Init((const Byte*)data, len);
CMyComPtr<ISequentialInStream> in(inStream);
CMyComPtr<ISequentialOutStream> out(outStream);
setCoderProps(&c, algo, pass, fast, cycles);
c.Code(in, out, NULL, NULL, NULL);
const char* deflated = (const char*)outStream->GetBuffer();
return newSVpvn(deflated, outStream->GetSize());
}
MODULE = Compress::Deflate7 PACKAGE = Compress::Deflate7
void
_zlib7(sv, algo, pass, fb, cycles)
SV* sv
unsigned int algo
unsigned int pass
unsigned int fb
unsigned int cycles
PREINIT:
STRLEN len;
char* data;
PPCODE:
data = SvPVbyte(sv, len);
mXPUSHs(internalZlib7(data, len, algo, pass, fb, cycles));
void
_deflate7(sv, algo, pass, fb, cycles)
SV* sv
unsigned int algo
unsigned int pass
unsigned int fb
unsigned int cycles
PREINIT:
STRLEN len;
char* data;
PPCODE:
data = SvPVbyte(sv, len);
mXPUSHs(internalDeflate7(data, len, algo, pass, fb, cycles));
( run in 1.313 second using v1.01-cache-2.11-cpan-71847e10f99 )