OpenVDB 10.0.1
Loading...
Searching...
No Matches
Public Types | Public Member Functions | List of all members
GridHandle< BufferT > Class Template Reference

This class serves to manage a raw memory buffer of a NanoVDB Grid. More...

#include <nanovdb/util/GridHandle.h>

Inheritance diagram for GridHandle< BufferT >:
GridHandleBase

Public Types

using BufferType = BufferT
 

Public Member Functions

 GridHandle (BufferT &&buffer)
 Move constructor from a buffer.
 
 GridHandle ()=default
 Empty ctor.
 
 GridHandle (const GridHandle &)=delete
 Disallow copy-construction.
 
GridHandleoperator= (const GridHandle &)=delete
 Disallow copy assignment operation.
 
GridHandleoperator= (GridHandle &&other) noexcept
 Move copy assignment operation.
 
 GridHandle (GridHandle &&other) noexcept
 Move copy-constructor.
 
 ~GridHandle () override
 Default destructor.
 
void reset ()
 clear the buffer
 
BufferT & buffer ()
 Return a reference to the buffer.
 
const BufferT & buffer () const
 Return a const reference to the buffer.
 
uint8_tdata () override
 Returns a non-const pointer to the data.
 
const uint8_tdata () const override
 Returns a const pointer to the data.
 
uint64_t size () const override
 Returns the size in bytes of the raw memory buffer managed by this GridHandle's allocator.
 
template<typename ValueT >
const NanoGrid< ValueT > * grid (uint32_t n=0) const
 Returns a const pointer to the n'th NanoVDB grid encoded in this GridHandle.
 
template<typename ValueT >
NanoGrid< ValueT > * grid (uint32_t n=0)
 Returns a pointer to the n'th NanoVDB grid encoded in this GridHandle.
 
template<typename ValueT , typename U = BufferT>
std::enable_if< BufferTraits< U >::hasDeviceDual, constNanoGrid< ValueT > * >::type deviceGrid (uint32_t n=0) const
 Return a const pointer to the n'th grid encoded in this GridHandle on the device, e.g. GPU.
 
template<typename ValueT , typename U = BufferT>
std::enable_if< BufferTraits< U >::hasDeviceDual, NanoGrid< ValueT > * >::type deviceGrid (uint32_t n=0)
 Return a const pointer to the n'th grid encoded in this GridHandle on the device, e.g. GPU.
 
template<typename U = BufferT>
std::enable_if< BufferTraits< U >::hasDeviceDual, void >::type deviceUpload (void *stream=nullptr, bool sync=true)
 Upload the grid to the device, e.g. from CPU to GPU.
 
template<typename U = BufferT>
std::enable_if< BufferTraits< U >::hasDeviceDual, void >::type deviceDownload (void *stream=nullptr, bool sync=true)
 Download the grid to from the device, e.g. from GPU to CPU.
 
bool empty () const
 Return true if this handle is empty, i.e. has no allocated memory.
 
 operator bool () const
 Return true if this handle contains a grid.
 
const GridMetaDatagridMetaData () const
 Returns a const point to the grid meta data (see definition above).
 
GridType gridType () const
 Returns the GridType handled by this instance, and GridType::End if empty.
 
uint32_t gridCount () const
 Return the number of grids contained in this buffer.
 

Detailed Description

template<typename BufferT = HostBuffer>
class nanovdb::GridHandle< BufferT >

This class serves to manage a raw memory buffer of a NanoVDB Grid.

Note
It is important to note that this class does NOT depend on OpenVDB.

Member Typedef Documentation

◆ BufferType

template<typename BufferT = HostBuffer>
using BufferType = BufferT

Constructor & Destructor Documentation

◆ GridHandle() [1/4]

template<typename BufferT = HostBuffer>
GridHandle ( BufferT &&  buffer)
inline

Move constructor from a buffer.

◆ GridHandle() [2/4]

template<typename BufferT = HostBuffer>
GridHandle ( )
default

Empty ctor.

◆ GridHandle() [3/4]

template<typename BufferT = HostBuffer>
GridHandle ( const GridHandle< BufferT > &  )
delete

Disallow copy-construction.

◆ GridHandle() [4/4]

template<typename BufferT = HostBuffer>
GridHandle ( GridHandle< BufferT > &&  other)
inlinenoexcept

Move copy-constructor.

◆ ~GridHandle()

template<typename BufferT = HostBuffer>
~GridHandle ( )
inlineoverride

Default destructor.

Member Function Documentation

◆ buffer() [1/2]

template<typename BufferT = HostBuffer>
BufferT & buffer ( )
inline

Return a reference to the buffer.

◆ buffer() [2/2]

template<typename BufferT = HostBuffer>
const BufferT & buffer ( ) const
inline

Return a const reference to the buffer.

◆ data() [1/2]

template<typename BufferT = HostBuffer>
const uint8_t * data ( ) const
inlineoverridevirtual

Returns a const pointer to the data.

Warning
Note that the return pointer can be NULL if the GridHandle was not initialized

Implements GridHandleBase.

◆ data() [2/2]

template<typename BufferT = HostBuffer>
uint8_t * data ( )
inlineoverridevirtual

Returns a non-const pointer to the data.

Warning
Note that the return pointer can be NULL if the GridHandle was not initialized

Implements GridHandleBase.

◆ deviceDownload()

template<typename BufferT = HostBuffer>
template<typename U = BufferT>
std::enable_if< BufferTraits< U >::hasDeviceDual, void >::type deviceDownload ( void stream = nullptr,
bool  sync = true 
)
inline

Download the grid to from the device, e.g. from GPU to CPU.

Note
This method is only available if the buffer supports devices

◆ deviceGrid() [1/2]

template<typename BufferT = HostBuffer>
template<typename ValueT , typename U = BufferT>
std::enable_if< BufferTraits< U >::hasDeviceDual, NanoGrid< ValueT > * >::type deviceGrid ( uint32_t  n = 0)
inline

Return a const pointer to the n'th grid encoded in this GridHandle on the device, e.g. GPU.

Warning
Note that the return pointer can be NULL if the GridHandle was not initialized, n is invalid or if the template parameter does not match the specified grid!

◆ deviceGrid() [2/2]

template<typename BufferT = HostBuffer>
template<typename ValueT , typename U = BufferT>
std::enable_if< BufferTraits< U >::hasDeviceDual, constNanoGrid< ValueT > * >::type deviceGrid ( uint32_t  n = 0) const
inline

Return a const pointer to the n'th grid encoded in this GridHandle on the device, e.g. GPU.

Warning
Note that the return pointer can be NULL if the GridHandle was not initialized, n is invalid or if the template parameter does not match the specified grid!

◆ deviceUpload()

template<typename BufferT = HostBuffer>
template<typename U = BufferT>
std::enable_if< BufferTraits< U >::hasDeviceDual, void >::type deviceUpload ( void stream = nullptr,
bool  sync = true 
)
inline

Upload the grid to the device, e.g. from CPU to GPU.

Note
This method is only available if the buffer supports devices

◆ empty()

bool empty ( ) const
inlineinherited

Return true if this handle is empty, i.e. has no allocated memory.

◆ grid() [1/2]

template<typename BufferT = HostBuffer>
template<typename ValueT >
NanoGrid< ValueT > * grid ( uint32_t  n = 0)
inline

Returns a pointer to the n'th NanoVDB grid encoded in this GridHandle.

Warning
Note that the return pointer can be NULL if the GridHandle was not initialized, n is invalid or if the template parameter does not match the specified grid!

◆ grid() [2/2]

template<typename BufferT = HostBuffer>
template<typename ValueT >
const NanoGrid< ValueT > * grid ( uint32_t  n = 0) const
inline

Returns a const pointer to the n'th NanoVDB grid encoded in this GridHandle.

Warning
Note that the return pointer can be NULL if the GridHandle was not initialized, n is invalid or if the template parameter does not match the specified grid!

◆ gridCount()

uint32_t gridCount ( ) const
inlineinherited

Return the number of grids contained in this buffer.

◆ gridMetaData()

const GridMetaData * gridMetaData ( ) const
inlineinherited

Returns a const point to the grid meta data (see definition above).

Warning
Note that the return pointer can be NULL if the GridHandle was not initialized

◆ gridType()

GridType gridType ( ) const
inlineinherited

Returns the GridType handled by this instance, and GridType::End if empty.

◆ operator bool()

operator bool ( ) const
inlineinherited

Return true if this handle contains a grid.

◆ operator=() [1/2]

template<typename BufferT = HostBuffer>
GridHandle & operator= ( const GridHandle< BufferT > &  )
delete

Disallow copy assignment operation.

◆ operator=() [2/2]

template<typename BufferT = HostBuffer>
GridHandle & operator= ( GridHandle< BufferT > &&  other)
inlinenoexcept

Move copy assignment operation.

◆ reset()

template<typename BufferT = HostBuffer>
void reset ( )
inline

clear the buffer

◆ size()

template<typename BufferT = HostBuffer>
uint64_t size ( ) const
inlineoverridevirtual

Returns the size in bytes of the raw memory buffer managed by this GridHandle's allocator.

Implements GridHandleBase.