@@ -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) }