OpenVDB: TreeBase Class Reference

OpenVDB 13.0.0

Loading...
Searching...
No Matches
TreeBase Class Referenceabstract

Base class for typed trees. More...

`#include <openvdb/tree/Tree.h>`

Inheritance diagram for TreeBase:

## Public Types
using | Ptr = SharedPtr<TreeBase>
using | ConstPtr = SharedPtr<const TreeBase>

## Public Member Functions
| TreeBase ()=default
| TreeBase (const TreeBase &)=default
TreeBase & | operator= (const TreeBase &)=delete
virtual | ~TreeBase ()=default
virtual const Name & | type () const =0
| Return the name of this tree's type.
virtual Name | valueType () const =0
| Return the name of the type of a voxel's value (e.g., "float" or "vec3d").
template<typename TreeType>
bool | isType () const
| Return `true` if this tree is of the same type as the template parameter.
virtual TreeBase::Ptr | copy () const =0
| Return a pointer to a deep copy of this tree.
virtual Metadata::Ptr | getBackgroundValue () const
| Return this tree's background value wrapped as metadata.
virtual bool | evalLeafBoundingBox (CoordBBox &bbox) const =0
| Return in bbox the axis-aligned bounding box of all active tiles and leaf nodes with active values.
virtual bool | evalLeafDim (Coord &dim) const =0
| Return in dim the dimensions of the axis-aligned bounding box of all leaf nodes.
virtual bool | evalActiveVoxelBoundingBox (CoordBBox &bbox) const =0
| Return in bbox the axis-aligned bounding box of all active voxels and tiles.
virtual bool | evalActiveVoxelDim (Coord &dim) const =0
| Return in dim the dimensions of the axis-aligned bounding box of all active voxels. This is a tighter bounding box than the leaf node bounding box.
virtual void | getIndexRange (CoordBBox &bbox) const =0
virtual void | clipUnallocatedNodes ()=0
| Replace with background tiles any nodes whose voxel buffers have not yet been allocated.
virtual Index64 | unallocatedLeafCount () const =0
| Return the total number of unallocated leaf nodes residing in this tree.
virtual Index | treeDepth () const =0
| Return the depth of this tree.
virtual Index64 | leafCount () const =0
| Return the number of leaf nodes.
virtual std::vector< Index64 > | nodeCount () const =0
virtual Index64 | nonLeafCount () const =0
| Return the number of non-leaf nodes.
virtual Index64 | activeLeafVoxelCount () const =0
| Return the number of active voxels stored in leaf nodes.
virtual Index64 | inactiveLeafVoxelCount () const =0
| Return the number of inactive voxels stored in leaf nodes.
virtual Index64 | activeVoxelCount () const =0
| Return the total number of active voxels.
virtual Index64 | inactiveVoxelCount () const =0
| Return the number of inactive voxels within the bounding box of all active voxels.
virtual Index64 | activeTileCount () const =0
| Return the total number of active tiles.
virtual Index64 | memUsage () const
| Return the total amount of memory in bytes occupied by this tree.
virtual void | readTopology (std::istream &, bool saveFloatAsHalf=false)
| Read the tree topology from a stream.
virtual void | writeTopology (std::ostream &, bool saveFloatAsHalf=false) const
| Write the tree topology to a stream.
virtual void | readBuffers (std::istream &, bool saveFloatAsHalf=false)=0
| Read all data buffers for this tree.
virtual void | readBuffers (std::istream &, const CoordBBox &, bool saveFloatAsHalf=false)=0
| Read all of this tree's data buffers that intersect the given bounding box.
virtual void | readNonresidentBuffers () const =0
| Read all of this tree's data buffers that are not yet resident in memory (because delayed loading is in effect).
virtual void | writeBuffers (std::ostream &, bool saveFloatAsHalf=false) const =0
| Write out all the data buffers for this tree.
virtual void | print (std::ostream &os=std::cout, int verboseLevel=1) const
| Print statistics, memory usage and other information about this tree.

## Detailed Description

Base class for typed trees.

## Member Typedef Documentation

## ◆ ConstPtr

using ConstPtr = SharedPtr<const TreeBase>

## ◆ Ptr

using Ptr = SharedPtr<TreeBase>

## Constructor & Destructor Documentation

## ◆ TreeBase() [1/2]

TreeBase | ( |  | ) |
| default

## ◆ TreeBase() [2/2]

TreeBase | ( | const TreeBase & |  | ) |
| default

## ◆ ~TreeBase()

virtual ~TreeBase | ( |  | ) |
| virtualdefault

## Member Function Documentation

## ◆ activeLeafVoxelCount()

virtual Index64 activeLeafVoxelCount | ( |  | ) | const
| pure virtual

Return the number of active voxels stored in leaf nodes.

Implemented in Tree< _RootNodeType >, Tree< RootNode< InternalNode< InternalNode< InternalNode< LeafNode< T, N4 >, N3 >, N2 >, N1 > > >, Tree< RootNode< InternalNode< InternalNode< LeafNode< T, N3 >, N2 >, N1 > > >, Tree< RootNode< InternalNode< LeafNode< T, N2 >, N1 > > >, Tree< tree::RootNode< tree::InternalNode< tree::InternalNode< PointDataLeafNode< PointDataIndex32, 3 >, 4 >, 5 > > >, Tree< tree::RootNode< tree::InternalNode< tree::InternalNode< PointIndexLeafNode< PointIndex32, 3 >, 4 >, 5 > > >, Tree< typename NodeChainT::Back >, Tree< typename RootNodeType::template ValueConverter< OtherValueType >::Type >, and Tree< typename RootType::template ValueConverter< bool >::Type >.

## ◆ activeTileCount()

virtual Index64 activeTileCount | ( |  | ) | const
| pure virtual

Return the total number of active tiles.

Implemented in Tree< _RootNodeType >, Tree< RootNode< InternalNode< InternalNode< InternalNode< LeafNode< T, N4 >, N3 >, N2 >, N1 > > >, Tree< RootNode< InternalNode< InternalNode< LeafNode< T, N3 >, N2 >, N1 > > >, Tree< RootNode< InternalNode< LeafNode< T, N2 >, N1 > > >, Tree< tree::RootNode< tree::InternalNode< tree::InternalNode< PointDataLeafNode< PointDataIndex32, 3 >, 4 >, 5 > > >, Tree< tree::RootNode< tree::InternalNode< tree::InternalNode< PointIndexLeafNode< PointIndex32, 3 >, 4 >, 5 > > >, Tree< typename NodeChainT::Back >, Tree< typename RootNodeType::template ValueConverter< OtherValueType >::Type >, and Tree< typename RootType::template ValueConverter< bool >::Type >.

## ◆ activeVoxelCount()

virtual Index64 activeVoxelCount | ( |  | ) | const
| pure virtual

Return the total number of active voxels.

Implemented in Tree< _RootNodeType >, Tree< RootNode< InternalNode< InternalNode< InternalNode< LeafNode< T, N4 >, N3 >, N2 >, N1 > > >, Tree< RootNode< InternalNode< InternalNode< LeafNode< T, N3 >, N2 >, N1 > > >, Tree< RootNode< InternalNode< LeafNode< T, N2 >, N1 > > >, Tree< tree::RootNode< tree::InternalNode< tree::InternalNode< PointDataLeafNode< PointDataIndex32, 3 >, 4 >, 5 > > >, Tree< tree::RootNode< tree::InternalNode< tree::InternalNode< PointIndexLeafNode< PointIndex32, 3 >, 4 >, 5 > > >, Tree< typename NodeChainT::Back >, Tree< typename RootNodeType::template ValueConverter< OtherValueType >::Type >, and Tree< typename RootType::template ValueConverter< bool >::Type >.

## ◆ clipUnallocatedNodes()

virtual void clipUnallocatedNodes | ( |  | ) |
| pure virtual

Replace with background tiles any nodes whose voxel buffers have not yet been allocated.

Typically, unallocated nodes are leaf nodes whose voxel buffers are not yet resident in memory because delayed loading is in effect.

See also
  readNonresidentBuffers, io::File::open

Implemented in Tree< _RootNodeType >, Tree< RootNode< InternalNode< InternalNode< InternalNode< LeafNode< T, N4 >, N3 >, N2 >, N1 > > >, Tree< RootNode< InternalNode< InternalNode< LeafNode< T, N3 >, N2 >, N1 > > >, Tree< RootNode< InternalNode< LeafNode< T, N2 >, N1 > > >, Tree< tree::RootNode< tree::InternalNode< tree::InternalNode< PointDataLeafNode< PointDataIndex32, 3 >, 4 >, 5 > > >, Tree< tree::RootNode< tree::InternalNode< tree::InternalNode< PointIndexLeafNode< PointIndex32, 3 >, 4 >, 5 > > >, Tree< typename NodeChainT::Back >, Tree< typename RootNodeType::template ValueConverter< OtherValueType >::Type >, and Tree< typename RootType::template ValueConverter< bool >::Type >.

## ◆ copy()

virtual TreeBase::Ptr copy | ( |  | ) | const
| pure virtual

Return a pointer to a deep copy of this tree.

Implemented in Tree< _RootNodeType >, Tree< RootNode< InternalNode< InternalNode< InternalNode< LeafNode< T, N4 >, N3 >, N2 >, N1 > > >, Tree< RootNode< InternalNode< InternalNode< LeafNode< T, N3 >, N2 >, N1 > > >, Tree< RootNode< InternalNode< LeafNode< T, N2 >, N1 > > >, Tree< tree::RootNode< tree::InternalNode< tree::InternalNode< PointDataLeafNode< PointDataIndex32, 3 >, 4 >, 5 > > >, Tree< tree::RootNode< tree::InternalNode< tree::InternalNode< PointIndexLeafNode< PointIndex32, 3 >, 4 >, 5 > > >, Tree< typename NodeChainT::Back >, Tree< typename RootNodeType::template ValueConverter< OtherValueType >::Type >, and Tree< typename RootType::template ValueConverter< bool >::Type >.

## ◆ evalActiveVoxelBoundingBox()

virtual bool evalActiveVoxelBoundingBox | ( | CoordBBox & | bbox | ) | const
| pure virtual

Return in bbox the axis-aligned bounding box of all active voxels and tiles.

This method produces a more accurate, i.e. tighter, bounding box than evalLeafBoundingBox which is approximate but faster.

Returns
  `false` if the bounding box is empty (in which case the bbox is set to its default value).

Implemented in Tree< _RootNodeType >, Tree< RootNode< InternalNode< InternalNode< InternalNode< LeafNode< T, N4 >, N3 >, N2 >, N1 > > >, Tree< RootNode< InternalNode< InternalNode< LeafNode< T, N3 >, N2 >, N1 > > >, Tree< RootNode< InternalNode< LeafNode< T, N2 >, N1 > > >, Tree< tree::RootNode< tree::InternalNode< tree::InternalNode< PointDataLeafNode< PointDataIndex32, 3 >, 4 >, 5 > > >, Tree< tree::RootNode< tree::InternalNode< tree::InternalNode< PointIndexLeafNode< PointIndex32, 3 >, 4 >, 5 > > >, Tree< typename NodeChainT::Back >, Tree< typename RootNodeType::template ValueConverter< OtherValueType >::Type >, and Tree< typename RootType::template ValueConverter< bool >::Type >.

## ◆ evalActiveVoxelDim()

virtual bool evalActiveVoxelDim | ( | Coord & | dim | ) | const
| pure virtual

Return in dim the dimensions of the axis-aligned bounding box of all active voxels. This is a tighter bounding box than the leaf node bounding box.

Returns
  `false` if the bounding box is empty.

Implemented in Tree< _RootNodeType >, Tree< RootNode< InternalNode< InternalNode< InternalNode< LeafNode< T, N4 >, N3 >, N2 >, N1 > > >, Tree< RootNode< InternalNode< InternalNode< LeafNode< T, N3 >, N2 >, N1 > > >, Tree< RootNode< InternalNode< LeafNode< T, N2 >, N1 > > >, Tree< tree::RootNode< tree::InternalNode< tree::InternalNode< PointDataLeafNode< PointDataIndex32, 3 >, 4 >, 5 > > >, Tree< tree::RootNode< tree::InternalNode< tree::InternalNode< PointIndexLeafNode< PointIndex32, 3 >, 4 >, 5 > > >, Tree< typename NodeChainT::Back >, Tree< typename RootNodeType::template ValueConverter< OtherValueType >::Type >, and Tree< typename RootType::template ValueConverter< bool >::Type >.

## ◆ evalLeafBoundingBox()

virtual bool evalLeafBoundingBox | ( | CoordBBox & | bbox | ) | const
| pure virtual

Return in bbox the axis-aligned bounding box of all active tiles and leaf nodes with active values.

This is faster than calling evalActiveVoxelBoundingBox, which visits the individual active voxels, and hence evalLeafBoundingBox produces a less tight, i.e. approximate, bbox.

Returns
  `false` if the bounding box is empty (in which case the bbox is set to its default value).

Implemented in Tree< _RootNodeType >, Tree< RootNode< InternalNode< InternalNode< InternalNode< LeafNode< T, N4 >, N3 >, N2 >, N1 > > >, Tree< RootNode< InternalNode< InternalNode< LeafNode< T, N3 >, N2 >, N1 > > >, Tree< RootNode< InternalNode< LeafNode< T, N2 >, N1 > > >, Tree< tree::RootNode< tree::InternalNode< tree::InternalNode< PointDataLeafNode< PointDataIndex32, 3 >, 4 >, 5 > > >, Tree< tree::RootNode< tree::InternalNode< tree::InternalNode< PointIndexLeafNode< PointIndex32, 3 >, 4 >, 5 > > >, Tree< typename NodeChainT::Back >, Tree< typename RootNodeType::template ValueConverter< OtherValueType >::Type >, and Tree< typename RootType::template ValueConverter< bool >::Type >.

## ◆ evalLeafDim()

virtual bool evalLeafDim | ( | Coord & | dim | ) | const
| pure virtual

Return in dim the dimensions of the axis-aligned bounding box of all leaf nodes.

Returns
  `false` if the bounding box is empty.

Implemented in Tree< _RootNodeType >, Tree< RootNode< InternalNode< InternalNode< InternalNode< LeafNode< T, N4 >, N3 >, N2 >, N1 > > >, Tree< RootNode< InternalNode< InternalNode< LeafNode< T, N3 >, N2 >, N1 > > >, Tree< RootNode< InternalNode< LeafNode< T, N2 >, N1 > > >, Tree< tree::RootNode< tree::InternalNode< tree::InternalNode< PointDataLeafNode< PointDataIndex32, 3 >, 4 >, 5 > > >, Tree< tree::RootNode< tree::InternalNode< tree::InternalNode< PointIndexLeafNode< PointIndex32, 3 >, 4 >, 5 > > >, Tree< typename NodeChainT::Back >, Tree< typename RootNodeType::template ValueConverter< OtherValueType >::Type >, and Tree< typename RootType::template ValueConverter< bool >::Type >.

## ◆ getBackgroundValue()

virtual Metadata::Ptr getBackgroundValue | ( |  | ) | const
| inlinevirtual

Return this tree's background value wrapped as metadata.

Note
  Query the metadata object for the value's type.

Reimplemented in Tree< _RootNodeType >, Tree< RootNode< InternalNode< InternalNode< InternalNode< LeafNode< T, N4 >, N3 >, N2 >, N1 > > >, Tree< RootNode< InternalNode< InternalNode< LeafNode< T, N3 >, N2 >, N1 > > >, Tree< RootNode< InternalNode< LeafNode< T, N2 >, N1 > > >, Tree< tree::RootNode< tree::InternalNode< tree::InternalNode< PointDataLeafNode< PointDataIndex32, 3 >, 4 >, 5 > > >, Tree< tree::RootNode< tree::InternalNode< tree::InternalNode< PointIndexLeafNode< PointIndex32, 3 >, 4 >, 5 > > >, Tree< typename NodeChainT::Back >, Tree< typename RootNodeType::template ValueConverter< OtherValueType >::Type >, and Tree< typename RootType::template ValueConverter< bool >::Type >.

## ◆ getIndexRange()

virtual void getIndexRange | ( | CoordBBox & | bbox | ) | const
| pure virtual

Implemented in Tree< _RootNodeType >, Tree< RootNode< InternalNode< InternalNode< InternalNode< LeafNode< T, N4 >, N3 >, N2 >, N1 > > >, Tree< RootNode< InternalNode< InternalNode< LeafNode< T, N3 >, N2 >, N1 > > >, Tree< RootNode< InternalNode< LeafNode< T, N2 >, N1 > > >, Tree< tree::RootNode< tree::InternalNode< tree::InternalNode< PointDataLeafNode< PointDataIndex32, 3 >, 4 >, 5 > > >, Tree< tree::RootNode< tree::InternalNode< tree::InternalNode< PointIndexLeafNode< PointIndex32, 3 >, 4 >, 5 > > >, Tree< typename NodeChainT::Back >, Tree< typename RootNodeType::template ValueConverter< OtherValueType >::Type >, and Tree< typename RootType::template ValueConverter< bool >::Type >.

## ◆ inactiveLeafVoxelCount()

virtual Index64 inactiveLeafVoxelCount | ( |  | ) | const
| pure virtual

Return the number of inactive voxels stored in leaf nodes.

Implemented in Tree< _RootNodeType >, Tree< RootNode< InternalNode< InternalNode< InternalNode< LeafNode< T, N4 >, N3 >, N2 >, N1 > > >, Tree< RootNode< InternalNode< InternalNode< LeafNode< T, N3 >, N2 >, N1 > > >, Tree< RootNode< InternalNode< LeafNode< T, N2 >, N1 > > >, Tree< tree::RootNode< tree::InternalNode< tree::InternalNode< PointDataLeafNode< PointDataIndex32, 3 >, 4 >, 5 > > >, Tree< tree::RootNode< tree::InternalNode< tree::InternalNode< PointIndexLeafNode< PointIndex32, 3 >, 4 >, 5 > > >, Tree< typename NodeChainT::Back >, Tree< typename RootNodeType::template ValueConverter< OtherValueType >::Type >, and Tree< typename RootType::template ValueConverter< bool >::Type >.

## ◆ inactiveVoxelCount()

virtual Index64 inactiveVoxelCount | ( |  | ) | const
| pure virtual

Return the number of inactive voxels within the bounding box of all active voxels.

Implemented in Tree< _RootNodeType >, Tree< RootNode< InternalNode< InternalNode< InternalNode< LeafNode< T, N4 >, N3 >, N2 >, N1 > > >, Tree< RootNode< InternalNode< InternalNode< LeafNode< T, N3 >, N2 >, N1 > > >, Tree< RootNode< InternalNode< LeafNode< T, N2 >, N1 > > >, Tree< tree::RootNode< tree::InternalNode< tree::InternalNode< PointDataLeafNode< PointDataIndex32, 3 >, 4 >, 5 > > >, Tree< tree::RootNode< tree::InternalNode< tree::InternalNode< PointIndexLeafNode< PointIndex32, 3 >, 4 >, 5 > > >, Tree< typename NodeChainT::Back >, Tree< typename RootNodeType::template ValueConverter< OtherValueType >::Type >, and Tree< typename RootType::template ValueConverter< bool >::Type >.

## ◆ isType()

template<typename TreeType>

bool isType | ( |  | ) | const
| inline

Return `true` if this tree is of the same type as the template parameter.

## ◆ leafCount()

virtual Index64 leafCount | ( |  | ) | const
| pure virtual

Return the number of leaf nodes.

Implemented in Tree< _RootNodeType >, Tree< RootNode< InternalNode< InternalNode< InternalNode< LeafNode< T, N4 >, N3 >, N2 >, N1 > > >, Tree< RootNode< InternalNode< InternalNode< LeafNode< T, N3 >, N2 >, N1 > > >, Tree< RootNode< InternalNode< LeafNode< T, N2 >, N1 > > >, Tree< tree::RootNode< tree::InternalNode< tree::InternalNode< PointDataLeafNode< PointDataIndex32, 3 >, 4 >, 5 > > >, Tree< tree::RootNode< tree::InternalNode< tree::InternalNode< PointIndexLeafNode< PointIndex32, 3 >, 4 >, 5 > > >, Tree< typename NodeChainT::Back >, Tree< typename RootNodeType::template ValueConverter< OtherValueType >::Type >, and Tree< typename RootType::template ValueConverter< bool >::Type >.

## ◆ memUsage()

virtual Index64 memUsage | ( |  | ) | const
| inlinevirtual

Return the total amount of memory in bytes occupied by this tree.

Reimplemented in Tree< _RootNodeType >, Tree< RootNode< InternalNode< InternalNode< InternalNode< LeafNode< T, N4 >, N3 >, N2 >, N1 > > >, Tree< RootNode< InternalNode< InternalNode< LeafNode< T, N3 >, N2 >, N1 > > >, Tree< RootNode< InternalNode< LeafNode< T, N2 >, N1 > > >, Tree< tree::RootNode< tree::InternalNode< tree::InternalNode< PointDataLeafNode< PointDataIndex32, 3 >, 4 >, 5 > > >, Tree< tree::RootNode< tree::InternalNode< tree::InternalNode< PointIndexLeafNode< PointIndex32, 3 >, 4 >, 5 > > >, Tree< typename NodeChainT::Back >, Tree< typename RootNodeType::template ValueConverter< OtherValueType >::Type >, and Tree< typename RootType::template ValueConverter< bool >::Type >.

## ◆ nodeCount()

virtual std::vector< Index64 > nodeCount | ( |  | ) | const
| pure virtual

Return a vector with node counts. The number of nodes of type NodeType is given as element NodeType::LEVEL in the return vector. Thus, the size of this vector corresponds to the height (or depth) of this tree.

Implemented in Tree< _RootNodeType >, Tree< RootNode< InternalNode< InternalNode< InternalNode< LeafNode< T, N4 >, N3 >, N2 >, N1 > > >, Tree< RootNode< InternalNode< InternalNode< LeafNode< T, N3 >, N2 >, N1 > > >, Tree< RootNode< InternalNode< LeafNode< T, N2 >, N1 > > >, Tree< tree::RootNode< tree::InternalNode< tree::InternalNode< PointDataLeafNode< PointDataIndex32, 3 >, 4 >, 5 > > >, Tree< tree::RootNode< tree::InternalNode< tree::InternalNode< PointIndexLeafNode< PointIndex32, 3 >, 4 >, 5 > > >, Tree< typename NodeChainT::Back >, Tree< typename RootNodeType::template ValueConverter< OtherValueType >::Type >, and Tree< typename RootType::template ValueConverter< bool >::Type >.

## ◆ nonLeafCount()

virtual Index64 nonLeafCount | ( |  | ) | const
| pure virtual

Return the number of non-leaf nodes.

Implemented in Tree< _RootNodeType >, Tree< RootNode< InternalNode< InternalNode< InternalNode< LeafNode< T, N4 >, N3 >, N2 >, N1 > > >, Tree< RootNode< InternalNode< InternalNode< LeafNode< T, N3 >, N2 >, N1 > > >, Tree< RootNode< InternalNode< LeafNode< T, N2 >, N1 > > >, Tree< tree::RootNode< tree::InternalNode< tree::InternalNode< PointDataLeafNode< PointDataIndex32, 3 >, 4 >, 5 > > >, Tree< tree::RootNode< tree::InternalNode< tree::InternalNode< PointIndexLeafNode< PointIndex32, 3 >, 4 >, 5 > > >, Tree< typename NodeChainT::Back >, Tree< typename RootNodeType::template ValueConverter< OtherValueType >::Type >, and Tree< typename RootType::template ValueConverter< bool >::Type >.

## ◆ operator=()

TreeBase & operator= | ( | const TreeBase & |  | ) |
| delete

## ◆ print()

void print | ( | std::ostream & | os = std::cout,
|  | int | verboseLevel = 1 ) const
| inlinevirtual

Print statistics, memory usage and other information about this tree.

Parameters

  os | a stream to which to write textual information
  verboseLevel | 1: print tree configuration only; 2: include node and voxel statistics; 3: include memory usage; 4: include minimum and maximum voxel values

Warning
  verboseLevel 4 forces loading of any unallocated nodes.

Reimplemented in Tree< _RootNodeType >, Tree< RootNode< InternalNode< InternalNode< InternalNode< LeafNode< T, N4 >, N3 >, N2 >, N1 > > >, Tree< RootNode< InternalNode< InternalNode< LeafNode< T, N3 >, N2 >, N1 > > >, Tree< RootNode< InternalNode< LeafNode< T, N2 >, N1 > > >, Tree< tree::RootNode< tree::InternalNode< tree::InternalNode< PointDataLeafNode< PointDataIndex32, 3 >, 4 >, 5 > > >, Tree< tree::RootNode< tree::InternalNode< tree::InternalNode< PointIndexLeafNode< PointIndex32, 3 >, 4 >, 5 > > >, Tree< typename NodeChainT::Back >, Tree< typename RootNodeType::template ValueConverter< OtherValueType >::Type >, and Tree< typename RootType::template ValueConverter< bool >::Type >.

## ◆ readBuffers() [1/2]

virtual void readBuffers | ( | std::istream & | ,
|  | bool | saveFloatAsHalf = false )
| pure virtual

Read all data buffers for this tree.

Implemented in Tree< _RootNodeType >, Tree< RootNode< InternalNode< InternalNode< InternalNode< LeafNode< T, N4 >, N3 >, N2 >, N1 > > >, Tree< RootNode< InternalNode< InternalNode< LeafNode< T, N3 >, N2 >, N1 > > >, Tree< RootNode< InternalNode< LeafNode< T, N2 >, N1 > > >, Tree< tree::RootNode< tree::InternalNode< tree::InternalNode< PointDataLeafNode< PointDataIndex32, 3 >, 4 >, 5 > > >, Tree< tree::RootNode< tree::InternalNode< tree::InternalNode< PointIndexLeafNode< PointIndex32, 3 >, 4 >, 5 > > >, Tree< typename NodeChainT::Back >, Tree< typename RootNodeType::template ValueConverter< OtherValueType >::Type >, and Tree< typename RootType::template ValueConverter< bool >::Type >.

## ◆ readBuffers() [2/2]

virtual void readBuffers | ( | std::istream & | ,
|  | const CoordBBox & | ,
|  | bool | saveFloatAsHalf = false )
| pure virtual

Read all of this tree's data buffers that intersect the given bounding box.

Implemented in Tree< _RootNodeType >, Tree< RootNode< InternalNode< InternalNode< InternalNode< LeafNode< T, N4 >, N3 >, N2 >, N1 > > >, Tree< RootNode< InternalNode< InternalNode< LeafNode< T, N3 >, N2 >, N1 > > >, Tree< RootNode< InternalNode< LeafNode< T, N2 >, N1 > > >, Tree< tree::RootNode< tree::InternalNode< tree::InternalNode< PointDataLeafNode< PointDataIndex32, 3 >, 4 >, 5 > > >, Tree< tree::RootNode< tree::InternalNode< tree::InternalNode< PointIndexLeafNode< PointIndex32, 3 >, 4 >, 5 > > >, Tree< typename NodeChainT::Back >, Tree< typename RootNodeType::template ValueConverter< OtherValueType >::Type >, and Tree< typename RootType::template ValueConverter< bool >::Type >.

## ◆ readNonresidentBuffers()

virtual void readNonresidentBuffers | ( |  | ) | const
| pure virtual

Read all of this tree's data buffers that are not yet resident in memory (because delayed loading is in effect).

If this tree was read from a memory-mapped file, this operation disconnects the tree from the file.

See also
  clipUnallocatedNodes, io::File::open, io::MappedFile

Implemented in Tree< _RootNodeType >, Tree< RootNode< InternalNode< InternalNode< InternalNode< LeafNode< T, N4 >, N3 >, N2 >, N1 > > >, Tree< RootNode< InternalNode< InternalNode< LeafNode< T, N3 >, N2 >, N1 > > >, Tree< RootNode< InternalNode< LeafNode< T, N2 >, N1 > > >, Tree< tree::RootNode< tree::InternalNode< tree::InternalNode< PointDataLeafNode< PointDataIndex32, 3 >, 4 >, 5 > > >, Tree< tree::RootNode< tree::InternalNode< tree::InternalNode< PointIndexLeafNode< PointIndex32, 3 >, 4 >, 5 > > >, Tree< typename NodeChainT::Back >, Tree< typename RootNodeType::template ValueConverter< OtherValueType >::Type >, and Tree< typename RootType::template ValueConverter< bool >::Type >.

## ◆ readTopology()

void readTopology | ( | std::istream & | is,
|  | bool | saveFloatAsHalf = false )
| inlinevirtual

Read the tree topology from a stream.

This will read the tree structure and tile values, but not voxel data.

Reimplemented in Tree< _RootNodeType >, Tree< RootNode< InternalNode< InternalNode< InternalNode< LeafNode< T, N4 >, N3 >, N2 >, N1 > > >, Tree< RootNode< InternalNode< InternalNode< LeafNode< T, N3 >, N2 >, N1 > > >, Tree< RootNode< InternalNode< LeafNode< T, N2 >, N1 > > >, Tree< tree::RootNode< tree::InternalNode< tree::InternalNode< PointDataLeafNode< PointDataIndex32, 3 >, 4 >, 5 > > >, Tree< tree::RootNode< tree::InternalNode< tree::InternalNode< PointIndexLeafNode< PointIndex32, 3 >, 4 >, 5 > > >, Tree< typename NodeChainT::Back >, Tree< typename RootNodeType::template ValueConverter< OtherValueType >::Type >, and Tree< typename RootType::template ValueConverter< bool >::Type >.

## ◆ treeDepth()

virtual Index treeDepth | ( |  | ) | const
| pure virtual

Return the depth of this tree.

A tree with only a root node and leaf nodes has depth 2, for example.

Implemented in Tree< _RootNodeType >, Tree< RootNode< InternalNode< InternalNode< InternalNode< LeafNode< T, N4 >, N3 >, N2 >, N1 > > >, Tree< RootNode< InternalNode< InternalNode< LeafNode< T, N3 >, N2 >, N1 > > >, Tree< RootNode< InternalNode< LeafNode< T, N2 >, N1 > > >, Tree< tree::RootNode< tree::InternalNode< tree::InternalNode< PointDataLeafNode< PointDataIndex32, 3 >, 4 >, 5 > > >, Tree< tree::RootNode< tree::InternalNode< tree::InternalNode< PointIndexLeafNode< PointIndex32, 3 >, 4 >, 5 > > >, Tree< typename NodeChainT::Back >, Tree< typename RootNodeType::template ValueConverter< OtherValueType >::Type >, and Tree< typename RootType::template ValueConverter< bool >::Type >.

## ◆ type()

virtual const Name & type | ( |  | ) | const
| pure virtual

Return the name of this tree's type.

Implemented in Tree< _RootNodeType >, Tree< RootNode< InternalNode< InternalNode< InternalNode< LeafNode< T, N4 >, N3 >, N2 >, N1 > > >, Tree< RootNode< InternalNode< InternalNode< LeafNode< T, N3 >, N2 >, N1 > > >, Tree< RootNode< InternalNode< LeafNode< T, N2 >, N1 > > >, Tree< tree::RootNode< tree::InternalNode< tree::InternalNode< PointDataLeafNode< PointDataIndex32, 3 >, 4 >, 5 > > >, Tree< tree::RootNode< tree::InternalNode< tree::InternalNode< PointIndexLeafNode< PointIndex32, 3 >, 4 >, 5 > > >, Tree< typename NodeChainT::Back >, Tree< typename RootNodeType::template ValueConverter< OtherValueType >::Type >, and Tree< typename RootType::template ValueConverter< bool >::Type >.

## ◆ unallocatedLeafCount()

virtual Index64 unallocatedLeafCount | ( |  | ) | const
| pure virtual

Return the total number of unallocated leaf nodes residing in this tree.

Implemented in Tree< _RootNodeType >, Tree< RootNode< InternalNode< InternalNode< InternalNode< LeafNode< T, N4 >, N3 >, N2 >, N1 > > >, Tree< RootNode< InternalNode< InternalNode< LeafNode< T, N3 >, N2 >, N1 > > >, Tree< RootNode< InternalNode< LeafNode< T, N2 >, N1 > > >, Tree< tree::RootNode< tree::InternalNode< tree::InternalNode< PointDataLeafNode< PointDataIndex32, 3 >, 4 >, 5 > > >, Tree< tree::RootNode< tree::InternalNode< tree::InternalNode< PointIndexLeafNode< PointIndex32, 3 >, 4 >, 5 > > >, Tree< typename NodeChainT::Back >, Tree< typename RootNodeType::template ValueConverter< OtherValueType >::Type >, and Tree< typename RootType::template ValueConverter< bool >::Type >.

## ◆ valueType()

virtual Name valueType | ( |  | ) | const
| pure virtual

Return the name of the type of a voxel's value (e.g., "float" or "vec3d").

Implemented in Tree< _RootNodeType >, Tree< RootNode< InternalNode< InternalNode< InternalNode< LeafNode< T, N4 >, N3 >, N2 >, N1 > > >, Tree< RootNode< InternalNode< InternalNode< LeafNode< T, N3 >, N2 >, N1 > > >, Tree< RootNode< InternalNode< LeafNode< T, N2 >, N1 > > >, Tree< tree::RootNode< tree::InternalNode< tree::InternalNode< PointDataLeafNode< PointDataIndex32, 3 >, 4 >, 5 > > >, Tree< tree::RootNode< tree::InternalNode< tree::InternalNode< PointIndexLeafNode< PointIndex32, 3 >, 4 >, 5 > > >, Tree< typename NodeChainT::Back >, Tree< typename RootNodeType::template ValueConverter< OtherValueType >::Type >, and Tree< typename RootType::template ValueConverter< bool >::Type >.

## ◆ writeBuffers()

virtual void writeBuffers | ( | std::ostream & | ,
|  | bool | saveFloatAsHalf = false ) const
| pure virtual

Write out all the data buffers for this tree.

Implemented in Tree< _RootNodeType >, Tree< RootNode< InternalNode< InternalNode< InternalNode< LeafNode< T, N4 >, N3 >, N2 >, N1 > > >, Tree< RootNode< InternalNode< InternalNode< LeafNode< T, N3 >, N2 >, N1 > > >, Tree< RootNode< InternalNode< LeafNode< T, N2 >, N1 > > >, Tree< tree::RootNode< tree::InternalNode< tree::InternalNode< PointDataLeafNode< PointDataIndex32, 3 >, 4 >, 5 > > >, Tree< tree::RootNode< tree::InternalNode< tree::InternalNode< PointIndexLeafNode< PointIndex32, 3 >, 4 >, 5 > > >, Tree< typename NodeChainT::Back >, Tree< typename RootNodeType::template ValueConverter< OtherValueType >::Type >, and Tree< typename RootType::template ValueConverter< bool >::Type >.

## ◆ writeTopology()

void writeTopology | ( | std::ostream & | os,
|  | bool | saveFloatAsHalf = false ) const
| inlinevirtual

Write the tree topology to a stream.

This will write the tree structure and tile values, but not voxel data.

Reimplemented in Tree< _RootNodeType >, Tree< RootNode< InternalNode< InternalNode< InternalNode< LeafNode< T, N4 >, N3 >, N2 >, N1 > > >, Tree< RootNode< InternalNode< InternalNode< LeafNode< T, N3 >, N2 >, N1 > > >, Tree< RootNode< InternalNode< LeafNode< T, N2 >, N1 > > >, Tree< tree::RootNode< tree::InternalNode< tree::InternalNode< PointDataLeafNode< PointDataIndex32, 3 >, 4 >, 5 > > >, Tree< tree::RootNode< tree::InternalNode< tree::InternalNode< PointIndexLeafNode< PointIndex32, 3 >, 4 >, 5 > > >, Tree< typename NodeChainT::Back >, Tree< typename RootNodeType::template ValueConverter< OtherValueType >::Type >, and Tree< typename RootType::template ValueConverter< bool >::Type >.