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