@@ -1080,13 +1080,98 @@ case OF_NUMBER_INTMAX: case OF_NUMBER_PTRDIFF: case OF_NUMBER_INTPTR: return [OFString stringWithFormat: @"%jd", [self intMaxValue]]; case OF_NUMBER_FLOAT: - return [OFString stringWithFormat: @"%f", [self floatValue]]; + return [OFString stringWithFormat: @"%f", value.float_]; + case OF_NUMBER_DOUBLE: + return [OFString stringWithFormat: @"%lf", value.double_]; + default: + @throw [OFInvalidFormatException newWithClass: isa]; + } +} + +- (OFString*)stringBySerializing +{ + switch (type) { + case OF_NUMBER_BOOL: + return (value.bool_ ? @"1" : @"0"); + case OF_NUMBER_UCHAR: + return [OFString stringWithFormat: @"%hhu", + value.uchar]; + case OF_NUMBER_USHORT: + return [OFString stringWithFormat: @"%hu", + value.ushort]; + case OF_NUMBER_UINT: + return [OFString stringWithFormat: @"%u", + value.uint]; + case OF_NUMBER_ULONG: + return [OFString stringWithFormat: @"%lu", + value.ulong]; + case OF_NUMBER_UINT8: + return [OFString stringWithFormat: @"%" @PRIu8, + value.uint8]; + case OF_NUMBER_UINT16: + return [OFString stringWithFormat: @"%" @PRIu16, + value.uint16]; + case OF_NUMBER_UINT32: + return [OFString stringWithFormat: @"%" @PRIu32, + value.uint32]; + case OF_NUMBER_UINT64: + return [OFString stringWithFormat: @"%" @PRIu64, + value.uint64]; + case OF_NUMBER_SIZE: + return [OFString stringWithFormat: @"%ju", + (uintmax_t)value.size]; + case OF_NUMBER_UINTMAX: + return [OFString stringWithFormat: @"%ju", + value.uintmax]; + case OF_NUMBER_UINTPTR: + return [OFString stringWithFormat: @"%" @PRIuPTR, + value.uintptr]; + case OF_NUMBER_CHAR: + return [OFString stringWithFormat: @"%hhd", + value.char_]; + case OF_NUMBER_SHORT: + return [OFString stringWithFormat: @"%hd", + value.short_]; + case OF_NUMBER_INT: + return [OFString stringWithFormat: @"%d", + value.int_]; + case OF_NUMBER_LONG: + return [OFString stringWithFormat: @"%ld", + value.long_]; + case OF_NUMBER_INT8: + return [OFString stringWithFormat: @"%" @PRId8, + value.int8]; + case OF_NUMBER_INT16: + return [OFString stringWithFormat: @"%" @PRId16, + value.int16]; + case OF_NUMBER_INT32: + return [OFString stringWithFormat: @"%" @PRId32, + value.int32]; + case OF_NUMBER_INT64: + return [OFString stringWithFormat: @"%" @PRId64, + value.int64]; + case OF_NUMBER_SSIZE: + return [OFString stringWithFormat: @"%jd", + (intmax_t)value.ssize]; + case OF_NUMBER_INTMAX: + return [OFString stringWithFormat: @"%jd", + value.intmax]; + case OF_NUMBER_PTRDIFF: + return [OFString stringWithFormat: @"%td" @PRIdPTR, + value.ptrdiff]; + case OF_NUMBER_INTPTR: + return [OFString stringWithFormat: @"%" @PRIdPTR, + value.intptr]; + case OF_NUMBER_FLOAT: + return [OFString stringWithFormat: @"%f", + value.float_]; case OF_NUMBER_DOUBLE: - return [OFString stringWithFormat: @"%lf", [self doubleValue]]; + return [OFString stringWithFormat: @"%lf", + value.double_]; default: @throw [OFInvalidFormatException newWithClass: isa]; } } @end