wordreference/libjson/_internal/Source/JSONDebug.h

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