@@ -38,10 +38,16 @@ [array addItem: &obj]; [obj retain]; return self; } + +- removeObjectAtIndex: (size_t)index +{ + return [self removeNObjects: 1 + atIndex: index]; +} - removeNObjects: (size_t)nobjects { OFObject **objs; size_t len, i; @@ -55,8 +61,29 @@ for (i = len - nobjects; i < len; i++) [objs[i] release]; [array removeNItems: nobjects]; + return self; +} + +- removeNObjects: (size_t)nobjects + atIndex: (size_t)index +{ + OFObject **objs; + size_t len, i; + + objs = [array cArray]; + len = [array count]; + + if (nobjects > len) + @throw [OFOutOfRangeException newWithClass: isa]; + + for (i = index; i < len && i < index + nobjects; i++) + [objs[i] release]; + + [array removeNItems: nobjects + atIndex: index]; + return self; } @end