OpenVDB 12.0.0
 
Loading...
Searching...
No Matches
Assert.h
Go to the documentation of this file.
1// Copyright Contributors to the OpenVDB Project
2// SPDX-License-Identifier: Apache-2.0
3///
4/// @file Assert.h
5
6#ifndef OPENVDB_UTIL_ASSERT_HAS_BEEN_INCLUDED
7#define OPENVDB_UTIL_ASSERT_HAS_BEEN_INCLUDED
8
9#include <openvdb/Platform.h>
10#include <openvdb/version.h>
11
12namespace openvdb {
14namespace OPENVDB_VERSION_NAME {
15
16/// @brief Trigger a SIGABRT after printing a formatted assertion message.
17/// Effectively performs the same functionality as cassert, but allows
18/// VDB code to call this independently of the NDEBUG define.
19/// @param assertion The variable or expression that triggered the assertion
20/// as a string
21/// @param file The name of the file the assertion occurred
22/// @param line The line in the file the assertion occurred
23/// @param function The name of the function the assertion occurred in
24/// @param msg An optional descriptive message
25[[noreturn]] void assertAbort(
26 const char *assertion,
27 const char *file,
28 const unsigned line,
29 const char *function,
30 const char* msg = nullptr);
31
32}
33}
34
35#ifdef OPENVDB_ENABLE_ASSERTS
36#define OPENVDB_ASSERT(X) \
37 (OPENVDB_LIKELY(X) ? (void)0 : openvdb::assertAbort(#X, __FILE__, __LINE__, __PRETTY_FUNCTION__))
38#define OPENVDB_ASSERT_MESSAGE(X, MSG) \
39 (OPENVDB_LIKELY(X) ? (void)0 : openvdb::assertAbort(#X, __FILE__, __LINE__, __PRETTY_FUNCTION__, MSG))
40#else
41#define OPENVDB_ASSERT(X) (void)0;
42#define OPENVDB_ASSERT_MESSAGE(X, MSG) (void)0;
43#endif // OPENVDB_ENABLE_ASSERTS
44
45#endif // OPENVDB_UTIL_ASSERT_HAS_BEEN_INCLUDED
void assertAbort(const char *assertion, const char *file, const unsigned line, const char *function, const char *msg=nullptr)
Trigger a SIGABRT after printing a formatted assertion message. Effectively performs the same functio...
Definition Exceptions.h:13
#define OPENVDB_VERSION_NAME
The version namespace name for this library version.
Definition version.h.in:121
#define OPENVDB_USE_VERSION_NAMESPACE
Definition version.h.in:218