Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
godotengine
GitHub Repository: godotengine/godot
Path: blob/master/thirdparty/openxr/src/external/jsoncpp/include/json/assertions.h
9913 views
1
// Copyright 2007-2010 Baptiste Lepilleur and The JsonCpp Authors
2
// Distributed under MIT license, or public domain if desired and
3
// recognized in your jurisdiction.
4
// See file LICENSE for detail or copy at http://jsoncpp.sourceforge.net/LICENSE
5
6
#ifndef JSON_ASSERTIONS_H_INCLUDED
7
#define JSON_ASSERTIONS_H_INCLUDED
8
9
#include <cstdlib>
10
#include <sstream>
11
12
#if !defined(JSON_IS_AMALGAMATION)
13
#include "config.h"
14
#endif // if !defined(JSON_IS_AMALGAMATION)
15
16
/** It should not be possible for a maliciously designed file to
17
* cause an abort() or seg-fault, so these macros are used only
18
* for pre-condition violations and internal logic errors.
19
*/
20
#if JSON_USE_EXCEPTION
21
22
// @todo <= add detail about condition in exception
23
#define JSON_ASSERT(condition) \
24
do { \
25
if (!(condition)) { \
26
Json::throwLogicError("assert json failed"); \
27
} \
28
} while (0)
29
30
#define JSON_FAIL_MESSAGE(message) \
31
do { \
32
OStringStream oss; \
33
oss << message; \
34
Json::throwLogicError(oss.str()); \
35
abort(); \
36
} while (0)
37
38
#else // JSON_USE_EXCEPTION
39
40
#define JSON_ASSERT(condition) assert(condition)
41
42
// The call to assert() will show the failure message in debug builds. In
43
// release builds we abort, for a core-dump or debugger.
44
#define JSON_FAIL_MESSAGE(message) \
45
{ \
46
OStringStream oss; \
47
oss << message; \
48
assert(false && oss.str().c_str()); \
49
abort(); \
50
}
51
52
#endif
53
54
#define JSON_ASSERT_MESSAGE(condition, message) \
55
do { \
56
if (!(condition)) { \
57
JSON_FAIL_MESSAGE(message); \
58
} \
59
} while (0)
60
61
#endif // JSON_ASSERTIONS_H_INCLUDED
62
63