59 lines
1.4 KiB
C++
59 lines
1.4 KiB
C++
#ifndef LIBJSON_GUARD_DEBUG_H
|
|
#define LIBJSON_GUARD_DEBUG_H
|
|
|
|
#include "JSONDefs.h"
|
|
#include "JSONStats.h"
|
|
|
|
#ifdef JSON_DEBUG
|
|
#ifdef JSON_SAFE
|
|
#define JSON_ASSERT_SAFE(condition, msg, code)\
|
|
{\
|
|
if (json_unlikely(!(condition))){\
|
|
JSON_FAIL(msg);\
|
|
code\
|
|
}\
|
|
}
|
|
#define JSON_FAIL_SAFE(msg, code)\
|
|
{\
|
|
JSON_FAIL(msg);\
|
|
code\
|
|
}
|
|
#else
|
|
#define JSON_ASSERT_SAFE(condition, msg, code) JSON_ASSERT(condition, msg)
|
|
#define JSON_FAIL_SAFE(msg, code) JSON_FAIL(msg)
|
|
#endif
|
|
|
|
#define JSON_FAIL(msg) JSONDebug::_JSON_FAIL(msg)
|
|
#define JSON_ASSERT(bo, msg) JSONDebug::_JSON_ASSERT(bo, msg)
|
|
|
|
class JSONDebug {
|
|
public:
|
|
#ifndef JSON_STDERROR
|
|
static json_error_callback_t register_callback(json_error_callback_t callback) json_nothrow json_cold;
|
|
#endif
|
|
static void _JSON_FAIL(const json_string & msg) json_nothrow json_cold;
|
|
static void _JSON_ASSERT(bool condition, const json_string & msg) json_nothrow json_cold;
|
|
};
|
|
#else
|
|
#ifdef JSON_SAFE
|
|
#define JSON_ASSERT_SAFE(condition, msg, code)\
|
|
{\
|
|
if (json_unlikely(!(condition))){\
|
|
code\
|
|
}\
|
|
}
|
|
#define JSON_FAIL_SAFE(msg, code)\
|
|
{\
|
|
code\
|
|
}
|
|
#else
|
|
#define JSON_ASSERT_SAFE(condition, msg, code)
|
|
#define JSON_FAIL_SAFE(msg, code)
|
|
#endif
|
|
|
|
#define JSON_ASSERT(condition, msg)
|
|
#define JSON_FAIL(msg)
|
|
#endif
|
|
|
|
#endif
|
|
|