OpenVDB 10.0.1
Loading...
Searching...
No Matches
Public Types | Public Member Functions | Public Attributes | List of all members
HostBuffer::Pool Struct Reference

#include <nanovdb/util/HostBuffer.h>

Public Types

using HashTableT = std::unordered_set< HostBuffer * >
 

Public Member Functions

 Pool (uint64_t size=0, void *data=nullptr)
 External memory ctor.
 
 ~Pool ()
 Custom destructor.
 
 Pool (const Pool &)=delete
 Disallow copy-construction.
 
 Pool (const Pool &&)=delete
 Disallow move-construction.
 
Pooloperator= (const Pool &)=delete
 Disallow copy assignment operation.
 
Pooloperator= (const Pool &&)=delete
 Disallow move assignment operation.
 
uint64_t usage () const
 Return the total number of bytes used from this Pool by buffers.
 
void add (HostBuffer *buffer, uint64_t size)
 Allocate a buffer of the specified size and add it to the register.
 
void remove (HostBuffer *buffer)
 Remove the specified buffer from the register.
 
void replace (HostBuffer *buffer1, HostBuffer *buffer2)
 Replaces buffer1 with buffer2 in the register.
 
void reset ()
 Reset the register and all its buffers.
 
void resize (uint64_t size, void *data=nullptr)
 Resize this Pool and update registered buffers as needed. If data is no NULL it is used as externally managed memory.
 
bool isFull () const
 Return true is all the memory in this pool is in use.
 

Public Attributes

std::mutex mMutex
 
HashTableT mRegister
 
uint8_tmData
 
uint8_tmFree
 
uint64_t mSize
 
uint64_t mPadding
 
bool mManaged
 

Member Typedef Documentation

◆ HashTableT

using HashTableT = std::unordered_set<HostBuffer*>

Constructor & Destructor Documentation

◆ Pool() [1/3]

Pool ( uint64_t  size = 0,
void data = nullptr 
)
inline

External memory ctor.

◆ ~Pool()

~Pool ( )
inline

Custom destructor.

◆ Pool() [2/3]

Pool ( const Pool )
delete

Disallow copy-construction.

◆ Pool() [3/3]

Pool ( const Pool &&  )
delete

Disallow move-construction.

Member Function Documentation

◆ add()

void add ( HostBuffer buffer,
uint64_t  size 
)
inline

Allocate a buffer of the specified size and add it to the register.

◆ isFull()

bool isFull ( ) const
inline

Return true is all the memory in this pool is in use.

◆ operator=() [1/2]

Pool & operator= ( const Pool &&  )
delete

Disallow move assignment operation.

◆ operator=() [2/2]

Pool & operator= ( const Pool )
delete

Disallow copy assignment operation.

◆ remove()

void remove ( HostBuffer buffer)
inline

Remove the specified buffer from the register.

◆ replace()

void replace ( HostBuffer buffer1,
HostBuffer buffer2 
)
inline

Replaces buffer1 with buffer2 in the register.

◆ reset()

void reset ( )
inline

Reset the register and all its buffers.

◆ resize()

void resize ( uint64_t  size,
void data = nullptr 
)
inline

Resize this Pool and update registered buffers as needed. If data is no NULL it is used as externally managed memory.

◆ usage()

uint64_t usage ( ) const
inline

Return the total number of bytes used from this Pool by buffers.

Member Data Documentation

◆ mData

uint8_t* mData

◆ mFree

uint8_t* mFree

◆ mManaged

bool mManaged

◆ mMutex

std::mutex mMutex

◆ mPadding

uint64_t mPadding

◆ mRegister

HashTableT mRegister

◆ mSize

uint64_t mSize