new(...)
public
Creates a GzipWriter object associated with io. level and
strategy should be the same as the arguments of Zlib::Deflate.new.
The GzipWriter object writes gzipped data to io. At least,
io must respond to the write method that behaves same
as write method in IO class.
Show source
/*
* call-seq: Zlib::GzipWriter.new(io, level, strategy)
*
* Creates a GzipWriter object associated with +io+. +level+ and +strategy+
* should be the same as the arguments of Zlib::Deflate.new. The GzipWriter
* object writes gzipped data to +io+. At least, +io+ must respond to the
* +write+ method that behaves same as write method in IO class.
*/
static VALUE
rb_gzwriter_initialize(argc, argv, obj)
int argc;
VALUE *argv;
VALUE obj;
{
struct gzfile *gz;
VALUE io, level, strategy;
int err;
rb_scan_args(argc, argv, "12", &io, &level, &strategy);
Data_Get_Struct(obj, struct gzfile, gz);
/* this is undocumented feature of zlib */
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) {
raise_zlib_error(err, gz->z.stream.msg);
}
gz->io = io;
ZSTREAM_READY(&gz->z);
return obj;
}