OpenVDB  12.0.0
Namespaces | Classes | Typedefs | Functions
openvdb::v12_0::tree Namespace Reference

Namespaces

 iter
 
 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. 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...
 
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 = ValueAccessorImpl< TreeType, IsSafe, MutexType, openvdb::make_index_sequence< CacheLevels >>
 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). More...
 
template<typename TreeType , bool IsSafe>
using ValueAccessor0 = ValueAccessorImpl< TreeType, IsSafe, void, openvdb::index_sequence<>>
 Helper alias for a ValueAccessor which doesn't cache any Internal or Leaf nodes. More...
 
template<typename TreeType , bool IsSafe, size_t L0 = 0>
using ValueAccessor1 = 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. More...
 
template<typename TreeType , bool IsSafe, size_t L0 = 0, size_t L1 = 1>
using ValueAccessor2 = 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). More...
 
template<typename TreeType , bool IsSafe, size_t L0 = 0, size_t L1 = 1, size_t L2 = 2>
using ValueAccessor3 = 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). More...
 
template<typename TreeType , bool IsSafe = true, size_t CacheLevels = std::max(Index(1),TreeType::DEPTH)-1>
using ValueAccessorRW = ValueAccessorImpl< TreeType, IsSafe, tbb::spin_mutex, openvdb::make_index_sequence< CacheLevels >>
 Helper alias for a ValueAccesor which spin locks every API call. More...
 

Functions

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

Typedef Documentation

using ValueAccessor = ValueAccessorImpl<TreeType, IsSafe, MutexType, openvdb::make_index_sequence<CacheLevels>>

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
TreeTypeThe tree type
IsSafeWhether this accessor registers itself to the tree. See the base class definition for more information on this parameter.
CacheLevelsThe number of node levels to cache excluding the Root node. The Root node is implicitly always included, even if this value is zero.
MutexTypeAn 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).
using ValueAccessor0 = ValueAccessorImpl<TreeType, IsSafe, void, openvdb::index_sequence<>>

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

using ValueAccessor1 = 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.

using ValueAccessor2 = 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).

using ValueAccessor3 = 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).

using ValueAccessorRW = ValueAccessorImpl<TreeType, IsSafe, tbb::spin_mutex, openvdb::make_index_sequence<CacheLevels>>

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

Function Documentation

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