]> git.saurik.com Git - apple/cf.git/blobdiff - CFRunLoop.h
CF-476.10.tar.gz
[apple/cf.git] / CFRunLoop.h
diff --git a/CFRunLoop.h b/CFRunLoop.h
new file mode 100644 (file)
index 0000000..1a96c69
--- /dev/null
@@ -0,0 +1,188 @@
+/*
+ * Copyright (c) 2008 Apple Inc. All rights reserved.
+ *
+ * @APPLE_LICENSE_HEADER_START@
+ * 
+ * This file contains Original Code and/or Modifications of Original Code
+ * as defined in and that are subject to the Apple Public Source License
+ * Version 2.0 (the 'License'). You may not use this file except in
+ * compliance with the License. Please obtain a copy of the License at
+ * http://www.opensource.apple.com/apsl/ and read it before using this
+ * file.
+ * 
+ * The Original Code and all software distributed under the License are
+ * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
+ * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
+ * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
+ * Please see the License for the specific language governing rights and
+ * limitations under the License.
+ * 
+ * @APPLE_LICENSE_HEADER_END@
+ */
+/*     CFRunLoop.h
+       Copyright (c) 1998-2007, Apple Inc. All rights reserved.
+*/
+
+#if !defined(__COREFOUNDATION_CFRUNLOOP__)
+#define __COREFOUNDATION_CFRUNLOOP__ 1
+
+#include <CoreFoundation/CFBase.h>
+#include <CoreFoundation/CFArray.h>
+#include <CoreFoundation/CFDate.h>
+#include <CoreFoundation/CFString.h>
+#if defined(__MACH__)
+    #include <mach/port.h>
+#endif
+
+CF_EXTERN_C_BEGIN
+
+typedef struct __CFRunLoop * CFRunLoopRef;
+
+typedef struct __CFRunLoopSource * CFRunLoopSourceRef;
+
+typedef struct __CFRunLoopObserver * CFRunLoopObserverRef;
+
+typedef struct __CFRunLoopTimer * CFRunLoopTimerRef;
+
+/* Reasons for CFRunLoopRunInMode() to Return */
+enum {
+    kCFRunLoopRunFinished = 1,
+    kCFRunLoopRunStopped = 2,
+    kCFRunLoopRunTimedOut = 3,
+    kCFRunLoopRunHandledSource = 4
+};
+
+/* Run Loop Observer Activities */
+enum {
+    kCFRunLoopEntry = (1 << 0),
+    kCFRunLoopBeforeTimers = (1 << 1),
+    kCFRunLoopBeforeSources = (1 << 2),
+    kCFRunLoopBeforeWaiting = (1 << 5),
+    kCFRunLoopAfterWaiting = (1 << 6),
+    kCFRunLoopExit = (1 << 7),
+    kCFRunLoopAllActivities = 0x0FFFFFFFU
+};
+typedef CFOptionFlags CFRunLoopActivity;
+
+CF_EXPORT const CFStringRef kCFRunLoopDefaultMode;
+CF_EXPORT const CFStringRef kCFRunLoopCommonModes;
+
+CF_EXPORT CFTypeID CFRunLoopGetTypeID(void);
+
+CF_EXPORT CFRunLoopRef CFRunLoopGetCurrent(void);
+CF_EXPORT CFRunLoopRef CFRunLoopGetMain(void) AVAILABLE_MAC_OS_X_VERSION_10_1_AND_LATER;
+
+CF_EXPORT CFStringRef CFRunLoopCopyCurrentMode(CFRunLoopRef rl);
+
+CF_EXPORT CFArrayRef CFRunLoopCopyAllModes(CFRunLoopRef rl);
+
+CF_EXPORT void CFRunLoopAddCommonMode(CFRunLoopRef rl, CFStringRef mode);
+
+CF_EXPORT CFAbsoluteTime CFRunLoopGetNextTimerFireDate(CFRunLoopRef rl, CFStringRef mode);
+
+CF_EXPORT void CFRunLoopRun(void);
+CF_EXPORT SInt32 CFRunLoopRunInMode(CFStringRef mode, CFTimeInterval seconds, Boolean returnAfterSourceHandled);
+CF_EXPORT Boolean CFRunLoopIsWaiting(CFRunLoopRef rl);
+CF_EXPORT void CFRunLoopWakeUp(CFRunLoopRef rl);
+CF_EXPORT void CFRunLoopStop(CFRunLoopRef rl);
+
+CF_EXPORT Boolean CFRunLoopContainsSource(CFRunLoopRef rl, CFRunLoopSourceRef source, CFStringRef mode);
+CF_EXPORT void CFRunLoopAddSource(CFRunLoopRef rl, CFRunLoopSourceRef source, CFStringRef mode);
+CF_EXPORT void CFRunLoopRemoveSource(CFRunLoopRef rl, CFRunLoopSourceRef source, CFStringRef mode);
+
+CF_EXPORT Boolean CFRunLoopContainsObserver(CFRunLoopRef rl, CFRunLoopObserverRef observer, CFStringRef mode);
+CF_EXPORT void CFRunLoopAddObserver(CFRunLoopRef rl, CFRunLoopObserverRef observer, CFStringRef mode);
+CF_EXPORT void CFRunLoopRemoveObserver(CFRunLoopRef rl, CFRunLoopObserverRef observer, CFStringRef mode);
+
+CF_EXPORT Boolean CFRunLoopContainsTimer(CFRunLoopRef rl, CFRunLoopTimerRef timer, CFStringRef mode);
+CF_EXPORT void CFRunLoopAddTimer(CFRunLoopRef rl, CFRunLoopTimerRef timer, CFStringRef mode);
+CF_EXPORT void CFRunLoopRemoveTimer(CFRunLoopRef rl, CFRunLoopTimerRef timer, CFStringRef mode);
+
+typedef struct {
+    CFIndex    version;
+    void *     info;
+    const void *(*retain)(const void *info);
+    void       (*release)(const void *info);
+    CFStringRef        (*copyDescription)(const void *info);
+    Boolean    (*equal)(const void *info1, const void *info2);
+    CFHashCode (*hash)(const void *info);
+    void       (*schedule)(void *info, CFRunLoopRef rl, CFStringRef mode);
+    void       (*cancel)(void *info, CFRunLoopRef rl, CFStringRef mode);
+    void       (*perform)(void *info);
+} CFRunLoopSourceContext;
+
+typedef struct {
+    CFIndex    version;
+    void *     info;
+    const void *(*retain)(const void *info);
+    void       (*release)(const void *info);
+    CFStringRef        (*copyDescription)(const void *info);
+    Boolean    (*equal)(const void *info1, const void *info2);
+    CFHashCode (*hash)(const void *info);
+#if defined(__MACH__)
+    mach_port_t        (*getPort)(void *info);
+    void *     (*perform)(void *msg, CFIndex size, CFAllocatorRef allocator, void *info);
+#else
+    HANDLE     (*getPort)(void *info);
+    void       (*perform)(void *info);
+#endif
+} CFRunLoopSourceContext1;
+
+CF_EXPORT CFTypeID CFRunLoopSourceGetTypeID(void);
+
+CF_EXPORT CFRunLoopSourceRef CFRunLoopSourceCreate(CFAllocatorRef allocator, CFIndex order, CFRunLoopSourceContext *context);
+
+CF_EXPORT CFIndex CFRunLoopSourceGetOrder(CFRunLoopSourceRef source);
+CF_EXPORT void CFRunLoopSourceInvalidate(CFRunLoopSourceRef source);
+CF_EXPORT Boolean CFRunLoopSourceIsValid(CFRunLoopSourceRef source);
+CF_EXPORT void CFRunLoopSourceGetContext(CFRunLoopSourceRef source, CFRunLoopSourceContext *context);
+CF_EXPORT void CFRunLoopSourceSignal(CFRunLoopSourceRef source);
+
+typedef struct {
+    CFIndex    version;
+    void *     info;
+    const void *(*retain)(const void *info);
+    void       (*release)(const void *info);
+    CFStringRef        (*copyDescription)(const void *info);
+} CFRunLoopObserverContext;
+
+typedef void (*CFRunLoopObserverCallBack)(CFRunLoopObserverRef observer, CFRunLoopActivity activity, void *info);
+
+CF_EXPORT CFTypeID CFRunLoopObserverGetTypeID(void);
+
+CF_EXPORT CFRunLoopObserverRef CFRunLoopObserverCreate(CFAllocatorRef allocator, CFOptionFlags activities, Boolean repeats, CFIndex order, CFRunLoopObserverCallBack callout, CFRunLoopObserverContext *context);
+
+CF_EXPORT CFOptionFlags CFRunLoopObserverGetActivities(CFRunLoopObserverRef observer);
+CF_EXPORT Boolean CFRunLoopObserverDoesRepeat(CFRunLoopObserverRef observer);
+CF_EXPORT CFIndex CFRunLoopObserverGetOrder(CFRunLoopObserverRef observer);
+CF_EXPORT void CFRunLoopObserverInvalidate(CFRunLoopObserverRef observer);
+CF_EXPORT Boolean CFRunLoopObserverIsValid(CFRunLoopObserverRef observer);
+CF_EXPORT void CFRunLoopObserverGetContext(CFRunLoopObserverRef observer, CFRunLoopObserverContext *context);
+
+typedef struct {
+    CFIndex    version;
+    void *     info;
+    const void *(*retain)(const void *info);
+    void       (*release)(const void *info);
+    CFStringRef        (*copyDescription)(const void *info);
+} CFRunLoopTimerContext;
+
+typedef void (*CFRunLoopTimerCallBack)(CFRunLoopTimerRef timer, void *info);
+
+CF_EXPORT CFTypeID CFRunLoopTimerGetTypeID(void);
+
+CF_EXPORT CFRunLoopTimerRef CFRunLoopTimerCreate(CFAllocatorRef allocator, CFAbsoluteTime fireDate, CFTimeInterval interval, CFOptionFlags flags, CFIndex order, CFRunLoopTimerCallBack callout, CFRunLoopTimerContext *context);
+CF_EXPORT CFAbsoluteTime CFRunLoopTimerGetNextFireDate(CFRunLoopTimerRef timer);
+CF_EXPORT void CFRunLoopTimerSetNextFireDate(CFRunLoopTimerRef timer, CFAbsoluteTime fireDate);
+CF_EXPORT CFTimeInterval CFRunLoopTimerGetInterval(CFRunLoopTimerRef timer);
+CF_EXPORT Boolean CFRunLoopTimerDoesRepeat(CFRunLoopTimerRef timer);
+CF_EXPORT CFIndex CFRunLoopTimerGetOrder(CFRunLoopTimerRef timer);
+CF_EXPORT void CFRunLoopTimerInvalidate(CFRunLoopTimerRef timer);
+CF_EXPORT Boolean CFRunLoopTimerIsValid(CFRunLoopTimerRef timer);
+CF_EXPORT void CFRunLoopTimerGetContext(CFRunLoopTimerRef timer, CFRunLoopTimerContext *context);
+
+CF_EXTERN_C_END
+
+#endif /* ! __COREFOUNDATION_CFRUNLOOP__ */
+