[macruby-changes] [3909] MacRuby/trunk/array.c

source_changes at macosforge.org source_changes at macosforge.org
Sun Apr 4 19:47:42 PDT 2010


Revision: 3909
          http://trac.macosforge.org/projects/ruby/changeset/3909
Author:   lsansonetti at apple.com
Date:     2010-04-04 19:47:42 -0700 (Sun, 04 Apr 2010)
Log Message:
-----------
added conformant #to_a

Modified Paths:
--------------
    MacRuby/trunk/array.c

Modified: MacRuby/trunk/array.c
===================================================================
--- MacRuby/trunk/array.c	2010-04-05 02:47:17 UTC (rev 3908)
+++ MacRuby/trunk/array.c	2010-04-05 02:47:42 UTC (rev 3909)
@@ -1991,6 +1991,25 @@
     return rcv;
 }
 
+/*
+ *  call-seq:
+ *     array.to_a     -> array
+ *
+ *  Returns _self_. If called on a subclass of Array, converts
+ *  the receiver to an Array object.
+ */
+
+static VALUE
+rary_to_a(VALUE ary, SEL sel)
+{
+    if (rb_obj_class(ary) != rb_cRubyArray) {
+        VALUE dup = rb_ary_new();
+        rary_replace(dup, 0, ary);
+        return dup;
+    }
+    return ary;
+}
+
 /* 
  *  call-seq:
  *     array.clear    ->  array
@@ -3473,6 +3492,7 @@
 	    rary_s_try_convert, 1);
     rb_objc_define_method(rb_cRubyArray, "initialize", rary_initialize, -1);
     rb_objc_define_method(rb_cRubyArray, "initialize_copy", rary_replace, 1);
+    rb_objc_define_method(rb_cRubyArray, "to_a", rary_to_a, 0);
     rb_objc_define_method(rb_cRubyArray, "dup", rary_dup, 0);
     rb_objc_define_method(rb_cRubyArray, "clone", rary_clone, 0);
     rb_objc_define_method(rb_cRubyArray, "to_s", rary_inspect, 0);
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.macosforge.org/pipermail/macruby-changes/attachments/20100404/b86ae002/attachment.html>


More information about the macruby-changes mailing list