Drastic Simplification of MPFunction subclass implementations
This commit is contained in:
@@ -12,98 +12,18 @@
|
||||
#import "MPExpressionEvaluator.h"
|
||||
#import "MPEvaluationContext.h"
|
||||
|
||||
// TODO: Use this macro elsewhere
|
||||
#define ReturnIfNil(test) if(test == nil) return nil
|
||||
|
||||
@implementation MPSumFunction
|
||||
|
||||
+ (NSString *)localizedFunctionName
|
||||
{
|
||||
return NSLocalizedString(@"Sum", @"Name of Sum Function");
|
||||
}
|
||||
MPFunctionAccessorImplementation(StartExpression, _startExpression)
|
||||
MPFunctionAccessorImplementation(TargetExpression, _targetExpression)
|
||||
MPFunctionAccessorImplementation(SumExpression, _sumExpression)
|
||||
|
||||
#pragma mark Creation Methods
|
||||
- (instancetype)init
|
||||
- (NSArray *)childrenAccessors
|
||||
{
|
||||
self = [super init];
|
||||
if (self) {
|
||||
_startExpression = [[MPExpression alloc] init];
|
||||
_startExpression.parent = self;
|
||||
_targetExpression = [[MPExpression alloc] init];
|
||||
_targetExpression.parent = self;
|
||||
_sumExpression = [[MPExpression alloc] init];
|
||||
_sumExpression.parent = self;
|
||||
}
|
||||
return self;
|
||||
}
|
||||
|
||||
#pragma mark Properties
|
||||
- (void)setStartExpression:(MPExpression *)startExpression
|
||||
{
|
||||
_startExpression.parent = nil;
|
||||
_startExpression = startExpression;
|
||||
_startExpression.parent = self;
|
||||
[self didChangeChildAtIndex:0];
|
||||
}
|
||||
|
||||
- (void)setTargetExpression:(MPExpression *)targetExpression
|
||||
{
|
||||
_targetExpression.parent = nil;
|
||||
_targetExpression = targetExpression;
|
||||
_targetExpression.parent = self;
|
||||
[self didChangeChildAtIndex:1];
|
||||
}
|
||||
|
||||
- (void)setSumExpression:(MPExpression *)sumExpression
|
||||
{
|
||||
_sumExpression.parent = nil;
|
||||
_sumExpression = sumExpression;
|
||||
_sumExpression.parent = self;
|
||||
[self didChangeChildAtIndex:2];
|
||||
}
|
||||
|
||||
#pragma mark Working With the Expression Tree
|
||||
- (NSUInteger)numberOfChildren
|
||||
{
|
||||
return 3;
|
||||
}
|
||||
|
||||
- (MPExpression *)childAtIndex:(NSUInteger)index
|
||||
{
|
||||
switch (index) {
|
||||
case 0:
|
||||
return self.startExpression;
|
||||
case 1:
|
||||
return self.targetExpression;
|
||||
case 2:
|
||||
return self.sumExpression;
|
||||
default:
|
||||
return nil;
|
||||
}
|
||||
}
|
||||
|
||||
- (void)setChild:(MPExpression *)child
|
||||
atIndex:(NSUInteger)index
|
||||
{
|
||||
switch (index) {
|
||||
// TODO: Copy child?
|
||||
case 0:
|
||||
self.startExpression = child;
|
||||
break;
|
||||
case 1:
|
||||
self.targetExpression = child;
|
||||
break;
|
||||
case 2:
|
||||
self.sumExpression = child;
|
||||
break;
|
||||
default:
|
||||
return;
|
||||
}
|
||||
[self didChangeChildAtIndex:index];
|
||||
}
|
||||
|
||||
- (NSArray *)children
|
||||
{
|
||||
return @[self.startExpression, self.targetExpression, self.sumExpression];
|
||||
return @[@"startExpression", @"targetExpression", @"sumExpression"];
|
||||
}
|
||||
|
||||
#pragma mark Evaluating Functions
|
||||
@@ -167,20 +87,4 @@
|
||||
return [NSString stringWithFormat:@"Sum(From: %@; To: %@; Using: %@)", self.startExpression, self.targetExpression, self.sumExpression];
|
||||
}
|
||||
|
||||
- (NSUInteger)hash
|
||||
{
|
||||
#warning Unimplemented Method
|
||||
return [super hash];
|
||||
}
|
||||
|
||||
#pragma mark - NSCopying
|
||||
- (id)copyWithZone:(NSZone *)zone
|
||||
{
|
||||
MPSumFunction *copy = [[MPSumFunction allocWithZone:zone] init];
|
||||
copy.startExpression = [self.startExpression copy];
|
||||
copy.targetExpression = [self.targetExpression copy];
|
||||
copy.sumExpression = [self.sumExpression copy];
|
||||
return copy;
|
||||
}
|
||||
|
||||
@end
|
||||
|
||||
Reference in New Issue
Block a user