Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021 #ifndef __DISPATCH_ONCE__
00022 #define __DISPATCH_ONCE__
00023
00029 #ifndef __DISPATCH_INDIRECT__
00030 #error "Please #include <dispatch/dispatch.h> instead of this file directly."
00031 #include "base.h"
00032 #endif
00033
00034 __DISPATCH_BEGIN_DECLS
00035
00040 typedef intptr_t dispatch_once_t;
00041
00055 #ifdef __BLOCKS__
00056
00057 DISPATCH_EXPORT
00058 void
00059 dispatch_once(dispatch_once_t *predicate, dispatch_block_t block);
00060 #ifdef __GNUC__
00061 #define dispatch_once(x, ...) do { if (__builtin_expect(*(x), ~0l) != ~0l) dispatch_once((x), (__VA_ARGS__)); } while (0)
00062 #endif
00063 #endif
00064
00065
00066 DISPATCH_EXPORT
00067 void
00068 dispatch_once_f(dispatch_once_t *predicate, void *context, void (*function)(void *));
00069 #ifdef __GNUC__
00070 #define dispatch_once_f(x, y, z) do { if (__builtin_expect(*(x), ~0l) != ~0l) dispatch_once_f((x), (y), (z)); } while (0)
00071 #endif
00072
00073 __DISPATCH_END_DECLS
00074
00077 #endif