GNUstep CoreBase Library 0.2
CFRunLoop.h
1/* CFRunLoop.h
2
3 Copyright (C) 2012 Free Software Foundation, Inc.
4
5 Author: Stefan Bidigaray <stefanbidi@gmail.com>
6 Date: August, 2012
7
8 This file is part of the GNUstep CoreBase Library.
9
10 This library is free software; you can redistribute it and/or
11 modify it under the terms of the GNU Lesser General Public
12 License as published by the Free Software Foundation; either
13 version 2.1 of the License, or (at your option) any later version.
14
15 This library is distributed in the hope that it will be useful,
16 but WITHOUT ANY WARRANTY; without even the implied warranty of
17 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
18 Lesser General Public License for more details.
19
20 You should have received a copy of the GNU Lesser General Public
21 License along with this library; see the file COPYING.LIB.
22 If not, see <http://www.gnu.org/licenses/> or write to the
23 Free Software Foundation, 51 Franklin Street, Fifth Floor,
24 Boston, MA 02110-1301, USA.
25*/
26
27#ifndef __COREFOUNDATION_CFRUNLOOP_H__
28#define __COREFOUNDATION_CFRUNLOOP_H__
29
30#include <CoreFoundation/CFBase.h>
31#include <CoreFoundation/CFArray.h>
32#include <CoreFoundation/CFDate.h>
33#include <CoreFoundation/CFError.h>
34#include <GNUstepBase/GSBlocks.h>
35
36CF_EXTERN_C_BEGIN
38typedef struct __CFRunLoop *CFRunLoopRef;
40typedef struct __CFRunLoopSource *CFRunLoopSourceRef;
42typedef struct __CFRunLoopObserver *CFRunLoopObserverRef;
44typedef struct __CFRunLoopTimer *CFRunLoopTimerRef;
45
49enum
50{
51 kCFRunLoopRunFinished = 1,
52 kCFRunLoopRunStopped = 2,
53 kCFRunLoopRunTimedOut = 3,
54 kCFRunLoopRunHandledSource = 4
55};
56
57CF_EXPORT const CFStringRef kCFRunLoopCommonModes;
58CF_EXPORT const CFStringRef kCFRunLoopDefaultMode;
59
60#ifndef __APPLE__
64typedef int mach_port_t;
65#endif
66
70CF_EXPORT CFTypeID CFRunLoopGetTypeID (void);
76CF_EXPORT CFRunLoopRef CFRunLoopGetCurrent (void);
77
78CF_EXPORT CFRunLoopRef CFRunLoopGetMain (void);
84CF_EXPORT void CFRunLoopRun (void);
85
86CF_EXPORT SInt32
87CFRunLoopRunInMode (CFStringRef mode, CFTimeInterval seconds,
88 Boolean returnAfterSourceHandled);
89
90CF_EXPORT void CFRunLoopWakeUp (CFRunLoopRef rl);
91
92CF_EXPORT void CFRunLoopStop (CFRunLoopRef rl);
93
94CF_EXPORT Boolean CFRunLoopIsWaiting (CFRunLoopRef rl);
100CF_EXPORT void CFRunLoopAddCommonMode (CFRunLoopRef rl, CFStringRef mode);
101
102CF_EXPORT CFArrayRef CFRunLoopCopyAllModes (CFRunLoopRef rl);
103
104CF_EXPORT CFStringRef CFRunLoopCopyCurrentMode (CFRunLoopRef rl);
110#if OS_API_VERSION(MAC_OS_X_VERSION_10_4, GS_API_LATEST)
111DEFINE_BLOCK_TYPE_NO_ARGS (PerformBlockType, void);
112
113CF_EXPORT void
114CFRunLoopPerformBlock (CFRunLoopRef rl, CFTypeRef mode, PerformBlockType block);
115#endif
121CF_EXPORT Boolean
122_CFRunLoopHasAnyValidSources (CFRunLoopRef rl, CFStringRef mode);
129typedef void (*CFRunLoopCancelCallBack) (void *info, CFRunLoopRef rl,
130 CFStringRef mode);
131typedef Boolean (*CFRunLoopEqualCallBack) (const void *info1,
132 const void *info2);
133typedef CFHashCode (*CFRunLoopHashCallBack) (const void *info);
134
135typedef mach_port_t (*CFRunLoopGetPortCallBack) (void *info);
136typedef void *(*CFRunLoopMachPerformCallBack) (void *msg, CFIndex size,
137 CFAllocatorRef alloc,
138 void *info);
139
140typedef void (*CFRunLoopPerformCallBack) (void *info);
141typedef void (*CFRunLoopScheduleCallBack) (void *info, CFRunLoopRef rl,
142 CFStringRef mode);
143
146{
147 CFIndex version;
148 void *info;
149 CFAllocatorRetainCallBack retain;
150 CFAllocatorReleaseCallBack release;
151 CFAllocatorCopyDescriptionCallBack copyDescription;
152 CFRunLoopEqualCallBack equal;
153 CFRunLoopHashCallBack hash;
154 CFRunLoopScheduleCallBack schedule;
155 CFRunLoopCancelCallBack cancel;
156 CFRunLoopPerformCallBack perform;
157};
158
161{
162 CFIndex version;
163 void *info;
164 CFAllocatorRetainCallBack retain;
165 CFAllocatorReleaseCallBack release;
166 CFAllocatorCopyDescriptionCallBack copyDescription;
167 CFRunLoopEqualCallBack equal;
168 CFRunLoopHashCallBack hash;
169 CFRunLoopGetPortCallBack getPort;
170 CFRunLoopMachPerformCallBack perform;
171};
172
176CF_EXPORT void
177CFRunLoopAddSource (CFRunLoopRef rl, CFRunLoopSourceRef source,
178 CFStringRef mode);
179
180CF_EXPORT Boolean
181CFRunLoopContainsSource (CFRunLoopRef rl, CFRunLoopSourceRef source,
182 CFStringRef mode);
183
184CF_EXPORT void
185CFRunLoopRemoveSource (CFRunLoopRef rl, CFRunLoopSourceRef source,
186 CFStringRef mode);
187
188CF_EXPORT CFRunLoopSourceRef
189CFRunLoopSourceCreate (CFAllocatorRef alloc, CFIndex order,
190 CFRunLoopSourceContext * context);
191
192CF_EXPORT void
193CFRunLoopSourceGetContext (CFRunLoopSourceRef source,
194 CFRunLoopSourceContext * context);
195
196CF_EXPORT CFIndex CFRunLoopSourceGetOrder (CFRunLoopSourceRef source);
197
198CF_EXPORT void CFRunLoopSourceInvalidate (CFRunLoopSourceRef source);
199
200CF_EXPORT Boolean CFRunLoopSourceIsValid (CFRunLoopSourceRef source);
201
202CF_EXPORT void CFRunLoopSourceSignal (CFRunLoopSourceRef source);
208CF_EXPORT CFTypeID CFRunLoopSourceGetTypeID (void);
215enum
216{
217 kCFRunLoopEntry = (1 << 0),
218 kCFRunLoopBeforeTimers = (1 << 1),
219 kCFRunLoopBeforeSources = (1 << 2),
220 kCFRunLoopBeforeWaiting = (1 << 5),
221 kCFRunLoopAfterWaiting = (1 << 6),
222 kCFRunLoopExit = (1 << 7),
223 kCFRunLoopAllActivities = 0x0FFFFFFFU
224};
225typedef int CFRunLoopActivity;
226
227typedef void (*CFRunLoopObserverCallBack) (CFRunLoopObserverRef observer,
228 CFRunLoopActivity activity,
229 void *info);
230
233{
234 CFIndex version;
235 void *info;
236 CFAllocatorRetainCallBack retain;
237 CFAllocatorReleaseCallBack release;
238 CFAllocatorCopyDescriptionCallBack copyDescription;
239};
240
244CF_EXPORT void
245CFRunLoopAddObserver (CFRunLoopRef rl, CFRunLoopObserverRef observer,
246 CFStringRef mode);
247
248CF_EXPORT Boolean
249CFRunLoopContainsObserver (CFRunLoopRef rl, CFRunLoopObserverRef observer,
250 CFStringRef mode);
251
252CF_EXPORT void
253CFRunLoopRemoveObserver (CFRunLoopRef rl, CFRunLoopObserverRef observer,
254 CFStringRef mode);
255
256CF_EXPORT CFRunLoopObserverRef
257CFRunLoopObserverCreate (CFAllocatorRef alloc, CFOptionFlags activities,
258 Boolean repeats, CFIndex order,
259 CFRunLoopObserverCallBack callback,
260 CFRunLoopObserverContext * context);
261
262CF_EXPORT Boolean CFRunLoopObserverDoesRepeat (CFRunLoopObserverRef observer);
263
264CF_EXPORT CFOptionFlags
265CFRunLoopObserverGetActivities (CFRunLoopObserverRef observer);
266
267CF_EXPORT void
268CFRunLoopObserverGetContext (CFRunLoopObserverRef observer,
269 CFRunLoopObserverContext * context);
270
271CF_EXPORT CFIndex CFRunLoopObserverGetOrder (CFRunLoopObserverRef observer);
272
273CF_EXPORT void CFRunLoopObserverInvalidate (CFRunLoopObserverRef observer);
274
275CF_EXPORT Boolean CFRunLoopObserverIsValid (CFRunLoopObserverRef observer);
281CF_EXPORT CFTypeID CFRunLoopObserverGetTypeID (void);
288typedef void (*CFRunLoopTimerCallBack) (CFRunLoopTimerRef timer, void *info);
289
292{
293 CFIndex version;
294 void *info;
295 CFAllocatorRetainCallBack retain;
296 CFAllocatorReleaseCallBack release;
297 CFAllocatorCopyDescriptionCallBack copyDescription;
298};
299
303CF_EXPORT void
304CFRunLoopAddTimer (CFRunLoopRef rl, CFRunLoopTimerRef timer, CFStringRef mode);
305
306CF_EXPORT CFAbsoluteTime
307CFRunLoopGetNextTimerFireDate (CFRunLoopRef rl, CFStringRef mode);
308
309CF_EXPORT void
310CFRunLoopRemoveTimer (CFRunLoopRef rl, CFRunLoopTimerRef timer,
311 CFStringRef mode);
312
313CF_EXPORT Boolean
314CFRunLoopContainsTimer (CFRunLoopRef rl, CFRunLoopTimerRef timer,
315 CFStringRef mode);
316
317CF_EXPORT CFRunLoopTimerRef
318CFRunLoopTimerCreate (CFAllocatorRef alloc, CFAbsoluteTime fireDate,
319 CFTimeInterval interval, CFOptionFlags flags,
320 CFIndex order, CFRunLoopTimerCallBack callback,
321 CFRunLoopTimerContext * context);
322
323CF_EXPORT Boolean CFRunLoopTimerDoesRepeat (CFRunLoopTimerRef timer);
324
325CF_EXPORT void
326CFRunLoopTimerGetContext (CFRunLoopTimerRef timer,
327 CFRunLoopTimerContext * context);
328
329CF_EXPORT CFTimeInterval CFRunLoopTimerGetInterval (CFRunLoopTimerRef timer);
330
331CF_EXPORT CFAbsoluteTime
332CFRunLoopTimerGetNextFireDate (CFRunLoopTimerRef timer);
333
334CF_EXPORT CFIndex CFRunLoopTimerGetOrder (CFRunLoopTimerRef timer);
335
336CF_EXPORT void CFRunLoopTimerInvalidate (CFRunLoopTimerRef timer);
337
338CF_EXPORT Boolean CFRunLoopTimerIsValid (CFRunLoopTimerRef timer);
339
340CF_EXPORT void
341CFRunLoopTimerSetNextFireDate (CFRunLoopTimerRef timer,
342 CFAbsoluteTime fireDate);
348CF_EXPORT CFTypeID CFRunLoopTimerGetTypeID (void);
352CF_EXTERN_C_END
353#endif /* __COREFOUNDATION_CFRUNLOOP_H__ */
unsigned long CFOptionFlags
Definition CFBase.h:163
signed long CFIndex
Definition CFBase.h:165
unsigned long CFHashCode
Definition CFBase.h:159
const struct __CFAllocator * CFAllocatorRef
A reference to a CFAllocator object.
Definition CFBase.h:301
const struct __CFArray * CFArrayRef
Reference to an immutable array object.
Definition CFArray.h:37
Definition CFRunLoop.h:233
int mach_port_t
Definition CFRunLoop.h:64
Definition CFRunLoop.h:146
Definition CFRunLoop.h:161
Definition CFRunLoop.h:292