summaryrefslogtreecommitdiff
path: root/json-glib/json-debug.c
diff options
context:
space:
mode:
authorEmmanuele Bassi <ebassi@linux.intel.com>2010-03-18 15:21:29 +0000
committerEmmanuele Bassi <ebassi@linux.intel.com>2010-03-18 15:21:29 +0000
commitb3435c6a05ecee58c64dce669ce7e44f829afc98 (patch)
tree03b6b727b29f44d2f029b00637b8ae099dcfadc0 /json-glib/json-debug.c
parent88ac0d5111eb528e4c396e4c169ceee4fb046e62 (diff)
downloadjson-glib-b3435c6a05ecee58c64dce669ce7e44f829afc98.tar.gz
Add debugging macros
Similarly to what GTK+ and Clutter do, we can use macros that evaluate to nothing if JSON_ENABLE_DEBUG is disabled; they evaluate to messages when the JSON_DEBUG environment variable is set to a debug domain.
Diffstat (limited to 'json-glib/json-debug.c')
-rw-r--r--json-glib/json-debug.c37
1 files changed, 37 insertions, 0 deletions
diff --git a/json-glib/json-debug.c b/json-glib/json-debug.c
new file mode 100644
index 0000000..471d082
--- /dev/null
+++ b/json-glib/json-debug.c
@@ -0,0 +1,37 @@
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include "json-debug.h"
+
+static unsigned int json_debug_flags = 0;
+static gboolean json_debug_flags_set = FALSE;
+
+#ifdef JSON_ENABLE_DEBUG
+static const GDebugKey json_debug_keys[] = {
+ { "parser", JSON_DEBUG_PARSER }
+};
+#endif /* JSON_ENABLE_DEBUG */
+
+JsonDebugFlags
+_json_get_debug_flags (void)
+{
+#ifdef JSON_ENABLE_DEBUG
+ const gchar *env_str;
+
+ if (json_debug_flags_set)
+ return json_debug_flags;
+
+ env_str = g_getenv ("JSON_DEBUG");
+ if (env_str != NULL && *env_str != '\0')
+ {
+ json_debug_flags |= g_parse_debug_string (env_str,
+ json_debug_keys,
+ G_N_ELEMENTS (json_debug_keys));
+ }
+
+ json_debug_flags_set = TRUE;
+#endif /* JSON_ENABLE_DEBUG */
+
+ return json_debug_flags;
+}