#include <MOpenCLAutoPtr.h>
Auto pointer for cl_mem objects.
cl_mem objects in openCL are reference-counted objects. When created, a cl_mem has a preexisting reference count of 1. An MAutoCLMem object does not need to increment the reference count when it takes over ownership of a cl_mem from OpenCL. An MAutoCLMem object does need to increment the reference count of a cl_mem object when the cl_mem is shared between MAutoCLMem objects.
Always use MAutoCLMem objects in user code. Only use the raw cl_mem handle when you use the OpenCL API.
Assignment or construction with a raw cl_mem DOES NOT increment the reference count. Assignment or construction from another MAutoCLMem DOES increment the reference count.
Public Member Functions | |
MAutoCLMem () | |
Construct a NULL MAutoCLMem. | |
~MAutoCLMem () | |
Destructor. | |
MAutoCLMem (const MAutoCLMem &other) | |
The copy ctor increments the reference count of the cl_mem. More... | |
MAutoCLMem & | operator= (const MAutoCLMem &other) |
The assignment operator increments the reference count of the cl_mem. More... | |
MAutoCLMem (cl_mem value, NoRef dummy) | |
This ctor does not increment the reference count of value. More... | |
void | attach (cl_mem value) |
This method causes the "this" object to take over lifetime management for value. More... | |
cl_mem | detach () |
This method causes the "this" object to stop managing the lifetime of its current cl_mem. More... | |
void | reset () |
This method causes the "this" object to stop managing the lifetime of its current cl_mem. More... | |
cl_mem | get () const |
This method returns the current cl_mem whose lifetime is being managed by the "this" object. More... | |
bool | isNull () const |
This method checks if the "this" object actually manages a non-null cl_mem object. More... | |
const cl_mem * | getReadOnlyRef () const |
This method returns a const pointer to the cl_mem whose lifetime is being managed by the "this" object. More... | |
cl_mem * | getReferenceForAssignment () |
This method returns a pointer to the memory appropriate for storing a cl_mem. More... | |
bool | operator== (const MAutoCLMem &other) const |
operator equal More... | |
bool | operator== (cl_mem other) const |
operator equal More... | |
bool | operator! () const |
operator not More... | |
void | swap (MAutoCLMem &other) |
This method swaps the cl_mem managed by the "this" object with the cl_mem managed by the other object. More... | |
bool | operator< (const MAutoCLMem &other) const |
operator less than More... | |
MAutoCLMem | ( | const MAutoCLMem & | other | ) |
The copy ctor increments the reference count of the cl_mem.
[in] | other | The MAutoCLMem to be copied. |
MAutoCLMem | ( | cl_mem | value, |
NoRef | dummy | ||
) |
This ctor does not increment the reference count of value.
The dummy parameter is included to prevent accidental use the ctor.
[in] | value | The cl_mem that the "this" object manages of the lifetime of. |
[in] | dummy | A dummy parameter to make this ctor difficult to call by accident. |
MAutoCLMem & operator= | ( | const MAutoCLMem & | other | ) |
The assignment operator increments the reference count of the cl_mem.
[in] | other | The MAutoCLMem to be assigned to the "this" object. |
void attach | ( | cl_mem | value | ) |
This method causes the "this" object to take over lifetime management for value.
The reference count of value is not modified by attach(). If "this" object already manages the lifetime of a cl_mem object, the reference count of the old cl_mem is decremented.
[in] | value | The cl_mem the "this" object should manage the lifetime of. |
cl_mem detach | ( | ) |
This method causes the "this" object to stop managing the lifetime of its current cl_mem.
The reference count of the cl_mem is not modified by detach().
void reset | ( | ) |
This method causes the "this" object to stop managing the lifetime of its current cl_mem.
The reference count of the cl_mem is decremented.
cl_mem get | ( | ) | const |
This method returns the current cl_mem whose lifetime is being managed by the "this" object.
The reference count of the cl_mem is not modified by get().
bool isNull | ( | ) | const |
This method checks if the "this" object actually manages a non-null cl_mem object.
const cl_mem * getReadOnlyRef | ( | ) | const |
This method returns a const pointer to the cl_mem whose lifetime is being managed by the "this" object.
The reference count of the cl_mem is not modified.
cl_mem * getReferenceForAssignment | ( | ) |
This method returns a pointer to the memory appropriate for storing a cl_mem.
getReferenceForAssignment() decrements the reference count of the cl_mem before returning, which means it is not safe to dereference the returned value. The "this" object manages the lifetime of the cl_mem stored in the returned pointer.
bool operator== | ( | const MAutoCLMem & | other | ) | const |
operator equal
[in] | other | The MAutoCLMem to compare with the "this" object. |
bool operator== | ( | cl_mem | other | ) | const |
operator equal
[in] | other | The cl_mem that compares with the "this" object. |
bool operator! | ( | ) | const |
operator not
void swap | ( | MAutoCLMem & | other | ) |
This method swaps the cl_mem managed by the "this" object with the cl_mem managed by the other object.
swap() does not modify the reference counts of either cl_mem object.
[in] | other | The MAutoCLMem to swap cl_mem's with. |
bool operator< | ( | const MAutoCLMem & | other | ) | const |
operator less than
[in] | other | the MAutoCLMem with which the "this" object is compared. |