diff options
author | RĂ©mi Verschelde <remi@verschelde.fr> | 2022-02-23 13:36:07 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-02-23 13:36:07 +0100 |
commit | 1f3916e0b6afc84872f7354432ca8606d764fc22 (patch) | |
tree | 7c6c96bc92b6e39eadc960fadb1bd9a8fb939aca /thirdparty/openxr/src/external/jsoncpp/include/json/assertions.h | |
parent | 2fd17df2ce6ad595db2b5395c308169a1b805914 (diff) | |
parent | a78a9fee7194297fca8867b4983deb4da0ba18c2 (diff) |
Merge pull request #56394 from BastiaanOlij/OpenXR_Core4
Diffstat (limited to 'thirdparty/openxr/src/external/jsoncpp/include/json/assertions.h')
-rw-r--r-- | thirdparty/openxr/src/external/jsoncpp/include/json/assertions.h | 61 |
1 files changed, 61 insertions, 0 deletions
diff --git a/thirdparty/openxr/src/external/jsoncpp/include/json/assertions.h b/thirdparty/openxr/src/external/jsoncpp/include/json/assertions.h new file mode 100644 index 0000000000..666fa7f542 --- /dev/null +++ b/thirdparty/openxr/src/external/jsoncpp/include/json/assertions.h @@ -0,0 +1,61 @@ +// Copyright 2007-2010 Baptiste Lepilleur and The JsonCpp Authors +// Distributed under MIT license, or public domain if desired and +// recognized in your jurisdiction. +// See file LICENSE for detail or copy at http://jsoncpp.sourceforge.net/LICENSE + +#ifndef JSON_ASSERTIONS_H_INCLUDED +#define JSON_ASSERTIONS_H_INCLUDED + +#include <cstdlib> +#include <sstream> + +#if !defined(JSON_IS_AMALGAMATION) +#include "config.h" +#endif // if !defined(JSON_IS_AMALGAMATION) + +/** It should not be possible for a maliciously designed file to + * cause an abort() or seg-fault, so these macros are used only + * for pre-condition violations and internal logic errors. + */ +#if JSON_USE_EXCEPTION + +// @todo <= add detail about condition in exception +#define JSON_ASSERT(condition) \ + do { \ + if (!(condition)) { \ + Json::throwLogicError("assert json failed"); \ + } \ + } while (0) + +#define JSON_FAIL_MESSAGE(message) \ + do { \ + OStringStream oss; \ + oss << message; \ + Json::throwLogicError(oss.str()); \ + abort(); \ + } while (0) + +#else // JSON_USE_EXCEPTION + +#define JSON_ASSERT(condition) assert(condition) + +// The call to assert() will show the failure message in debug builds. In +// release builds we abort, for a core-dump or debugger. +#define JSON_FAIL_MESSAGE(message) \ + { \ + OStringStream oss; \ + oss << message; \ + assert(false && oss.str().c_str()); \ + abort(); \ + } + +#endif + +#define JSON_ASSERT_MESSAGE(condition, message) \ + do { \ + if (!(condition)) { \ + JSON_FAIL_MESSAGE(message); \ + } \ + } while (0) + +#endif // JSON_ASSERTIONS_H_INCLUDED |