diff --git a/ChangeLog b/ChangeLog index d7eb6603c..54614f52a 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,7 @@ +2010-03-28 Richard Frith-Macdonald + + * Source/NSDecimalNumber.m: override getter methods of superclass + 2010-03-27 Richard Frith-Macdonald * Headers/Foundation/NSException.h: diff --git a/Source/NSDecimalNumber.m b/Source/NSDecimalNumber.m index 597f3c1b1..9270173f0 100644 --- a/Source/NSDecimalNumber.m +++ b/Source/NSDecimalNumber.m @@ -498,6 +498,22 @@ static NSDecimalNumber *one; } } +- (id) initWithInteger: (NSInteger)value +{ + if (value < 0) + { + return [self initWithMantissa: -value + exponent: 0 + isNegative: YES]; + } + else + { + return [self initWithMantissa: value + exponent: 0 + isNegative: NO]; + } +} + - (id) initWithLong: (signed long)value { if (value < 0) @@ -553,7 +569,14 @@ static NSDecimalNumber *one; isNegative: NO]; } -- (id) initWithUnsignedInt: (NSUInteger)value +- (id) initWithUnsignedInt: (unsigned int)value +{ + return [self initWithMantissa: value + exponent: 0 + isNegative: NO]; +} + +- (id) initWithUnsignedInteger: (NSUInteger)value { return [self initWithMantissa: value exponent: 0 @@ -599,11 +622,81 @@ static NSDecimalNumber *one; return decimal; } +- (BOOL) boolValue +{ + return (BOOL)NSDecimalDouble(&data); +} + - (double) doubleValue { return NSDecimalDouble(&data); } +- (float) floatValue +{ + return (float)NSDecimalDouble(&data); +} + +- (char) charValue +{ + return (char)NSDecimalDouble(&data); +} + +- (int) intValue +{ + return (int)NSDecimalDouble(&data); +} + +- (NSInteger) integerValue +{ + return (NSInteger)NSDecimalDouble(&data); +} + +- (long) longValue +{ + return (long)NSDecimalDouble(&data); +} + +- (long long) longLongValue +{ + return (long long)NSDecimalDouble(&data); +} + +- (short) shortValue +{ + return (short)NSDecimalDouble(&data); +} + +- (unsigned char) unsignedCharValue +{ + return (unsigned char)NSDecimalDouble(&data); +} + +- (unsigned int) unsignedIntValue +{ + return (unsigned int)NSDecimalDouble(&data); +} + +- (NSUInteger) unsignedIntegerValue +{ + return (NSUInteger)NSDecimalDouble(&data); +} + +- (unsigned long) unsignedLongValue +{ + return (unsigned long)NSDecimalDouble(&data); +} + +- (unsigned long long) unsignedLongLongValue +{ + return (unsigned long long)NSDecimalDouble(&data); +} + +- (unsigned short) unsignedShortValue +{ + return (unsigned short)NSDecimalDouble(&data); +} + /** * Get the approximate value of the decimal number into a buffer * as a double.