Compress-Stream-Zstd
view release on metacpan or search on metacpan
lib/Compress/Stream/Zstd.xs view on Meta::CPAN
void
compress(source, level = 1)
SV* source;
int level;
PREINIT:
const char* src;
STRLEN src_len;
SV* dest;
char* dst;
size_t bound, ret;
PPCODE:
if (SvROK(source)) {
source = SvRV(source);
}
if (!SvOK(source)) {
XSRETURN_UNDEF;
}
src = SvPVbyte(source, src_len);
bound = ZSTD_compressBound(src_len);
dest = sv_2mortal(newSV(bound + 1));
dst = SvPVX(dest);
lib/Compress/Stream/Zstd.xs view on Meta::CPAN
SV* source;
ALIAS:
uncompress = 1
PREINIT:
const char* src;
STRLEN src_len;
unsigned long long dest_len;
SV* dest;
char* dst;
size_t ret;
PPCODE:
if (SvROK(source)) {
source = SvRV(source);
}
if (!SvOK(source)) {
XSRETURN_UNDEF;
}
src = SvPVbyte(source, src_len);
dest_len = ZSTD_getFrameContentSize(src, src_len);
if (dest_len == ZSTD_CONTENTSIZE_UNKNOWN) {
SV* output = decompress_using_streaming(aTHX_ src, src_len);
lib/Compress/Stream/Zstd.xs view on Meta::CPAN
compress(self, source, level = 1)
Compress::Stream::Zstd::CompressionContext self;
SV* source;
int level;
PREINIT:
const char* src;
STRLEN src_len;
SV* dest;
char* dst;
size_t bound, ret;
PPCODE:
if (!SvOK(source)) {
XSRETURN_UNDEF;
}
src = SvPVbyte(source, src_len);
bound = ZSTD_compressBound(src_len);
dest = sv_2mortal(newSV(bound + 1));
dst = SvPVX(dest);
ret = ZSTD_compressCCtx((ZSTD_CCtx*) self, dst, bound + 1, src, src_len, level);
if (ZSTD_isError(ret)) {
XSRETURN_UNDEF;
lib/Compress/Stream/Zstd.xs view on Meta::CPAN
compress_using_dict(self, source, dict)
Compress::Stream::Zstd::CompressionContext self;
SV* source;
Compress::Stream::Zstd::CompressionDictionary dict;
PREINIT:
const char* src;
STRLEN src_len;
SV* dest;
char* dst;
size_t bound, ret;
PPCODE:
if (!SvOK(source)) {
XSRETURN_UNDEF;
}
src = SvPVbyte(source, src_len);
bound = ZSTD_compressBound(src_len);
dest = sv_2mortal(newSV(bound + 1));
dst = SvPVX(dest);
ret = ZSTD_compress_usingCDict((ZSTD_CCtx*) self, dst, bound + 1, src, src_len, (ZSTD_CDict*) dict);
if (ZSTD_isError(ret)) {
XSRETURN_UNDEF;
lib/Compress/Stream/Zstd.xs view on Meta::CPAN
SV* source;
ALIAS:
uncompress = 1
PREINIT:
const char* src;
STRLEN src_len;
unsigned long long dest_len;
SV* dest;
char* dst;
size_t ret;
PPCODE:
if (!SvOK(source)) {
XSRETURN_UNDEF;
}
src = SvPVbyte(source, src_len);
dest_len = ZSTD_getFrameContentSize(src, src_len);
if (dest_len == ZSTD_CONTENTSIZE_UNKNOWN || dest_len == ULLONG_MAX || ZSTD_isError(dest_len)) {
/* TODO: Support ZSTD_CONTENTSIZE_UNKNOWN */
XSRETURN_UNDEF;
}
dest = sv_2mortal(newSV(dest_len + 1));
lib/Compress/Stream/Zstd.xs view on Meta::CPAN
Compress::Stream::Zstd::DecompressionContext self;
SV* source;
Compress::Stream::Zstd::DecompressionDictionary dict;
PREINIT:
const char* src;
STRLEN src_len;
unsigned long long dest_len;
SV* dest;
char* dst;
size_t ret;
PPCODE:
if (!SvOK(source)) {
XSRETURN_UNDEF;
}
src = SvPVbyte(source, src_len);
dest_len = ZSTD_getFrameContentSize(src, src_len);
if (dest_len == ZSTD_CONTENTSIZE_UNKNOWN || dest_len == ULLONG_MAX || ZSTD_isError(dest_len)) {
/* TODO: Support ZSTD_CONTENTSIZE_UNKNOWN */
XSRETURN_UNDEF;
}
dest = sv_2mortal(newSV(dest_len + 1));
( run in 1.058 second using v1.01-cache-2.11-cpan-71847e10f99 )