X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=ETL%2Ftrunk%2FETL%2F_smart_ptr.h;h=a34b8dda4f44d0eae5adce5fd4d8ccbc7dd64e1c;hb=9459638ad6797b8139f1e9f0715c96076dbf0890;hp=479c9668dde683c7cd9dc620c4fba8d28b3e16d7;hpb=117425a5858bb094f2e54af5d018499ab703b227;p=synfig.git diff --git a/ETL/trunk/ETL/_smart_ptr.h b/ETL/trunk/ETL/_smart_ptr.h index 479c966..a34b8dd 100644 --- a/ETL/trunk/ETL/_smart_ptr.h +++ b/ETL/trunk/ETL/_smart_ptr.h @@ -1,7 +1,7 @@ /* ======================================================================== ** Extended Template and Library ** Template Smart Pointer Implementation -** $Id: _smart_ptr.h,v 1.1.1.1 2005/01/04 01:31:48 darco Exp $ +** $Id$ ** ** Copyright (c) 2002 Robert B. Quattlebaum Jr. ** @@ -73,7 +73,7 @@ public: typedef D destructor_type; #ifdef DOXYGEN_SHOULD_SKIP_THIS // #ifdef is not a typo -private: +private: #endif value_type *obj; //!< \internal Pointer to object reference_counter refcount; @@ -128,7 +128,7 @@ public: obj=(pointer)x.get(); refcount=x.refcount; } - + return *this; } @@ -138,31 +138,31 @@ public: { if(x.get()==obj) return *this; - + reset(); if(x.obj) { - + obj=(pointer)x.get(); refcount=x.refcount; } - + return *this; } //! smart_ptr reset procedure void reset() - { + { if(obj) - { + { if(refcount.unique()) destructor_type()(obj); refcount.detach(); obj=0; } } - + void spawn() { operator=(smart_ptr(new T)); } //! Returns number of instances @@ -269,7 +269,7 @@ public: const count_type& count()const { return refcount; } bool unique()const { return refcount.unique(); } - + reference operator*()const { assert(obj); return *obj; } pointer operator->()const { assert(obj); return obj; }