//
//  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];
}

@end
