![]() |
Shadowrun: Awakened 29 September 2011 - Build 871
|
#include <RakNetSmartPtr.h>
Inheritance diagram for RakNet::RakNetSmartPtr< T >:Public Member Functions | |
| void | Clone (bool copyContents) |
| int | GetRefCount (void) const |
| bool | IsNull (void) const |
| bool | IsUnique (void) const |
| bool | operator!= (const RakNetSmartPtr< T > &sp) |
| T & | operator* () |
| const T & | operator* () const |
| T * | operator-> () |
| const T * | operator-> () const |
| bool | operator< (const RakNetSmartPtr< T > &right) |
| RakNetSmartPtr< T > & | operator= (const RakNetSmartPtr< T > &sp) |
| bool | operator== (const RakNetSmartPtr< T > &sp) |
| bool | operator> (const RakNetSmartPtr< T > &right) |
| RakNetSmartPtr (const RakNetSmartPtr< T > &sp) | |
| RakNetSmartPtr () | |
| RakNetSmartPtr (T *pValue) | |
| void | SetNull (void) |
| ~RakNetSmartPtr () | |
Private Attributes | |
| T * | ptr |
| ReferenceCounter * | reference |
Definition at line 29 of file RakNetSmartPtr.h.
| RakNet::RakNetSmartPtr< T >::RakNetSmartPtr | ( | ) | [inline] |
Definition at line 36 of file RakNetSmartPtr.h.
| RakNet::RakNetSmartPtr< T >::RakNetSmartPtr | ( | T * | pValue | ) | [inline] |
Definition at line 41 of file RakNetSmartPtr.h.
: ptr(pValue) { reference = RakNet::OP_NEW<ReferenceCounter>(_FILE_AND_LINE_); reference->AddRef(); // allocCount+=2; // printf("allocCount=%i deallocCount=%i Line=%i\n",allocCount, deallocCount, __LINE__); }
| RakNet::RakNetSmartPtr< T >::RakNetSmartPtr | ( | const RakNetSmartPtr< T > & | sp | ) | [inline] |
| RakNet::RakNetSmartPtr< T >::~RakNetSmartPtr | ( | ) | [inline] |
Definition at line 56 of file RakNetSmartPtr.h.
{
if(reference && reference->Release() == 0)
{
RakNet::OP_DELETE(ptr, _FILE_AND_LINE_);
RakNet::OP_DELETE(reference, _FILE_AND_LINE_);
// deallocCount+=2;
// printf("allocCount=%i deallocCount=%i Line=%i\n",allocCount, deallocCount, __LINE__);
}
}
| void RakNet::RakNetSmartPtr< T >::Clone | ( | bool | copyContents | ) | [inline] |
Definition at line 93 of file RakNetSmartPtr.h.
{
if (IsUnique()==false)
{
reference->Release();
reference = RakNet::OP_NEW<ReferenceCounter>(_FILE_AND_LINE_);
reference->AddRef();
T* oldPtr=ptr;
ptr=RakNet::OP_NEW<T>(_FILE_AND_LINE_);
if (copyContents)
*ptr=*oldPtr;
}
}
| int RakNet::RakNetSmartPtr< T >::GetRefCount | ( | void | ) | const [inline] |
Definition at line 108 of file RakNetSmartPtr.h.
{
return reference->GetRefCount();
}
| bool RakNet::RakNetSmartPtr< T >::IsNull | ( | void | ) | const [inline] |
Definition at line 68 of file RakNetSmartPtr.h.
{
return ptr==0;
}
| bool RakNet::RakNetSmartPtr< T >::IsUnique | ( | void | ) | const [inline] |
Definition at line 87 of file RakNetSmartPtr.h.
{
return reference->GetRefCount()==1;
}
| bool RakNet::RakNetSmartPtr< T >::operator!= | ( | const RakNetSmartPtr< T > & | sp | ) | [inline] |
Definition at line 140 of file RakNetSmartPtr.h.
{
return ptr != sp.ptr;
}
| T& RakNet::RakNetSmartPtr< T >::operator* | ( | ) | [inline] |
Definition at line 113 of file RakNetSmartPtr.h.
{
return *ptr;
}
| const T& RakNet::RakNetSmartPtr< T >::operator* | ( | ) | const [inline] |
Definition at line 118 of file RakNetSmartPtr.h.
{
return *ptr;
}
| T* RakNet::RakNetSmartPtr< T >::operator-> | ( | ) | [inline] |
Definition at line 123 of file RakNetSmartPtr.h.
{
return ptr;
}
| const T* RakNet::RakNetSmartPtr< T >::operator-> | ( | ) | const [inline] |
Definition at line 128 of file RakNetSmartPtr.h.
{
return ptr;
}
| bool RakNet::RakNetSmartPtr< T >::operator< | ( | const RakNetSmartPtr< T > & | right | ) | [inline] |
Definition at line 137 of file RakNetSmartPtr.h.
{return ptr < right.ptr;}
| RakNetSmartPtr<T>& RakNet::RakNetSmartPtr< T >::operator= | ( | const RakNetSmartPtr< T > & | sp | ) | [inline] |
Definition at line 145 of file RakNetSmartPtr.h.
{
// Assignment operator
if (this != &sp) // Avoid self assignment
{
if(reference && reference->Release() == 0)
{
RakNet::OP_DELETE(ptr, _FILE_AND_LINE_);
RakNet::OP_DELETE(reference, _FILE_AND_LINE_);
// deallocCount+=2;
// printf("allocCount=%i deallocCount=%i Line=%i\n",allocCount, deallocCount, __LINE__);
}
ptr = sp.ptr;
reference = sp.reference;
if (reference)
reference->AddRef();
}
return *this;
}
| bool RakNet::RakNetSmartPtr< T >::operator== | ( | const RakNetSmartPtr< T > & | sp | ) | [inline] |
Definition at line 133 of file RakNetSmartPtr.h.
{
return ptr == sp.ptr;
}
| bool RakNet::RakNetSmartPtr< T >::operator> | ( | const RakNetSmartPtr< T > & | right | ) | [inline] |
Definition at line 138 of file RakNetSmartPtr.h.
{return ptr > right.ptr;}
| void RakNet::RakNetSmartPtr< T >::SetNull | ( | void | ) | [inline] |
Definition at line 73 of file RakNetSmartPtr.h.
{
if(reference && reference->Release() == 0)
{
RakNet::OP_DELETE(ptr, _FILE_AND_LINE_);
RakNet::OP_DELETE(reference, _FILE_AND_LINE_);
// deallocCount+=2;
// printf("allocCount=%i deallocCount=%i Line=%i\n",allocCount, deallocCount, __LINE__);
}
ptr=0;
reference=0;
}
T* RakNet::RakNetSmartPtr< T >::ptr [private] |
ReferenceCounter* RakNet::RakNetSmartPtr< T >::reference [private] |
Definition at line 33 of file RakNetSmartPtr.h.
Referenced by RakNet::RakNetSmartPtr< RakNetSocket >::operator=().
Copyright © 2007-2010 by The Shadowrun: Awakened Team. This work is licensed under the GNU Lesser General Public License 3.