Index: src/OFNumber.h ================================================================== --- src/OFNumber.h +++ src/OFNumber.h @@ -30,10 +30,12 @@ OF_NUMBER_UINT16, OF_NUMBER_UINT32, OF_NUMBER_UINT64, OF_NUMBER_SIZE, OF_NUMBER_SSIZE, + OF_NUMBER_INTMAX, + OF_NUMBER_UINTMAX, OF_NUMBER_PTRDIFF, OF_NUMBER_INTPTR, OF_NUMBER_FLOAT, OF_NUMBER_DOUBLE, OF_NUMBER_LONG_DOUBLE @@ -62,10 +64,12 @@ uint16_t uint16; uint32_t uint32; uint64_t uint64; size_t size; ssize_t ssize; + intmax_t intmax; + uintmax_t uintmax; ptrdiff_t ptrdiff; intptr_t intptr; float float_; double double_; long double longdouble; @@ -89,10 +93,12 @@ + numberWithUInt16: (uint16_t)uint16; + numberWithUInt32: (uint32_t)uint32; + numberWithUInt64: (uint64_t)uint64; + numberWithSize: (size_t)size; + numberWithSSize: (ssize_t)ssize; ++ numberWithIntMax: (intmax_t)intmax; ++ numberWithUIntMax: (uintmax_t)uintmax; + numberWithPtrDiff: (ptrdiff_t)ptrdiff; + numberWithIntPtr: (intptr_t)intptr; + numberWithFloat: (float)float_; + numberWithDouble: (double)double_; + numberWithLongDouble: (long double)longdouble; @@ -113,10 +119,12 @@ - initWithUInt16: (uint16_t)uint16; - initWithUInt32: (uint32_t)uint32; - initWithUInt64: (uint64_t)uint64; - initWithSize: (size_t)size; - initWithSSize: (ssize_t)ssize; +- initWithIntMax: (intmax_t)intmax; +- initWithUIntMax: (uintmax_t)uintmax; - initWithPtrDiff: (ptrdiff_t)ptrdiff; - initWithIntPtr: (intptr_t)intptr; - initWithFloat: (float)float_; - initWithDouble: (double)double_; - initWithLongDouble: (long double)longdouble; @@ -139,11 +147,13 @@ - (uint16_t)asUInt16; - (uint32_t)asUInt32; - (uint64_t)asUInt64; - (size_t)asSize; - (ssize_t)asSSize; +- (intmax_t)asIntMax; +- (uintmax_t)asUIntMax; - (ptrdiff_t)asPtrDiff; - (intptr_t)asIntPtr; - (float)asFloat; - (double)asDouble; - (long double)asLongDouble; @end Index: src/OFNumber.m ================================================================== --- src/OFNumber.m +++ src/OFNumber.m @@ -48,10 +48,14 @@ return (t)value.uint64; \ case OF_NUMBER_SIZE: \ return (t)value.size; \ case OF_NUMBER_SSIZE: \ return (t)value.ssize; \ + case OF_NUMBER_INTMAX: \ + return (t)value.intmax; \ + case OF_NUMBER_UINTMAX: \ + return (t)value.uintmax; \ case OF_NUMBER_PTRDIFF: \ return (t)value.ptrdiff; \ case OF_NUMBER_INTPTR: \ return (t)value.intptr; \ case OF_NUMBER_FLOAT: \ @@ -155,10 +159,20 @@ + numberWithSSize: (ssize_t)ssize { return [[[OFNumber alloc] initWithSSize: ssize] autorelease]; } + ++ numberWithIntMax: (intmax_t)intmax +{ + return [[[OFNumber alloc] initWithIntMax: intmax] autorelease]; +} + ++ numberWithUIntMax: (uintmax_t)uintmax +{ + return [[[OFNumber alloc] initWithIntMax: uintmax] autorelease]; +} + numberWithPtrDiff: (ptrdiff_t)ptrdiff { return [[[OFNumber alloc] initWithPtrDiff: ptrdiff] autorelease]; } @@ -360,10 +374,30 @@ type = OF_NUMBER_SSIZE; } return self; } + +- initWithIntMax: (intmax_t)intmax +{ + if ((self = [super init])) { + value.intmax = intmax; + type = OF_NUMBER_INTMAX; + } + + return self; +} + +- initWithUIntMax: (uintmax_t)uintmax +{ + if ((self = [super init])) { + value.uintmax = uintmax; + type = OF_NUMBER_UINTMAX; + } + + return self; +} - initWithPtrDiff: (ptrdiff_t)ptrdiff { if ((self = [super init])) { value.ptrdiff = ptrdiff; @@ -505,10 +539,20 @@ - (ssize_t)asSSize { RETURN_AS(ssize_t) } + +- (intmax_t)asIntMax +{ + RETURN_AS(intmax_t) +} + +- (uintmax_t)asUIntMax +{ + RETURN_AS(uintmax_t) +} - (ptrdiff_t)asPtrDiff { RETURN_AS(ptrdiff_t) }