| /* |
| * Copyright (c) 2008-2009 Brent Fulgham <bfulgham@gmail.org>. All rights reserved. |
| * |
| * This source code is a modified version of the CoreFoundation sources released by Apple Inc. under |
| * the terms of the APSL version 2.0 (see below). |
| * |
| * For information about changes from the original Apple source release can be found by reviewing the |
| * source control system for the project at https://sourceforge.net/svn/?group_id=246198. |
| * |
| * The original license information is as follows: |
| * |
| * 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> |
| #elif DEPLOYMENT_TARGET_LINUX |
| #include <semaphore.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); |
| #elif DEPLOYMENT_TARGET_LINUX |
| sem_t * (*getPort)(void *info); |
| void (*perform)(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__ */ |
| |