summaryrefslogtreecommitdiff
path: root/common/quicktime_win32/CoreFoundation/CFNumber.h
diff options
context:
space:
mode:
Diffstat (limited to 'common/quicktime_win32/CoreFoundation/CFNumber.h')
-rw-r--r--common/quicktime_win32/CoreFoundation/CFNumber.h135
1 files changed, 135 insertions, 0 deletions
diff --git a/common/quicktime_win32/CoreFoundation/CFNumber.h b/common/quicktime_win32/CoreFoundation/CFNumber.h
new file mode 100644
index 0000000..49f3c45
--- /dev/null
+++ b/common/quicktime_win32/CoreFoundation/CFNumber.h
@@ -0,0 +1,135 @@
+/* CFNumber.h
+ Copyright (c) 1999-2003, Apple, Inc. All rights reserved.
+*/
+
+#if !defined(__COREFOUNDATION_CFNUMBER__)
+#define __COREFOUNDATION_CFNUMBER__ 1
+
+#include <CoreFoundation/CFBase.h>
+
+#if defined(__cplusplus)
+extern "C" {
+#endif
+
+typedef const struct __CFBoolean * CFBooleanRef;
+
+#if TARGET_OS_WIN32
+#define kCFBooleanTrue (*((const CFBooleanRef *)QTGetCFConstant("kCFBooleanTrue")))
+#define kCFBooleanFalse (*((const CFBooleanRef *)QTGetCFConstant("kCFBooleanFalse")))
+#else
+CF_EXPORT
+const CFBooleanRef kCFBooleanTrue;
+CF_EXPORT
+const CFBooleanRef kCFBooleanFalse;
+#endif
+
+CF_EXPORT
+CFTypeID CFBooleanGetTypeID(void);
+
+CF_EXPORT
+Boolean CFBooleanGetValue(CFBooleanRef boolean);
+
+typedef enum {
+ /* 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
+} CFNumberType;
+
+typedef const struct __CFNumber * CFNumberRef;
+
+#if TARGET_OS_WIN32
+#define kCFNumberPositiveInfinity (*((const CFNumberRef *)QTGetCFConstant("kCFNumberPositiveInfinity")))
+#define kCFNumberNegativeInfinity (*((const CFNumberRef *)QTGetCFConstant("kCFNumberNegativeInfinity")))
+#define kCFNumberNaN (*((const CFNumberRef *)QTGetCFConstant("kCFNumberNaN")))
+#else
+CF_EXPORT
+const CFNumberRef kCFNumberPositiveInfinity;
+CF_EXPORT
+const CFNumberRef kCFNumberNegativeInfinity;
+CF_EXPORT
+const CFNumberRef kCFNumberNaN;
+#endif
+
+CF_EXPORT
+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 is undefined.
+*/
+CF_EXPORT
+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().
+*/
+CF_EXPORT
+CFNumberType CFNumberGetType(CFNumberRef number);
+
+/*
+ Returns the size in bytes of the type of the number.
+*/
+CF_EXPORT
+CFIndex CFNumberGetByteSize(CFNumberRef number);
+
+/*
+ Returns true if the type of the CFNumber's value is one of
+ the defined floating point types.
+*/
+CF_EXPORT
+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.
+*/
+CF_EXPORT
+Boolean CFNumberGetValue(CFNumberRef number, CFNumberType theType, 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, true is returned.)
+*/
+CF_EXPORT
+CFComparisonResult CFNumberCompare(CFNumberRef number, CFNumberRef otherNumber, void *context);
+
+#if defined(__cplusplus)
+}
+#endif
+
+#endif /* ! __COREFOUNDATION_CFNUMBER__ */
+