Module: Zstdlib
- Defined in:
- ext/zstdlib_c/ruby/zlib-3.3/zstdlib.c,
ext/zstdlib_c/ruby/zlib-3.2/zstdlib.c,
ext/zstdlib_c/ruby/zlib-3.1/zstdlib.c,
ext/zstdlib_c/ruby/zlib-3.0/zstdlib.c,
ext/zstdlib_c/ruby/zlib-2.7/zstdlib.c,
ext/zstdlib_c/ruby/zlib-2.6/zstdlib.c,
ext/zstdlib_c/ruby/zlib-2.5/zstdlib.c,
ext/zstdlib_c/ruby/zlib-2.4/zstdlib.c,
ext/zstdlib_c/ruby/zlib-2.3/zstdlib.c,
ext/zstdlib_c/ruby/zlib-2.2/zstdlib.c
Defined Under Namespace
Classes: BufError, DataError, Deflate, Error, GzipFile, GzipReader, GzipWriter, InProgressError, Inflate, MemError, NeedDict, StreamEnd, StreamError, VersionError, ZStream
Constant Summary collapse
- VERSION =
The Ruby/zlib version string.
rb_str_new2(RUBY_ZLIB_VERSION)
- ZLIB_VERSION =
The string which represents the version of zlib.h
rb_str_new2(ZLIB_VERSION)
- ZSTD_VERSION =
rb_str_new2(ZSTD_versionString())
- BINARY =
:Deflate#data_type.
Represents binary data as guessed by deflate. See Zstdlib
- ASCII =
The underlying constant Z_ASCII was deprecated in favor of Z_TEXT in zlib 1.2.2. New applications should not use this constant.
See Zstdlib::Deflate#data_type.
Represents text data as guessed by deflate. NOTE
- TEXT =
:Deflate#data_type.
Represents text data as guessed by deflate. See Zstdlib
- UNKNOWN =
:Deflate#data_type.
Represents an unknown data type as guessed by deflate. See Zstdlib
- NO_COMPRESSION =
No compression, passes through data untouched. Use this for appending pre-compressed data to a deflate stream.
INT2FIX(Z_NO_COMPRESSION)
- BEST_SPEED =
Fastest compression level, but with with lowest space savings.
INT2FIX(Z_BEST_SPEED)
- BEST_COMPRESSION =
Slowest compression level, but with the best space savings.
INT2FIX(ZSTD_maxCLevel())
- DEFAULT_COMPRESSION =
Default compression level which is a good trade-off between space and time
INT2FIX(ZSTD_CLEVEL_DEFAULT)
- FILTERED =
Deflate strategy for data produced by a filter (or predictor). The effect of FILTERED is to force more Huffman codes and less string matching; it is somewhat intermediate between DEFAULT_STRATEGY and HUFFMAN_ONLY. Filtered data consists mostly of small values with a somewhat random distribution.
INT2FIX(Z_FILTERED)
- HUFFMAN_ONLY =
Deflate strategy which uses Huffman codes only (no string matching).
INT2FIX(Z_HUFFMAN_ONLY)
- RLE =
Deflate compression strategy designed to be almost as fast as HUFFMAN_ONLY, but give better compression for PNG image data.
INT2FIX(Z_RLE)
- FIXED =
Deflate strategy which prevents the use of dynamic Huffman codes, allowing for a simpler decoder for specialized applications.
INT2FIX(Z_FIXED)
- DEFAULT_STRATEGY =
Default deflate strategy which is used for normal data.
INT2FIX(Z_DEFAULT_STRATEGY)
- MAX_WBITS =
:Inflate.new for details.
The maximum size of the zlib history buffer. Note that zlib allows larger values to enable different inflate modes. See Zstdlib
- DEF_MEM_LEVEL =
The default memory level for allocating zlib deflate compression state.
INT2FIX(DEF_MEM_LEVEL)
- MAX_MEM_LEVEL =
The maximum memory level for allocating zlib deflate compression state.
INT2FIX(MAX_MEM_LEVEL)
- NO_FLUSH =
NO_FLUSH is the default flush method and allows deflate to decide how much data to accumulate before producing output in order to maximize compression.
INT2FIX(Z_NO_FLUSH)
- SYNC_FLUSH =
The SYNC_FLUSH method flushes all pending output to the output buffer and the output is aligned on a byte boundary. Flushing may degrade compression so it should be used only when necessary, such as at a request or response boundary for a network stream.
INT2FIX(Z_SYNC_FLUSH)
- FULL_FLUSH =
Flushes all output as with SYNC_FLUSH, and the compression state is reset so that decompression can restart from this point if previous compressed data has been damaged or if random access is desired. Like SYNC_FLUSH, using FULL_FLUSH too often can seriously degrade compression.
INT2FIX(Z_FULL_FLUSH)
- FINISH =
Processes all pending input and flushes pending output.
INT2FIX(Z_FINISH)
- OS_CODE =
The OS code of current host
INT2FIX(OS_CODE)
- OS_MSDOS =
OS code for MSDOS hosts
INT2FIX(OS_MSDOS)
- OS_AMIGA =
OS code for Amiga hosts
INT2FIX(OS_AMIGA)
- OS_VMS =
OS code for VMS hosts
INT2FIX(OS_VMS)
- OS_UNIX =
OS code for UNIX hosts
INT2FIX(OS_UNIX)
- OS_ATARI =
OS code for Atari hosts
INT2FIX(OS_ATARI)
- OS_OS2 =
OS code for OS2 hosts
INT2FIX(OS_OS2)
- OS_MACOS =
OS code for Mac OS hosts
INT2FIX(OS_MACOS)
- OS_TOPS20 =
OS code for TOPS-20 hosts
INT2FIX(OS_TOPS20)
- OS_WIN32 =
OS code for Win32 hosts
INT2FIX(OS_WIN32)
- OS_VMCMS =
OS code for VM OS hosts
INT2FIX(OS_VMCMS)
- OS_ZSYSTEM =
OS code for Z-System hosts
INT2FIX(OS_ZSYSTEM)
- OS_CPM =
OS code for CP/M hosts
INT2FIX(OS_CPM)
- OS_QDOS =
OS code for QDOS hosts
INT2FIX(OS_QDOS)
- OS_RISCOS =
OS code for RISC OS hosts
INT2FIX(OS_RISCOS)
- OS_UNKNOWN =
OS code for unknown hosts
INT2FIX(OS_UNKNOWN)
Class Method Summary collapse
-
.adler32(*args) ⇒ Object
call-seq: Zstdlib.adler32(string, adler).
-
.adler32_combine(adler1, adler2, len2) ⇒ Object
call-seq: Zstdlib.adler32_combine(adler1, adler2, len2).
-
.crc32(*args) ⇒ Object
call-seq: Zstdlib.crc32(string, crc).
-
.crc32_combine(crc1, crc2, len2) ⇒ Object
call-seq: Zstdlib.crc32_combine(crc1, crc2, len2).
-
.crc_table ⇒ Object
Returns the table for calculating CRC checksum as an array.
-
.deflate(*args) ⇒ Object
call-seq: Zstdlib.deflate(string[, level]) Zstdlib::Deflate.deflate(string[, level]).
-
.gunzip(src) ⇒ String
Decode the given gzipped +string+.
-
.gzip(src, level: nil, strategy: nil) ⇒ String
Gzip the given +string+.
-
.inflate(src) ⇒ Object
call-seq: Zstdlib.inflate(string) Zstdlib::Inflate.inflate(string).
-
.zlib_version ⇒ Object
Returns the string which represents the version of zlib library.
-
.zstd_version ⇒ Object
Returns the string which represents the version of zstd library.
Class Method Details
.adler32(*args) ⇒ Object
call-seq: Zstdlib.adler32(string, adler)
Calculates Adler-32 checksum for +string+, and returns updated value of +adler+. If +string+ is omitted, it returns the Adler-32 initial value. If +adler+ is omitted, it assumes that the initial value is given to +adler+. If +string+ is an IO instance, reads from the IO until the IO returns nil and returns Adler-32 of all read data.
Example usage:
require "zstdlib"
data = "foo" puts "Adler32 checksum: #Zstdlib.adler32(data).to_s(16)" #=> Adler32 checksum: 2820145
480 481 482 483 484 |
# File 'ext/zstdlib_c/ruby/zlib-3.3/zstdlib.c', line 480
static VALUE
rb_zlib_adler32(int argc, VALUE *argv, VALUE klass)
{
return do_checksum(argc, argv, adler32);
}
|
.adler32_combine(adler1, adler2, len2) ⇒ Object
call-seq: Zstdlib.adler32_combine(adler1, adler2, len2)
Combine two Adler-32 check values in to one. +adler1+ is the first Adler-32 value, +adler2+ is the second Adler-32 value. +len2+ is the length of the string used to generate +adler2+.
497 498 499 500 501 502 |
# File 'ext/zstdlib_c/ruby/zlib-3.3/zstdlib.c', line 497
static VALUE
rb_zlib_adler32_combine(VALUE klass, VALUE adler1, VALUE adler2, VALUE len2)
{
return ULONG2NUM(
adler32_combine(NUM2ULONG(adler1), NUM2ULONG(adler2), NUM2LONG(len2)));
}
|
.crc32(*args) ⇒ Object
call-seq: Zstdlib.crc32(string, crc)
Calculates CRC checksum for +string+, and returns updated value of +crc+. If +string+ is omitted, it returns the CRC initial value. If +crc+ is omitted, it assumes that the initial value is given to +crc+. If +string+ is an IO instance, reads from the IO until the IO returns nil and returns CRC checksum of all read data.
FIXME: expression.
520 521 522 523 524 |
# File 'ext/zstdlib_c/ruby/zlib-3.3/zstdlib.c', line 520
static VALUE
rb_zlib_crc32(int argc, VALUE *argv, VALUE klass)
{
return do_checksum(argc, argv, crc32);
}
|
.crc32_combine(crc1, crc2, len2) ⇒ Object
call-seq: Zstdlib.crc32_combine(crc1, crc2, len2)
Combine two CRC-32 check values in to one. +crc1+ is the first CRC-32 value, +crc2+ is the second CRC-32 value. +len2+ is the length of the string used to generate +crc2+.
537 538 539 540 541 542 |
# File 'ext/zstdlib_c/ruby/zlib-3.3/zstdlib.c', line 537
static VALUE
rb_zlib_crc32_combine(VALUE klass, VALUE crc1, VALUE crc2, VALUE len2)
{
return ULONG2NUM(
crc32_combine(NUM2ULONG(crc1), NUM2ULONG(crc2), NUM2LONG(len2)));
}
|
.crc_table ⇒ Object
Returns the table for calculating CRC checksum as an array.
552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 |
# File 'ext/zstdlib_c/ruby/zlib-3.3/zstdlib.c', line 552
static VALUE
rb_zlib_crc_table(VALUE obj)
{
#if !defined(HAVE_TYPE_Z_CRC_T)
/* z_crc_t is defined since zlib-1.2.7. */
typedef unsigned long z_crc_t;
#endif
const z_crc_t *crctbl;
VALUE dst;
int i;
crctbl = get_crc_table();
dst = rb_ary_new2(256);
for (i = 0; i < 256; i++) {
rb_ary_push(dst, rb_uint2inum(crctbl[i]));
}
return dst;
}
|
.deflate(*args) ⇒ Object
call-seq: Zstdlib.deflate(string[, level]) Zstdlib::Deflate.deflate(string[, level])
Compresses the given +string+. Valid values of level are Zstdlib::NO_COMPRESSION, Zstdlib::BEST_SPEED, Zstdlib::BEST_COMPRESSION, Zstdlib::DEFAULT_COMPRESSION, or an integer from 0 to 9.
This method is almost equivalent to the following code:
def deflate(string, level) z = Zstdlib::Deflate.new(level) dst = z.deflate(string, Zstdlib::FINISH) z.close dst end
See also Zstdlib.inflate
1745 1746 1747 1748 1749 1750 1751 1752 1753 1754 1755 1756 1757 1758 1759 1760 1761 1762 1763 1764 1765 1766 1767 1768 |
# File 'ext/zstdlib_c/ruby/zlib-3.3/zstdlib.c', line 1745
static VALUE
rb_deflate_s_deflate(int argc, VALUE *argv, VALUE klass)
{
struct zstream z;
VALUE src, level, dst, args[2];
int err, lev;
rb_scan_args(argc, argv, "11", &src, &level);
lev = ARG_LEVEL(level);
StringValue(src);
zstream_init_deflate(&z);
err = deflateInit(&z.stream, lev);
if (err != Z_OK) {
raise_zlib_error(err, z.stream.msg);
}
ZSTREAM_READY(&z);
args[0] = (VALUE)&z;
args[1] = src;
dst = rb_ensure(deflate_run, (VALUE)args, zstream_ensure_end, (VALUE)&z);
return dst;
}
|
.gunzip(src) ⇒ String
Decode the given gzipped +string+.
This method is almost equivalent to the following code:
def gunzip(string) sio = StringIO.new(string) gz = Zstdlib::GzipReader.new(sio, encoding: Encoding::ASCII_8BIT) gz.read ensure gz&.close end
See also Zstdlib.gzip
4601 4602 4603 4604 4605 4606 4607 4608 4609 4610 4611 4612 4613 4614 4615 4616 4617 4618 4619 |
# File 'ext/zstdlib_c/ruby/zlib-3.3/zstdlib.c', line 4601
static VALUE
zlib_gunzip(VALUE klass, VALUE src)
{
struct gzfile gz0;
struct gzfile *gz = &gz0;
int err;
StringValue(src);
gzfile_init(gz, &inflate_funcs, zlib_gunzip_end);
err = inflateInit2(&gz->z.stream, -MAX_WBITS);
if (err != Z_OK) {
raise_zlib_error(err, gz->z.stream.msg);
}
gz->io = Qundef;
gz->z.input = src;
ZSTREAM_READY(&gz->z);
return rb_ensure(zlib_gunzip_run, (VALUE)gz, zlib_gzip_ensure, (VALUE)gz);
}
|
.gzip(src, level: nil, strategy: nil) ⇒ String
Gzip the given +string+. Valid values of level are Zstdlib::NO_COMPRESSION, Zstdlib::BEST_SPEED, Zstdlib::BEST_COMPRESSION, Zstdlib::DEFAULT_COMPRESSION (default), or an integer from 0 to 9.
This method is almost equivalent to the following code:
def gzip(string, level: nil, strategy: nil) sio = StringIO.new sio.binmode gz = Zstdlib::GzipWriter.new(sio, level, strategy) gz.write(string) gz.close sio.string end
See also Zstdlib.gunzip
4518 4519 4520 4521 4522 4523 4524 4525 4526 4527 4528 4529 4530 4531 4532 4533 4534 4535 4536 4537 4538 4539 4540 4541 4542 4543 4544 4545 4546 4547 4548 4549 4550 4551 4552 4553 |
# File 'ext/zstdlib_c/ruby/zlib-3.3/zstdlib.c', line 4518
static VALUE
zlib_s_gzip(int argc, VALUE *argv, VALUE klass)
{
struct gzfile gz0;
struct gzfile *gz = &gz0;
int err;
VALUE src, opts, level=Qnil, strategy=Qnil, args[2];
if (OPTHASH_GIVEN_P(opts)) {
ID keyword_ids[2];
VALUE kwargs[2];
keyword_ids[0] = id_level;
keyword_ids[1] = id_strategy;
rb_get_kwargs(opts, keyword_ids, 0, 2, kwargs);
if (kwargs[0] != Qundef) {
level = kwargs[0];
}
if (kwargs[1] != Qundef) {
strategy = kwargs[1];
}
}
rb_scan_args(argc, argv, "10", &src);
StringValue(src);
gzfile_init(gz, &deflate_funcs, zlib_gzip_end);
gz->level = ARG_LEVEL(level);
err = deflateInit2(&gz->z.stream, gz->level, Z_DEFLATED,
-MAX_WBITS, DEF_MEM_LEVEL, ARG_STRATEGY(strategy));
if (err != Z_OK) {
zlib_gzip_end(gz);
raise_zlib_error(err, gz->z.stream.msg);
}
ZSTREAM_READY(&gz->z);
args[0] = (VALUE)gz;
args[1] = src;
return rb_ensure(zlib_gzip_run, (VALUE)args, zlib_gzip_ensure, (VALUE)gz);
}
|
.inflate(src) ⇒ Object
call-seq: Zstdlib.inflate(string) Zstdlib::Inflate.inflate(string)
Decompresses +string+. Raises a Zstdlib::NeedDict exception if a preset dictionary is needed for decompression.
This method is almost equivalent to the following code:
def inflate(string) zstream = Zstdlib::Inflate.new buf = zstream.inflate(string) zstream.finish zstream.close buf end
See also Zstdlib.deflate
2059 2060 2061 2062 2063 2064 2065 2066 2067 2068 2069 2070 2071 2072 2073 2074 2075 2076 2077 2078 2079 |
# File 'ext/zstdlib_c/ruby/zlib-3.3/zstdlib.c', line 2059
static VALUE
rb_inflate_s_inflate(VALUE obj, VALUE src)
{
struct zstream z;
VALUE dst, args[2];
int err;
StringValue(src);
zstream_init_inflate(&z);
err = inflateInit(&z.stream);
if (err != Z_OK) {
raise_zlib_error(err, z.stream.msg);
}
ZSTREAM_READY(&z);
args[0] = (VALUE)&z;
args[1] = src;
dst = rb_ensure(inflate_run, (VALUE)args, zstream_ensure_end, (VALUE)&z);
return dst;
}
|
.zlib_version ⇒ Object
Returns the string which represents the version of zlib library.
393 394 395 396 397 |
# File 'ext/zstdlib_c/ruby/zlib-3.3/zstdlib.c', line 393
static VALUE
rb_zlib_version(VALUE klass)
{
return rb_str_new2(zlibVersion());
}
|
.zstd_version ⇒ Object
Returns the string which represents the version of zstd library.
379 380 381 382 383 384 385 386 |
# File 'ext/zstdlib_c/ruby/zlib-3.3/zstdlib.c', line 379
static VALUE
rb_zstd_version(VALUE klass)
{
VALUE str;
str = rb_str_new2(ZSTD_versionString());
OBJ_TAINT(str);
return str;
}
|