Utility Services provides the function
CFNumberCreate
to convert C numerical values into CFNumber objects, the form that is required to use numbers in property lists. See the chapter Core Foundation Property List Services for information about including objects in property lists.
Listing 1-10 shows how to create a CFNumber object from a 16-bit integer and then get information about the CFNumber object.
Int16 int16val = 276; CFNumberRef aCFNumber; CFNumberType type; Int32 size; CFComparisonResult result; // Make a CFNumber from a 16-bit integer. aCFNumber = CFNumberCreate(kCFAllocatorDefault, kCFNumberSInt16Type, &sint16val); // Find out what type is being used by this CFNumber. type = CFNumberGetType(aCFNumber); // Now find out the size in bytes. size = CFNumberGetByteSize(aCFNumber); // Get the value back from the CFNumber. status = CFNumberGetValue(aCFNumber, kCFNumberSInt16Type, &sint16val);
Listing 1-11 creates another CFNumber object and compares is with the one created in Listing 1-10.
// Make a new CFNumber. sint16val = 382; anotherCFNumber = CFNumberCreate(kCFAllocatorDefault, kCFNumberSInt16Type, &sint16val); // Compare two CFNumber objects. result = CFNumberCompare(aCFNumber, anotherCFNumber, NULL); switch (result) { case kCFCompareLessThan: printf("aCFNumber is less than anotherCFNumber!\n"); break; case kCFCompareEqualTo: printf("aCFNumber is equal to anotherCFNumber!\n"); break; case kCFCompareGreaterThan: printf("aCFNumber is greater than anotherCFNumber!\n"); break;