Revision: 436 http://trac.macosforge.org/projects/ruby/changeset/436 Author: lsansonetti@apple.com Date: 2008-08-13 19:14:01 -0700 (Wed, 13 Aug 2008) Log Message: ----------- wip Modified Paths: -------------- MacRuby/branches/lrz_unstable/array.c MacRuby/branches/lrz_unstable/objc.m MacRuby/branches/lrz_unstable/object.c Modified: MacRuby/branches/lrz_unstable/array.c =================================================================== --- MacRuby/branches/lrz_unstable/array.c 2008-08-13 23:13:19 UTC (rev 435) +++ MacRuby/branches/lrz_unstable/array.c 2008-08-14 02:14:01 UTC (rev 436) @@ -2099,19 +2099,23 @@ rb_ary_delete(VALUE ary, VALUE item) { #if WITH_OBJC - long n, i; + long k, n, i; CFRange r; + const void *ocitem; rb_ary_modify(ary); - r = CFRangeMake(0, RARRAY_LEN(ary)); - n = 0; - while ((i = CFArrayGetFirstIndexOfValue((CFArrayRef)ary, r, - (const void *)RB2OC(item))) != -1) { + ocitem = (const void *)RB2OC(item); + n = RARRAY_LEN(ary); + r = CFRangeMake(0, n); + k = 0; + while ((i = CFArrayGetFirstIndexOfValue((CFArrayRef)ary, r, ocitem)) != -1) { CFArrayRemoveValueAtIndex((CFMutableArrayRef)ary, i); - n++; + r.location = i; + r.length = --n - i; + k++; } - if (n == 0) { + if (k == 0) { if (rb_block_given_p()) { return rb_yield(item); } Modified: MacRuby/branches/lrz_unstable/objc.m =================================================================== --- MacRuby/branches/lrz_unstable/objc.m 2008-08-13 23:13:19 UTC (rev 435) +++ MacRuby/branches/lrz_unstable/objc.m 2008-08-14 02:14:01 UTC (rev 436) @@ -1007,10 +1007,15 @@ char buf[128]; id ocrcv; - /* XXX because Hash.new can accept a block */ + /* XXX very special exceptions! */ if (recv == rb_cNSMutableHash && sel == @selector(new)) { + /* because Hash.new can accept a block */ return rb_class_new_instance(0, NULL, recv); } + else if (RCLASS_META(klass) && sel == @selector(class)) { + /* because +[NSObject class] returns self */ + return rb_cClass; + } ocrcv = RB2OC(recv); Modified: MacRuby/branches/lrz_unstable/object.c =================================================================== --- MacRuby/branches/lrz_unstable/object.c 2008-08-13 23:13:19 UTC (rev 435) +++ MacRuby/branches/lrz_unstable/object.c 2008-08-14 02:14:01 UTC (rev 436) @@ -133,6 +133,8 @@ #if WITH_OBJC if (cl == 0) return 0; + if (RCLASS_META(cl)) + return rb_cClass; while (RCLASS_SINGLETON(cl)) { cl = RCLASS_SUPER(cl); }
participants (1)
-
source_changes@macosforge.org