[macruby-changes] [2350] MacRuby/trunk/ext/zlib/zlib.c
source_changes at macosforge.org
source_changes at macosforge.org
Thu Aug 20 11:39:21 PDT 2009
Revision: 2350
http://trac.macosforge.org/projects/ruby/changeset/2350
Author: pthomson at apple.com
Date: 2009-08-20 11:39:20 -0700 (Thu, 20 Aug 2009)
Log Message:
-----------
Removed the embedded RObject struct and went back to using the Data class.
Modified Paths:
--------------
MacRuby/trunk/ext/zlib/zlib.c
Modified: MacRuby/trunk/ext/zlib/zlib.c
===================================================================
--- MacRuby/trunk/ext/zlib/zlib.c 2009-08-20 18:39:19 UTC (rev 2349)
+++ MacRuby/trunk/ext/zlib/zlib.c 2009-08-20 18:39:20 UTC (rev 2350)
@@ -342,7 +342,6 @@
/*-------- zstream - internal APIs --------*/
struct zstream {
- struct RObject object;
unsigned long flags;
VALUE buf;
long buf_filled;
@@ -758,8 +757,9 @@
static VALUE
zstream_new(VALUE klass, const struct zstream_funcs *funcs)
{
- NEWOBJ(z, struct zstream);
- OBJSETUP(z, klass, T_OBJECT);
+ struct zstream *z = ALLOC(struct zstream);
+ memset(z, 0, sizeof(*z));
+ Data_Wrap_Struct(klass, NULL, NULL, z);
zstream_init(z, funcs);
return (VALUE)z;
}
@@ -770,7 +770,9 @@
static struct zstream *
get_zstream(VALUE obj)
{
- struct zstream *z = (struct zstream*)obj;
+ struct zstream *z;
+
+ Data_Get_Struct(obj, struct zstream, z);
if (!ZSTREAM_IS_READY(z)) {
rb_raise(cZError, "stream is not ready");
}
@@ -886,8 +888,10 @@
static VALUE
rb_zstream_flush_next_in(VALUE obj, SEL sel)
{
- struct zstream *z = (struct zstream*)obj;
+ struct zstream *z;
VALUE dst;
+
+ Data_Get_Struct(obj, struct zstream, z);
dst = zstream_detach_input(z);
OBJ_INFECT(dst, obj);
return dst;
@@ -899,9 +903,10 @@
static VALUE
rb_zstream_flush_next_out(VALUE obj, SEL sel)
{
- struct zstream *z = (struct zstream *)obj;
+ struct zstream *z;
VALUE dst;
+ Data_Get_Struct(obj, struct zstream, z);
dst = zstream_detach_buffer(z);
OBJ_INFECT(dst, obj);
return dst;
@@ -914,7 +919,8 @@
static VALUE
rb_zstream_avail_out(VALUE obj, SEL sel)
{
- struct zstream *z = (struct zstream *)obj;
+ struct zstream *z;
+ Data_Get_Struct(obj, struct zstream, z);
return rb_uint2inum(z->stream.avail_out);
}
@@ -940,7 +946,8 @@
static VALUE
rb_zstream_avail_in(VALUE obj, SEL sel)
{
- struct zstream *z = (struct zstream *)obj;
+ struct zstream *z;
+ Data_Get_Struct(obj, struct zstream, z);
return INT2FIX(NIL_P(z->input) ? 0 : (int)(BSTRING_LEN(z->input)));
}
@@ -997,7 +1004,8 @@
static VALUE
rb_zstream_closed_p(VALUE obj, SEL sel)
{
- struct zstream *z = (struct zstream *)obj;
+ struct zstream *z;
+ Data_Get_Struct(obj, struct zstream, z);
return ZSTREAM_IS_READY(z) ? Qfalse : Qtrue;
}
@@ -1041,13 +1049,13 @@
rb_deflate_initialize(VALUE obj, SEL sel, int argc, VALUE *argv)
{
printf("Calling initialize\n");
- assert(ROBJECT(obj)->tbl == NULL);
+ struct zstream *z;
VALUE level, wbits, memlevel, strategy;
int err;
rb_scan_args(argc, argv, "04", &level, &wbits, &memlevel, &strategy);
- struct zstream *z = (struct zstream *)obj;
-
+ Data_Get_Struct(obj, struct zstream, z);
+
err = deflateInit2(&z->stream, ARG_LEVEL(level), Z_DEFLATED,
ARG_WBITS(wbits), ARG_MEMLEVEL(memlevel),
ARG_STRATEGY(strategy));
@@ -1055,7 +1063,7 @@
raise_zlib_error(err, z->stream.msg);
}
ZSTREAM_READY(z);
- assert(ROBJECT(obj)->tbl == NULL);
+
return obj;
}
@@ -1308,11 +1316,12 @@
static VALUE
rb_inflate_initialize(VALUE obj, SEL sel, int argc, VALUE *argv)
{
+ struct zstream *z;
VALUE wbits;
int err;
rb_scan_args(argc, argv, "01", &wbits);
- struct zstream *z = (struct zstream *)obj;
+ Data_Get_Struct(obj, struct zstream, z);
err = inflateInit2(&z->stream, ARG_WBITS(wbits));
if (err != Z_OK) {
@@ -1481,7 +1490,7 @@
OBJ_INFECT(obj, src);
StringValue(src);
- return zstream_sync(z, BSTRING_PTR_BYTEF(src), BSTRING_LEN(src));
+ return zstream_sync(z, BSTRING_PTR_BYTEF(src), BSTRING_PTR_BYTEF(src));
}
/*
@@ -1522,7 +1531,8 @@
OBJ_INFECT(obj, dic);
StringValue(src);
- err = inflateSetDictionary(&z->stream, BSTRING_PTR_BYTEF(src), BSTRING_LEN(src));
+ err = inflateSetDictionary(&z->stream,
+ (Bytef*)RSTRING_BYTEPTR(src), RSTRING_BYTELEN(src));
if (err != Z_OK) {
raise_zlib_error(err, z->stream.msg);
}
@@ -3228,8 +3238,8 @@
rb_objc_define_method(cDeflate, "set_dictionary", rb_deflate_set_dictionary, 1);
cInflate = rb_define_class_under(mZlib, "Inflate", cZStream);
- rb_objc_define_method(*(VALUE *)cInflate, "inflate", rb_inflate_s_inflate, 1);
- rb_objc_define_method(*(VALUE *)cInflate, "alloc", rb_inflate_s_allocate, 0);
+ rb_objc_define_method(*(VALUE *)cDeflate, "inflate", rb_inflate_s_inflate, 1);
+ rb_objc_define_method(*(VALUE *)cDeflate, "alloc", rb_inflate_s_allocate, 0);
rb_objc_define_method(cInflate, "initialize", rb_inflate_initialize, -1);
rb_objc_define_method(cInflate, "inflate", rb_inflate_inflate, 1);
rb_objc_define_method(cInflate, "<<", rb_inflate_addstr, 1);
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.macosforge.org/pipermail/macruby-changes/attachments/20090820/43f1dc78/attachment-0001.html>
More information about the macruby-changes
mailing list