Implement add and subtract methods

This commit is contained in:
Gregory John Casamento 2019-10-11 01:55:05 -04:00
parent 1b8d5562a1
commit e960b1be80
2 changed files with 25 additions and 5 deletions

View file

@ -20,8 +20,6 @@ NSAppleEventDescriptor.h
NSAppleEventManager.h
NSBackgroundActivityScheduler.h
NSDateComponentsFormatter.h
NSDateIntervalFormatter.h
NSDateInterval.h
NSExtensionContext.h
NSExtensionItem.h
NSExtensionRequestHandling.h

View file

@ -61,15 +61,21 @@
// Conversion
- (BOOL) canBeConvertedToUnit: (NSUnit *)unit
{
return [unit isKindOfClass: [_unit class]];
return ([unit isKindOfClass: [_unit class]] &&
[unit respondsToSelector: @selector(converter)]);
}
- (NSMeasurement *)measurementByConvertingToUnit:(NSUnit *)unit
{
NSMeasurement *result = nil;
double val = 0.0;
if([self canBeConvertedToUnit: unit])
{
// Do conversion...
NSUnitConverter *c = [(NSDimension *)unit converter];
val = [c baseUnitValueFromValue: _doubleValue];
result = [[NSMeasurement alloc] initWithDoubleValue: val unit: unit];
AUTORELEASE(result);
}
else
{
@ -82,12 +88,28 @@
// Operating
- (NSMeasurement *)measurementByAddingMeasurement:(NSMeasurement *)measurement
{
return nil;
NSMeasurement *newMeasurement = [measurement measurementByConvertingToUnit: _unit];
NSMeasurement *result = nil;
double v = 0.0;
v = _doubleValue + [newMeasurement doubleValue];
result = [[NSMeasurement alloc] initWithDoubleValue: v unit: _unit];
AUTORELEASE(result);
return result;
}
- (NSMeasurement *)measurementBySubtractingMeasurement:(NSMeasurement *)measurement
{
return nil;
NSMeasurement *newMeasurement = [measurement measurementByConvertingToUnit: _unit];
NSMeasurement *result = nil;
double v = 0.0;
v = _doubleValue + [newMeasurement doubleValue];
result = [[NSMeasurement alloc] initWithDoubleValue: v unit: _unit];
AUTORELEASE(result);
return result;
}
// NSCopying