aboutsummaryrefslogtreecommitdiff
path: root/Foundation/GTMNSNumber+64Bit.m
diff options
context:
space:
mode:
authorGravatar gtm.daemon <gtm.daemon@7dc7ac4e-7543-0410-b95c-c1676fc8e2a3>2009-09-08 17:45:23 +0000
committerGravatar gtm.daemon <gtm.daemon@7dc7ac4e-7543-0410-b95c-c1676fc8e2a3>2009-09-08 17:45:23 +0000
commit29229aa01d4ef56f614636a7bf0a73403304d994 (patch)
tree1a452deedec4e2b0102d8fa5ed2d9462fd3f5a5d /Foundation/GTMNSNumber+64Bit.m
parentdb82cd9ae80c2428fc2cf93b46c21b6360b37f0b (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.m98
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