@@ -43,18 +43,22 @@ return (t)_value.sshort; \ case OF_NUMBER_INT: \ return (t)_value.sint; \ case OF_NUMBER_LONG: \ return (t)_value.slong; \ + case OF_NUMBER_LONGLONG: \ + return (t)_value.slonglong; \ case OF_NUMBER_UCHAR: \ return (t)_value.uchar; \ case OF_NUMBER_USHORT: \ return (t)_value.ushort; \ case OF_NUMBER_UINT: \ return (t)_value.uint; \ case OF_NUMBER_ULONG: \ return (t)_value.ulong; \ + case OF_NUMBER_ULONGLONG: \ + return (t)_value.ulonglong; \ case OF_NUMBER_INT8: \ return (t)_value.int8; \ case OF_NUMBER_INT16: \ return (t)_value.int16; \ case OF_NUMBER_INT32: \ @@ -106,10 +110,13 @@ return [OFNumber numberWithInt: \ _value.sint o [n intValue]]; \ case OF_NUMBER_LONG: \ return [OFNumber numberWithLong: \ _value.slong o [n longValue]]; \ + case OF_NUMBER_LONGLONG: \ + return [OFNumber numberWithLongLong: \ + _value.slonglong o [n longLongValue]]; \ case OF_NUMBER_UCHAR: \ return [OFNumber numberWithUnsignedChar: \ _value.uchar o [n unsignedCharValue]]; \ case OF_NUMBER_USHORT: \ return [OFNumber numberWithUnsignedShort: \ @@ -118,10 +125,13 @@ return [OFNumber numberWithUnsignedInt: \ _value.uint o [n unsignedIntValue]]; \ case OF_NUMBER_ULONG: \ return [OFNumber numberWithUnsignedLong: \ _value.ulong o [n unsignedLongValue]]; \ + case OF_NUMBER_ULONGLONG: \ + return [OFNumber numberWithUnsignedLongLong: \ + _value.ulonglong o [n unsignedLongLongValue]]; \ case OF_NUMBER_INT8: \ return [OFNumber numberWithInt8: \ _value.int8 o [n int8Value]]; \ case OF_NUMBER_INT16: \ return [OFNumber numberWithInt16: \ @@ -190,10 +200,13 @@ return [OFNumber numberWithInt: \ _value.sint o [n intValue]]; \ case OF_NUMBER_LONG: \ return [OFNumber numberWithLong: \ _value.slong o [n longValue]]; \ + case OF_NUMBER_LONGLONG: \ + return [OFNumber numberWithLongLong: \ + _value.slonglong o [n longLongValue]]; \ case OF_NUMBER_UCHAR: \ return [OFNumber numberWithUnsignedChar: \ _value.uchar o [n unsignedCharValue]]; \ case OF_NUMBER_USHORT: \ return [OFNumber numberWithUnsignedShort: \ @@ -202,10 +215,13 @@ return [OFNumber numberWithUnsignedInt: \ _value.uint o [n unsignedIntValue]]; \ case OF_NUMBER_ULONG: \ return [OFNumber numberWithUnsignedLong: \ _value.ulong o [n unsignedLongValue]]; \ + case OF_NUMBER_ULONGLONG: \ + return [OFNumber numberWithUnsignedLongLong: \ + _value.ulonglong o [n unsignedLongLongValue]]; \ case OF_NUMBER_INT8: \ return [OFNumber numberWithInt8: \ _value.int8 o [n int8Value]]; \ case OF_NUMBER_INT16: \ return [OFNumber numberWithInt16: \ @@ -268,10 +284,13 @@ return [OFNumber numberWithShort: _value.sshort o]; \ case OF_NUMBER_INT: \ return [OFNumber numberWithInt: _value.sint o]; \ case OF_NUMBER_LONG: \ return [OFNumber numberWithLong: _value.slong o]; \ + case OF_NUMBER_LONGLONG: \ + return [OFNumber numberWithLongLong: \ + _value.slonglong o]; \ case OF_NUMBER_UCHAR: \ return [OFNumber numberWithUnsignedChar: \ _value.uchar o]; \ case OF_NUMBER_USHORT: \ return [OFNumber numberWithUnsignedShort: \ @@ -278,11 +297,14 @@ _value.ushort o]; \ case OF_NUMBER_UINT: \ return [OFNumber numberWithUnsignedInt: _value.uint o]; \ case OF_NUMBER_ULONG: \ return [OFNumber numberWithUnsignedLong: \ - _value.ulong o]; \ + _value.ulong o]; \ + case OF_NUMBER_ULONGLONG: \ + return [OFNumber numberWithUnsignedLongLong: \ + _value.ulonglong o]; \ case OF_NUMBER_INT8: \ return [OFNumber numberWithInt8: _value.int8 o]; \ case OF_NUMBER_INT16: \ return [OFNumber numberWithInt16: _value.int16 o]; \ case OF_NUMBER_INT32: \ @@ -343,10 +365,15 @@ + (instancetype)numberWithLong: (signed long)slong { return [[[self alloc] initWithLong: slong] autorelease]; } + ++ (instancetype)numberWithLongLong: (signed long long)slonglong +{ + return [[[self alloc] initWithLongLong: slonglong] autorelease]; +} + (instancetype)numberWithUnsignedChar: (unsigned char)uchar { return [[[self alloc] initWithUnsignedChar: uchar] autorelease]; } @@ -363,10 +390,15 @@ + (instancetype)numberWithUnsignedLong: (unsigned long)ulong { return [[[self alloc] initWithUnsignedLong: ulong] autorelease]; } + ++ (instancetype)numberWithUnsignedLongLong: (unsigned long long)ulonglong +{ + return [[[self alloc] initWithUnsignedLongLong: ulonglong] autorelease]; +} + (instancetype)numberWithInt8: (int8_t)int8 { return [[[self alloc] initWithInt8: int8] autorelease]; } @@ -510,10 +542,20 @@ _value.slong = slong; _type = OF_NUMBER_LONG; return self; } + +- initWithLongLong: (signed long long)slonglong +{ + self = [super init]; + + _value.slonglong = slonglong; + _type = OF_NUMBER_LONGLONG; + + return self; +} - initWithUnsignedChar: (unsigned char)uchar { self = [super init]; @@ -548,10 +590,20 @@ self = [super init]; _value.ulong = ulong; _type = OF_NUMBER_ULONG; + return self; +} + +- initWithUnsignedLongLong: (unsigned long long)ulonglong +{ + self = [super init]; + + _value.ulonglong = ulonglong; + _type = OF_NUMBER_ULONGLONG; + return self; } - initWithInt8: (int8_t)int8 { @@ -810,18 +862,22 @@ return !!_value.sshort; case OF_NUMBER_INT: return !!_value.sint; case OF_NUMBER_LONG: return !!_value.slong; + case OF_NUMBER_LONGLONG: + return !!_value.slonglong; case OF_NUMBER_UCHAR: return !!_value.uchar; case OF_NUMBER_USHORT: return !!_value.ushort; case OF_NUMBER_UINT: return !!_value.uint; case OF_NUMBER_ULONG: return !!_value.ulong; + case OF_NUMBER_ULONGLONG: + return !!_value.ulonglong; case OF_NUMBER_INT8: return !!_value.int8; case OF_NUMBER_INT16: return !!_value.int16; case OF_NUMBER_INT32: @@ -877,10 +933,15 @@ - (signed long)longValue { RETURN_AS(signed long) } + +- (signed long long)longLongValue +{ + RETURN_AS(signed long long) +} - (unsigned char)unsignedCharValue { RETURN_AS(unsigned char) } @@ -897,10 +958,15 @@ - (unsigned long)unsignedLongValue { RETURN_AS(unsigned long) } + +- (unsigned long long)unsignedLongLongValue +{ + RETURN_AS(unsigned long long) +} - (int8_t)int8Value { RETURN_AS(int8_t) } @@ -1179,10 +1245,13 @@ return [OFNumber numberWithInt: _value.sint % [number intValue]]; case OF_NUMBER_LONG: return [OFNumber numberWithLong: _value.slong % [number longValue]]; + case OF_NUMBER_LONGLONG: + return [OFNumber numberWithLongLong: + _value.slonglong % [number longLongValue]]; case OF_NUMBER_UCHAR: return [OFNumber numberWithUnsignedChar: _value.uchar % [number unsignedCharValue]]; case OF_NUMBER_USHORT: return [OFNumber numberWithUnsignedShort: @@ -1191,10 +1260,13 @@ return [OFNumber numberWithUnsignedInt: _value.uint % [number unsignedIntValue]]; case OF_NUMBER_ULONG: return [OFNumber numberWithUnsignedLong: _value.ulong % [number unsignedLongValue]]; + case OF_NUMBER_ULONGLONG: + return [OFNumber numberWithUnsignedLongLong: + _value.ulonglong % [number unsignedLongLongValue]]; case OF_NUMBER_INT8: return [OFNumber numberWithInt8: _value.int8 % [number int8Value]]; case OF_NUMBER_INT16: return [OFNumber numberWithInt16: @@ -1264,10 +1336,11 @@ return (_value.bool_ ? @"YES" : @"NO"); case OF_NUMBER_UCHAR: case OF_NUMBER_USHORT: case OF_NUMBER_UINT: case OF_NUMBER_ULONG: + case OF_NUMBER_ULONGLONG: case OF_NUMBER_UINT8: case OF_NUMBER_UINT16: case OF_NUMBER_UINT32: case OF_NUMBER_UINT64: case OF_NUMBER_SIZE: @@ -1276,10 +1349,11 @@ return [OFString stringWithFormat: @"%ju", [self uIntMaxValue]]; case OF_NUMBER_CHAR: case OF_NUMBER_SHORT: case OF_NUMBER_INT: case OF_NUMBER_LONG: + case OF_NUMBER_LONGLONG: case OF_NUMBER_INT8: case OF_NUMBER_INT16: case OF_NUMBER_INT32: case OF_NUMBER_INT64: case OF_NUMBER_SSIZE: @@ -1328,10 +1402,11 @@ break; case OF_NUMBER_UCHAR: case OF_NUMBER_USHORT: case OF_NUMBER_UINT: case OF_NUMBER_ULONG: + case OF_NUMBER_ULONGLONG: case OF_NUMBER_UINT8: case OF_NUMBER_UINT16: case OF_NUMBER_UINT32: case OF_NUMBER_UINT64: case OF_NUMBER_SIZE: @@ -1342,10 +1417,11 @@ break; case OF_NUMBER_CHAR: case OF_NUMBER_SHORT: case OF_NUMBER_INT: case OF_NUMBER_LONG: + case OF_NUMBER_LONGLONG: case OF_NUMBER_INT8: case OF_NUMBER_INT16: case OF_NUMBER_INT32: case OF_NUMBER_INT64: case OF_NUMBER_SSIZE: