CS::CowWrapper< T, MemoryAllocator > Class Template Reference
Copy-on-write wrapper for arbitrary types. More...
#include <csutil/cowwrapper.h>
Public Member Functions | |
CowWrapper (const T &other) | |
Create a new wrapper and initialize with other . | |
CowWrapper (const CowWrapper &other) | |
Copy reference to data from other . | |
T & | operator * () |
Return a non-const reference to the contained data. | |
const T & | operator * () const |
Return a const reference to the contained data. | |
T * | operator-> () |
Return a non-const pointer to the contained data. | |
const T * | operator-> () const |
Return a const pointer to the contained data. | |
Static Public Attributes | |
static const size_t | allocSize = sizeof (WrappedData) |
Detailed Description
template<typename T, class MemoryAllocator = Memory::AllocatorMalloc>
class CS::CowWrapper< T, MemoryAllocator >
Copy-on-write wrapper for arbitrary types.
_________________________________________ / Instances transparently maintain a \ | reference-counted pointer to the actual | | data; if an instance is copied, merely | | this pointer is copied. | | | | As long as all access to the data is | | constant, the data is shared between | | instances. Only if non-const access is | | requested the data is duplicated. | | | \ The wrapper itself acts like a pointer. / ----------------------------------------- \ ^__^ \ (oo)\_______ (__)\ )\/\ ||----w | || ||
- Remarks:
- Contained types must have a proper copy constructor.
Care should be taken that the data is accessed with proper const-ness, since only the then data can be shared. Otherwise, data may be duplicated needlessly.
Definition at line 62 of file cowwrapper.h.
Constructor & Destructor Documentation
CS::CowWrapper< T, MemoryAllocator >::CowWrapper | ( | const CowWrapper< T, MemoryAllocator > & | other | ) | [inline] |
CS::CowWrapper< T, MemoryAllocator >::CowWrapper | ( | const T & | other | ) | [inline] |
Member Function Documentation
T& CS::CowWrapper< T, MemoryAllocator >::operator * | ( | ) | [inline] |
Return a non-const reference to the contained data.
- Remarks:
- This will copy the contained data, so only use when really necessary.
Definition at line 115 of file cowwrapper.h.
const T& CS::CowWrapper< T, MemoryAllocator >::operator * | ( | ) | const [inline] |
Return a const reference to the contained data.
Definition at line 106 of file cowwrapper.h.
Referenced by CS::CowWrapper< T, MemoryAllocator >::operator->().
T* CS::CowWrapper< T, MemoryAllocator >::operator-> | ( | ) | [inline] |
Return a non-const pointer to the contained data.
- Remarks:
- This will copy the contained data, so only use when really necessary.
Definition at line 132 of file cowwrapper.h.
References CS::CowWrapper< T, MemoryAllocator >::operator *().
const T* CS::CowWrapper< T, MemoryAllocator >::operator-> | ( | ) | const [inline] |
Return a const pointer to the contained data.
Definition at line 125 of file cowwrapper.h.
References CS::CowWrapper< T, MemoryAllocator >::operator *().
The documentation for this class was generated from the following file:
- csutil/cowwrapper.h
Generated for Crystal Space by doxygen 1.4.7