Source Code (Use browser search to find items of interest.)
Class Index
kdelibs'KSharedPtr (./kdelibs/kdecore/ksharedptr.h:95)
struct KSharedPtr
{
public:
KSharedPtr()
: ptr(0) { }
KSharedPtr( T* t )
: ptr(t) { if ( ptr ) ptr->_KShared_ref(); }
KSharedPtr( const KSharedPtr& p )
: ptr(p.ptr) { if ( ptr ) ptr->_KShared_ref(); }
~KSharedPtr() { if ( ptr ) ptr->_KShared_unref(); }
KSharedPtr<T>& operator= ( const KSharedPtr<T>& p ) {
if ( ptr == p.ptr ) return *this;
if ( ptr ) ptr->_KShared_unref();
ptr = p.ptr;
if ( ptr ) ptr->_KShared_ref();
return *this;
}
KSharedPtr<T>& operator= ( T* p ) {
if ( ptr == p ) return *this;
if ( ptr ) ptr->_KShared_unref();
ptr = p;
if ( ptr ) ptr->_KShared_ref();
return *this;
}
bool operator== ( const KSharedPtr<T>& p ) const { return ( ptr == p.ptr ); }
bool operator!= ( const KSharedPtr<T>& p ) const { return ( ptr != p.ptr ); }
bool operator== ( const T* p ) const { return ( ptr == p ); }
bool operator!= ( const T* p ) const { return ( ptr != p ); }
bool operator!() const { return ( ptr == 0 ); }
operator T*() const { return ptr; }
const T& operator*() const { return *ptr; }
T& operator*() { return *ptr; }
const T* operator->() const { return ptr; }
T* operator->() { return ptr; }
uint count() const { return ptr->_KShared_count(); } // for debugging purposes
private:
T* ptr;
};