lib Library API Documentation

koscript_ptr.h

00001 /* This class is property of Troll Tech. It's here temporarily 00002 until it appears in Qt's CVS 00003 */ 00004 00005 #ifndef __KSCRIPT_PTR_H__ 00006 #define __KSCRIPT_PTR_H__ 00007 00008 #include <qshared.h> 00009 00018 template< class T > 00019 struct KSSharedPtr 00020 { 00021 public: 00022 KSSharedPtr() { ptr = 0; } 00023 KSSharedPtr( T* t ) { ptr = t; /* ptr->ref(); */ } 00024 KSSharedPtr( const KSSharedPtr& p ) { ptr = p.ptr; if ( ptr ) ptr->ref(); } 00025 ~KSSharedPtr() { if ( ptr && ptr->deref() ) delete ptr; } 00026 00027 KSSharedPtr<T>& operator= ( const KSSharedPtr<T>& p ) { 00028 if ( ptr && ptr->deref() ) delete ptr; 00029 ptr = p.ptr; if ( ptr ) ptr->ref(); 00030 return *this; 00031 } 00032 KSSharedPtr<T>& operator= ( T* p ) { 00033 if ( ptr && ptr->deref() ) delete ptr; 00034 ptr = p; /* ptr->ref(); */ 00035 return *this; 00036 } 00037 bool operator== ( const KSSharedPtr<T>& p ) const { return ( ptr == p.ptr ); } 00038 bool operator!= ( const KSSharedPtr<T>& p ) const { return ( ptr != p.ptr ); } 00039 bool operator== ( const T& p ) const { return ( ptr == &p ); } 00040 bool operator!= ( const T& p ) const { return ( ptr != &p ); } 00041 bool operator!() const { return ( ptr == 0 ); } 00042 operator bool() const { return ( ptr != 0 ); } 00043 operator bool() { return (ptr != 0); } 00044 operator T*() { return ptr; } 00045 operator T*() const { return (T*)ptr; } 00046 00047 const T& operator*() const { return *ptr; } 00048 T& operator*() { return *ptr; } 00049 const T* operator->() const { return ptr; } 00050 T* operator->() { return ptr; } 00051 00052 uint count() const { return ptr->count; } // for debugging purposes 00053 bool isNull() const { return ( ptr == 0 ); } 00054 00055 private: 00056 T* ptr; 00057 }; 00058 00059 #endif
KDE Logo
This file is part of the documentation for lib Library Version 1.3.5.
Documentation copyright © 1996-2004 the KDE developers.
Generated on Wed Nov 17 06:54:17 2004 by doxygen 1.3.7 written by Dimitri van Heesch, © 1997-2003