 |
OpenVDB 14.0.0
|
Loading...
Searching...
No Matches
Go to the documentation of this file.
6#ifndef OPENVDB_PLATFORM_HAS_BEEN_INCLUDED
7#define OPENVDB_PLATFORM_HAS_BEEN_INCLUDED
9#define PRAGMA(x) _Pragma(#x)
14#define OPENVDB_PREPROC_STRINGIFY_(x) #x
19#define OPENVDB_PREPROC_STRINGIFY(x) OPENVDB_PREPROC_STRINGIFY_(x)
22#define OPENVDB_PREPROC_CONCAT_(x, y) x ## y
27#define OPENVDB_PREPROC_CONCAT(x, y) OPENVDB_PREPROC_CONCAT_(x, y)
32 #define OPENVDB_CHECK_GCC(MAJOR, MINOR) \
33 (__GNUC__ > MAJOR || (__GNUC__ == MAJOR && __GNUC_MINOR__ >= MINOR))
35 #define OPENVDB_CHECK_GCC(MAJOR, MINOR) 0
39#define OPENVDB_HAS_CXX11 1
41#if __cplusplus >= 202002L
42 #define OPENVDB_HAS_CXX20
54 #if defined(_DLL) && !defined(OPENVDB_STATICLIB) && !defined(OPENVDB_DLL)
62#define OPENVDB_UBSAN_SUPPRESS(X) __attribute__((no_sanitize(X)))
64#define OPENVDB_UBSAN_SUPPRESS(X)
69#if defined(__GNUC__) || defined(__clang__) || defined(__INTEL_COMPILER)
71#define OPENVDB_LIKELY(x) (__builtin_expect(static_cast<bool>(x), true))
72#define OPENVDB_UNLIKELY(x) (__builtin_expect(static_cast<bool>(x), false))
74#define OPENVDB_LIKELY(x) (__builtin_expect((x), 1))
75#define OPENVDB_UNLIKELY(x) (__builtin_expect((x), 0))
78#define OPENVDB_LIKELY(x) (x)
79#define OPENVDB_UNLIKELY(x) (x)
85#ifdef __has_cpp_attribute
86 #if __has_cpp_attribute(assume) >= 202207L
87 #define OPENVDB_ASSUME(...) [[assume(__VA_ARGS__)]]
91 #if defined(__clang__)
92 #define OPENVDB_ASSUME(...) __builtin_assume(__VA_ARGS__);
93 #elif defined(_MSC_VER)
94 #define OPENVDB_ASSUME(...) __assume(__VA_ARGS__);
95 #elif defined(__GNUC__)
97 #define OPENVDB_ASSUME(...) __attribute__((__assume__(__VA_ARGS__)))
101#ifndef OPENVDB_ASSUME
102 #define OPENVDB_ASSUME(...)
109#define OPENVDB_FORCE_INLINE __attribute__((always_inline)) inline
110#elif defined(_MSC_VER)
111#define OPENVDB_FORCE_INLINE __forceinline
113#define OPENVDB_FORCE_INLINE inline
131#if defined(__INTEL_COMPILER)
135 #define OPENVDB_NO_UNREACHABLE_CODE_WARNING_BEGIN \
136 _Pragma("warning (push)") \
137 _Pragma("warning (disable:111)") \
138 _Pragma("warning (disable:128)") \
139 _Pragma("warning (disable:185)") \
140 _Pragma("warning (disable:280)")
141 #define OPENVDB_NO_UNREACHABLE_CODE_WARNING_END \
142 _Pragma("warning (pop)")
143#elif defined(__clang__)
144 #define OPENVDB_NO_UNREACHABLE_CODE_WARNING_BEGIN \
145 PRAGMA(clang diagnostic push) \
146 PRAGMA(clang diagnostic ignored "-Wunreachable-code")
147 #define OPENVDB_NO_UNREACHABLE_CODE_WARNING_END \
148 PRAGMA(clang diagnostic pop)
150 #define OPENVDB_NO_UNREACHABLE_CODE_WARNING_BEGIN
151 #define OPENVDB_NO_UNREACHABLE_CODE_WARNING_END
156#ifndef OPENVDB_NO_DEPRECATION_WARNINGS
157#define OPENVDB_DEPRECATED [[deprecated]]
158#define OPENVDB_DEPRECATED_MESSAGE(msg) [[deprecated(msg)]]
160#define OPENVDB_DEPRECATED
161#define OPENVDB_DEPRECATED_MESSAGE(msg)
178#if defined __INTEL_COMPILER
179 #define OPENVDB_NO_DEPRECATION_WARNING_BEGIN \
180 _Pragma("warning (push)") \
181 _Pragma("warning (disable:1478)")
182 #define OPENVDB_NO_DEPRECATION_WARNING_END \
183 _Pragma("warning (pop)")
184#elif defined __clang__
185 #define OPENVDB_NO_DEPRECATION_WARNING_BEGIN \
186 _Pragma("clang diagnostic push") \
187 _Pragma("clang diagnostic ignored \"-Wdeprecated-declarations\"")
189 #define OPENVDB_NO_DEPRECATION_WARNING_END \
190 _Pragma("clang diagnostic pop")
191#elif defined __GNUC__
192 #define OPENVDB_NO_DEPRECATION_WARNING_BEGIN \
193 _Pragma("GCC diagnostic push") \
194 _Pragma("GCC diagnostic ignored \"-Wdeprecated-declarations\"")
195 #define OPENVDB_NO_DEPRECATION_WARNING_END \
196 _Pragma("GCC diagnostic pop")
197#elif defined _MSC_VER
198 #define OPENVDB_NO_DEPRECATION_WARNING_BEGIN \
199 __pragma(warning(push)) \
200 __pragma(warning(disable : 4996))
201 #define OPENVDB_NO_DEPRECATION_WARNING_END \
202 __pragma(warning(pop))
204 #define OPENVDB_NO_DEPRECATION_WARNING_BEGIN
205 #define OPENVDB_NO_DEPRECATION_WARNING_END
219#if defined __INTEL_COMPILER
220 #define OPENVDB_NO_TYPE_CONVERSION_WARNING_BEGIN
221 #define OPENVDB_NO_TYPE_CONVERSION_WARNING_END
222#elif defined __clang__
223 #define OPENVDB_NO_TYPE_CONVERSION_WARNING_BEGIN \
224 _Pragma("clang diagnostic push") \
225 _Pragma("clang diagnostic ignored \"-Wconversion\"") \
226 _Pragma("clang diagnostic ignored \"-Wfloat-conversion\"") \
227 _Pragma("clang diagnostic ignored \"-Wimplicit-float-conversion\"")
228 #define OPENVDB_NO_TYPE_CONVERSION_WARNING_END \
229 _Pragma("clang diagnostic pop")
230#elif defined __GNUC__
232 #define OPENVDB_NO_TYPE_CONVERSION_WARNING_BEGIN \
233 _Pragma("GCC diagnostic push") \
234 _Pragma("GCC diagnostic ignored \"-Wconversion\"") \
235 _Pragma("GCC diagnostic ignored \"-Wfloat-conversion\"")
236 #define OPENVDB_NO_TYPE_CONVERSION_WARNING_END \
237 _Pragma("GCC diagnostic pop")
239 #define OPENVDB_NO_TYPE_CONVERSION_WARNING_BEGIN
240 #define OPENVDB_NO_TYPE_CONVERSION_WARNING_END
252 #define OPENVDB_EXPORT __declspec(dllexport)
253 #define OPENVDB_IMPORT __declspec(dllimport)
255 #define OPENVDB_EXPORT
256 #define OPENVDB_IMPORT
258#elif defined(__GNUC__)
259 #define OPENVDB_EXPORT __attribute__((visibility("default")))
260 #define OPENVDB_IMPORT __attribute__((visibility("default")))
264#if defined(_WIN32) && defined(OPENVDB_DLL)
265 #ifdef OPENVDB_PRIVATE
266 #define OPENVDB_TEMPLATE_EXPORT OPENVDB_EXPORT
267 #define OPENVDB_TEMPLATE_IMPORT
269 #define OPENVDB_TEMPLATE_EXPORT
270 #define OPENVDB_TEMPLATE_IMPORT OPENVDB_IMPORT
273 #define OPENVDB_TEMPLATE_IMPORT
274 #define OPENVDB_TEMPLATE_EXPORT
283#ifdef OPENVDB_PRIVATE
284 #define OPENVDB_API OPENVDB_EXPORT
286 #define OPENVDB_API OPENVDB_IMPORT
288#ifdef OPENVDB_HOUDINI_API
289#undef OPENVDB_HOUDINI_API
291#ifdef OPENVDB_HOUDINI_PRIVATE
292 #define OPENVDB_HOUDINI_API OPENVDB_EXPORT
294 #define OPENVDB_HOUDINI_API OPENVDB_IMPORT
301#ifdef OPENVDB_AX_PRIVATE
302 #define OPENVDB_AX_API OPENVDB_EXPORT
304 #define OPENVDB_AX_API OPENVDB_IMPORT
307#define OPENVDB_AX_API
314#define OPENVDB_START_THREADSAFE_STATIC_REFERENCE __pragma(warning(disable:1710))
315#define OPENVDB_FINISH_THREADSAFE_STATIC_REFERENCE __pragma(warning(default:1710))
316#define OPENVDB_START_THREADSAFE_STATIC_WRITE __pragma(warning(disable:1711))
317#define OPENVDB_FINISH_THREADSAFE_STATIC_WRITE __pragma(warning(default:1711))
318#define OPENVDB_START_THREADSAFE_STATIC_ADDRESS __pragma(warning(disable:1712))
319#define OPENVDB_FINISH_THREADSAFE_STATIC_ADDRESS __pragma(warning(default:1712))
323#define OPENVDB_START_NON_THREADSAFE_STATIC_REFERENCE __pragma(warning(disable:1710))
324#define OPENVDB_FINISH_NON_THREADSAFE_STATIC_REFERENCE __pragma(warning(default:1710))
325#define OPENVDB_START_NON_THREADSAFE_STATIC_WRITE __pragma(warning(disable:1711))
326#define OPENVDB_FINISH_NON_THREADSAFE_STATIC_WRITE __pragma(warning(default:1711))
327#define OPENVDB_START_NON_THREADSAFE_STATIC_ADDRESS __pragma(warning(disable:1712))
328#define OPENVDB_FINISH_NON_THREADSAFE_STATIC_ADDRESS __pragma(warning(default:1712))
331#define OPENVDB_THREADSAFE_STATIC_REFERENCE(CODE) \
332 __pragma(warning(disable:1710)); CODE; __pragma(warning(default:1710))
333#define OPENVDB_THREADSAFE_STATIC_WRITE(CODE) \
334 __pragma(warning(disable:1711)); CODE; __pragma(warning(default:1711))
335#define OPENVDB_THREADSAFE_STATIC_ADDRESS(CODE) \
336 __pragma(warning(disable:1712)); CODE; __pragma(warning(default:1712))
340#define OPENVDB_START_THREADSAFE_STATIC_REFERENCE
341#define OPENVDB_FINISH_THREADSAFE_STATIC_REFERENCE
342#define OPENVDB_START_THREADSAFE_STATIC_WRITE
343#define OPENVDB_FINISH_THREADSAFE_STATIC_WRITE
344#define OPENVDB_START_THREADSAFE_STATIC_ADDRESS
345#define OPENVDB_FINISH_THREADSAFE_STATIC_ADDRESS
347#define OPENVDB_START_NON_THREADSAFE_STATIC_REFERENCE
348#define OPENVDB_FINISH_NON_THREADSAFE_STATIC_REFERENCE
349#define OPENVDB_START_NON_THREADSAFE_STATIC_WRITE
350#define OPENVDB_FINISH_NON_THREADSAFE_STATIC_WRITE
351#define OPENVDB_START_NON_THREADSAFE_STATIC_ADDRESS
352#define OPENVDB_FINISH_NON_THREADSAFE_STATIC_ADDRESS
354#define OPENVDB_THREADSAFE_STATIC_REFERENCE(CODE) CODE
355#define OPENVDB_THREADSAFE_STATIC_WRITE(CODE) CODE
356#define OPENVDB_THREADSAFE_STATIC_ADDRESS(CODE) CODE