[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