MDL SDK API
Up
Main Page
Related Pages
Modules
Namespaces
Classes
Files
File List
File Members
All
Classes
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Friends
Groups
Pages
assert.h
Go to the documentation of this file.
1
/***************************************************************************************************
2
* Copyright 2022 NVIDIA Corporation. All rights reserved.
3
**************************************************************************************************/
8
9
#ifndef MI_BASE_ASSERT_H
10
#define MI_BASE_ASSERT_H
11
12
#include <
mi/base/config.h
>
13
14
namespace
mi {
15
16
namespace
base {
17
38
#ifndef mi_static_assert
53
#ifdef _MSC_VER
54
// Special case for Visual Studio 7.1, since __LINE__ would not work.
55
#define mi_static_assert(expr) \
56
typedef mi::base::static_assert_test<static_cast<int>( \
57
sizeof(mi::base::static_assert_failure<static_cast<bool>((expr))>))> \
58
MI_BASE_JOIN(static_assert_instance, __COUNTER__)
59
#else // _MSC_VER
60
#ifdef MI_COMPILER_GCC
61
#define mi_static_assert_attribute __attribute__((unused))
62
#else
63
#define mi_static_assert_attribute
64
#endif
65
#define mi_static_assert(expr) \
66
typedef mi::base::static_assert_test<static_cast<int>( \
67
sizeof(mi::base::static_assert_failure<static_cast<bool>((expr))>))> \
68
MI_BASE_JOIN(static_assert_instance, __LINE__) mi_static_assert_attribute
69
#endif // _MSC_VER
70
#endif // mi_static_assert
71
72
// helper definitions for the mi_static_assert above.
73
template
<
bool
>
struct
static_assert_failure;
74
template
<>
struct
static_assert_failure<true> {};
75
template
<
int
>
struct
static_assert_test {};
76
77
#if defined( mi_base_assert) && ! defined( mi_base_assert_msg) \
78
|| ! defined( mi_base_assert) && defined( mi_base_assert_msg)
79
error
"Only one of mi_base_assert and mi_base_assert_msg has been defined. Please define both."
80
#else
81
#ifndef mi_base_assert
82
94
#define mi_base_assert(expr) (static_cast<void>(0)) // valid but void null stmt
95
111
#define mi_base_assert_msg(expr, msg) (static_cast<void>(0)) // valid but void null stmt
112
113
// Just for doxygen, begin
114
119
#define mi_base_assert_enabled
120
#undef mi_base_assert_enabled
121
122
// Just for doxygen, end
123
124
#else // mi_base_assert
125
126
#define mi_base_assert_enabled
127
128
#endif // mi_base_assert
129
#endif // mi_base_assert xor mi_base_assert_msg
130
140
#if defined(__FUNCSIG__)
141
# define MI_BASE_ASSERT_FUNCTION __FUNCSIG__
142
#elif defined( __cplusplus) && defined(__GNUC__) && defined(__GNUC_MINOR__) \
143
&& ((__GNUC__ << 16) + __GNUC_MINOR__ >= (2 << 16) + 6)
144
# define MI_BASE_ASSERT_FUNCTION __PRETTY_FUNCTION__
145
#else
146
# if defined __STDC_VERSION__ && __STDC_VERSION__ >= 199901L
147
# define MI_BASE_ASSERT_FUNCTION __func__
148
# else
149
# define MI_BASE_ASSERT_FUNCTION ("unknown")
150
# endif
151
#endif
152
// end group mi_base_assert
154
155
}
// namespace base
156
157
}
// namespace mi
158
159
#endif // MI_BASE_ASSERT_H
5 April 2022, 20:40, rev.358266
© 2022 NVIDIA Corporation.
All rights reserved.