Handle memory buffer with reference counter. More...
#include <Inventor/misc/SoMemoryObject.h>
Public Types | |
enum | CopyPolicy { COPY = 0 , NO_COPY , NO_COPY_AND_DELETE , NO_COPY_AND_FREE } |
SoMemoryObject may be manipulating large amounts of memory. More... | |
Public Member Functions | |
SoMemoryObject () | |
Default Constructor. | |
SoMemoryObject (void *buf, size_t byteSize, bool owner=true) | |
Constructor. | |
SoMemoryObject (void *buf, size_t byteSize, SbDataType type, CopyPolicy policy) | |
Constructor. | |
SoMemoryObject (SoBufferObject *bufObj, SbDataType type=SbDataType::UNSIGNED_BYTE, bool owner=true) | |
Constructor. | |
virtual | ~SoMemoryObject () |
Destructor. | |
void * | get () const |
Returns a pointer to the encapsulated buffer. | |
size_t | length () const |
Returns the size in bytes of the encapsulated buffer. | |
SbDataType | getType () const |
Returns the type of the encapsulated buffer. | |
Public Member Functions inherited from SoRefCounter | |
void | ref () const |
Adds a reference to an instance. | |
void | unref () const |
Removes a reference from an instance. | |
void | unrefNoDelete () const |
unrefNoDelete() should be called when it is desired to decrement the reference count, but not delete the instance if this brings the reference count to zero. | |
int | getRefCount () const |
Returns current reference count. | |
void | lock () const |
lock this instance. | |
void | unlock () const |
unlock this instance. | |
Handle memory buffer with reference counter.
This object encapsulates a memory buffer with a reference counter, allowing it to be shared across multiple objects. The buffer will be released when no more references to it exist.
Definition at line 69 of file SoMemoryObject.h.
SoMemoryObject may be manipulating large amounts of memory.
It is therefore convenient to be able to set the memory usage policy.
Enumerator | |
---|---|
COPY | Open Inventor will make a copy of the data. |
NO_COPY | Passed buffer used, user will delete. |
NO_COPY_AND_DELETE | Passed buffer used, SoMemoryObject will delete. Use this if memory is allocated with operator "new[]". |
NO_COPY_AND_FREE | Passed buffer used, SoMemoryObject will free. Use this if memory is allocated with "malloc". |
Definition at line 78 of file SoMemoryObject.h.
SoMemoryObject::SoMemoryObject | ( | ) |
Default Constructor.
No memory area is handled, but default parameters are set to a type of SbDataType::UNSIGNED_BYTE and a CopyPolicy of NO_COPY_AND_DELETE
SoMemoryObject::SoMemoryObject | ( | void * | buf, |
size_t | byteSize, | ||
bool | owner = true |
||
) |
Constructor.
Takes the object to manage.
Default type will be assigned to UNSIGNED_BYTE. if owner flag is true, Policy will be set to NO_COPY_AND_FREE , then the memory area pointed to by buf should be allocated by malloc/realloc C function in order to be correctly deleted during unref. else policy is NO_COPY (disables automatic release of the managed buffer).
SoMemoryObject::SoMemoryObject | ( | void * | buf, |
size_t | byteSize, | ||
SbDataType | type, | ||
CopyPolicy | policy | ||
) |
Constructor.
Takes the object to manage.
SoMemoryObject::SoMemoryObject | ( | SoBufferObject * | bufObj, |
SbDataType | type = SbDataType::UNSIGNED_BYTE , |
||
bool | owner = true |
||
) |
Constructor.
Takes the buffer object to manage.
Policy is NO_COPY_AND_DELETE if owner flag is true, else policy is NO_COPY (disables automatic release of the buffer object).
|
virtual |
Destructor.
It will be called when there are no more references to this object. It will destroy the managed buffer as well.
void * SoMemoryObject::get | ( | ) | const |
Returns a pointer to the encapsulated buffer.
|
inline |
Returns the type of the encapsulated buffer.
Definition at line 204 of file SoMemoryObject.h.
size_t SoMemoryObject::length | ( | ) | const |
Returns the size in bytes of the encapsulated buffer.