Shadowrun: Awakened 29 September 2011 - Build 871
Public Member Functions | Private Attributes
RakNet::RakNetSmartPtr< T > Class Template Reference

#include <RakNetSmartPtr.h>

Inheritance diagram for RakNet::RakNetSmartPtr< T >:

List of all members.

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)
Toperator* ()
const Toperator* () const
Toperator-> ()
const Toperator-> () 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

Tptr
ReferenceCounterreference

Detailed Description

template<typename T>
class RakNet::RakNetSmartPtr< T >

Definition at line 29 of file RakNetSmartPtr.h.


Constructor & Destructor Documentation

template<typename T>
RakNet::RakNetSmartPtr< T >::RakNetSmartPtr ( ) [inline]

Definition at line 36 of file RakNetSmartPtr.h.

                     : ptr(0), reference(0)
    {
        // Do not allocate by default, wasteful if we just have a list of preallocated and unassigend smart pointers
    }
template<typename T>
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__);
    }
template<typename T>
RakNet::RakNetSmartPtr< T >::RakNetSmartPtr ( const RakNetSmartPtr< T > &  sp) [inline]

Definition at line 50 of file RakNetSmartPtr.h.

                                                : ptr(sp.ptr), reference(sp.reference)
    {
        if (reference)
            reference->AddRef();
    }
template<typename T>
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__);
        }
    }

Member Function Documentation

template<typename T>
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;
        }
    }
template<typename T>
int RakNet::RakNetSmartPtr< T >::GetRefCount ( void  ) const [inline]

Definition at line 108 of file RakNetSmartPtr.h.

    {
        return reference->GetRefCount();
    }
template<typename T>
bool RakNet::RakNetSmartPtr< T >::IsNull ( void  ) const [inline]

Definition at line 68 of file RakNetSmartPtr.h.

    {
        return ptr==0;
    }
template<typename T>
bool RakNet::RakNetSmartPtr< T >::IsUnique ( void  ) const [inline]

Definition at line 87 of file RakNetSmartPtr.h.

    {
        return reference->GetRefCount()==1;
    }
template<typename T>
bool RakNet::RakNetSmartPtr< T >::operator!= ( const RakNetSmartPtr< T > &  sp) [inline]

Definition at line 140 of file RakNetSmartPtr.h.

    {
        return ptr != sp.ptr;
    }
template<typename T>
T& RakNet::RakNetSmartPtr< T >::operator* ( ) [inline]

Definition at line 113 of file RakNetSmartPtr.h.

    {
        return *ptr;
    }
template<typename T>
const T& RakNet::RakNetSmartPtr< T >::operator* ( ) const [inline]

Definition at line 118 of file RakNetSmartPtr.h.

    {
        return *ptr;
    }
template<typename T>
T* RakNet::RakNetSmartPtr< T >::operator-> ( ) [inline]

Definition at line 123 of file RakNetSmartPtr.h.

    {
        return ptr;
    }
template<typename T>
const T* RakNet::RakNetSmartPtr< T >::operator-> ( ) const [inline]

Definition at line 128 of file RakNetSmartPtr.h.

    {
        return ptr;
    }
template<typename T>
bool RakNet::RakNetSmartPtr< T >::operator< ( const RakNetSmartPtr< T > &  right) [inline]

Definition at line 137 of file RakNetSmartPtr.h.

{return ptr < right.ptr;}
template<typename T>
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;
    }
template<typename T>
bool RakNet::RakNetSmartPtr< T >::operator== ( const RakNetSmartPtr< T > &  sp) [inline]

Definition at line 133 of file RakNetSmartPtr.h.

    {
        return ptr == sp.ptr;
    }
template<typename T>
bool RakNet::RakNetSmartPtr< T >::operator> ( const RakNetSmartPtr< T > &  right) [inline]

Definition at line 138 of file RakNetSmartPtr.h.

{return ptr > right.ptr;}
template<typename T>
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;
    }

Member Data Documentation

template<typename T>
T* RakNet::RakNetSmartPtr< T >::ptr [private]
template<typename T>
ReferenceCounter* RakNet::RakNetSmartPtr< T >::reference [private]

Definition at line 33 of file RakNetSmartPtr.h.

Referenced by RakNet::RakNetSmartPtr< RakNetSocket >::operator=().


The documentation for this class was generated from the following file:

Copyright © 2007-2010 by The Shadowrun: Awakened Team. This work is licensed under the GNU Lesser General Public License 3.

GNU Lesser General Public License 3 Sourceforge.net