87 lines
2.4 KiB
Objective-C
87 lines
2.4 KiB
Objective-C
//
|
|
// NSIndexPath+MPRemoveFirstIndex.m
|
|
// MathPad
|
|
//
|
|
// Created by Kim Wittenburg on 23.04.14.
|
|
// Copyright (c) 2014 Kim Wittenburg. All rights reserved.
|
|
//
|
|
|
|
#import "NSIndexPath+MPAdditions.h"
|
|
|
|
@implementation NSIndexPath (MPAdditions)
|
|
|
|
- (NSUInteger)lastIndex
|
|
{
|
|
return [self indexAtPosition:self.length-1];
|
|
}
|
|
|
|
- (NSIndexPath *)indexPathByReplacingLastIndexWithIndex:(NSUInteger)index
|
|
{
|
|
return [[self indexPathByRemovingLastIndex] indexPathByAddingIndex:index];
|
|
}
|
|
|
|
- (NSIndexPath *)indexPathByRemovingFirstIndex
|
|
{
|
|
if (self.length <= 1) {
|
|
return [[NSIndexPath alloc] init];
|
|
}
|
|
NSUInteger indexes[self.length];
|
|
[self getIndexes:indexes];
|
|
NSUInteger newIndexes[self.length-1];
|
|
for (NSUInteger i = 0; i < self.length-1; i++) {
|
|
newIndexes[i] = indexes[i+1];
|
|
}
|
|
return [[NSIndexPath alloc] initWithIndexes:newIndexes length:self.length-1];
|
|
}
|
|
|
|
- (NSIndexPath *)indexPathByPreceedingIndex:(NSUInteger)index
|
|
{
|
|
NSUInteger newIndexes[self.length+1];
|
|
newIndexes[0] = index;
|
|
for (NSUInteger i = 0; i < self.length; i++) {
|
|
newIndexes[i+1] = [self indexAtPosition:i];
|
|
}
|
|
return [[NSIndexPath alloc] initWithIndexes:newIndexes length:self.length+1];
|
|
}
|
|
|
|
- (NSIndexPath *)indexPathByIncrementingLastIndex
|
|
{
|
|
NSUInteger lastIndex = [self lastIndex];
|
|
lastIndex++;
|
|
return [[self indexPathByRemovingLastIndex] indexPathByAddingIndex:lastIndex];
|
|
}
|
|
|
|
- (NSIndexPath *)indexPathByDecrementingLastIndex
|
|
{
|
|
NSUInteger lastIndex = [self lastIndex];
|
|
lastIndex--;
|
|
return [[self indexPathByRemovingLastIndex] indexPathByAddingIndex:lastIndex];
|
|
}
|
|
|
|
- (NSIndexPath *)indexPathWithLength:(NSUInteger)length
|
|
{
|
|
NSIndexPath *indexPath = [[NSIndexPath alloc] init];
|
|
for (NSUInteger position = 0; position < length; position++) {
|
|
indexPath = [indexPath indexPathByAddingIndex:[self indexAtPosition:position]];
|
|
}
|
|
return indexPath;
|
|
}
|
|
|
|
- (NSIndexPath *)commonIndexPathWith:(NSIndexPath *)indexPath
|
|
{
|
|
NSIndexPath *commonPath = [[NSIndexPath alloc] init];
|
|
NSUInteger length = MIN(self.length, indexPath.length);
|
|
for (NSUInteger position = 0; position < length; position++) {
|
|
NSUInteger selfIndex = [self indexAtPosition:position];
|
|
NSUInteger otherIndex = [indexPath indexAtPosition:position];
|
|
if (selfIndex == otherIndex) {
|
|
commonPath = [commonPath indexPathByAddingIndex:selfIndex];
|
|
} else {
|
|
break;
|
|
}
|
|
}
|
|
return commonPath;
|
|
}
|
|
|
|
@end
|