diff --git a/ChangeLog b/ChangeLog index 08010d205..25c7c2c95 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,7 @@ +2006-10-10 Richard Frith-Macdonald + + * Source/NSDecimalNumber.m: Implement coding/decoding + 2006-10-09 Nicola Pero * GNUmakefile: Do not include GNUmakefile.local. diff --git a/Source/NSDecimalNumber.m b/Source/NSDecimalNumber.m index db54b29df..f466dc16a 100644 --- a/Source/NSDecimalNumber.m +++ b/Source/NSDecimalNumber.m @@ -29,6 +29,8 @@ #include "Foundation/NSException.h" #include "Foundation/NSDecimal.h" #include "Foundation/NSDecimalNumber.h" +#include "Foundation/NSCoder.h" +#include "Foundation/NSPortCoder.h" #include "GSPrivate.h" // shared default behavior for NSDecimalNumber class @@ -663,6 +665,32 @@ static NSDecimalNumber *one; return [[isa defaultBehavior] scale]; } +- (Class) classForCoder +{ + return [NSDecimalNumber class]; +} + +- (id) replacementObjectForPortCoder: (NSPortCoder*)aCoder +{ + if ([aCoder isByref] == NO) + return self; + return [super replacementObjectForPortCoder: aCoder]; +} + +- (void) encodeWithCoder: (NSCoder*)coder +{ + NSString *s = [self descriptionWithLocale: nil]; + + [coder encodeObject: s]; +} + +- (id) initWithCoder: (NSCoder*)coder +{ + NSString *s = [coder decodeObject]; + + return [self initWithString: s locale: nil]; +} + @end @implementation NSNumber (NSDecimalNumber)