30#if !defined (__GLIB_H_INSIDE__) && !defined (GLIB_COMPILATION)
31#error "Only <glib.h> can be included directly."
40#define G_THREAD_ERROR g_thread_error_quark ()
88#define G_PRIVATE_INIT(notify) { NULL, (notify), { NULL, NULL } }
104#define G_ONCE_INIT { G_ONCE_STATUS_NOTCALLED, NULL }
111#define G_LOCK_NAME(name) g__ ## name ## _lock
112#define G_LOCK_DEFINE_STATIC(name) static G_LOCK_DEFINE (name)
113#define G_LOCK_DEFINE(name) GMutex G_LOCK_NAME (name)
114#define G_LOCK_EXTERN(name) extern GMutex G_LOCK_NAME (name)
117# define G_LOCK(name) G_STMT_START{ \
118 g_log (G_LOG_DOMAIN, G_LOG_LEVEL_DEBUG, \
119 "file %s: line %d (%s): locking: %s ", \
120 __FILE__, __LINE__, G_STRFUNC, \
122 g_mutex_lock (&G_LOCK_NAME (name)); \
124# define G_UNLOCK(name) G_STMT_START{ \
125 g_log (G_LOG_DOMAIN, G_LOG_LEVEL_DEBUG, \
126 "file %s: line %d (%s): unlocking: %s ", \
127 __FILE__, __LINE__, G_STRFUNC, \
129 g_mutex_unlock (&G_LOCK_NAME (name)); \
131# define G_TRYLOCK(name) \
132 (g_log (G_LOG_DOMAIN, G_LOG_LEVEL_DEBUG, \
133 "file %s: line %d (%s): try locking: %s ", \
134 __FILE__, __LINE__, G_STRFUNC, \
135 #name), g_mutex_trylock (&G_LOCK_NAME (name)))
137# define G_LOCK(name) g_mutex_lock (&G_LOCK_NAME (name))
138# define G_UNLOCK(name) g_mutex_unlock (&G_LOCK_NAME (name))
139# define G_TRYLOCK(name) g_mutex_trylock (&G_LOCK_NAME (name))
143#define G_AUTO_LOCK(name) G_MUTEX_AUTO_LOCK (&G_LOCK_NAME (name), g__##name##_locker)
258#if defined(G_ATOMIC_LOCK_FREE) && defined(__GCC_HAVE_SYNC_COMPARE_AND_SWAP_4) && defined(__ATOMIC_SEQ_CST)
259# define g_once(once, func, arg) \
260 ((__atomic_load_n (&(once)->status, __ATOMIC_ACQUIRE) == G_ONCE_STATUS_READY) ? \
262 g_once_impl ((once), (func), (arg)))
264# define g_once(once, func, arg) g_once_impl ((once), (func), (arg))
268# define g_once_init_enter(location) \
269 (G_GNUC_EXTENSION ({ \
270 G_STATIC_ASSERT (sizeof *(location) == sizeof (gpointer)); \
271 (void) (0 ? (gpointer) *(location) : NULL); \
272 (!g_atomic_pointer_get (location) && \
273 g_once_init_enter (location)); \
275# define g_once_init_leave(location, result) \
276 (G_GNUC_EXTENSION ({ \
277 G_STATIC_ASSERT (sizeof *(location) == sizeof (gpointer)); \
278 0 ? (void) (*(location) = (result)) : (void) 0; \
279 g_once_init_leave ((location), (gsize) (result)); \
281# define g_once_init_enter_pointer(location) \
282 (G_GNUC_EXTENSION ({ \
283 G_STATIC_ASSERT (sizeof *(location) == sizeof (gpointer)); \
284 (void) (0 ? (gpointer) * (location) : NULL); \
285 (!g_atomic_pointer_get (location) && \
286 g_once_init_enter_pointer (location)); \
287 })) GLIB_AVAILABLE_MACRO_IN_2_80
288# define g_once_init_leave_pointer(location, result) \
289 (G_GNUC_EXTENSION ({ \
290 G_STATIC_ASSERT (sizeof *(location) == sizeof (gpointer)); \
291 0 ? (void) (*(location) = (result)) : (void) 0; \
292 g_once_init_leave_pointer ((location), (gpointer) (guintptr) (result)); \
293 })) GLIB_AVAILABLE_MACRO_IN_2_80
295# define g_once_init_enter(location) \
296 (g_once_init_enter((location)))
297# define g_once_init_leave(location, result) \
298 (g_once_init_leave((location), (gsize) (result)))
299# define g_once_init_enter_pointer(location) \
300 (g_once_init_enter_pointer((location))) \
301 GLIB_AVAILABLE_MACRO_IN_2_80
302# define g_once_init_leave_pointer(location, result) \
303 (g_once_init_leave_pointer((location), (gpointer) (guintptr) (result))) \
304 GLIB_AVAILABLE_MACRO_IN_2_80
427#define G_MUTEX_AUTO_LOCK(mutex, var) \
428 GLIB_AVAILABLE_MACRO_IN_2_80 g_autoptr (GMutexLocker) \
429 G_GNUC_UNUSED var = g_mutex_locker_new (mutex)
553#define G_REC_MUTEX_AUTO_LOCK(mutex, var) \
554 GLIB_AVAILABLE_MACRO_IN_2_80 g_autoptr (GRecMutexLocker) \
555 G_GNUC_UNUSED var = g_rec_mutex_locker_new (mutex)
711#define G_RW_LOCK_WRITER_AUTO_LOCK(mutex, var) \
712 GLIB_AVAILABLE_MACRO_IN_2_80 g_autoptr (GRWLockWriterLocker) \
713 G_GNUC_UNUSED var = g_rw_lock_writer_locker_new (mutex)
809#define G_RW_LOCK_READER_AUTO_LOCK(mutex, var) \
810 GLIB_AVAILABLE_MACRO_IN_2_80 g_autoptr (GRWLockReaderLocker) \
811 G_GNUC_UNUSED var = g_rw_lock_reader_locker_new (mutex)
CURL_EXTERN int void * arg
#define GLIB_AVAILABLE_IN_2_36
#define GLIB_AVAILABLE_STATIC_INLINE_IN_2_62
#define GLIB_AVAILABLE_IN_2_32
#define GLIB_AVAILABLE_IN_ALL
#define GLIB_AVAILABLE_STATIC_INLINE_IN_2_60
#define GLIB_AVAILABLE_IN_2_80
#define GLIB_AVAILABLE_STATIC_INLINE_IN_2_44
#define G_GNUC_BEGIN_IGNORE_DEPRECATIONS
#define G_GNUC_END_IGNORE_DEPRECATIONS
G_BEGIN_DECLS typedef guint32 GQuark
G_GNUC_BEGIN_IGNORE_DEPRECATIONS static GLIB_AVAILABLE_STATIC_INLINE_IN_2_62 GRWLockReaderLocker * g_rw_lock_reader_locker_new(GRWLock *rw_lock)
GLIB_AVAILABLE_IN_2_36 guint g_get_num_processors(void)
GLIB_AVAILABLE_IN_2_32 void g_rec_mutex_clear(GRecMutex *rec_mutex)
GLIB_AVAILABLE_IN_2_32 void g_rec_mutex_unlock(GRecMutex *rec_mutex)
GLIB_AVAILABLE_IN_2_32 void g_mutex_init(GMutex *mutex)
GLIB_AVAILABLE_IN_2_32 void g_rec_mutex_lock(GRecMutex *rec_mutex)
GLIB_AVAILABLE_IN_2_32 void g_rw_lock_init(GRWLock *rw_lock)
GLIB_AVAILABLE_IN_ALL void g_cond_broadcast(GCond *cond)
GLIB_AVAILABLE_IN_2_32 void g_cond_clear(GCond *cond)
G_GNUC_END_IGNORE_DEPRECATIONS G_GNUC_BEGIN_IGNORE_DEPRECATIONS static GLIB_AVAILABLE_STATIC_INLINE_IN_2_62 void g_rw_lock_reader_locker_free(GRWLockReaderLocker *locker)
GLIB_AVAILABLE_IN_2_32 void g_cond_init(GCond *cond)
GLIB_AVAILABLE_IN_2_32 void g_rw_lock_reader_lock(GRWLock *rw_lock)
GLIB_AVAILABLE_IN_2_32 void g_rw_lock_writer_lock(GRWLock *rw_lock)
GLIB_AVAILABLE_IN_2_32 void g_thread_unref(GThread *thread)
static GLIB_AVAILABLE_STATIC_INLINE_IN_2_44 void g_mutex_locker_free(GMutexLocker *locker)
GLIB_AVAILABLE_IN_2_32 gboolean g_rec_mutex_trylock(GRecMutex *rec_mutex)
GLIB_AVAILABLE_IN_ALL gboolean g_mutex_trylock(GMutex *mutex)
gpointer(* GThreadFunc)(gpointer data)
G_GNUC_END_IGNORE_DEPRECATIONS G_GNUC_BEGIN_IGNORE_DEPRECATIONS static GLIB_AVAILABLE_STATIC_INLINE_IN_2_62 void g_rw_lock_writer_locker_free(GRWLockWriterLocker *locker)
GLIB_AVAILABLE_IN_2_32 void g_mutex_clear(GMutex *mutex)
G_GNUC_BEGIN_IGNORE_DEPRECATIONS static GLIB_AVAILABLE_STATIC_INLINE_IN_2_62 GRWLockWriterLocker * g_rw_lock_writer_locker_new(GRWLock *rw_lock)
GLIB_AVAILABLE_IN_2_32 gboolean g_rw_lock_writer_trylock(GRWLock *rw_lock)
#define g_once_init_enter_pointer(location)
GLIB_AVAILABLE_IN_2_32 void g_rw_lock_reader_unlock(GRWLock *rw_lock)
#define g_once_init_leave(location, result)
GLIB_AVAILABLE_IN_ALL void g_cond_wait(GCond *cond, GMutex *mutex)
G_NORETURN GLIB_AVAILABLE_IN_ALL void g_thread_exit(gpointer retval)
@ G_ONCE_STATUS_NOTCALLED
#define g_once_init_enter(location)
GLIB_AVAILABLE_IN_2_32 gboolean g_cond_wait_until(GCond *cond, GMutex *mutex, gint64 end_time)
GLIB_AVAILABLE_IN_ALL gpointer g_once_impl(GOnce *once, GThreadFunc func, gpointer arg)
GLIB_AVAILABLE_IN_ALL void g_private_set(GPrivate *key, gpointer value)
GLIB_AVAILABLE_IN_ALL void g_thread_yield(void)
#define g_once_init_leave_pointer(location, result)
GLIB_AVAILABLE_IN_2_32 void g_rec_mutex_init(GRecMutex *rec_mutex)
GLIB_AVAILABLE_IN_ALL gpointer g_private_get(GPrivate *key)
GLIB_AVAILABLE_IN_2_32 void g_rw_lock_clear(GRWLock *rw_lock)
GLIB_AVAILABLE_IN_2_32 void g_private_replace(GPrivate *key, gpointer value)
GLIB_AVAILABLE_IN_2_32 void g_rw_lock_writer_unlock(GRWLock *rw_lock)
GLIB_AVAILABLE_IN_2_32 gboolean g_rw_lock_reader_trylock(GRWLock *rw_lock)
GLIB_AVAILABLE_IN_2_32 GThread * g_thread_ref(GThread *thread)
G_GNUC_BEGIN_IGNORE_DEPRECATIONS static GLIB_AVAILABLE_STATIC_INLINE_IN_2_60 GRecMutexLocker * g_rec_mutex_locker_new(GRecMutex *rec_mutex)
GLIB_AVAILABLE_IN_ALL gpointer g_thread_join(GThread *thread)
GLIB_AVAILABLE_IN_ALL void g_mutex_unlock(GMutex *mutex)
GLIB_AVAILABLE_IN_ALL void g_cond_signal(GCond *cond)
GLIB_AVAILABLE_IN_ALL GQuark g_thread_error_quark(void)
static GLIB_AVAILABLE_STATIC_INLINE_IN_2_44 GMutexLocker * g_mutex_locker_new(GMutex *mutex)
G_GNUC_END_IGNORE_DEPRECATIONS G_GNUC_BEGIN_IGNORE_DEPRECATIONS static GLIB_AVAILABLE_STATIC_INLINE_IN_2_60 void g_rec_mutex_locker_free(GRecMutexLocker *locker)
GLIB_AVAILABLE_IN_ALL void g_mutex_lock(GMutex *mutex)
GLIB_AVAILABLE_IN_ALL GThread * g_thread_self(void)
GLIB_AVAILABLE_IN_2_32 GThread * g_thread_new(const gchar *name, GThreadFunc func, gpointer data)
GLIB_AVAILABLE_IN_2_32 GThread * g_thread_try_new(const gchar *name, GThreadFunc func, gpointer data, GError **error)
G_BEGIN_DECLS typedef char gchar
void(* GDestroyNotify)(gpointer data)
static int cond(LexState *ls)
static void error(LoadState *S, const char *why)
volatile GOnceStatus status