Home | History | Annotate | Download | only in json-c
      1 /*
      2  * $Id: debug.h,v 1.5 2006/01/30 23:07:57 mclark Exp $
      3  *
      4  * Copyright (c) 2004, 2005 Metaparadigm Pte. Ltd.
      5  * Michael Clark <michael (at) metaparadigm.com>
      6  * Copyright (c) 2009 Hewlett-Packard Development Company, L.P.
      7  *
      8  * This library is free software; you can redistribute it and/or modify
      9  * it under the terms of the MIT license. See COPYING for details.
     10  *
     11  */
     12 
     13 #ifndef _DEBUG_H_
     14 #define _DEBUG_H_
     15 
     16 #include <stdlib.h>
     17 
     18 #ifdef __cplusplus
     19 extern "C" {
     20 #endif
     21 
     22 extern void mc_set_debug(int debug);
     23 extern int mc_get_debug(void);
     24 
     25 extern void mc_set_syslog(int syslog);
     26 
     27 extern void mc_debug(const char *msg, ...);
     28 extern void mc_error(const char *msg, ...);
     29 extern void mc_info(const char *msg, ...);
     30 
     31 #ifndef __STRING
     32 #define __STRING(x) #x
     33 #endif
     34 
     35 #ifndef PARSER_BROKEN_FIXED
     36 
     37 #define JASSERT(cond) do {} while(0)
     38 
     39 #else
     40 
     41 #define JASSERT(cond) do { \
     42 		if (!(cond)) { \
     43 			mc_error("cjson assert failure %s:%d : cond \"" __STRING(cond) "failed\n", __FILE__, __LINE__); \
     44 			*(int *)0 = 1;\
     45 			abort(); \
     46 		}\
     47 	} while(0)
     48 
     49 #endif
     50 
     51 #define MC_ERROR(x, ...) mc_error(x, ##__VA_ARGS__)
     52 
     53 #ifdef MC_MAINTAINER_MODE
     54 #define MC_SET_DEBUG(x) mc_set_debug(x)
     55 #define MC_GET_DEBUG() mc_get_debug()
     56 #define MC_SET_SYSLOG(x) mc_set_syslog(x)
     57 #define MC_DEBUG(x, ...) mc_debug(x, ##__VA_ARGS__)
     58 #define MC_INFO(x, ...) mc_info(x, ##__VA_ARGS__)
     59 #else
     60 #define MC_SET_DEBUG(x) if (0) mc_set_debug(x)
     61 #define MC_GET_DEBUG() (0)
     62 #define MC_SET_SYSLOG(x) if (0) mc_set_syslog(x)
     63 #define MC_DEBUG(x, ...) if (0) mc_debug(x, ##__VA_ARGS__)
     64 #define MC_INFO(x, ...) if (0) mc_info(x, ##__VA_ARGS__)
     65 #endif
     66 
     67 #ifdef __cplusplus
     68 }
     69 #endif
     70 
     71 #endif
     72