]> git.saurik.com Git - apple/cf.git/blobdiff - RunLoop.subproj/CFRunLoop.h
CF-476.10.tar.gz
[apple/cf.git] / RunLoop.subproj / CFRunLoop.h
diff --git a/RunLoop.subproj/CFRunLoop.h b/RunLoop.subproj/CFRunLoop.h
deleted file mode 100644 (file)
index 1b5a132..0000000
+++ /dev/null
@@ -1,435 +0,0 @@
-/*
- * Copyright (c) 2005 Apple Computer, 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-2005, Apple, Inc. All rights reserved.
-*/
-
-/*!
-       @header CFRunLoop
-       CFRunLoops monitor sources of input to a task and dispatch control
-       when sources become ready for processing. Examples of input sources
-       might include user input devices, network connections, periodic
-       or time-delayed events, and asynchronous callbacks. Input sources
-       are registered with a run loop, and when a run loop is "run",
-       callback functions associated with each source are called when
-       the sources have some activity.
-
-       There is one run loop per thread. Each run loop has different
-       sets of input sources, called modes, which are named with strings.
-       A run loop is run -- in a named mode -- to have it monitor the
-       sources that have been registered in that mode, and the run loop
-       blocks there until something happens. Examples of modes include
-       the default mode, which a process would normally spend most of
-       its time in, and a modal panel mode, which might be run when
-       a modal panel is up, to restrict the set of input sources that
-       are allowed to "fire". This is not to the granularity of, for
-       example, what type of user input events are interesting, however.
-       That sort of finer-grained granularity is given by UI-level
-       frameworks with "get next event matching mask" or similar
-       functionality.
-
-       The CFRunLoopSource type is an abstraction of input sources that
-       can be put in a run loop. An input source type would normally
-       define an API for creating and operating on instances of the type,
-       as if it were a separate entity from the run loop, then provide a
-       function to create a CFRunLoopSource for an instance. The
-       CFRunLoopSource can then be registered with the run loop,
-       represents the input source to the run loop, and acts as
-       intermediary between the run loop and the actual input source
-       type instance. Examples include CFMachPort and CFSocket.
-
-       A CFRunLoopTimer is a specialization of run loop sources, a way
-       to generate either a one-shot delayed action, or a recurrent
-       action.
-
-       While being run, a run loop goes through a cycle of activities.
-       Input sources are checked, timers which need firing are fired,
-       and then the run loop blocks, waiting for something to happen 
-       (or in the case of timers, waiting for it to be time for
-       something to happen). When something does happen, the run loop
-       wakes up, processes the activity (usually by calling a callback
-       function for an input source), checks other sources, fires timers,
-       and goes back to sleep. And so on. CFRunLoopObservers can be
-       used to do processing at special points in this cycle.
-
-
-
-
-*/
-
-#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
-
-#if defined(__cplusplus)
-extern "C" {
-#endif
-
-/*!
-       @typedef CFRunLoopRef
-       This is the type of a reference to a run loop.
-*/
-typedef struct __CFRunLoop * CFRunLoopRef;
-
-/*!
-       @typedef CFRunLoopSourceRef
-       This is the type of a reference to general run loop input sources.
-*/
-typedef struct __CFRunLoopSource * CFRunLoopSourceRef;
-
-/*!
-       @typedef CFRunLoopObserverRef
-       This is the type of a reference to a run loop observer.
-*/
-typedef struct __CFRunLoopObserver * CFRunLoopObserverRef;
-
-/*!
-       @typedef CFRunLoopTimerRef
-       This is the type of a reference to a run loop timer.
-*/
-typedef struct __CFRunLoopTimer * CFRunLoopTimerRef;
-
-/* Reasons for CFRunLoopRunInMode() to Return */
-enum {
-    kCFRunLoopRunFinished = 1,
-    kCFRunLoopRunStopped = 2,
-    kCFRunLoopRunTimedOut = 3,
-    kCFRunLoopRunHandledSource = 4
-};
-
-/* Run Loop Observer Activities */
-typedef enum {
-    kCFRunLoopEntry = (1 << 0),
-    kCFRunLoopBeforeTimers = (1 << 1),
-    kCFRunLoopBeforeSources = (1 << 2),
-    kCFRunLoopBeforeWaiting = (1 << 5),
-    kCFRunLoopAfterWaiting = (1 << 6),
-    kCFRunLoopExit = (1 << 7),
-    kCFRunLoopAllActivities = 0x0FFFFFFFU
-} CFRunLoopActivity;
-
-CF_EXPORT const CFStringRef kCFRunLoopDefaultMode;
-CF_EXPORT const CFStringRef kCFRunLoopCommonModes;
-
-/*!
-       @function CFRunLoopGetTypeID
-       Returns the type identifier of all CFRunLoop instances.
-*/
-CF_EXPORT CFTypeID CFRunLoopGetTypeID(void);
-
-/*!
-       @function CFRunLoopGetCurrent
-       Returns the run loop for the current thread. There is exactly
-       one run loop per thread.
-*/
-CF_EXPORT CFRunLoopRef CFRunLoopGetCurrent(void);
-
-/*!
-       @function CFRunLoopCopyCurrentMode
-       Returns the name of the mode in which the run loop is running.
-       NULL is returned if the run loop is not running.
-       @param rl The run loop for which the current mode should be
-               reported.
-*/
-CF_EXPORT CFStringRef CFRunLoopCopyCurrentMode(CFRunLoopRef rl);
-
-/*!
-       @function CFRunLoopCopyAllModes
-       Returns an array of all the names of the modes known to the run
-       loop.
-       @param rl The run loop for which the mode list should be returned.
-*/
-CF_EXPORT CFArrayRef CFRunLoopCopyAllModes(CFRunLoopRef rl);
-
-/*!
-       @function CFRunLoopAddCommonMode
-       Makes the named mode a "common mode" for the run loop. The set of
-       common modes are collectively accessed with the global constant
-       kCFRunLoopCommonModes. Input sources previously added to the
-       common modes are added to the new common mode.
-       @param rl The run loop for which the mode should be made common.
-       @param mode The name of the mode to mark as a common mode.
-*/
-CF_EXPORT void CFRunLoopAddCommonMode(CFRunLoopRef rl, CFStringRef mode);
-
-/*!
-       @function CFRunLoopGetNextTimerFireDate
-       Returns the time at which the next timer will fire.
-       @param rl The run loop for which the next timer fire date should
-               be reported.
-       @param mode The name of the mode to query.
-*/
-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 CFRunLoopSourceContext
-       Structure containing the callbacks of a CFRunLoopSource.
-       @field version The version number of the structure type being
-               passed in as a parameter to the CFArray creation
-               functions. Valid version numbers are currently 0 and 1.
-               Version 0 sources are fairly generic, but may require a
-               bit more implementation, or may require a separate
-               thread as part of the implementation, for a complex
-               source. Version 1 sources are available on Mach and Windows,
-               and have performance advantages when the source type can
-               be described with this style.
-       @field info An arbitrary pointer to client-defined data, which
-               can be associated with the source at creation time, and
-               is passed to the callbacks.
-       @field retain The callback used to add a retain for the source on
-               the info pointer for the life of the source, and may be
-               used for temporary references the source needs to take.
-               This callback returns the actual info pointer to store in
-               the source, almost always just the pointer passed as the
-               parameter.
-       @field release The callback used to remove a retain previously
-               added for the source on the info pointer. 
-       @field copyDescription The callback used to create a descriptive
-               string representation of the info pointer (or the data
-               pointed to by the info pointer) for debugging purposes.
-               This is used by the CFCopyDescription() function.
-       @field equal The callback used to compare the info pointers of
-               two sources, to determine equality of sources.
-       @field hash The callback used to compute a hash code for the info
-               pointer for the source. The source uses this hash code
-               information to produce its own hash code.
-       @field schedule For a version 0 source, this callback is called
-               whenever the source is added to a run loop mode. This
-               information is often needed to implement complex sources.
-       @field cancel For a version 0 source, this callback is called
-               whenever the source is removed from a run loop mode. This
-               information is often needed to implement complex sources.
-       @field getPort Defined in version 1 sources, this function returns
-               the Mach port or Windows HANDLE of a kernel object to
-               represent the source to the run loop.  This function
-               must return the same result every time it is called, for the
-                lifetime of the source, and should be quick.
-       @field perform This callback is the workhorse of a run loop source.
-               It is called when the source needs to be "handled" or
-               processing is needed for input or conditions relating to
-               the source. For version 0 sources, this function is called
-               when the source has been marked "signaled" with the
-               CFRunLoopSourceSignal() function, and should do whatever
-               handling is required for the source. For a version 1 source
-               on Mach, this function is called when a Mach message arrives
-               on the source's Mach port, with the message, its
-               length, an allocator, and the source's info pointer. A
-               version 1 source performs whatever processing is required
-               on the Mach message, then can return a pointer to a Mach
-               message (or NULL if none) to be sent (usually this is a
-               "reply" message), which should be allocated with the
-               allocator (and will be deallocated by the run loop after
-               sending).  For a version 1 source on Windows the function
-               is called when the kernel object is in the signaled state.
-*/
-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;
-
-/*!
-       @function CFRunLoopSourceGetTypeID
-       Returns the type identifier of all CFRunLoopSource instances.
-*/
-CF_EXPORT CFTypeID CFRunLoopSourceGetTypeID(void);
-
-/*!
-       @function CFRunLoopSourceCreate
-       Creates a new run loop source with the given context.
-       @param allocator The CFAllocator which should be used to allocate
-               memory for the array and its storage for values. If this
-               reference is not a valid CFAllocator, the behavior is
-               undefined.
-       @param order On platforms which support it, for source versions
-               which support it, this parameter determines the order in
-               which the sources which are ready to be processed are
-               handled. A lower order number causes processing before
-               higher order number sources. It is inadvisable to depend
-               on the order number for any architectural or design aspect
-               of code. In the absence of any reason to do otherwise,
-               zero should be used.
-       @param context A pointer to the context structure for the source.
-*/
-CF_EXPORT CFRunLoopSourceRef CFRunLoopSourceCreate(CFAllocatorRef allocator, CFIndex order, CFRunLoopSourceContext *context);
-
-/*!
-       @function CFRunLoopSourceGetOrder
-       Returns the ordering parameter of the run loop source.
-       @param source The run loop source for which the order number
-               should be returned.
-*/
-CF_EXPORT CFIndex CFRunLoopSourceGetOrder(CFRunLoopSourceRef source);
-
-/*!
-       @function CFRunLoopSourceInvalidate
-       Invalidates the run loop source. The run loop source is never
-       performed again after it becomes invalid, and will automatically
-       be removed from any run loops and modes which contain it. The
-       source is not destroyed by this operation, however -- the memory
-       is still valid; only the release of all references on the source
-       through the reference counting system can do that. But note, that
-       if the only retains on the source were held by run loops, those
-       retains may all be released by the time this function returns,
-       and the source may actually be destroyed through that process.
-       @param source The run loop source which should be invalidated.
-*/
-CF_EXPORT void CFRunLoopSourceInvalidate(CFRunLoopSourceRef source);
-
-/*!
-       @function CFRunLoopSourceIsValid
-       Reports whether or not the source is valid.
-       @param source The run loop source for which the validity should
-               be returned.
-*/
-CF_EXPORT Boolean CFRunLoopSourceIsValid(CFRunLoopSourceRef source);
-
-/*!
-       @function CFRunLoopSourceGetContext
-       Fills the memory pointed to by the context parameter with the
-       context structure of the source.
-       @param source The run loop source for which the context structure
-               should be returned.
-       @param context A pointer to a context structure to be filled.
-*/
-CF_EXPORT void CFRunLoopSourceGetContext(CFRunLoopSourceRef source, CFRunLoopSourceContext *context);
-
-/*!
-       @function CFRunLoopSourceSignal
-       Marks the source as signalled, ready for handling by the run loop.
-       Has no effect on version 1 sources, which are automatically
-       handled when Mach messages for them come in.
-       @param source The run loop source which should be signalled.
-*/
-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);
-
-/*!
-       @function CFRunLoopObserverGetTypeID
-       Returns the type identifier of all CFRunLoopObserver instances.
-*/
-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);
-
-/*!
-       @function CFRunLoopTimerGetTypeID
-       Returns the type identifier of all CFRunLoopTimer instances.
-*/
-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);
-
-#if defined(__cplusplus)
-}
-#endif
-
-#endif /* ! __COREFOUNDATION_CFRUNLOOP__ */
-