OpenVDB 13.0.0

Loading...
Searching...
No Matches
openvdb::v13_0::tree Namespace Reference

## Namespaces
namespace | leafmgr
namespace | iter

## Classes
struct | SameLeafConfig
struct | SameLeafConfig< Dim1, points::PointDataLeafNode< T2, Dim1 > >
struct | SameLeafConfig< Dim1, openvdb::tools::PointIndexLeafNode< T2, Dim1 > >
struct | SameInternalConfig
class | InternalNode
struct | SameInternalConfig< ChildT1, Dim1, InternalNode< ChildT2, Dim1 > >
class | IteratorBase
| Base class for iterators over internal and leaf nodes. More...
struct | SparseIteratorBase
| Base class for sparse iterators over internal and leaf nodes. More...
struct | DenseIteratorBase
| Base class for dense iterators over internal and leaf nodes. More...
class | LeafBuffer
| Array of fixed size 23Log2Dim that stores the voxel values of a LeafNode. More...
class | LeafBuffer< bool, Log2Dim >
struct | LeafManagerImpl
class | LeafManager
| This class manages a linear array of pointers to a given tree's leaf nodes, as well as optional auxiliary buffers (one or more per leaf) that can be swapped with the leaf nodes' voxel data buffers. More...
struct | LeafManagerImpl< LeafManager< const TreeT > >
class | LeafNode
| Templated block class to hold specific data types and a fixed number of values determined by Log2Dim. The actual coordinate dimension of the block is 2^Log2Dim, i.e. Log2Dim=3 corresponds to a LeafNode that spans a 8^3 block. More...
struct | SameLeafConfig< Dim1, LeafNode< T2, Dim1 > >
class | LeafNode< bool, Log2Dim >
| LeafNode specialization for values of type bool that stores both the active states and the values of (2^Log2Dim)^3 voxels as bit masks. More...
class | LeafNode< ValueMask, Log2Dim >
| LeafNode specialization for values of type ValueMask that encodes both the active states and the boolean values of (2^Log2Dim)^3 voxels in a single bit mask, i.e. voxel values and states are indistinguishable! More...
class | NodeManager
| To facilitate threading over the nodes of a tree, cache node pointers in linear arrays, one for each level of the tree. More...
class | DynamicNodeManager
struct | NodeFilter
class | NodeList
| This class caches tree nodes of a specific type in a linear array. More...
class | NodeManagerLink
| This class is a link in a chain that each caches tree nodes of a specific type in a linear array. More...
struct | ForeachFilterOp
struct | ReduceFilterOp
class | DynamicNodeManagerLink
| This class is a link in a chain that each caches tree nodes of a specific type in a linear array. More...
class | NodeUnion
| Default implementation of a NodeUnion that stores the child pointer and the value separately (i.e., not in a union). Types which select this specialization usually do not conform to the requirements of a union member, that is that the type ValueT is not trivially copyable. This implementation is thus NOT used for POD, math::Vec, math::Mat, math::Quat or math::Coord types, but is used (for example) with std::string. More...
class | NodeUnion< ValueT, ChildT, typename std::enable_if< std::is_trivially_copyable< ValueT >::value >::type >
| Template specialization of a NodeUnion that stores the child pointer and the value together (int, float, pointer, etc.). More...
struct | NodeChain
| NodeChain<RootNodeType, RootNodeType::LEVEL>::Type is a openvdb::TypeList that lists the types of the nodes of the tree rooted at RootNodeType in reverse order, from LeafNode to RootNode. More...
struct | SameRootConfig
struct | RootNodeCopyHelper
struct | RootNodeCombineHelper
class | RootNode
struct | NodeChain< HeadT, 1 >
| Specialization to terminate NodeChain. More...
struct | SameRootConfig< ChildT1, RootNode< ChildT2 > >
struct | RootNodeCopyHelper< RootT, OtherRootT, true >
struct | RootNodeCombineHelper< CombineOp, RootT, OtherRootT, true >
class | TreeBase
| Base class for typed trees. More...
class | Tree
struct | Tree3
| Tree3<T, N1, N2>::Type is the type of a three-level tree (Root, Internal, Leaf) with value type T and internal and leaf node log dimensions N1 and N2, respectively. More...
struct | Tree4
| Tree4<T, N1, N2, N3>::Type is the type of a four-level tree (Root, Internal, Internal, Leaf) with value type T and internal and leaf node log dimensions N1, N2 and N3, respectively. More...
struct | Tree5
| Tree5<T, N1, N2, N3, N4>::Type is the type of a five-level tree (Root, Internal, Internal, Internal, Leaf) with value type T and internal and leaf node log dimensions N1, N2, N3 and N4, respectively. More...
struct | TreeIterTraits
| TreeIterTraits provides, for all tree iterators, a begin(tree) function that returns an iterator over a tree of arbitrary type. More...
struct | TreeIterTraits< TreeT, typename TreeT::RootNodeType::ChildOnIter >
struct | TreeIterTraits< TreeT, typename TreeT::RootNodeType::ChildOnCIter >
struct | TreeIterTraits< TreeT, typename TreeT::RootNodeType::ChildOffIter >
struct | TreeIterTraits< TreeT, typename TreeT::RootNodeType::ChildOffCIter >
struct | TreeIterTraits< TreeT, typename TreeT::RootNodeType::ChildAllIter >
struct | TreeIterTraits< TreeT, typename TreeT::RootNodeType::ChildAllCIter >
struct | TreeIterTraits< TreeT, typename TreeT::NodeIter >
struct | TreeIterTraits< TreeT, typename TreeT::NodeCIter >
struct | TreeIterTraits< TreeT, typename TreeT::LeafIter >
struct | TreeIterTraits< TreeT, typename TreeT::LeafCIter >
struct | TreeIterTraits< TreeT, typename TreeT::ValueOnIter >
struct | TreeIterTraits< TreeT, typename TreeT::ValueOnCIter >
struct | TreeIterTraits< TreeT, typename TreeT::ValueOffIter >
struct | TreeIterTraits< TreeT, typename TreeT::ValueOffCIter >
struct | TreeIterTraits< TreeT, typename TreeT::ValueAllIter >
struct | TreeIterTraits< TreeT, typename TreeT::ValueAllCIter >
struct | CombineOpAdapter
| Helper class to adapt a three-argument (a, b, result) CombineOp functor into a single-argument functor that accepts a CombineArgs struct. More...
struct | IterTraits
struct | IterTraits< NodeT, typename NodeT::ChildOnIter >
struct | IterTraits< NodeT, typename NodeT::ChildOnCIter >
struct | IterTraits< NodeT, typename NodeT::ChildOffIter >
struct | IterTraits< NodeT, typename NodeT::ChildOffCIter >
struct | IterTraits< NodeT, typename NodeT::ChildAllIter >
struct | IterTraits< NodeT, typename NodeT::ChildAllCIter >
struct | IterTraits< NodeT, typename NodeT::ValueOnIter >
struct | IterTraits< NodeT, typename NodeT::ValueOnCIter >
struct | IterTraits< NodeT, typename NodeT::ValueOffIter >
struct | IterTraits< NodeT, typename NodeT::ValueOffCIter >
struct | IterTraits< NodeT, typename NodeT::ValueAllIter >
struct | IterTraits< NodeT, typename NodeT::ValueAllCIter >
class | IterListItem
| An IterListItem is an element of a compile-time linked list of iterators to nodes of different types. More...
class | IterListItem< PrevItemT, NodeVecT, VecSize, 0U >
| The initial element of a compile-time linked list of iterators to nodes of different types. More...
class | IterListItem< PrevItemT, NodeVecT, 1, _Level >
| The final element of a compile-time linked list of iterators to nodes of different types. More...
class | TreeValueIteratorBase
| Base class for tree-traversal iterators over tile and voxel values. More...
class | NodeIteratorBase
| Base class for tree-traversal iterators over all nodes. More...
class | LeafIteratorBase
| Base class for tree-traversal iterators over all leaf nodes (but not leaf voxels). More...
class | IteratorRange
class | ValueAccessorImpl
| The Value Accessor Implementation and API methods. The majoirty of the API matches the API of a compatible OpenVDB Tree Node. More...
class | ValueAccessorBase
| This base class for ValueAccessors manages registration of an accessor with a tree so that the tree can automatically clear the accessor whenever one of its nodes is deleted. More...
struct | ValueAccessorLock
| A small class that contains a Mutex which is derived from by the internal Value Accessor Implementation. This allows for the empty base class optimization to be performed in the case where a Mutex/Lock is not in use. From C++20 we can instead switch to [[no_unique_address]]. More...
struct | ValueAccessorLock< void >
| Specialization for the case where no Mutex is in use. See above. More...
struct | ValueAccessorLeafBuffer
| A small class that contains a cached pointer to a LeafNode data buffer which is derived from by the internal Value Accessor Implementation. This allows for the empty base class optimization to be performed in the case where a LeafNode does not store a contiguous index-able buffer. From C++20 we can instead switch to [[no_unique_address]]. More...
struct | ValueAccessorLeafBuffer< TreeTypeT, IntegerSequence, typename std::enable_if< !value_accessor_internal::EnableLeafBuffer< TreeTypeT, IntegerSequence >::value >::type >
| Specialization for the case where a Leaf Buffer cannot be cached. More...

## Typedefs
template<typename TreeType, bool IsSafe = true, size_t CacheLevels = std::max(Index(1),TreeType::DEPTH)-1, typename MutexType = void>
using | ValueAccessor
| Default alias for a ValueAccessor. This is simply a helper alias for the generic definition but takes a single Index specifying the number of nodes to cache. This is expanded into an index sequence (required for backward compatibility).
template<typename TreeType, bool IsSafe>
using | ValueAccessor0
| Helper alias for a ValueAccessor which doesn't cache any Internal or Leaf nodes.
template<typename TreeType, bool IsSafe, size_t L0 = 0>
using | ValueAccessor1
| Helper alias for a ValueAccessor which caches a single node level. By default, the node level is 0, which corresponds to the lowest node level, typically LeafNodes.
template<typename TreeType, bool IsSafe, size_t L0 = 0, size_t L1 = 1>
using | ValueAccessor2
| Helper alias for a ValueAccessor which caches two node levels. By default the two lowest node levels are selected (0, 1) which typically correspond to an InternalNode and its child LeafNodes. This instantiation will only be valid for TreeTypes which have at least two levels of nodes (excluding the Root node).
template<typename TreeType, bool IsSafe, size_t L0 = 0, size_t L1 = 1, size_t L2 = 2>
using | ValueAccessor3
| Helper alias for a ValueAccessor which caches three node levels. By default the three lowest node levels are selected (0, 1, 2) which typically correspond to two InternalNodes followed by the bottom LeafNodes. This instantiation will only be valid for TreeTypes which have at least three levels of nodes (excluding the Root node).
template<typename TreeType, bool IsSafe = true, size_t CacheLevels = std::max(Index(1),TreeType::DEPTH)-1>
using | ValueAccessorRW
| Helper alias for a ValueAccesor which spin locks every API call.

## Functions
template<typename T, Index Log2Dim>
std::ostream & | operator<< (std::ostream &os, const typename LeafNode< T, Log2Dim >::Buffer &buf)

## Typedef Documentation

## ◆ ValueAccessor

template<typename TreeType, bool IsSafe = true, size_t CacheLevels = std::max(Index(1),TreeType::DEPTH)-1, typename MutexType = void>

using ValueAccessor

Initial value:
ValueAccessorImpl<TreeType, IsSafe, MutexType,
openvdb::make_index_sequence<CacheLevels>>
openvdb::v13_0::tree::ValueAccessorImpl
The Value Accessor Implementation and API methods. The majoirty of the API matches the API of a compa...
Definition ValueAccessor.h:367
openvdb::v13_0::make_index_sequence
std::decay_t< decltype(make_index_sequence_impl< N >())> make_index_sequence
Definition Types.h:285

Default alias for a ValueAccessor. This is simply a helper alias for the generic definition but takes a single Index specifying the number of nodes to cache. This is expanded into an index sequence (required for backward compatibility).

Template Parameters

  TreeType | The tree type
  IsSafe | Whether this accessor registers itself to the tree. See the base class definition for more information on this parameter.
  CacheLevels | The number of node levels to cache excluding the Root node. The Root node is implicitly always included, even if this value is zero.
  MutexType | An optional std compatible mutex to use which ensures every call to the ValueAccessor API is thread safe. If void (the default) no locking takes place. In general it's not advised to mutex lock ValueAccessor methods (instead consider creating a accessor per thread).

## ◆ ValueAccessor0

template<typename TreeType, bool IsSafe>

using ValueAccessor0

Initial value:
ValueAccessorImpl<TreeType, IsSafe, void, openvdb::index_sequence<>>

Helper alias for a ValueAccessor which doesn't cache any Internal or Leaf nodes.

## ◆ ValueAccessor1

template<typename TreeType, bool IsSafe, size_t L0 = 0>

using ValueAccessor1

Initial value:
ValueAccessorImpl<TreeType, IsSafe, void, openvdb::index_sequence<L0>>

Helper alias for a ValueAccessor which caches a single node level. By default, the node level is 0, which corresponds to the lowest node level, typically LeafNodes.

## ◆ ValueAccessor2

template<typename TreeType, bool IsSafe, size_t L0 = 0, size_t L1 = 1>

using ValueAccessor2

Initial value:
ValueAccessorImpl<TreeType, IsSafe, void, openvdb::index_sequence<L0, L1>>

Helper alias for a ValueAccessor which caches two node levels. By default the two lowest node levels are selected (0, 1) which typically correspond to an InternalNode and its child LeafNodes. This instantiation will only be valid for TreeTypes which have at least two levels of nodes (excluding the Root node).

## ◆ ValueAccessor3

template<typename TreeType, bool IsSafe, size_t L0 = 0, size_t L1 = 1, size_t L2 = 2>

using ValueAccessor3

Initial value:
ValueAccessorImpl<TreeType, IsSafe, void, openvdb::index_sequence<L0, L1, L2>>

Helper alias for a ValueAccessor which caches three node levels. By default the three lowest node levels are selected (0, 1, 2) which typically correspond to two InternalNodes followed by the bottom LeafNodes. This instantiation will only be valid for TreeTypes which have at least three levels of nodes (excluding the Root node).

## ◆ ValueAccessorRW

template<typename TreeType, bool IsSafe = true, size_t CacheLevels = std::max(Index(1),TreeType::DEPTH)-1>

using ValueAccessorRW

Initial value:
ValueAccessorImpl<TreeType, IsSafe, tbb::spin_mutex,
openvdb::make_index_sequence<CacheLevels>>

Helper alias for a ValueAccesor which spin locks every API call.

## Function Documentation

## ◆ operator<<()

template<typename T, Index Log2Dim>

std::ostream & operator<< | ( | std::ostream & | os,
|  | const typename LeafNode< T, Log2Dim >::Buffer & | buf )
| inline