Using Numbers in Property Lists

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.

Listing 1-10 Creating a CFNumber object from an integer

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.

Listing 1-11 Comparing two CFNumber objects

// 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;

© 2000 Apple Computer, Inc. (Last Updated 04 April 00)