Author: rfm
Date: Tue May  5 18:01:21 2015
New Revision: 38477

URL: http://svn.gna.org/viewcvs/gnustep?rev=38477&view=rev
Log:
implement -removeAllObjects

Modified:
    libs/base/trunk/Source/GSArray.m

Modified: libs/base/trunk/Source/GSArray.m
URL: 
http://svn.gna.org/viewcvs/gnustep/libs/base/trunk/Source/GSArray.m?rev=38477&r1=38476&r2=38477&view=diff
==============================================================================
--- libs/base/trunk/Source/GSArray.m    (original)
+++ libs/base/trunk/Source/GSArray.m    Tue May  5 18:01:21 2015
@@ -635,6 +635,38 @@
 {
   GSClassSwizzle(self, [GSArray class]);
   return self;
+}
+
+- (void) removeAllObjects
+{
+  NSUInteger    pos;
+
+  if ((pos = _count) > 0)
+    {
+#if    GS_WITH_GC == 0
+      IMP       rel = 0;
+      Class    last = Nil;
+#endif
+
+      _version++;
+      _count = 0;
+      while (pos-- > 0)
+        {
+#if    GS_WITH_GC == 0
+          id    o = _contents_array[pos];
+          Class c = object_getClass(o);
+
+          if (c != last)
+            {
+              last = c;
+              rel = [o methodForSelector: @selector(release)];
+            }
+          (*rel)(o, @selector(release));
+#endif
+          _contents_array[pos] = nil;
+        }
+      _version++;
+    }
 }
 
 - (void) removeLastObject


_______________________________________________
Gnustep-cvs mailing list
[email protected]
https://mail.gna.org/listinfo/gnustep-cvs

Reply via email to