OpenVDB  12.0.0
Classes | Public Types | Public Member Functions | Static Public Member Functions | Static Public Attributes | List of all members
Mask< LOG2DIM > Class Template Reference

Bit-mask to encode active states and facilitate sequential iterators and a fast codec for I/O compression. More...

#include <nanovdb/NanoVDB.h>

Classes

class  DenseIterator
 
class  Iterator
 

Public Types

using OnIterator = Iterator< true >
 
using OffIterator = Iterator< false >
 

Public Member Functions

__hostdev__ uint32_t countOn () const
 Return the total number of set bits in this Mask. More...
 
__hostdev__ uint32_t countOn (uint32_t i) const
 Return the number of lower set bits in mask up to but excluding the i'th bit. More...
 
__hostdev__ OnIterator beginOn () const
 
__hostdev__ OffIterator beginOff () const
 
__hostdev__ DenseIterator beginAll () const
 
__hostdev__ Mask ()
 Initialize all bits to zero. More...
 
__hostdev__ Mask (bool on)
 
__hostdev__ Mask (const Mask &other)
 Copy constructor. More...
 
__hostdev__ uint64_t * words ()
 Return a pointer to the list of words of the bit mask. More...
 
__hostdev__ const uint64_t * words () const
 
template<typename MaskT = Mask>
__hostdev__ util::enable_if<!util::is_same< MaskT, Mask >::value, Mask & >::type operator= (const MaskT &other)
 Assignment operator that works with openvdb::util::NodeMask. More...
 
Maskoperator= (const Mask &)=default
 
__hostdev__ bool operator== (const Mask &other) const
 
__hostdev__ bool operator!= (const Mask &other) const
 
__hostdev__ bool isOn (uint32_t n) const
 Return true if the given bit is set. More...
 
__hostdev__ bool isOff (uint32_t n) const
 Return true if the given bit is NOT set. More...
 
__hostdev__ bool isOn () const
 Return true if all the bits are set in this Mask. More...
 
__hostdev__ bool isOff () const
 Return true if none of the bits are set in this Mask. More...
 
__hostdev__ void setOn (uint32_t n)
 Set the specified bit on. More...
 
__hostdev__ void setOff (uint32_t n)
 Set the specified bit off. More...
 
__hostdev__ void set (uint32_t n, bool on)
 Set the specified bit on or off. More...
 
__hostdev__ void setOn ()
 Set all bits on. More...
 
__hostdev__ void setOff ()
 Set all bits off. More...
 
__hostdev__ void set (bool on)
 Set all bits off. More...
 
__hostdev__ void toggle ()
 brief Toggle the state of all bits in the mask More...
 
__hostdev__ void toggle (uint32_t n)
 
__hostdev__ Maskoperator&= (const Mask &other)
 Bitwise intersection. More...
 
__hostdev__ Maskoperator|= (const Mask &other)
 Bitwise union. More...
 
__hostdev__ Maskoperator-= (const Mask &other)
 Bitwise difference. More...
 
__hostdev__ Maskoperator^= (const Mask &other)
 Bitwise XOR. More...
 
template<bool ON>
NANOVDB_HOSTDEV_DISABLE_WARNING __hostdev__ uint32_t findFirst () const
 
template<bool ON>
NANOVDB_HOSTDEV_DISABLE_WARNING __hostdev__ uint32_t findNext (uint32_t start) const
 
template<bool ON>
NANOVDB_HOSTDEV_DISABLE_WARNING __hostdev__ uint32_t findPrev (uint32_t start) const
 

Static Public Member Functions

static __hostdev__ size_t memUsage ()
 Return the memory footprint in bytes of this Mask. More...
 
static __hostdev__ uint32_t bitCount ()
 Return the number of bits available in this Mask. More...
 
static __hostdev__ uint32_t wordCount ()
 Return the number of machine words used by this Mask. More...
 

Static Public Attributes

static constexpr uint32_t SIZE = 1U << (3 * LOG2DIM)
 
static constexpr uint32_t WORD_COUNT = SIZE >> 6
 

Detailed Description

template<uint32_t LOG2DIM>
class nanovdb::Mask< LOG2DIM >

Bit-mask to encode active states and facilitate sequential iterators and a fast codec for I/O compression.

Member Typedef Documentation

using OffIterator = Iterator<false>
using OnIterator = Iterator<true>

Constructor & Destructor Documentation

__hostdev__ Mask ( )
inline

Initialize all bits to zero.

__hostdev__ Mask ( bool  on)
inline
__hostdev__ Mask ( const Mask< LOG2DIM > &  other)
inline

Copy constructor.

Member Function Documentation

__hostdev__ DenseIterator beginAll ( ) const
inline
__hostdev__ OffIterator beginOff ( ) const
inline
__hostdev__ OnIterator beginOn ( ) const
inline
static __hostdev__ uint32_t bitCount ( )
inlinestatic

Return the number of bits available in this Mask.

__hostdev__ uint32_t countOn ( ) const
inline

Return the total number of set bits in this Mask.

__hostdev__ uint32_t countOn ( uint32_t  i) const
inline

Return the number of lower set bits in mask up to but excluding the i'th bit.

NANOVDB_HOSTDEV_DISABLE_WARNING __hostdev__ uint32_t findFirst ( ) const
inline
NANOVDB_HOSTDEV_DISABLE_WARNING __hostdev__ uint32_t findNext ( uint32_t  start) const
inline
NANOVDB_HOSTDEV_DISABLE_WARNING __hostdev__ uint32_t findPrev ( uint32_t  start) const
inline
__hostdev__ bool isOff ( uint32_t  n) const
inline

Return true if the given bit is NOT set.

__hostdev__ bool isOff ( ) const
inline

Return true if none of the bits are set in this Mask.

__hostdev__ bool isOn ( uint32_t  n) const
inline

Return true if the given bit is set.

__hostdev__ bool isOn ( ) const
inline

Return true if all the bits are set in this Mask.

static __hostdev__ size_t memUsage ( )
inlinestatic

Return the memory footprint in bytes of this Mask.

__hostdev__ bool operator!= ( const Mask< LOG2DIM > &  other) const
inline
__hostdev__ Mask& operator&= ( const Mask< LOG2DIM > &  other)
inline

Bitwise intersection.

__hostdev__ Mask& operator-= ( const Mask< LOG2DIM > &  other)
inline

Bitwise difference.

__hostdev__ util::enable_if<!util::is_same<MaskT, Mask>::value, Mask&>::type operator= ( const MaskT &  other)
inline

Assignment operator that works with openvdb::util::NodeMask.

Mask& operator= ( const Mask< LOG2DIM > &  )
default
__hostdev__ bool operator== ( const Mask< LOG2DIM > &  other) const
inline
__hostdev__ Mask& operator^= ( const Mask< LOG2DIM > &  other)
inline

Bitwise XOR.

__hostdev__ Mask& operator|= ( const Mask< LOG2DIM > &  other)
inline

Bitwise union.

__hostdev__ void set ( uint32_t  n,
bool  on 
)
inline

Set the specified bit on or off.

__hostdev__ void set ( bool  on)
inline

Set all bits off.

__hostdev__ void setOff ( uint32_t  n)
inline

Set the specified bit off.

__hostdev__ void setOff ( )
inline

Set all bits off.

__hostdev__ void setOn ( uint32_t  n)
inline

Set the specified bit on.

__hostdev__ void setOn ( )
inline

Set all bits on.

__hostdev__ void toggle ( )
inline

brief Toggle the state of all bits in the mask

__hostdev__ void toggle ( uint32_t  n)
inline
static __hostdev__ uint32_t wordCount ( )
inlinestatic

Return the number of machine words used by this Mask.

__hostdev__ uint64_t* words ( )
inline

Return a pointer to the list of words of the bit mask.

__hostdev__ const uint64_t* words ( ) const
inline

Member Data Documentation

constexpr uint32_t SIZE = 1U << (3 * LOG2DIM)
static
constexpr uint32_t WORD_COUNT = SIZE >> 6
static