epoc32/include/stdapis/glib-2.0/glib/gmessages.h
author William Roberts <williamr@symbian.org>
Wed, 31 Mar 2010 12:33:34 +0100
branchSymbian3
changeset 4 837f303aceeb
parent 0 061f57f2323e
permissions -rw-r--r--
Current Symbian^3 public API header files (from PDK 3.0.h)
This is the epoc32/include tree with the "platform" subtrees removed, and
all but a selected few mbg and rsg files removed.
williamr@2
     1
/* GLIB - Library of useful routines for C programming
williamr@2
     2
 * Copyright (C) 1995-1997  Peter Mattis, Spencer Kimball and Josh MacDonald
williamr@2
     3
 * Portions copyright (c) 2006 Nokia Corporation.  All rights reserved.
williamr@2
     4
 *
williamr@2
     5
 * This library is free software; you can redistribute it and/or
williamr@2
     6
 * modify it under the terms of the GNU Lesser General Public
williamr@2
     7
 * License as published by the Free Software Foundation; either
williamr@2
     8
 * version 2 of the License, or (at your option) any later version.
williamr@2
     9
 *
williamr@2
    10
 * This library is distributed in the hope that it will be useful,
williamr@2
    11
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
williamr@2
    12
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.	 See the GNU
williamr@2
    13
 * Lesser General Public License for more details.
williamr@2
    14
 *
williamr@2
    15
 * You should have received a copy of the GNU Lesser General Public
williamr@2
    16
 * License along with this library; if not, write to the
williamr@2
    17
 * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
williamr@2
    18
 * Boston, MA 02111-1307, USA.
williamr@2
    19
 */
williamr@2
    20
williamr@2
    21
/*
williamr@2
    22
 * Modified by the GLib Team and others 1997-2000.  See the AUTHORS
williamr@2
    23
 * file for a list of people on the GLib Team.  See the ChangeLog
williamr@2
    24
 * files for a list of changes.  These files are distributed with
williamr@2
    25
 * GLib at ftp://ftp.gtk.org/pub/gtk/. 
williamr@2
    26
 */
williamr@2
    27
williamr@2
    28
#ifndef __G_MESSAGES_H__
williamr@2
    29
#define __G_MESSAGES_H__
williamr@2
    30
williamr@2
    31
#include <_ansi.h>
williamr@2
    32
#include <stdarg.h>
williamr@2
    33
#include <glib/gtypes.h>
williamr@2
    34
#include <glib/gmacros.h>
williamr@2
    35
williamr@2
    36
/* Suppress warnings when GCC is in -pedantic mode and not -std=c99
williamr@2
    37
 */
williamr@2
    38
#if (__GNUC__ >= 3 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 96))
williamr@2
    39
#pragma GCC system_header
williamr@2
    40
#endif
williamr@2
    41
williamr@2
    42
G_BEGIN_DECLS
williamr@2
    43
williamr@2
    44
/* calculate a string size, guaranteed to fit format + args.
williamr@2
    45
 */
williamr@2
    46
IMPORT_C gsize	g_printf_string_upper_bound (const gchar* format,
williamr@2
    47
				     va_list	  args);
williamr@2
    48
williamr@2
    49
/* Log level shift offset for user defined
williamr@2
    50
 * log levels (0-7 are used by GLib).
williamr@2
    51
 */
williamr@2
    52
#define G_LOG_LEVEL_USER_SHIFT  (8)
williamr@2
    53
williamr@2
    54
/* Glib log levels and flags.
williamr@2
    55
 */
williamr@2
    56
typedef enum
williamr@2
    57
{
williamr@2
    58
  /* log flags */
williamr@2
    59
  G_LOG_FLAG_RECURSION          = 1 << 0,
williamr@2
    60
  G_LOG_FLAG_FATAL              = 1 << 1,
williamr@2
    61
williamr@2
    62
  /* GLib log levels */
williamr@2
    63
  G_LOG_LEVEL_ERROR             = 1 << 2,       /* always fatal */
williamr@2
    64
  G_LOG_LEVEL_CRITICAL          = 1 << 3,
williamr@2
    65
  G_LOG_LEVEL_WARNING           = 1 << 4,
williamr@2
    66
  G_LOG_LEVEL_MESSAGE           = 1 << 5,
williamr@2
    67
  G_LOG_LEVEL_INFO              = 1 << 6,
williamr@2
    68
  G_LOG_LEVEL_DEBUG             = 1 << 7,
williamr@2
    69
williamr@2
    70
  G_LOG_LEVEL_MASK              = ~(G_LOG_FLAG_RECURSION | G_LOG_FLAG_FATAL)
williamr@2
    71
} GLogLevelFlags;
williamr@2
    72
williamr@2
    73
/* GLib log levels that are considered fatal by default */
williamr@2
    74
#define G_LOG_FATAL_MASK        (G_LOG_FLAG_RECURSION | G_LOG_LEVEL_ERROR)
williamr@2
    75
williamr@2
    76
typedef void            (*GLogFunc)             (const gchar   *log_domain,
williamr@2
    77
                                                 GLogLevelFlags log_level,
williamr@2
    78
                                                 const gchar   *message,
williamr@2
    79
                                                 gpointer       user_data);
williamr@2
    80
williamr@2
    81
/* Logging mechanism
williamr@2
    82
 */
williamr@2
    83
IMPORT_C guint           g_log_set_handler       (const gchar    *log_domain,
williamr@2
    84
                                         GLogLevelFlags  log_levels,
williamr@2
    85
                                         GLogFunc        log_func,
williamr@2
    86
                                         gpointer        user_data);
williamr@2
    87
IMPORT_C void            g_log_remove_handler    (const gchar    *log_domain,
williamr@2
    88
                                         guint           handler_id);
williamr@2
    89
IMPORT_C void            g_log_default_handler   (const gchar    *log_domain,
williamr@2
    90
                                         GLogLevelFlags  log_level,
williamr@2
    91
                                         const gchar    *message,
williamr@2
    92
                                         gpointer        unused_data);
williamr@2
    93
IMPORT_C GLogFunc        g_log_set_default_handler (GLogFunc      log_func,
williamr@2
    94
					   gpointer      user_data);
williamr@2
    95
IMPORT_C void            g_log                   (const gchar    *log_domain,
williamr@2
    96
                                         GLogLevelFlags  log_level,
williamr@2
    97
                                         const gchar    *format,
williamr@2
    98
                                         ...) G_GNUC_PRINTF (3, 4);
williamr@2
    99
IMPORT_C void            g_logv                  (const gchar    *log_domain,
williamr@2
   100
                                         GLogLevelFlags  log_level,
williamr@2
   101
                                         const gchar    *format,
williamr@2
   102
                                         va_list         args);
williamr@2
   103
IMPORT_C GLogLevelFlags  g_log_set_fatal_mask    (const gchar    *log_domain,
williamr@2
   104
                                         GLogLevelFlags  fatal_mask);
williamr@2
   105
IMPORT_C GLogLevelFlags  g_log_set_always_fatal  (GLogLevelFlags  fatal_mask);
williamr@2
   106
williamr@2
   107
/* internal */
williamr@2
   108
void	_g_log_fallback_handler	(const gchar   *log_domain,
williamr@2
   109
				 GLogLevelFlags log_level,
williamr@2
   110
				 const gchar   *message,
williamr@2
   111
				 gpointer       unused_data) G_GNUC_INTERNAL;
williamr@2
   112
williamr@2
   113
/* Internal functions, used to implement the following macros */
williamr@2
   114
IMPORT_C void g_return_if_fail_warning (const char *log_domain,
williamr@2
   115
			       const char *pretty_function,
williamr@2
   116
			       const char *expression);
williamr@2
   117
IMPORT_C void g_assert_warning         (const char *log_domain,
williamr@2
   118
			       const char *file,
williamr@2
   119
			       const int   line,
williamr@2
   120
		               const char *pretty_function,
williamr@2
   121
		               const char *expression) G_GNUC_NORETURN;
williamr@2
   122
williamr@2
   123
williamr@2
   124
#ifndef G_LOG_DOMAIN
williamr@2
   125
#define G_LOG_DOMAIN    ((gchar*) 0)
williamr@2
   126
#endif  /* G_LOG_DOMAIN */
williamr@2
   127
#ifdef G_HAVE_ISO_VARARGS
williamr@2
   128
#define g_error(...)    g_log (G_LOG_DOMAIN,         \
williamr@2
   129
                               G_LOG_LEVEL_ERROR,    \
williamr@2
   130
                               __VA_ARGS__)
williamr@2
   131
#define g_message(...)  g_log (G_LOG_DOMAIN,         \
williamr@2
   132
                               G_LOG_LEVEL_MESSAGE,  \
williamr@2
   133
                               __VA_ARGS__)
williamr@2
   134
#define g_critical(...) g_log (G_LOG_DOMAIN,         \
williamr@2
   135
                               G_LOG_LEVEL_CRITICAL, \
williamr@2
   136
                               __VA_ARGS__)
williamr@2
   137
#define g_warning(...)  g_log (G_LOG_DOMAIN,         \
williamr@2
   138
                               G_LOG_LEVEL_WARNING,  \
williamr@2
   139
                               __VA_ARGS__)
williamr@2
   140
#define g_debug(...)    g_log (G_LOG_DOMAIN,         \
williamr@2
   141
                               G_LOG_LEVEL_DEBUG,    \
williamr@2
   142
                               __VA_ARGS__)
williamr@2
   143
#elif defined(G_HAVE_GNUC_VARARGS)
williamr@2
   144
#define g_error(format...)      g_log (G_LOG_DOMAIN,         \
williamr@2
   145
                                       G_LOG_LEVEL_ERROR,    \
williamr@2
   146
                                       format)
williamr@2
   147
#define g_message(format...)    g_log (G_LOG_DOMAIN,         \
williamr@2
   148
                                       G_LOG_LEVEL_MESSAGE,  \
williamr@2
   149
                                       format)
williamr@2
   150
#define g_critical(format...)   g_log (G_LOG_DOMAIN,         \
williamr@2
   151
                                       G_LOG_LEVEL_CRITICAL, \
williamr@2
   152
                                       format)
williamr@2
   153
#define g_warning(format...)    g_log (G_LOG_DOMAIN,         \
williamr@2
   154
                                       G_LOG_LEVEL_WARNING,  \
williamr@2
   155
                                       format)
williamr@2
   156
#define g_debug(format...)      g_log (G_LOG_DOMAIN,         \
williamr@2
   157
                                       G_LOG_LEVEL_DEBUG,    \
williamr@2
   158
                                       format)
williamr@2
   159
#else   /* no varargs macros */
williamr@2
   160
static void
williamr@2
   161
g_error (const gchar *format,
williamr@2
   162
         ...)
williamr@2
   163
{
williamr@2
   164
  va_list args;
williamr@2
   165
  va_start (args, format);
williamr@2
   166
  g_logv (G_LOG_DOMAIN, G_LOG_LEVEL_ERROR, format, args);
williamr@2
   167
  va_end (args);
williamr@2
   168
}
williamr@2
   169
static void
williamr@2
   170
g_message (const gchar *format,
williamr@2
   171
           ...)
williamr@2
   172
{
williamr@2
   173
  va_list args;
williamr@2
   174
  va_start (args, format);
williamr@2
   175
  g_logv (G_LOG_DOMAIN, G_LOG_LEVEL_MESSAGE, format, args);
williamr@2
   176
  va_end (args);
williamr@2
   177
}
williamr@2
   178
static void
williamr@2
   179
g_critical (const gchar *format,
williamr@2
   180
            ...)
williamr@2
   181
{
williamr@2
   182
  va_list args;
williamr@2
   183
  va_start (args, format);
williamr@2
   184
  g_logv (G_LOG_DOMAIN, G_LOG_LEVEL_CRITICAL, format, args);
williamr@2
   185
  va_end (args);
williamr@2
   186
}
williamr@2
   187
static void
williamr@2
   188
g_warning (const gchar *format,
williamr@2
   189
           ...)
williamr@2
   190
{
williamr@2
   191
  va_list args;
williamr@2
   192
  va_start (args, format);
williamr@2
   193
  g_logv (G_LOG_DOMAIN, G_LOG_LEVEL_WARNING, format, args);
williamr@2
   194
  va_end (args);
williamr@2
   195
}
williamr@2
   196
static void
williamr@2
   197
g_debug (const gchar *format,
williamr@2
   198
         ...)
williamr@2
   199
{
williamr@2
   200
  va_list args;
williamr@2
   201
  va_start (args, format);
williamr@2
   202
  g_logv (G_LOG_DOMAIN, G_LOG_LEVEL_DEBUG, format, args);
williamr@2
   203
  va_end (args);
williamr@2
   204
}
williamr@2
   205
#endif  /* !__GNUC__ */
williamr@2
   206
williamr@2
   207
typedef void    (*GPrintFunc)           (const gchar    *string);
williamr@2
   208
IMPORT_C void            g_print                 (const gchar    *format,
williamr@2
   209
                                         ...) G_GNUC_PRINTF (1, 2);
williamr@2
   210
IMPORT_C GPrintFunc      g_set_print_handler     (GPrintFunc      func);
williamr@2
   211
IMPORT_C void            g_printerr              (const gchar    *format,
williamr@2
   212
                                         ...) G_GNUC_PRINTF (1, 2);
williamr@2
   213
IMPORT_C GPrintFunc      g_set_printerr_handler  (GPrintFunc      func);
williamr@2
   214
williamr@2
   215
williamr@2
   216
/* Provide macros for error handling. The "assert" macros will
williamr@2
   217
 *  exit on failure. The "return" macros will exit the current
williamr@2
   218
 *  function. Two different definitions are given for the macros
williamr@2
   219
 *  if G_DISABLE_ASSERT is not defined, in order to support gcc's
williamr@2
   220
 *  __PRETTY_FUNCTION__ capability.
williamr@2
   221
 */
williamr@2
   222
williamr@2
   223
#ifdef G_DISABLE_ASSERT
williamr@2
   224
williamr@2
   225
#define g_assert(expr)		G_STMT_START{ (void)0; }G_STMT_END
williamr@2
   226
#define g_assert_not_reached()	G_STMT_START{ (void)0; }G_STMT_END
williamr@2
   227
williamr@2
   228
#else /* !G_DISABLE_ASSERT */
williamr@2
   229
williamr@2
   230
#ifdef __GNUC__
williamr@2
   231
williamr@2
   232
#define g_assert(expr)			G_STMT_START{		\
williamr@2
   233
     if G_LIKELY(expr) { } else 				\
williamr@2
   234
        g_assert_warning (G_LOG_DOMAIN,				\
williamr@2
   235
	                  __FILE__,    				\
williamr@2
   236
	                  __LINE__,	      			\
williamr@2
   237
	                  __PRETTY_FUNCTION__,	      		\
williamr@2
   238
	                  #expr);		  }G_STMT_END
williamr@2
   239
williamr@2
   240
#define g_assert_not_reached()		G_STMT_START{		\
williamr@2
   241
        g_assert_warning (G_LOG_DOMAIN,				\
williamr@2
   242
	                  __FILE__,    				\
williamr@2
   243
	                  __LINE__,	      			\
williamr@2
   244
	                  __PRETTY_FUNCTION__,	      		\
williamr@2
   245
	                  NULL);		  }G_STMT_END
williamr@2
   246
williamr@2
   247
#else /* !__GNUC__ */
williamr@2
   248
williamr@2
   249
#define g_assert(expr)			G_STMT_START{		\
williamr@2
   250
     if (expr) { } else						\
williamr@2
   251
       g_log (G_LOG_DOMAIN,					\
williamr@2
   252
	      G_LOG_LEVEL_ERROR,				\
williamr@2
   253
	      "file %s: line %d: assertion failed: (%s)",	\
williamr@2
   254
	      __FILE__,						\
williamr@2
   255
	      __LINE__,						\
williamr@2
   256
	      #expr);			}G_STMT_END
williamr@2
   257
williamr@2
   258
#define g_assert_not_reached()		G_STMT_START{	\
williamr@2
   259
     g_log (G_LOG_DOMAIN,				\
williamr@2
   260
	    G_LOG_LEVEL_ERROR,				\
williamr@2
   261
	    "file %s: line %d: should not be reached",	\
williamr@2
   262
	    __FILE__,					\
williamr@2
   263
	    __LINE__);		}G_STMT_END
williamr@2
   264
williamr@2
   265
#endif /* __GNUC__ */
williamr@2
   266
williamr@2
   267
#endif /* !G_DISABLE_ASSERT */
williamr@2
   268
williamr@2
   269
williamr@2
   270
#ifdef G_DISABLE_CHECKS
williamr@2
   271
williamr@2
   272
#define g_return_if_fail(expr)			G_STMT_START{ (void)0; }G_STMT_END
williamr@2
   273
#define g_return_val_if_fail(expr,val)		G_STMT_START{ (void)0; }G_STMT_END
williamr@2
   274
#define g_return_if_reached()			G_STMT_START{ return; }G_STMT_END
williamr@2
   275
#define g_return_val_if_reached(val)		G_STMT_START{ return (val); }G_STMT_END
williamr@2
   276
williamr@2
   277
#else /* !G_DISABLE_CHECKS */
williamr@2
   278
williamr@2
   279
#ifdef __GNUC__
williamr@2
   280
williamr@2
   281
#define g_return_if_fail(expr)		G_STMT_START{			\
williamr@2
   282
     if G_LIKELY(expr) { } else       					\
williamr@2
   283
       {								\
williamr@2
   284
	 g_return_if_fail_warning (G_LOG_DOMAIN,			\
williamr@2
   285
		                   __PRETTY_FUNCTION__,		        \
williamr@2
   286
		                   #expr);				\
williamr@2
   287
	 return;							\
williamr@2
   288
       };				}G_STMT_END
williamr@2
   289
williamr@2
   290
#define g_return_val_if_fail(expr,val)	G_STMT_START{			\
williamr@2
   291
     if G_LIKELY(expr) { } else						\
williamr@2
   292
       {								\
williamr@2
   293
	 g_return_if_fail_warning (G_LOG_DOMAIN,			\
williamr@2
   294
		                   __PRETTY_FUNCTION__,		        \
williamr@2
   295
		                   #expr);				\
williamr@2
   296
	 return (val);							\
williamr@2
   297
       };				}G_STMT_END
williamr@2
   298
williamr@2
   299
#define g_return_if_reached()		G_STMT_START{			\
williamr@2
   300
     g_log (G_LOG_DOMAIN,						\
williamr@2
   301
	    G_LOG_LEVEL_CRITICAL,					\
williamr@2
   302
	    "file %s: line %d (%s): should not be reached",		\
williamr@2
   303
	    __FILE__,							\
williamr@2
   304
	    __LINE__,							\
williamr@2
   305
	    __PRETTY_FUNCTION__);					\
williamr@2
   306
     return;				}G_STMT_END
williamr@2
   307
williamr@2
   308
#define g_return_val_if_reached(val)	G_STMT_START{			\
williamr@2
   309
     g_log (G_LOG_DOMAIN,						\
williamr@2
   310
	    G_LOG_LEVEL_CRITICAL,					\
williamr@2
   311
	    "file %s: line %d (%s): should not be reached",		\
williamr@2
   312
	    __FILE__,							\
williamr@2
   313
	    __LINE__,							\
williamr@2
   314
	    __PRETTY_FUNCTION__);					\
williamr@2
   315
     return (val);			}G_STMT_END
williamr@2
   316
williamr@2
   317
#else /* !__GNUC__ */
williamr@2
   318
williamr@2
   319
#define g_return_if_fail(expr)		G_STMT_START{		\
williamr@2
   320
     if (expr) { } else						\
williamr@2
   321
       {							\
williamr@2
   322
	 g_log (G_LOG_DOMAIN,					\
williamr@2
   323
		G_LOG_LEVEL_CRITICAL,				\
williamr@2
   324
		"file %s: line %d: assertion `%s' failed",	\
williamr@2
   325
		__FILE__,					\
williamr@2
   326
		__LINE__,					\
williamr@2
   327
		#expr);						\
williamr@2
   328
	 return;						\
williamr@2
   329
       };				}G_STMT_END
williamr@2
   330
williamr@2
   331
#define g_return_val_if_fail(expr, val)	G_STMT_START{		\
williamr@2
   332
     if (expr) { } else						\
williamr@2
   333
       {							\
williamr@2
   334
	 g_log (G_LOG_DOMAIN,					\
williamr@2
   335
		G_LOG_LEVEL_CRITICAL,				\
williamr@2
   336
		"file %s: line %d: assertion `%s' failed",	\
williamr@2
   337
		__FILE__,					\
williamr@2
   338
		__LINE__,					\
williamr@2
   339
		#expr);						\
williamr@2
   340
	 return (val);						\
williamr@2
   341
       };				}G_STMT_END
williamr@2
   342
williamr@2
   343
#define g_return_if_reached()		G_STMT_START{		\
williamr@2
   344
     g_log (G_LOG_DOMAIN,					\
williamr@2
   345
	    G_LOG_LEVEL_CRITICAL,				\
williamr@2
   346
	    "file %s: line %d: should not be reached",		\
williamr@2
   347
	    __FILE__,						\
williamr@2
   348
	    __LINE__);						\
williamr@2
   349
     return;				}G_STMT_END
williamr@2
   350
williamr@2
   351
#define g_return_val_if_reached(val)	G_STMT_START{		\
williamr@2
   352
     g_log (G_LOG_DOMAIN,					\
williamr@2
   353
	    G_LOG_LEVEL_CRITICAL,				\
williamr@2
   354
	    "file %s: line %d: should not be reached",		\
williamr@2
   355
	    __FILE__,						\
williamr@2
   356
	    __LINE__);						\
williamr@2
   357
     return (val);			}G_STMT_END
williamr@2
   358
williamr@2
   359
#endif /* !__GNUC__ */
williamr@2
   360
williamr@2
   361
#endif /* !G_DISABLE_CHECKS */
williamr@2
   362
williamr@2
   363
G_END_DECLS
williamr@2
   364
williamr@2
   365
#endif /* __G_MESSAGES_H__ */
williamr@2
   366