Blame gegl/gegl-debug.h

Packit bc1512
#ifndef __GEGL_DEBUG_H__
Packit bc1512
#define __GEGL_DEBUG_H__
Packit bc1512
Packit bc1512
#include <glib.h>
Packit bc1512
#include "gegl-init.h"
Packit bc1512
Packit bc1512
G_BEGIN_DECLS
Packit bc1512
Packit bc1512
typedef enum {
Packit bc1512
  GEGL_DEBUG_PROCESS         = 1 << 0,
Packit bc1512
  GEGL_DEBUG_BUFFER_LOAD     = 1 << 1,
Packit bc1512
  GEGL_DEBUG_BUFFER_SAVE     = 1 << 2,
Packit bc1512
  GEGL_DEBUG_TILE_BACKEND    = 1 << 3,
Packit bc1512
  GEGL_DEBUG_PROCESSOR       = 1 << 4,
Packit bc1512
  GEGL_DEBUG_CACHE           = 1 << 5,
Packit bc1512
  GEGL_DEBUG_MISC            = 1 << 6,
Packit bc1512
  GEGL_DEBUG_INVALIDATION    = 1 << 7,
Packit bc1512
  GEGL_DEBUG_OPENCL          = 1 << 8
Packit bc1512
} GeglDebugFlag;
Packit bc1512
Packit bc1512
/* only compiled in from gegl-init.c but kept here to
Packit bc1512
 * make it easier to update and keep in sync with the
Packit bc1512
 * flags
Packit bc1512
 */
Packit bc1512
#ifdef __GEGL_INIT_C
Packit bc1512
static const GDebugKey gegl_debug_keys[] = {
Packit bc1512
  { "process",       GEGL_DEBUG_PROCESS},
Packit bc1512
  { "cache",         GEGL_DEBUG_CACHE},
Packit bc1512
  { "buffer-load",   GEGL_DEBUG_BUFFER_LOAD},
Packit bc1512
  { "buffer-save",   GEGL_DEBUG_BUFFER_SAVE},
Packit bc1512
  { "tile-backend",  GEGL_DEBUG_TILE_BACKEND},
Packit bc1512
  { "processor",     GEGL_DEBUG_PROCESSOR},
Packit bc1512
  { "invalidation",  GEGL_DEBUG_INVALIDATION},
Packit bc1512
  { "opencl",        GEGL_DEBUG_OPENCL},
Packit bc1512
  { "all",           GEGL_DEBUG_PROCESS|
Packit bc1512
                     GEGL_DEBUG_BUFFER_LOAD|
Packit bc1512
                     GEGL_DEBUG_BUFFER_SAVE|
Packit bc1512
                     GEGL_DEBUG_TILE_BACKEND|
Packit bc1512
                     GEGL_DEBUG_PROCESSOR|
Packit bc1512
                     GEGL_DEBUG_CACHE|
Packit bc1512
                     GEGL_DEBUG_OPENCL},
Packit bc1512
};
Packit bc1512
#endif /* GEGL_ENABLE_DEBUG */
Packit bc1512
Packit bc1512
#if defined(__cplusplus) && defined(GEGL_ISO_CXX_VARIADIC_MACROS)
Packit bc1512
#  define GEGL_ISO_VARIADIC_MACROS 1
Packit bc1512
#endif
Packit bc1512
Packit bc1512
#ifdef GEGL_ENABLE_DEBUG
Packit bc1512
Packit bc1512
#if defined(GEGL_ISO_VARIADIC_MACROS)
Packit bc1512
Packit bc1512
/* Use the C99 version; unfortunately, this does not allow us to pass
Packit bc1512
 * empty arguments to the macro, which means we have to
Packit bc1512
 * do an intemediate printf.
Packit bc1512
 */
Packit bc1512
#define GEGL_NOTE(type,...)               G_STMT_START {        \
Packit bc1512
        if (gegl_debug_flags & type)                            \
Packit bc1512
	{                                                       \
Packit bc1512
	  gchar * _fmt = g_strdup_printf (__VA_ARGS__);         \
Packit bc1512
          g_message ("[" #type "] " G_STRLOC ": %s",_fmt);      \
Packit bc1512
          g_free (_fmt);                                        \
Packit bc1512
	}                                                       \
Packit bc1512
                                                } G_STMT_END
Packit bc1512
Packit bc1512
#define GEGL_TIMESTAMP(type,...)             G_STMT_START {     \
Packit bc1512
        if (gegl_debug_flags & type)                            \
Packit bc1512
	{                                                       \
Packit bc1512
	  gchar * _fmt = g_strdup_printf (__VA_ARGS__);         \
Packit bc1512
          g_message ("[" #type "]" " %li:"  G_STRLOC ": %s",    \
Packit bc1512
                       gegl_get_timestamp(), _fmt);             \
Packit bc1512
          g_free (_fmt);                                        \
Packit bc1512
	}                                                       \
Packit bc1512
                                                   } G_STMT_END
Packit bc1512
Packit bc1512
#elif defined(GEGL_GNUC_VARIADIC_MACROS)
Packit bc1512
Packit bc1512
#define GEGL_NOTE(type,format,a...)          G_STMT_START {     \
Packit bc1512
        if (gegl_debug_flags & type)                            \
Packit bc1512
          { g_message ("[" #type "] " G_STRLOC ": "             \
Packit bc1512
                       format, ##a); }                          \
Packit bc1512
                                                } G_STMT_END
Packit bc1512
Packit bc1512
#define GEGL_TIMESTAMP(type,format,a...)        G_STMT_START {  \
Packit bc1512
        if (gegl_debug_flags & type)                            \
Packit bc1512
          { g_message ("[" #type "]" " %li:"  G_STRLOC ": "     \
Packit bc1512
                       format, gegl_get_timestamp(), ##a); }    \
Packit bc1512
                                                   } G_STMT_END
Packit bc1512
Packit bc1512
#else
Packit bc1512
Packit bc1512
#include <stdarg.h>
Packit bc1512
Packit bc1512
static const gchar *
Packit bc1512
gegl_lookup_debug_string  (guint type)
Packit bc1512
{
Packit bc1512
  const gchar *key = "!INVALID!";
Packit bc1512
  guint i = 0;
Packit bc1512
Packit bc1512
  if (type == GEGL_DEBUG_MISC)
Packit bc1512
    {
Packit bc1512
      key = "misc";
Packit bc1512
    }
Packit bc1512
  else
Packit bc1512
    {
Packit bc1512
      while (g_strcmp0 (gegl_debug_keys[i].key, "all") != 0)
Packit bc1512
        {
Packit bc1512
          if (gegl_debug_keys[i].value == type)
Packit bc1512
            {
Packit bc1512
              key = gegl_debug_keys[i].key;
Packit bc1512
              break;
Packit bc1512
            }
Packit bc1512
          i++;
Packit bc1512
        }
Packit bc1512
    }
Packit bc1512
Packit bc1512
  return key;
Packit bc1512
}
Packit bc1512
Packit bc1512
static inline void
Packit bc1512
GEGL_NOTE (guint type, const char *format, ...)
Packit bc1512
{
Packit bc1512
  va_alist args;
Packit bc1512
Packit bc1512
  if (gegl_debug_flags & type)
Packit bc1512
  {
Packit bc1512
    gchar *formatted;
Packit bc1512
    va_start (args, format);
Packit bc1512
    formatted = g_strdup_printf (format, args);
Packit bc1512
    g_message ("[ %s ] " G_STRLOC ": %s",
Packit bc1512
               gegl_lookup_debug_string (type), formatted);
Packit bc1512
    g_free (formatted);
Packit bc1512
    va_end (args);
Packit bc1512
  }
Packit bc1512
}
Packit bc1512
Packit bc1512
static inline void
Packit bc1512
GEGL_TIMESTAMP (guint type, const char *format, ...)
Packit bc1512
{
Packit bc1512
  va_alist args;
Packit bc1512
  
Packit bc1512
  if (gegl_debug_flags & type)
Packit bc1512
  {
Packit bc1512
    gchar *formatted;
Packit bc1512
    va_start (args, format);
Packit bc1512
    formatted = g_strdup_printf (format, args);
Packit bc1512
    g_message ("[ %s ] %li: " G_STRLOC ": %s",
Packit bc1512
               gegl_lookup_debug_string (type), gegl_get_timestamp(),
Packit bc1512
               formatted);
Packit bc1512
    g_free (formatted);
Packit bc1512
    va_end (args);
Packit bc1512
  }
Packit bc1512
}
Packit bc1512
Packit bc1512
#endif
Packit bc1512
Packit bc1512
#define GEGL_MARK()      GEGL_NOTE(GEGL_DEBUG_MISC, "== mark ==")
Packit bc1512
#define GEGL_DBG(x) { a }
Packit bc1512
Packit bc1512
#else /* !GEGL_ENABLE_DEBUG */
Packit bc1512
Packit bc1512
#if defined(GEGL_ISO_VARIADIC_MACROS)
Packit bc1512
Packit bc1512
#define GEGL_NOTE(type,...)
Packit bc1512
#define GEGL_TIMESTAMP(type,...)
Packit bc1512
Packit bc1512
#elif defined(GEGL_GNUC_VARIADIC_MACROS)
Packit bc1512
Packit bc1512
#define GEGL_NOTE(type,format,a...)
Packit bc1512
#define GEGL_TIMESTAMP(type,format,a...)
Packit bc1512
Packit bc1512
#else
Packit bc1512
Packit bc1512
static inline void
Packit bc1512
GEGL_NOTE (guint type, const char *format, ...)
Packit bc1512
{
Packit bc1512
  return;
Packit bc1512
}
Packit bc1512
Packit bc1512
static inline void
Packit bc1512
GEGL_TIMESTAMP (guint type, const char *format, ...)
Packit bc1512
{
Packit bc1512
  return;
Packit bc1512
}
Packit bc1512
Packit bc1512
#endif
Packit bc1512
Packit bc1512
#define GEGL_MARK()
Packit bc1512
#define GEGL_DBG(x)
Packit bc1512
Packit bc1512
#endif /* GEGL_ENABLE_DEBUG */
Packit bc1512
Packit bc1512
extern guint gegl_debug_flags;
Packit bc1512
Packit bc1512
G_END_DECLS
Packit bc1512
Packit bc1512
#endif /* __GEGL_DEBUG_H__  */