|
blocxx
|
COWIntrusiveReference A smart pointer that uses intrusive reference counting. More...
#include <COWIntrusiveReference.hpp>
Public Types | |
| typedef T | element_type |
| typedef T *this_type::* | unspecified_bool_type |
Public Member Functions | |
| COWIntrusiveReference () | |
| Default constructor The underlying object pointer will be NULL. More... | |
| COWIntrusiveReference (T *p, bool addRef=true) | |
| Construct a COWIntrusiveReference that will contain a pointer to a COWIntrusiveCountableBase object. More... | |
| template<class U > | |
| COWIntrusiveReference (COWIntrusiveReference< U > const &rhs) | |
| Copy constructor. More... | |
| COWIntrusiveReference (COWIntrusiveReference const &rhs) | |
| Copy constructor. More... | |
| ~COWIntrusiveReference () | |
| Destroy this COWIntrusiveReference. More... | |
| template<class U > | |
| COWIntrusiveReference & | operator= (COWIntrusiveReference< U > const &rhs) |
| Assignment operator that that takes a COWIntrusiveReference of a type derived from T. More... | |
| COWIntrusiveReference & | operator= (COWIntrusiveReference const &rhs) |
| Assignment operator. More... | |
| COWIntrusiveReference & | operator= (T *rhs) |
| Assignment operator. More... | |
| const T * | getPtr () const |
| const T & | operator* () const |
| const T * | operator-> () const |
| T & | operator* () |
| T * | operator-> () |
| operator unspecified_bool_type () const | |
| bool | operator! () const |
| Negation operator. More... | |
| void | swap (COWIntrusiveReference &rhs) |
Private Types | |
| typedef COWIntrusiveReference | this_type |
Private Member Functions | |
| void | getWriteLock () |
| Create a clone of the COWIntrusiveCountableBase object if there is more than one reference to it. More... | |
Private Attributes | |
| T * | m_pObj |
Friends | |
| template<class U > | |
| class | COWIntrusiveReference |
COWIntrusiveReference A smart pointer that uses intrusive reference counting.
It supports 'copy on write' functionality. The 'intrusive' in the class names comes from the fact that referenced objects are required to be sub-classes of COWIntrusiveCountableBase. If your looking for a non-intrusive smart smart pointer class that providers copy on write functionality, check out the COWReference class.
This class relies on calls to
void COWIntrusiveReferenceAddRef(T* p);
void COWIntrusiveReferenceRelease(T* p);
bool COWIntrusiveReferenceUnique(T* p);
T* COWIntrusiveReferenceClone(T* p);
(p != 0)
The object is responsible for destroying itself.
If you want your class to be managed by COWIntrusiveReference, you can derive it from COWIntrusiveCountableBase, or write your own set of functions.
Definition at line 113 of file COWIntrusiveReference.hpp.
| typedef T BLOCXX_NAMESPACE::COWIntrusiveReference< T >::element_type |
Definition at line 148 of file COWIntrusiveReference.hpp.
|
private |
Definition at line 146 of file COWIntrusiveReference.hpp.
| typedef T* this_type::* BLOCXX_NAMESPACE::COWIntrusiveReference< T >::unspecified_bool_type |
Definition at line 311 of file COWIntrusiveReference.hpp.
|
inline |
Default constructor The underlying object pointer will be NULL.
Definition at line 154 of file COWIntrusiveReference.hpp.
|
inline |
Construct a COWIntrusiveReference that will contain a pointer to a COWIntrusiveCountableBase object.
| p | A pointer to a COWIntrusiveCountableBase derivative. |
| addRef | If true the reference count will be incremented before the constructor returns. Otherwise thre reference count is left alone. |
Definition at line 164 of file COWIntrusiveReference.hpp.
|
inline |
Copy constructor.
This takes a COWIntrusiveReference of a type derived from T. This constructor will cause this COWIntrusiveReference object to share the same underlying COWIntrusiveCountableBase pointer with another. This will cause the reference count to get incremented on the underlying object.
| rhs | The object to copy the COWIntrusiveCountableBase pointer from. |
Definition at line 178 of file COWIntrusiveReference.hpp.
|
inline |
Copy constructor.
This constructor will cause this COWIntrusiveReference object to share the same underlying COWIntrusiveCountableBase pointer with another. This will cause the reference count to get incremented on the underlying object.
| rhs | The object to copy the COWIntrusiveCountableBase pointer from. |
Definition at line 190 of file COWIntrusiveReference.hpp.
|
inline |
Destroy this COWIntrusiveReference.
If the reference count to the underlying COWIntrusiveCountableBase object is zero after it is decremented in this method it will be deleted.
Definition at line 199 of file COWIntrusiveReference.hpp.
|
inline |
Definition at line 252 of file COWIntrusiveReference.hpp.
|
inlineprivate |
Create a clone of the COWIntrusiveCountableBase object if there is more than one reference to it.
This method is used to support the copy on write functionality.
Definition at line 345 of file COWIntrusiveReference.hpp.
|
inline |
Definition at line 312 of file COWIntrusiveReference.hpp.
|
inline |
Negation operator.
Definition at line 322 of file COWIntrusiveReference.hpp.
|
inline |
Definition at line 287 of file COWIntrusiveReference.hpp.
|
inline |
Definition at line 261 of file COWIntrusiveReference.hpp.
|
inline |
Definition at line 301 of file COWIntrusiveReference.hpp.
|
inline |
Definition at line 274 of file COWIntrusiveReference.hpp.
|
inline |
Assignment operator.
This method will cause this COWIntrusiveReference object to share the same underlying COWIntrusiveCountableBase pointer with another. This will cause the reference count to get incremented on the underlying object.
| rhs | The object to copy the COWIntrusiveCountableBase pointer from. |
Definition at line 230 of file COWIntrusiveReference.hpp.
|
inline |
Assignment operator that that takes a COWIntrusiveReference of a type derived from T.
This method will cause this COWIntrusiveReference object to share the same underlying COWIntrusiveCountableBase pointer with another. This will cause the reference count to get incremented on the underlying object.
| rhs | The object to copy the COWIntrusiveCountableBase pointer from. |
Definition at line 215 of file COWIntrusiveReference.hpp.
|
inline |
Assignment operator.
This changes the underlying COWIntrusiveCountableBase pointer to the one passed to this method.
| rhs | A pointer to a COWIntrusiveCountableBase object. this will be the new underlying pointer for this object. |
Definition at line 243 of file COWIntrusiveReference.hpp.
|
inline |
Definition at line 327 of file COWIntrusiveReference.hpp.
Referenced by BLOCXX_NAMESPACE::String::swap().
Definition at line 336 of file COWIntrusiveReference.hpp.
|
private |
1.8.18