OpenVDB 11.0.0
Loading...
Searching...
No Matches
Classes | Public Types | Public Member Functions | Static Public Member Functions | Public Attributes | Static Public Attributes | Friends | List of all members
InternalNode< ChildT, Log2Dim > Class Template Reference

Internal nodes of a VDB treedim(),. More...

#include <nanovdb/NanoVDB.h>

Inheritance diagram for InternalNode< ChildT, Log2Dim >:
InternalData< ChildT, LOG2DIM >

Classes

class  ChildIter
 Visits child nodes of this node only. More...
 
class  DenseIterator
 Visits all tile values and child nodes of this node. More...
 
class  ValueIterator
 Visits all tile values in this node, i.e. both inactive and active tiles. More...
 
class  ValueOnIterator
 Visits active tile values of this node only. More...
 

Public Types

using DataType = InternalData< ChildT, Log2Dim >
 
using ValueType = typename DataType::ValueT
 
using FloatType = typename DataType::StatsT
 
using BuildType = typename DataType::BuildT
 
using LeafNodeType = typename ChildT::LeafNodeType
 
using ChildNodeType = ChildT
 
using CoordType = typename ChildT::CoordType
 
template<uint32_t LOG2>
using MaskType = typename ChildT::template MaskType< LOG2 >
 
template<bool On>
using MaskIterT = typename Mask< Log2Dim >::template Iterator< On >
 
using ChildIterator = ChildIter< InternalNode >
 
using ConstChildIterator = ChildIter< const InternalNode >
 
using ValueT = typename ChildT::ValueType
 
using BuildT = typename ChildT::BuildType
 
using StatsT = typename ChildT::FloatType
 
using CoordT = typename ChildT::CoordType
 
using MaskT = typename ChildT::template MaskType< LOG2DIM >
 

Public Member Functions

ChildIterator beginChild ()
 
ConstChildIterator cbeginChild () const
 
ValueIterator beginValue () const
 
ValueIterator cbeginValueAll () const
 
ValueOnIterator beginValueOn () const
 
ValueOnIterator cbeginValueOn () const
 
DenseIterator beginDense () const
 
DenseIterator cbeginChildAll () const
 
 InternalNode ()=delete
 This class cannot be constructed or deleted.
 
 InternalNode (const InternalNode &)=delete
 
InternalNodeoperator= (const InternalNode &)=delete
 
 ~InternalNode ()=delete
 
DataTypedata ()
 
const DataTypedata () const
 
const MaskType< LOG2DIM > & valueMask () const
 Return a const reference to the bit mask of active voxels in this internal node.
 
const MaskType< LOG2DIM > & getValueMask () const
 
const MaskType< LOG2DIM > & childMask () const
 Return a const reference to the bit mask of child nodes in this internal node.
 
const MaskType< LOG2DIM > & getChildMask () const
 
CoordType origin () const
 Return the origin in index space of this leaf node.
 
const ValueTypeminimum () const
 Return a const reference to the minimum active value encoded in this internal node and any of its child nodes.
 
const ValueTypemaximum () const
 Return a const reference to the maximum active value encoded in this internal node and any of its child nodes.
 
const FloatTypeaverage () const
 Return a const reference to the average of all the active values encoded in this internal node and any of its child nodes.
 
FloatType variance () const
 Return the variance of all the active values encoded in this internal node and any of its child nodes.
 
const FloatTypestdDeviation () const
 Return a const reference to the standard deviation of all the active values encoded in this internal node and any of its child nodes.
 
const BBox< CoordType > & bbox () const
 Return a const reference to the bounding box in index space of active values in this internal node and any of its child nodes.
 
ValueType getFirstValue () const
 If the first entry in this node's table is a tile, return the tile's value. Otherwise, return the result of calling getFirstValue() on the child.
 
ValueType getLastValue () const
 If the last entry in this node's table is a tile, return the tile's value. Otherwise, return the result of calling getLastValue() on the child.
 
ValueType getValue (const CoordType &ijk) const
 Return the value of the given voxel.
 
bool isActive (const CoordType &ijk) const
 
bool probeValue (const CoordType &ijk, ValueType &v) const
 return the state and updates the value of the specified voxel
 
const LeafNodeTypeprobeLeaf (const CoordType &ijk) const
 
ChildNodeTypeprobeChild (const CoordType &ijk)
 
const ChildNodeTypeprobeChild (const CoordType &ijk) const
 
void localToGlobalCoord (Coord &ijk) const
 modifies local coordinates to global coordinates of a tile or child node
 
Coord offsetToGlobalCoord (uint32_t n) const
 
bool isActive () const
 Return true if this node or any of its child nodes contain active values.
 
template<typename OpT , typename... ArgsT>
auto get (const CoordType &ijk, ArgsT &&... args) const
 
void setChild (uint32_t n, const void *ptr)
 
template<typename ValueT >
void setValue (uint32_t n, const ValueT &v)
 
ChildT * getChild (uint32_t n)
 Returns a pointer to the child node at the specifed linear offset.
 
const ChildT * getChild (uint32_t n) const
 
ValueT getValue (uint32_t n) const
 
bool isActive (uint32_t n) const
 
bool isChild (uint32_t n) const
 
template<typename T >
void setOrigin (const T &ijk)
 
const ValueTgetMin () const
 
const ValueTgetMax () const
 
void setMin (const ValueT &v)
 
void setMax (const ValueT &v)
 
void setAvg (const StatsT &v)
 
void setDev (const StatsT &v)
 

Static Public Member Functions

static uint32_t dim ()
 Return the dimension, in voxel units, of this internal node (typically 8*16 or 8*16*32)
 
static size_t memUsage ()
 Return memory usage in bytes for the class.
 
static uint32_t CoordToOffset (const CoordType &ijk)
 Return the linear offset corresponding to the given coordinate.
 
static Coord OffsetToLocalCoord (uint32_t n)
 
static constexpr uint32_t padding ()
 Return padding of this class in bytes, due to aliasing and 32B alignment.
 

Public Attributes

template<typename OpT , typename... ArgsT>
decltype(OpT::set(std::declval< InternalNode & >(), std::declval< uint32_t >(), std::declval< ArgsT >()...)) set (const CoordType &ijk, ArgsT &&... args)
 
BBox< CoordTmBBox
 
uint64_t mFlags
 
MaskT mValueMask
 
MaskT mChildMask
 
ValueT mMinimum
 
ValueT mMaximum
 
StatsT mAverage
 
StatsT mStdDevi
 
Tile mTable [1u<<(3 *LOG2DIM)]
 

Static Public Attributes

static constexpr bool FIXED_SIZE = DataType::FIXED_SIZE
 
static constexpr uint32_t LOG2DIM = Log2Dim
 
static constexpr uint32_t TOTAL = LOG2DIM + ChildT::TOTAL
 
static constexpr uint32_t DIM = 1u << TOTAL
 
static constexpr uint32_t SIZE = 1u << (3 * LOG2DIM)
 
static constexpr uint32_t MASK = (1u << TOTAL) - 1u
 
static constexpr uint32_t LEVEL = 1 + ChildT::LEVEL
 
static constexpr uint64_t NUM_VALUES = uint64_t(1) << (3 * TOTAL)
 

Friends

template<typename , int , int , int >
class ReadAccessor
 
template<typename >
class RootNode
 
template<typename , uint32_t >
class InternalNode
 

Detailed Description

template<typename ChildT, uint32_t Log2Dim = ChildT::LOG2DIM + 1>
class nanovdb::InternalNode< ChildT, Log2Dim >

Internal nodes of a VDB treedim(),.

Member Typedef Documentation

◆ BuildT

using BuildT = typename ChildT::BuildType
inherited

◆ BuildType

using BuildType = typename DataType::BuildT

◆ ChildIterator

◆ ChildNodeType

using ChildNodeType = ChildT

◆ ConstChildIterator

◆ CoordT

using CoordT = typename ChildT::CoordType
inherited

◆ CoordType

using CoordType = typename ChildT::CoordType

◆ DataType

using DataType = InternalData<ChildT, Log2Dim>

◆ FloatType

using FloatType = typename DataType::StatsT

◆ LeafNodeType

using LeafNodeType = typename ChildT::LeafNodeType

◆ MaskIterT

using MaskIterT = typename Mask<Log2Dim>::template Iterator<On>

◆ MaskT

using MaskT = typename ChildT::template MaskType<LOG2DIM>
inherited

◆ MaskType

using MaskType = typename ChildT::template MaskType<LOG2>

◆ StatsT

using StatsT = typename ChildT::FloatType
inherited

◆ ValueT

using ValueT = typename ChildT::ValueType
inherited

◆ ValueType

using ValueType = typename DataType::ValueT

Constructor & Destructor Documentation

◆ InternalNode() [1/2]

InternalNode ( )
delete

This class cannot be constructed or deleted.

◆ InternalNode() [2/2]

InternalNode ( const InternalNode< ChildT, Log2Dim > &  )
delete

◆ ~InternalNode()

~InternalNode ( )
delete

Member Function Documentation

◆ average()

const FloatType & average ( ) const
inline

Return a const reference to the average of all the active values encoded in this internal node and any of its child nodes.

◆ bbox()

const BBox< CoordType > & bbox ( ) const
inline

Return a const reference to the bounding box in index space of active values in this internal node and any of its child nodes.

◆ beginChild()

ChildIterator beginChild ( )
inline

◆ beginDense()

DenseIterator beginDense ( ) const
inline

◆ beginValue()

ValueIterator beginValue ( ) const
inline

◆ beginValueOn()

ValueOnIterator beginValueOn ( ) const
inline

◆ cbeginChild()

ConstChildIterator cbeginChild ( ) const
inline

◆ cbeginChildAll()

DenseIterator cbeginChildAll ( ) const
inline

◆ cbeginValueAll()

ValueIterator cbeginValueAll ( ) const
inline

◆ cbeginValueOn()

ValueOnIterator cbeginValueOn ( ) const
inline

◆ childMask()

const MaskType< LOG2DIM > & childMask ( ) const
inline

Return a const reference to the bit mask of child nodes in this internal node.

◆ CoordToOffset()

static uint32_t CoordToOffset ( const CoordType ijk)
inlinestatic

Return the linear offset corresponding to the given coordinate.

◆ data() [1/2]

DataType * data ( )
inline

◆ data() [2/2]

const DataType * data ( ) const
inline

◆ dim()

static uint32_t dim ( )
inlinestatic

Return the dimension, in voxel units, of this internal node (typically 8*16 or 8*16*32)

◆ get()

auto get ( const CoordType ijk,
ArgsT &&...  args 
) const
inline

◆ getChild() [1/2]

ChildT * getChild ( uint32_t  n)
inlineinherited

Returns a pointer to the child node at the specifed linear offset.

◆ getChild() [2/2]

const ChildT * getChild ( uint32_t  n) const
inlineinherited

◆ getChildMask()

const MaskType< LOG2DIM > & getChildMask ( ) const
inline

◆ getFirstValue()

ValueType getFirstValue ( ) const
inline

If the first entry in this node's table is a tile, return the tile's value. Otherwise, return the result of calling getFirstValue() on the child.

◆ getLastValue()

ValueType getLastValue ( ) const
inline

If the last entry in this node's table is a tile, return the tile's value. Otherwise, return the result of calling getLastValue() on the child.

◆ getMax()

const ValueT & getMax ( ) const
inlineinherited

◆ getMin()

const ValueT & getMin ( ) const
inlineinherited

◆ getValue() [1/2]

ValueType getValue ( const CoordType ijk) const
inline

Return the value of the given voxel.

◆ getValue() [2/2]

ValueT getValue ( uint32_t  n) const
inlineinherited

◆ getValueMask()

const MaskType< LOG2DIM > & getValueMask ( ) const
inline

◆ isActive() [1/3]

bool isActive ( ) const
inline

Return true if this node or any of its child nodes contain active values.

◆ isActive() [2/3]

bool isActive ( const CoordType ijk) const
inline

◆ isActive() [3/3]

bool isActive ( uint32_t  n) const
inlineinherited

◆ isChild()

bool isChild ( uint32_t  n) const
inlineinherited

◆ localToGlobalCoord()

void localToGlobalCoord ( Coord ijk) const
inline

modifies local coordinates to global coordinates of a tile or child node

◆ maximum()

const ValueType & maximum ( ) const
inline

Return a const reference to the maximum active value encoded in this internal node and any of its child nodes.

◆ memUsage()

static size_t memUsage ( )
inlinestatic

Return memory usage in bytes for the class.

◆ minimum()

const ValueType & minimum ( ) const
inline

Return a const reference to the minimum active value encoded in this internal node and any of its child nodes.

◆ offsetToGlobalCoord()

Coord offsetToGlobalCoord ( uint32_t  n) const
inline

◆ OffsetToLocalCoord()

static Coord OffsetToLocalCoord ( uint32_t  n)
inlinestatic
Returns
the local coordinate of the n'th tile or child node

◆ operator=()

InternalNode & operator= ( const InternalNode< ChildT, Log2Dim > &  )
delete

◆ origin()

CoordType origin ( ) const
inline

Return the origin in index space of this leaf node.

◆ padding()

static constexpr uint32_t padding ( )
inlinestaticconstexprinherited

Return padding of this class in bytes, due to aliasing and 32B alignment.

Note
The extra bytes are not necessarily at the end, but can come from aliasing of individual data members.

◆ probeChild() [1/2]

ChildNodeType * probeChild ( const CoordType ijk)
inline

◆ probeChild() [2/2]

const ChildNodeType * probeChild ( const CoordType ijk) const
inline

◆ probeLeaf()

const LeafNodeType * probeLeaf ( const CoordType ijk) const
inline

◆ probeValue()

bool probeValue ( const CoordType ijk,
ValueType v 
) const
inline

return the state and updates the value of the specified voxel

◆ setAvg()

void setAvg ( const StatsT v)
inlineinherited

◆ setChild()

void setChild ( uint32_t  n,
const void *  ptr 
)
inlineinherited

◆ setDev()

void setDev ( const StatsT v)
inlineinherited

◆ setMax()

void setMax ( const ValueT v)
inlineinherited

◆ setMin()

void setMin ( const ValueT v)
inlineinherited

◆ setOrigin()

void setOrigin ( const T &  ijk)
inlineinherited

◆ setValue()

void setValue ( uint32_t  n,
const ValueT v 
)
inlineinherited

◆ stdDeviation()

const FloatType & stdDeviation ( ) const
inline

Return a const reference to the standard deviation of all the active values encoded in this internal node and any of its child nodes.

◆ valueMask()

const MaskType< LOG2DIM > & valueMask ( ) const
inline

Return a const reference to the bit mask of active voxels in this internal node.

◆ variance()

FloatType variance ( ) const
inline

Return the variance of all the active values encoded in this internal node and any of its child nodes.

Friends And Related Function Documentation

◆ InternalNode

friend class InternalNode
friend

◆ ReadAccessor

friend class ReadAccessor
friend

◆ RootNode

friend class RootNode
friend

Member Data Documentation

◆ DIM

constexpr uint32_t DIM = 1u << TOTAL
staticconstexpr

◆ FIXED_SIZE

constexpr bool FIXED_SIZE = DataType::FIXED_SIZE
staticconstexpr

◆ LEVEL

constexpr uint32_t LEVEL = 1 + ChildT::LEVEL
staticconstexpr

◆ LOG2DIM

constexpr uint32_t LOG2DIM = Log2Dim
staticconstexpr

◆ MASK

constexpr uint32_t MASK = (1u << TOTAL) - 1u
staticconstexpr

◆ mAverage

StatsT mAverage
inherited

◆ mBBox

BBox<CoordT> mBBox
inherited

◆ mChildMask

MaskT mChildMask
inherited

◆ mFlags

uint64_t mFlags
inherited

◆ mMaximum

ValueT mMaximum
inherited

◆ mMinimum

ValueT mMinimum
inherited

◆ mStdDevi

StatsT mStdDevi
inherited

◆ mTable

Tile mTable[1u<<(3 *LOG2DIM)]
inherited

◆ mValueMask

MaskT mValueMask
inherited

◆ NUM_VALUES

constexpr uint64_t NUM_VALUES = uint64_t(1) << (3 * TOTAL)
staticconstexpr

◆ set

decltype(OpT::set(std::declval< InternalNode & >(), std::declval< uint32_t >(), std::declval< ArgsT >()...)) set(const CoordType &ijk, ArgsT &&... args)
inline

◆ SIZE

constexpr uint32_t SIZE = 1u << (3 * LOG2DIM)
staticconstexpr

◆ TOTAL

constexpr uint32_t TOTAL = LOG2DIM + ChildT::TOTAL
staticconstexpr