topical media & game development
lib-of-vs-libs-QTDevWin-CIncludes-CFNumber.h / h
/*
File: CFNumber.h
Contains: CoreFoundation numbers
Version: Technology: Mac OS X
Release: QuickTime 6.0.2
Copyright: (c) 1999-2001 by Apple Computer, Inc., all rights reserved
Bugs?: For bug reports, consult the following page on
the World Wide Web:
http://developer.apple.com/bugreporter/
*/
ifndef __CFNUMBER__
define __CFNUMBER__
ifndef __CFBASE__
include <CFBase.h>
endif
if PRAGMA_ONCE
#pragma once
endif
ifdef __cplusplus
extern "C" {
endif
if PRAGMA_IMPORT
#pragma import on
endif
if PRAGMA_STRUCT_ALIGN
#pragma options align=mac68k
#elif PRAGMA_STRUCT_PACKPUSH
#pragma pack(push, 2)
#elif PRAGMA_STRUCT_PACK
#pragma pack(2)
endif
if PRAGMA_ENUM_ALWAYSINT
#if defined(__fourbyteints__) && !__fourbyteints__
#define __CFNUMBER__RESTORE_TWOBYTEINTS
#pragma fourbyteints on
#endif
#pragma enumsalwaysint on
#elif PRAGMA_ENUM_OPTIONS
#pragma option enum=int
#elif PRAGMA_ENUM_PACK
#if __option(pack_enums)
#define __CFNUMBER__RESTORE_PACKED_ENUMS
#pragma options(!pack_enums)
#endif
endif
typedef const struct __CFBoolean * CFBooleanRef;
extern const CFBooleanRef kCFBooleanTrue;
extern const CFBooleanRef kCFBooleanFalse;
EXTERN_API_C( CFTypeID )
CFBooleanGetTypeID (void);
/* Returns the value of the given CFBoolean instance. */
EXTERN_API_C( Boolean )
CFBooleanGetValue (CFBooleanRef boolean);
enum CFNumberType {
/* Types from MacTypes.h */
kCFNumberSInt8Type = 1,
kCFNumberSInt16Type = 2,
kCFNumberSInt32Type = 3,
kCFNumberSInt64Type = 4,
kCFNumberFloat32Type = 5,
kCFNumberFloat64Type = 6, /* 64-bit IEEE 754 */
/* Basic C types */
kCFNumberCharType = 7,
kCFNumberShortType = 8,
kCFNumberIntType = 9,
kCFNumberLongType = 10,
kCFNumberLongLongType = 11,
kCFNumberFloatType = 12,
kCFNumberDoubleType = 13, /* Other */
kCFNumberCFIndexType = 14,
kCFNumberMaxType = 14
};
typedef enum CFNumberType CFNumberType;
typedef const struct __CFNumber * CFNumberRef;
extern const CFNumberRef kCFNumberPositiveInfinity;
extern const CFNumberRef kCFNumberNegativeInfinity;
extern const CFNumberRef kCFNumberNaN;
EXTERN_API_C( CFTypeID )
CFNumberGetTypeID (void);
/* Creates a CFNumber with the given value. The type of number pointed
to by the valuePtr is specified by type. If type is a floating point
type and the value represents one of the infinities or NaN, the
well-defined CFNumber for that value is returned. If either of valuePtr
or type is an invalid value, the result it undefined. */
EXTERN_API_C( CFNumberRef )
CFNumberCreate (CFAllocatorRef allocator,
CFNumberType theType,
const void * valuePtr);
/* Returns the storage format of the CFNumber's value. Note that
this is not necessarily the type provided in CFNumberCreate(). */
EXTERN_API_C( CFNumberType )
CFNumberGetType (CFNumberRef number);
/* Returns the size in bytes of the type of the number. */
EXTERN_API_C( CFIndex )
CFNumberGetByteSize (CFNumberRef number);
/* Returns TRUE if the type of the CFNumber's value is one of the defined floating point types. */
EXTERN_API_C( Boolean )
CFNumberIsFloatType (CFNumberRef number);
/* Copies the CFNumber's value into the space pointed to by
valuePtr, as the specified type. If conversion needs to take
place, the conversion rules follow human expectation and not
C's promotion and truncation rules. If the conversion is
lossy, or the value is out of range, FALSE is returned. Best
attempt at conversion will still be in *valuePtr. */
EXTERN_API_C( Boolean )
CFNumberGetValue (CFNumberRef number,
CFNumberType numType,
void * valuePtr);
/* Compares the two CFNumber instances. If conversion of the
types of the values is needed, the conversion and comparison
follow human expectations and not C's promotion and comparison
rules. Negative zero compares less than positive zero.
Positive infinity compares greater than everything except
itself, to which it compares equal. Negative infinity compares
less than everything except itself, to which it compares equal.
Unlike standard practice, if both numbers are NaN, then they
compare equal; if only one of the numbers is NaN, then the NaN
compares greater than the other number if it is negative, and
smaller than the other number if it is positive. [Note that in
CFEqual() with two CFNumbers, if either or both of the numbers
is NaN, FALSE is returned.] */
EXTERN_API_C( CFComparisonResult )
CFNumberCompare (CFNumberRef number,
CFNumberRef otherNumber,
void * context);
if PRAGMA_ENUM_ALWAYSINT
#pragma enumsalwaysint reset
#ifdef __CFNUMBER__RESTORE_TWOBYTEINTS
#pragma fourbyteints off
#endif
#elif PRAGMA_ENUM_OPTIONS
#pragma option enum=reset
#elif defined(__CFNUMBER__RESTORE_PACKED_ENUMS)
#pragma options(pack_enums)
endif
if PRAGMA_STRUCT_ALIGN
#pragma options align=reset
#elif PRAGMA_STRUCT_PACKPUSH
#pragma pack(pop)
#elif PRAGMA_STRUCT_PACK
#pragma pack()
endif
ifdef PRAGMA_IMPORT_OFF
#pragma import off
#elif PRAGMA_IMPORT
#pragma import reset
endif
ifdef __cplusplus
}
endif
endif /* __CFNUMBER__ */
(C) Æliens
04/09/2009
You may not copy or print any of this material without explicit permission of the author or the publisher.
In case of other copyright issues, contact the author.