diff options
author | gtm.daemon <gtm.daemon@7dc7ac4e-7543-0410-b95c-c1676fc8e2a3> | 2009-09-08 17:45:23 +0000 |
---|---|---|
committer | gtm.daemon <gtm.daemon@7dc7ac4e-7543-0410-b95c-c1676fc8e2a3> | 2009-09-08 17:45:23 +0000 |
commit | 29229aa01d4ef56f614636a7bf0a73403304d994 (patch) | |
tree | 1a452deedec4e2b0102d8fa5ed2d9462fd3f5a5d /Foundation/GTMNSNumber+64Bit.m | |
parent | db82cd9ae80c2428fc2cf93b46c21b6360b37f0b (diff) |
[Author: dmaclach]
Adds CGFloat support to NSNumber
R=thomasvl
DELTA=219 (217 added, 0 deleted, 2 changed)
Diffstat (limited to 'Foundation/GTMNSNumber+64Bit.m')
-rw-r--r-- | Foundation/GTMNSNumber+64Bit.m | 98 |
1 files changed, 98 insertions, 0 deletions
diff --git a/Foundation/GTMNSNumber+64Bit.m b/Foundation/GTMNSNumber+64Bit.m new file mode 100644 index 0000000..49d5c4d --- /dev/null +++ b/Foundation/GTMNSNumber+64Bit.m @@ -0,0 +1,98 @@ +// +// GTMNSNumber+64Bit.m +// +// Copyright 2009 Google Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); you may not +// use this file except in compliance with the License. You may obtain a copy +// of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the +// License for the specific language governing permissions and limitations under +// the License. +// + +#import "GTMNSNumber+64Bit.h" + +@implementation NSNumber (GTM64BitAdditions) ++ (NSNumber *)gtm_numberWithCGFloat:(CGFloat)value { + return [[[[self class] alloc] gtm_initWithCGFloat:value] autorelease]; +} + ++ (NSNumber *)gtm_numberWithInteger:(NSInteger)value { + return [[[[self class] alloc] gtm_initWithInteger:value] autorelease]; +} + ++ (NSNumber *)gtm_numberWithUnsignedInteger:(NSUInteger)value { + return [[[[self class] alloc] gtm_initWithUnsignedInteger:value] autorelease]; +} + +#if MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_5 + +- (id)gtm_initWithCGFloat:(CGFloat)value { + CFNumberRef numberRef = CFNumberCreate(NULL, kCFNumberCGFloatType, &value); + return NSMakeCollectable(numberRef); +} + +- (CGFloat)gtm_cgFloatValue { + CGFloat value = 0; + CFNumberGetValue((CFNumberRef)self, kCFNumberCGFloatType, &value); + return value; +} + +- (id)gtm_initWithInteger:(NSInteger)value { + return [self initWithInteger:value]; +} + +- (NSInteger)gtm_integerValue { + return [self integerValue]; +} + +- (id)gtm_initWithUnsignedInteger:(NSUInteger)value { + return [self initWithUnsignedInteger:value]; +} + +- (NSUInteger)gtm_unsignedIntegerValue { + return [self unsignedIntegerValue]; +} + +#else // MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_5 + +- (id)gtm_initWithCGFloat:(CGFloat)value { +#if defined(__LP64__) && __LP64__ + return [self initWithDouble:value]; +#else + return [self initWithFloat:value]; +#endif // defined(__LP64__) && __LP64__ +} + +- (CGFloat)gtm_cgFloatValue { +#if defined(__LP64__) && __LP64__ + return [self doubleValue]; +#else + return [self floatValue]; +#endif // defined(__LP64__) && __LP64__ +} + +- (id)gtm_initWithInteger:(NSInteger)value { + return [self initWithLong:value]; +} + +- (NSInteger)gtm_integerValue { + return [self longValue]; +} + +- (id)gtm_initWithUnsignedInteger:(NSUInteger)value { + return [self initWithUnsignedLong:value]; +} + +- (NSUInteger)gtm_unsignedIntegerValue { + return [self unsignedLongValue]; +} + +#endif // MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_5 +@end |