/*
* call-seq: deflate(string[, flush])
*
* Inputs +string+ into the deflate stream and returns the output from the
* stream. On calling this method, both the input and the output buffers of
* the stream are flushed. If +string+ is nil, this method finishes the
* stream, just like Zlib::ZStream#finish.
*
* The value of +flush+ should be either <tt>Zlib::NO_FLUSH</tt>,
* <tt>Zlib::SYNC_FLUSH</tt>, <tt>Zlib::FULL_FLUSH</tt>, or
* <tt>Zlib::FINISH</tt>. See zlib.h for details.
*
* TODO: document better!
*/
static VALUE
rb_deflate_deflate(argc, argv, obj)
int argc;
VALUE *argv;
VALUE obj;
{
struct zstream *z = get_zstream(obj);
VALUE src, flush, dst;
rb_scan_args(argc, argv, "11", &src, &flush);
OBJ_INFECT(obj, src);
do_deflate(z, src, ARG_FLUSH(flush));
dst = zstream_detach_buffer(z);
OBJ_INFECT(dst, obj);
return dst;
}