27#ifndef __G_MESSAGES_H__
28#define __G_MESSAGES_H__
30#if !defined (__GLIB_H_INSIDE__) && !defined (GLIB_COMPILATION)
31#error "Only <glib.h> can be included directly."
51#define G_LOG_LEVEL_USER_SHIFT (8)
73#define G_LOG_FATAL_MASK (G_LOG_FLAG_RECURSION | G_LOG_LEVEL_ERROR)
257 const char *log_domain);
277#define G_DEBUG_HERE() \
278 g_log_structured (G_LOG_DOMAIN, G_LOG_LEVEL_DEBUG, \
279 "CODE_FILE", __FILE__, \
280 "CODE_LINE", G_STRINGIFY (__LINE__), \
281 "CODE_FUNC", G_STRFUNC, \
282 "MESSAGE", "%" G_GINT64_FORMAT ": %s", \
283 g_get_monotonic_time (), G_STRLOC)
288 const gchar *message,
294 const char *pretty_function,
307 const char *pretty_function,
308 const char *expression);
316 const gchar *message_format,
320#define G_LOG_DOMAIN ((gchar*) 0)
323#if defined(G_HAVE_ISO_VARARGS) && !G_ANALYZER_ANALYZING
324#if defined(G_LOG_USE_STRUCTURED) && GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_56
325#define g_error(...) G_STMT_START { \
326 g_log_structured_standard (G_LOG_DOMAIN, G_LOG_LEVEL_ERROR, \
327 __FILE__, G_STRINGIFY (__LINE__), \
328 G_STRFUNC, __VA_ARGS__); \
331#define g_message(...) g_log_structured_standard (G_LOG_DOMAIN, G_LOG_LEVEL_MESSAGE, \
332 __FILE__, G_STRINGIFY (__LINE__), \
333 G_STRFUNC, __VA_ARGS__)
334#define g_critical(...) g_log_structured_standard (G_LOG_DOMAIN, G_LOG_LEVEL_CRITICAL, \
335 __FILE__, G_STRINGIFY (__LINE__), \
336 G_STRFUNC, __VA_ARGS__)
337#define g_warning(...) g_log_structured_standard (G_LOG_DOMAIN, G_LOG_LEVEL_WARNING, \
338 __FILE__, G_STRINGIFY (__LINE__), \
339 G_STRFUNC, __VA_ARGS__)
340#define g_info(...) g_log_structured_standard (G_LOG_DOMAIN, G_LOG_LEVEL_INFO, \
341 __FILE__, G_STRINGIFY (__LINE__), \
342 G_STRFUNC, __VA_ARGS__)
343#define g_debug(...) g_log_structured_standard (G_LOG_DOMAIN, G_LOG_LEVEL_DEBUG, \
344 __FILE__, G_STRINGIFY (__LINE__), \
345 G_STRFUNC, __VA_ARGS__)
350#define g_error(...) G_STMT_START { \
351 g_log (G_LOG_DOMAIN, \
356#define g_message(...) g_log (G_LOG_DOMAIN, \
357 G_LOG_LEVEL_MESSAGE, \
359#define g_critical(...) g_log (G_LOG_DOMAIN, \
360 G_LOG_LEVEL_CRITICAL, \
362#define g_warning(...) g_log (G_LOG_DOMAIN, \
363 G_LOG_LEVEL_WARNING, \
365#define g_info(...) g_log (G_LOG_DOMAIN, \
368#define g_debug(...) g_log (G_LOG_DOMAIN, \
372#elif defined(G_HAVE_GNUC_VARARGS) && !G_ANALYZER_ANALYZING
373#if defined(G_LOG_USE_STRUCTURED) && GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_56
374#define g_error(format...) G_STMT_START { \
375 g_log_structured_standard (G_LOG_DOMAIN, G_LOG_LEVEL_ERROR, \
376 __FILE__, G_STRINGIFY (__LINE__), \
377 G_STRFUNC, format); \
380#define g_message(format...) g_log_structured_standard (G_LOG_DOMAIN, G_LOG_LEVEL_MESSAGE, \
381 __FILE__, G_STRINGIFY (__LINE__), \
383#define g_critical(format...) g_log_structured_standard (G_LOG_DOMAIN, G_LOG_LEVEL_CRITICAL, \
384 __FILE__, G_STRINGIFY (__LINE__), \
386#define g_warning(format...) g_log_structured_standard (G_LOG_DOMAIN, G_LOG_LEVEL_WARNING, \
387 __FILE__, G_STRINGIFY (__LINE__), \
389#define g_info(format...) g_log_structured_standard (G_LOG_DOMAIN, G_LOG_LEVEL_INFO, \
390 __FILE__, G_STRINGIFY (__LINE__), \
392#define g_debug(format...) g_log_structured_standard (G_LOG_DOMAIN, G_LOG_LEVEL_DEBUG, \
393 __FILE__, G_STRINGIFY (__LINE__), \
396#define g_error(format...) G_STMT_START { \
397 g_log (G_LOG_DOMAIN, \
403#define g_message(format...) g_log (G_LOG_DOMAIN, \
404 G_LOG_LEVEL_MESSAGE, \
406#define g_critical(format...) g_log (G_LOG_DOMAIN, \
407 G_LOG_LEVEL_CRITICAL, \
409#define g_warning(format...) g_log (G_LOG_DOMAIN, \
410 G_LOG_LEVEL_WARNING, \
412#define g_info(format...) g_log (G_LOG_DOMAIN, \
415#define g_debug(format...) g_log (G_LOG_DOMAIN, \
496#if defined(G_HAVE_ISO_VARARGS) && !G_ANALYZER_ANALYZING
497#define g_warning_once(...) \
499 static int G_PASTE (_GWarningOnceBoolean, __LINE__) = 0; \
500 if (g_atomic_int_compare_and_exchange (&G_PASTE (_GWarningOnceBoolean, __LINE__), \
502 g_warning (__VA_ARGS__); \
504 GLIB_AVAILABLE_MACRO_IN_2_64
505#elif defined(G_HAVE_GNUC_VARARGS) && !G_ANALYZER_ANALYZING
506#define g_warning_once(format...) \
508 static int G_PASTE (_GWarningOnceBoolean, __LINE__) = 0; \
509 if (g_atomic_int_compare_and_exchange (&G_PASTE (_GWarningOnceBoolean, __LINE__), \
511 g_warning (format); \
513 GLIB_AVAILABLE_MACRO_IN_2_64
515#define g_warning_once g_warning
544#define g_warn_if_reached() \
546 g_warn_message (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, NULL); \
560#define g_warn_if_fail(expr) \
562 if G_LIKELY (expr) ; \
563 else g_warn_message (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, #expr); \
566#ifdef G_DISABLE_CHECKS
599#define g_return_if_fail(expr) G_STMT_START{ (void)0; }G_STMT_END
625#define g_return_val_if_fail(expr,val) G_STMT_START{ (void)0; }G_STMT_END
635#define g_return_if_reached() G_STMT_START{ return; }G_STMT_END
645#define g_return_val_if_reached(val) G_STMT_START{ return (val); }G_STMT_END
649#define g_return_if_fail(expr) \
651 if (G_LIKELY (expr)) \
655 g_return_if_fail_warning (G_LOG_DOMAIN, \
662#define g_return_val_if_fail(expr, val) \
664 if (G_LIKELY (expr)) \
668 g_return_if_fail_warning (G_LOG_DOMAIN, \
675#define g_return_if_reached() \
677 g_log (G_LOG_DOMAIN, \
678 G_LOG_LEVEL_CRITICAL, \
679 "file %s: line %d (%s): should not be reached", \
686#define g_return_val_if_reached(val) \
688 g_log (G_LOG_DOMAIN, \
689 G_LOG_LEVEL_CRITICAL, \
690 "file %s: line %d (%s): should not be reached", \
#define GLIB_AVAILABLE_IN_2_68
#define GLIB_AVAILABLE_IN_2_72
#define GLIB_AVAILABLE_IN_ALL
#define GLIB_AVAILABLE_IN_2_46
#define GLIB_AVAILABLE_IN_2_56
#define GLIB_AVAILABLE_IN_2_50
#define GLIB_AVAILABLE_IN_2_80
#define G_GNUC_PRINTF(format_idx, arg_idx)
#define G_ANALYZER_NORETURN
GLIB_AVAILABLE_IN_ALL void GLIB_AVAILABLE_IN_ALL GPrintFunc g_set_printerr_handler(GPrintFunc func)
GLIB_AVAILABLE_IN_2_50 GLogWriterOutput g_log_writer_standard_streams(GLogLevelFlags log_level, const GLogField *fields, gsize n_fields, gpointer user_data)
GLIB_AVAILABLE_IN_ALL void g_log_default_handler(const gchar *log_domain, GLogLevelFlags log_level, const gchar *message, gpointer unused_data)
GLIB_AVAILABLE_IN_2_50 void g_log_structured_array(GLogLevelFlags log_level, const GLogField *fields, gsize n_fields)
G_BEGIN_DECLS GLIB_AVAILABLE_IN_ALL gsize g_printf_string_upper_bound(const gchar *format, va_list args) G_GNUC_PRINTF(1
GLIB_AVAILABLE_IN_2_72 void g_log_set_debug_enabled(gboolean enabled)
GLIB_AVAILABLE_IN_2_46 guint g_log_set_handler_full(const gchar *log_domain, GLogLevelFlags log_levels, GLogFunc log_func, gpointer user_data, GDestroyNotify destroy)
GLIB_AVAILABLE_IN_ALL void GLIB_AVAILABLE_IN_ALL GPrintFunc g_set_print_handler(GPrintFunc func)
GLIB_AVAILABLE_IN_2_72 gboolean g_log_get_debug_enabled(void)
GLIB_AVAILABLE_IN_ALL void g_log(const gchar *log_domain, GLogLevelFlags log_level, const gchar *format,...) G_GNUC_PRINTF(3
GLIB_AVAILABLE_IN_2_56 void g_log_structured_standard(const gchar *log_domain, GLogLevelFlags log_level, const gchar *file, const gchar *line, const gchar *func, const gchar *message_format,...) G_GNUC_PRINTF(6
GLIB_AVAILABLE_IN_ALL GLogFunc g_log_set_default_handler(GLogFunc log_func, gpointer user_data)
GLIB_AVAILABLE_IN_2_50 GLogWriterOutput g_log_writer_default(GLogLevelFlags log_level, const GLogField *fields, gsize n_fields, gpointer user_data)
GLIB_AVAILABLE_IN_ALL void g_warn_message(const char *domain, const char *file, int line, const char *func, const char *warnexpr) G_ANALYZER_NORETURN
G_NORETURN GLIB_DEPRECATED void g_assert_warning(const char *log_domain, const char *file, const int line, const char *pretty_function, const char *expression)
GLIB_AVAILABLE_IN_ALL void GLIB_AVAILABLE_IN_ALL void GLIB_AVAILABLE_IN_ALL GLogLevelFlags g_log_set_fatal_mask(const gchar *log_domain, GLogLevelFlags fatal_mask)
GLIB_AVAILABLE_IN_ALL guint g_log_set_handler(const gchar *log_domain, GLogLevelFlags log_levels, GLogFunc log_func, gpointer user_data)
GLIB_AVAILABLE_IN_ALL void g_printerr(const gchar *format,...) G_GNUC_PRINTF(1
GLIB_AVAILABLE_IN_2_50 void g_log_variant(const gchar *log_domain, GLogLevelFlags log_level, GVariant *fields)
GLIB_AVAILABLE_IN_ALL void g_return_if_fail_warning(const char *log_domain, const char *pretty_function, const char *expression) G_ANALYZER_NORETURN
GLIB_AVAILABLE_IN_ALL void GLIB_AVAILABLE_IN_ALL void g_logv(const gchar *log_domain, GLogLevelFlags log_level, const gchar *format, va_list args) G_GNUC_PRINTF(3
GLIB_AVAILABLE_IN_2_80 void g_log_writer_default_set_debug_domains(const gchar *const *domains)
GLIB_AVAILABLE_IN_2_50 void g_log_set_writer_func(GLogWriterFunc func, gpointer user_data, GDestroyNotify user_data_free)
void _g_log_fallback_handler(const gchar *log_domain, GLogLevelFlags log_level, const gchar *message, gpointer unused_data)
void(* GLogFunc)(const gchar *log_domain, GLogLevelFlags log_level, const gchar *message, gpointer user_data)
GLIB_AVAILABLE_IN_2_50 gboolean g_log_writer_supports_color(gint output_fd)
GLIB_AVAILABLE_IN_2_68 gboolean g_log_writer_default_would_drop(GLogLevelFlags log_level, const char *log_domain)
GLIB_AVAILABLE_IN_ALL void g_log_remove_handler(const gchar *log_domain, guint handler_id)
GLIB_AVAILABLE_IN_ALL GLogLevelFlags g_log_set_always_fatal(GLogLevelFlags fatal_mask)
GLIB_AVAILABLE_IN_2_50 gchar * g_log_writer_format_fields(GLogLevelFlags log_level, const GLogField *fields, gsize n_fields, gboolean use_color)
GLIB_AVAILABLE_IN_2_50 GLogWriterOutput g_log_writer_journald(GLogLevelFlags log_level, const GLogField *fields, gsize n_fields, gpointer user_data)
GLIB_AVAILABLE_IN_2_50 void g_log_structured(const gchar *log_domain, GLogLevelFlags log_level,...)
GLogWriterOutput(* GLogWriterFunc)(GLogLevelFlags log_level, const GLogField *fields, gsize n_fields, gpointer user_data)
void(* GPrintFunc)(const gchar *string)
GLIB_AVAILABLE_IN_2_68 void g_log_writer_default_set_use_stderr(gboolean use_stderr)
GLIB_AVAILABLE_IN_2_80 GLogWriterOutput g_log_writer_syslog(GLogLevelFlags log_level, const GLogField *fields, gsize n_fields, gpointer user_data)
GLIB_AVAILABLE_IN_ALL void g_print(const gchar *format,...) G_GNUC_PRINTF(1
GLIB_AVAILABLE_IN_2_50 gboolean g_log_writer_is_journald(gint output_fd)
G_BEGIN_DECLS typedef char gchar
const void * gconstpointer
void(* GDestroyNotify)(gpointer data)
typedefG_BEGIN_DECLS struct _GVariant GVariant
json_t format(printf, 1, 2)))