HDK
|
A TypeList provides a compile time sequence of heterogeneous types which can be accessed, transformed and executed over in various ways. It incorporates a subset of functionality similar to hboost::mpl::vector however provides most of its content through using declarations rather than additional typed classes. More...
Go to the source code of this file.
Classes | |
struct | openvdb::OPENVDB_VERSION_NAME::TypeList< Ts > |
A list of types (not necessarily unique) More... | |
struct | openvdb::OPENVDB_VERSION_NAME::TupleList< Ts > |
A trivial wrapper around a std::tuple but with compatible TypeList methods. Importantly can be instatiated from a TypeList and implements a similar ::foreach interface. More... | |
struct | openvdb::OPENVDB_VERSION_NAME::TupleList<> |
Specilization of an empty TupleList. Required due to constructor selection. More... | |
Namespaces | |
openvdb | |
openvdb::OPENVDB_VERSION_NAME | |
Macros | |
#define | OPENVDB_TYPELIST_FORCE_INLINE OPENVDB_FORCE_INLINE |
Functions | |
template<size_t Start, size_t End, typename OpT > | |
OPENVDB_TYPELIST_FORCE_INLINE auto | openvdb::OPENVDB_VERSION_NAME::foreachIndex (OpT op) |
template<size_t Start, size_t End, typename OpT , typename RetT > | |
OPENVDB_TYPELIST_FORCE_INLINE RetT | openvdb::OPENVDB_VERSION_NAME::evalFirstIndex (OpT op, const RetT def=RetT()) |
A TypeList provides a compile time sequence of heterogeneous types which can be accessed, transformed and executed over in various ways. It incorporates a subset of functionality similar to hboost::mpl::vector however provides most of its content through using declarations rather than additional typed classes.
Definition in file TypeList.h.
#define OPENVDB_TYPELIST_FORCE_INLINE OPENVDB_FORCE_INLINE |
We should usually not be decorating public API functions with attributes such as always_inline. However many compilers are notoriously bad at inlining recursive template loops with default inline settings. The TypeList and TupleList metaprogram constructs heavily use this C++ feature and the performance difference can be substantial, even for very small lists. You can disable this behaviour by setting the define: OPENVDB_TYPELIST_NO_FORCE_INLINE This will disable the force inling on public API methods in this file.
Definition at line 31 of file TypeList.h.