Macro Definition Documentation

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.

#define OPENVDB_CHECK_GCC

(

MAJOR,

MINOR

)

0

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

#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();".

#define OPENVDB_HOUDINI_API OPENVDB_IMPORT

#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:

1 template<typename NodeType>

2 void processNode(NodeType& node)

3 {

4 OPENVDB_NO_UNREACHABLE_CODE_WARNING_BEGIN

5 if (NodeType::LEVEL == 0) return; // ignore leaf nodes

6 int i = 0;

7 ...

8 OPENVDB_NO_UNREACHABLE_CODE_WARNING_END

9 }

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

#define OPENVDB_NO_UNREACHABLE_CODE_WARNING_END

#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.