373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
|
- (void)removeItemAtIndex: (size_t)index
{
[self removeItemsInRange: of_range(index, 1)];
}
- (void)removeItemsInRange: (of_range_t)range
{
if (range.start + range.length > count)
@throw [OFOutOfRangeException exceptionWithClass: [self class]];
memmove(data + range.start * itemSize,
data + (range.start + range.length) * itemSize,
(count - range.start - range.length) * itemSize);
count -= range.length;
@try {
data = [self resizeMemory: data
size: itemSize
count: count];
} @catch (OFOutOfMemoryException *e) {
|
|
|
|
|
|
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
|
- (void)removeItemAtIndex: (size_t)index
{
[self removeItemsInRange: of_range(index, 1)];
}
- (void)removeItemsInRange: (of_range_t)range
{
if (range.location + range.length > count)
@throw [OFOutOfRangeException exceptionWithClass: [self class]];
memmove(data + range.location * itemSize,
data + (range.location + range.length) * itemSize,
(count - range.location - range.length) * itemSize);
count -= range.length;
@try {
data = [self resizeMemory: data
size: itemSize
count: count];
} @catch (OFOutOfMemoryException *e) {
|
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
|
size = newSize;
}
- (void)removeItemsInRange: (of_range_t)range
{
size_t newSize, lastPageByte;
if (range.start + range.length > count)
@throw [OFOutOfRangeException exceptionWithClass: [self class]];
memmove(data + range.start * itemSize,
data + (range.start + range.length) * itemSize,
(count - range.start - range.length) * itemSize);
count -= range.length;
lastPageByte = of_pagesize - 1;
newSize = (count * itemSize + lastPageByte) & ~lastPageByte;
if (size != newSize)
data = [self resizeMemory: data
|
|
|
|
|
|
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
|
size = newSize;
}
- (void)removeItemsInRange: (of_range_t)range
{
size_t newSize, lastPageByte;
if (range.location + range.length > count)
@throw [OFOutOfRangeException exceptionWithClass: [self class]];
memmove(data + range.location * itemSize,
data + (range.location + range.length) * itemSize,
(count - range.location - range.length) * itemSize);
count -= range.length;
lastPageByte = of_pagesize - 1;
newSize = (count * itemSize + lastPageByte) & ~lastPageByte;
if (size != newSize)
data = [self resizeMemory: data
|