OpenVDB: Platform.h File Reference

OpenVDB 4.0.2

Macros
Platform.h File Reference
`#include "PlatformConfig.h"`
`#include <boost/cstdint.hpp>`

Go to the source code of this file.

## Macros
#define | PRAGMA(x) _Pragma(#x)
#define | OPENVDB_DEPRECATED __attribute__ ((deprecated))
#define | OPENVDB_CHECK_GCC(MAJOR, MINOR) 0
| Macro for determining if GCC version is >= than X.Y. More...
#define | OPENVDB_STATIC_SPECIALIZATION static
| Macro for determining if there are sufficient C++0x/C++11 features. More...
#define | OPENVDB_NO_UNREACHABLE_CODE_WARNING_BEGIN
#define | OPENVDB_NO_UNREACHABLE_CODE_WARNING_END
#define | OPENVDB_API OPENVDB_IMPORT
| Helper macros for defining library symbol visibility. More...
#define | OPENVDB_HOUDINI_API OPENVDB_IMPORT

## Macro Definition Documentation

## ◆ OPENVDB_API

#define OPENVDB_API OPENVDB_IMPORT

Helper macros for defining library symbol visibility.

All classes and public free standing functions must be explicitly marked as <lib>_API to be exported. The <lib>_PRIVATE macros are defined when building that particular library.

## ◆ OPENVDB_CHECK_GCC

#define OPENVDB_CHECK_GCC | ( |  | MAJOR,
|  |  | MINOR
| ) |  | 0

Macro for determining if GCC version is >= than X.Y.

## ◆ OPENVDB_DEPRECATED

#define OPENVDB_DEPRECATED __attribute__ ((deprecated))

Use OPENVDB_DEPRECATED to mark functions as deprecated. It should be placed right before the signature of the function, e.g., "OPENVDB_DEPRECATED void functionName();".

## ◆ OPENVDB_HOUDINI_API

#define OPENVDB_HOUDINI_API OPENVDB_IMPORT

## ◆ OPENVDB_NO_UNREACHABLE_CODE_WARNING_BEGIN

#define OPENVDB_NO_UNREACHABLE_CODE_WARNING_BEGIN

Bracket code with OPENVDB_NO_UNREACHABLE_CODE_WARNING_BEGIN/_END, as in the following example, to inhibit ICC remarks about unreachable code:

template<typename NodeType>
void processNode(NodeType& node)
{
OPENVDB_NO_UNREACHABLE_CODE_WARNING_BEGIN
if (NodeType::LEVEL == 0) return; // ignore leaf nodes
int i = 0;
...
OPENVDB_NO_UNREACHABLE_CODE_WARNING_END
}

In the above, `NodeType::LEVEL == 0` is a compile-time constant expression, so for some template instantiations, the line below it is unreachable.

## ◆ OPENVDB_NO_UNREACHABLE_CODE_WARNING_END

#define OPENVDB_NO_UNREACHABLE_CODE_WARNING_END

## ◆ OPENVDB_STATIC_SPECIALIZATION

#define OPENVDB_STATIC_SPECIALIZATION static

Macro for determining if there are sufficient C++0x/C++11 features.

For compilers that need templated function specializations to have storage qualifiers, we need to declare the specializations as static inline. Otherwise, we'll get linker errors about multiply defined symbols.

## ◆ PRAGMA

#define PRAGMA | ( |  | x | ) | _Pragma(#x)