Oolite 1.91.0.7644-241112-7f5034b
Loading...
Searching...
No Matches
NSNumber(OOExtensions) Category Reference

#include <NSNumberOOExtensions.h>

Instance Methods

(BOOL) - oo_isFloatingPointNumber
 
(BOOL) - oo_isBoolean
 

Detailed Description

Definition at line 33 of file NSNumberOOExtensions.h.

Method Documentation

◆ oo_isBoolean

- (BOOL) oo_isBoolean

Definition at line 1 of file NSNumberOOExtensions.m.

50{
51 /* There's no explicit way to test this. However, on Mac OS X boolean
52 NSNumbers are required to be constant objects because they're toll-
53 free bridged with kCFBooleanTrue and kCFBooleanFalse, so comparison to
54 those values has to work.
55
56 In GNUstep, constant objects are also used, because they're not about
57 to miss such an obvious optimization.
58 */
59
60#if __COREFOUNDATION_CFNUMBER__
61 return self == (NSNumber *)kCFBooleanTrue || self == (NSNumber *)kCFBooleanFalse;
62#else
63 static NSNumber *sTrue = nil, *sFalse;
64 if (EXPECT_NOT(sTrue == nil))
65 {
66 sTrue = [[NSNumber numberWithBool:YES] retain];
67 sFalse = [[NSNumber numberWithBool:NO] retain];
68 }
69 return self == sTrue || self == sFalse;
70#endif
71}
#define EXPECT_NOT(x)
return nil

◆ oo_isFloatingPointNumber

- (BOOL) oo_isFloatingPointNumber

Definition at line 1 of file NSNumberOOExtensions.m.

35{
36#if __COREFOUNDATION_CFNUMBER__
37 return CFNumberIsFloatType((CFNumberRef)self);
38#else
39 /* This happily assumes the compiler will inline strcmp() where one
40 argument is a single-character constant string. Verified under
41 apple-gcc 4.0 (even with -O0).
42 */
43 const char *type = [self objCType];
44 return (strcmp(type, @encode(double)) == 0 || strcmp(type, @encode(float)) == 0);
45#endif
46}

The documentation for this category was generated from the following files: