#define __G_MESSAGES_H__
#include <stdarg.h>
-#include <gtypes.h>
+#include <glib/gtypes.h>
+#include <glib/gmacros.h>
+
+/* Suppress warnings when GCC is in -pedantic mode and not -std=c99
+ */
+#if (__GNUC__ >= 3 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 96))
+#pragma GCC system_header
+#endif
G_BEGIN_DECLS
/* calculate a string size, guarranteed to fit format + args.
*/
-guint g_printf_string_upper_bound (const gchar* format,
+gsize g_printf_string_upper_bound (const gchar* format,
va_list args);
/* Log level shift offset for user defined
/* Logging mechanism
*/
-GLIB_VAR const gchar *g_log_domain_glib;
guint g_log_set_handler (const gchar *log_domain,
GLogLevelFlags log_levels,
GLogFunc log_func,
GLogLevelFlags fatal_mask);
GLogLevelFlags g_log_set_always_fatal (GLogLevelFlags fatal_mask);
+/* internal */
+void _g_log_fallback_handler (const gchar *log_domain,
+ GLogLevelFlags log_level,
+ const gchar *message,
+ gpointer unused_data);
+
+
#ifndef G_LOG_DOMAIN
#define G_LOG_DOMAIN ((gchar*) 0)
#endif /* G_LOG_DOMAIN */
-#if G_HAVE_ISO_VARARGS
+#ifdef G_HAVE_ISO_VARARGS
#define g_error(...) g_log (G_LOG_DOMAIN, \
G_LOG_LEVEL_ERROR, \
__VA_ARGS__)
...) G_GNUC_PRINTF (1, 2);
GPrintFunc g_set_printerr_handler (GPrintFunc func);
-/* deprecated compatibility functions, use g_log_set_handler() instead */
-typedef void (*GErrorFunc) (const gchar *str);
-typedef void (*GWarningFunc) (const gchar *str);
-GErrorFunc g_set_error_handler (GErrorFunc func);
-GWarningFunc g_set_warning_handler (GWarningFunc func);
-GPrintFunc g_set_message_handler (GPrintFunc func);
/* Provide macros for error handling. The "assert" macros will
* exit on failure. The "return" macros will exit the current
#ifdef G_DISABLE_ASSERT
-#define g_assert(expr)
-#define g_assert_not_reached()
+#define g_assert(expr) G_STMT_START{ (void)0; }G_STMT_END
+#define g_assert_not_reached() G_STMT_START{ (void)0; }G_STMT_END
#else /* !G_DISABLE_ASSERT */
#ifdef __GNUC__
#define g_assert(expr) G_STMT_START{ \
- if (!(expr)) \
+ if (!G_LIKELY (expr)) \
g_log (G_LOG_DOMAIN, \
G_LOG_LEVEL_ERROR, \
"file %s: line %d (%s): assertion failed: (%s)", \
#else /* !__GNUC__ */
#define g_assert(expr) G_STMT_START{ \
- if (!(expr)) \
+ if (expr) { } else \
g_log (G_LOG_DOMAIN, \
G_LOG_LEVEL_ERROR, \
"file %s: line %d: assertion failed: (%s)", \
#ifdef G_DISABLE_CHECKS
-#define g_return_if_fail(expr)
-#define g_return_val_if_fail(expr,val)
-#define g_return_if_reached() return
-#define g_return_val_if_reached(val) return (val)
+#define g_return_if_fail(expr) G_STMT_START{ (void)0; }G_STMT_END
+#define g_return_val_if_fail(expr,val) G_STMT_START{ (void)0; }G_STMT_END
+#define g_return_if_reached() G_STMT_START{ return; }G_STMT_END
+#define g_return_val_if_reached(val) G_STMT_START{ return (val); }G_STMT_END
#else /* !G_DISABLE_CHECKS */
#ifdef __GNUC__
#define g_return_if_fail(expr) G_STMT_START{ \
- if (!(expr)) \
+ if (!G_LIKELY (expr)) \
{ \
g_log (G_LOG_DOMAIN, \
G_LOG_LEVEL_CRITICAL, \
}; }G_STMT_END
#define g_return_val_if_fail(expr,val) G_STMT_START{ \
- if (!(expr)) \
+ if (!G_LIKELY (expr)) \
{ \
g_log (G_LOG_DOMAIN, \
G_LOG_LEVEL_CRITICAL, \
#else /* !__GNUC__ */
#define g_return_if_fail(expr) G_STMT_START{ \
- if (!(expr)) \
+ if (expr) { } else \
{ \
g_log (G_LOG_DOMAIN, \
G_LOG_LEVEL_CRITICAL, \
}; }G_STMT_END
#define g_return_val_if_fail(expr, val) G_STMT_START{ \
- if (!(expr)) \
+ if (expr) { } else \
{ \
g_log (G_LOG_DOMAIN, \
G_LOG_LEVEL_CRITICAL, \