// // MPRange.h // MathPad // // Created by Kim Wittenburg on 18.04.14. // Copyright (c) 2014 Kim Wittenburg. All rights reserved. // #import "MPExpression.h" @interface MPRangePath : NSObject #pragma mark Creation Methods - (instancetype)init; - (instancetype)initWithLocation:(NSIndexPath *)location length:(NSUInteger)length; - (instancetype)initWithRange:(NSRange)aRange; + (instancetype)emptyRangePath; + (instancetype)rangePathWithLocation:(NSIndexPath *)location length:(NSUInteger)length; + (instancetype)rangePathWithRange:(NSRange)aRange; #pragma mark Properties @property (nonatomic, strong) NSIndexPath *location; @property (nonatomic) NSUInteger length; - (NSIndexPath *)maxRangePath; - (NSRange)rangeAtLastIndex; #pragma mark Working with Ranges - (BOOL)containsRangePath:(MPRangePath *)aRangePath; - (BOOL)containsLocation:(NSIndexPath *)location; - (BOOL)isEqual:(id)object; - (BOOL)isEqualToRangePath:(MPRangePath *)aRangePath; @end @interface MPExpression (MPRangeExtension) - (MPExpression *)subexpressionWithRangePath:(MPRangePath *)aRangePath; // If location points to expression (in function) nil is returned @end