Archived
1
This repository has been archived on 2022-08-08. You can view files and clone it. You cannot open issues or pull requests or push a commit.
Files
mathpad/MathPad/MPSumFunction.m
2014-04-23 03:14:59 +02:00

121 lines
2.8 KiB
Objective-C

//
// MPSumFunction.m
// MathPad
//
// Created by Kim Wittenburg on 22.04.14.
// Copyright (c) 2014 Kim Wittenburg. All rights reserved.
//
#import "MPSumFunction.h"
#import "MPExpression.h"
@implementation MPSumFunction
#pragma mark Creation Methods
- (instancetype)init
{
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 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;
}
}
- (NSArray *)children
{
return @[self.startExpression, self.targetExpression, self.sumExpression];
}
- (void)setChild:(MPExpression *)child
atIndex:(NSUInteger)index
{
switch (index) {
// TODO: Copy child?
case 0:
self.startExpression.parent = nil;
self.startExpression = child;
break;
case 1:
self.targetExpression.parent = nil;
self.targetExpression = child;
break;
case 2:
self.sumExpression.parent = nil;
self.sumExpression = child;
break;
default:
return;
}
child.parent = self;
}
#pragma mark Evaluating Functions
- (double)doubleValue
{
#warning Implementation
return 0;
}
#pragma mark Working With Functions
- (BOOL)isEqualToFunction:(MPFunction *)aFunction
{
if (![aFunction isKindOfClass:[MPSumFunction class]]) {
return NO;
}
MPSumFunction *sumFunction = (MPSumFunction *)aFunction;
if (![self.startExpression isEqualToExpression:sumFunction.startExpression]) {
return NO;
}
if (![self.targetExpression isEqualToExpression:sumFunction.targetExpression]) {
return NO;
}
return [self.sumExpression isEqualToExpression:sumFunction.sumExpression];
}
- (NSString *)description
{
return [NSString stringWithFormat:@"Sum(From: %@; To: %@; Using: %@)", self.startExpression, self.targetExpression, self.sumExpression];
}
#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