OpenVDB: openvdb::v12_1::tree Namespace Reference

OpenVDB 12.1.0

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

## Namespaces
namespace | iter
namespace | leafmgr

## Classes
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 | DenseIteratorBase
| Base class for dense iterators over internal and leaf nodes. More...
class | DynamicNodeManager
class | DynamicNodeManagerLink
| This class is a link in a chain that each caches tree nodes of a specific type in a linear array. More...
struct | ForeachFilterOp
class | InternalNode
class | IteratorBase
| Base class for iterators over internal and leaf nodes. More...
class | IteratorRange
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, 1, _Level >
| The final 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...
struct | IterTraits
struct | IterTraits< NodeT, typename NodeT::ChildAllCIter >
struct | IterTraits< NodeT, typename NodeT::ChildAllIter >
struct | IterTraits< NodeT, typename NodeT::ChildOffCIter >
struct | IterTraits< NodeT, typename NodeT::ChildOffIter >
struct | IterTraits< NodeT, typename NodeT::ChildOnCIter >
struct | IterTraits< NodeT, typename NodeT::ChildOnIter >
struct | IterTraits< NodeT, typename NodeT::ValueAllCIter >
struct | IterTraits< NodeT, typename NodeT::ValueAllIter >
struct | IterTraits< NodeT, typename NodeT::ValueOffCIter >
struct | IterTraits< NodeT, typename NodeT::ValueOffIter >
struct | IterTraits< NodeT, typename NodeT::ValueOnCIter >
struct | IterTraits< NodeT, typename NodeT::ValueOnIter >
class | LeafBuffer
| Array of fixed size 23Log2Dim that stores the voxel values of a LeafNode. More...
class | LeafBuffer< bool, Log2Dim >
class | LeafIteratorBase
| Base class for tree-traversal iterators over all leaf nodes (but not leaf voxels) More...
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
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...
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.
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!
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 | NodeChain< HeadT, 1 >
| Specialization to terminate NodeChain. More...
struct | NodeFilter
class | NodeIteratorBase
| Base class for tree-traversal iterators over all nodes. More...
class | NodeList
| This class caches tree nodes of a specific type in a linear array. 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 | NodeManagerLink
| 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 | ReduceFilterOp
class | RootNode
struct | RootNodeCombineHelper
struct | RootNodeCombineHelper< CombineOp, RootT, OtherRootT, true >
struct | RootNodeCopyHelper
struct | RootNodeCopyHelper< RootT, OtherRootT, true >
struct | SameInternalConfig
struct | SameInternalConfig< ChildT1, Dim1, InternalNode< ChildT2, Dim1 > >
struct | SameLeafConfig
struct | SameLeafConfig< Dim1, LeafNode< T2, Dim1 > >
struct | SameLeafConfig< Dim1, openvdb::tools::PointIndexLeafNode< T2, Dim1 > >
struct | SameLeafConfig< Dim1, points::PointDataLeafNode< T2, Dim1 > >
struct | SameRootConfig
struct | SameRootConfig< ChildT1, RootNode< ChildT2 > >
struct | SparseIteratorBase
| Base class for sparse iterators over internal and leaf nodes. 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...
class | TreeBase
| Base class for typed trees. 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::LeafCIter >
struct | TreeIterTraits< TreeT, typename TreeT::LeafIter >
struct | TreeIterTraits< TreeT, typename TreeT::NodeCIter >
struct | TreeIterTraits< TreeT, typename TreeT::NodeIter >
struct | TreeIterTraits< TreeT, typename TreeT::RootNodeType::ChildAllCIter >
struct | TreeIterTraits< TreeT, typename TreeT::RootNodeType::ChildAllIter >
struct | TreeIterTraits< TreeT, typename TreeT::RootNodeType::ChildOffCIter >
struct | TreeIterTraits< TreeT, typename TreeT::RootNodeType::ChildOffIter >
struct | TreeIterTraits< TreeT, typename TreeT::RootNodeType::ChildOnCIter >
struct | TreeIterTraits< TreeT, typename TreeT::RootNodeType::ChildOnIter >
struct | TreeIterTraits< TreeT, typename TreeT::ValueAllCIter >
struct | TreeIterTraits< TreeT, typename TreeT::ValueAllIter >
struct | TreeIterTraits< TreeT, typename TreeT::ValueOffCIter >
struct | TreeIterTraits< TreeT, typename TreeT::ValueOffIter >
struct | TreeIterTraits< TreeT, typename TreeT::ValueOnCIter >
struct | TreeIterTraits< TreeT, typename TreeT::ValueOnIter >
class | TreeValueIteratorBase
| Base class for tree-traversal iterators over tile and voxel values. 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...
class | ValueAccessorImpl
| The Value Accessor Implementation and API methods. The majoirty of the API matches the API of a compatible OpenVDB Tree Node. 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...
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...

## 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::v12_1::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::v12_1::make_index_sequence
std::decay_t< decltype(make_index_sequence_impl< N >())> make_index_sequence
Definition Types.h:304

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