15class SimpleSmartPointer {
17 Type *operator-> ()
const {
return _p ; }
19 Type &operator* ()
const {
return *_p ; }
21 SimpleSmartPointer( Type *p = 0 ) : _p( p ) { ref() ; }
23 template<
class T2 > SimpleSmartPointer(
const SimpleSmartPointer< T2 > &src )
24 : _p( src.get() ) { ref() ; }
26 SimpleSmartPointer(
const SimpleSmartPointer &src ) : _p( src.get() ) {
30 ~SimpleSmartPointer () {
if ( unref() == 0 ) deleteIt() ; }
33 SimpleSmartPointer &operator= (
const SimpleSmartPointer< T2 > &src ) {
41 SimpleSmartPointer &operator= (
const SimpleSmartPointer &src ) {
49 SimpleSmartPointer &operator=( Type *src ) {
55 bool operator== (
const Type *p )
const {
return _p == p ; }
56 bool operator!= (
const Type *p )
const {
return _p != p ; }
57 bool operator== (
const SimpleSmartPointer &sp )
const {
return _p == sp.get() ; }
58 bool operator!= (
const SimpleSmartPointer &sp )
const {
return _p != sp.get() ; }
59 bool operator! ()
const {
return ! _p ; }
62 operator void*()
const {
return _p ? (
void *)(-1) : (
void *)(0) ; }
64 Type *get()
const {
return _p ; }
72 void ref(
const T2 *ptr ) {
if ( ptr ) ptr->ref() ; }
74 void ref()
const {
if ( _p ) _p->ref() ; }
75 unsigned int unref()
const {