X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=ETL%2Ftrunk%2FETL%2F_handle.h;h=d0af39cb7779b5f772220a93ada2ed6398caa5de;hb=8387099a3a9251fa91c9f346c29b340459e64ecc;hp=9c0b2baba02fe1bae8bf7c325a09b3ab5ac2bcb2;hpb=cee5940bae97612105db8b7e1ffcf513f9d9150c;p=synfig.git diff --git a/ETL/trunk/ETL/_handle.h b/ETL/trunk/ETL/_handle.h index 9c0b2ba..d0af39c 100644 --- a/ETL/trunk/ETL/_handle.h +++ b/ETL/trunk/ETL/_handle.h @@ -1,6 +1,6 @@ /* === E T L =============================================================== */ /*! \file _handle.h -** $Id: _handle.h,v 1.1.1.1 2005/01/04 01:31:47 darco Exp $ +** $Id$ ** \brief Template Object Handle Implementation ** \internal ** @@ -386,12 +386,12 @@ private: void add_to_rlist() { -// value_type*& obj(handle::obj); // Required to keep gcc 3.4.2 form barfing +// value_type*& obj(handle::obj); // Required to keep gcc 3.4.2 from barfing assert(obj); obj->rref(); - // If this is the first reversable handle + // If this is the first reversible handle if(!obj->front_) { obj->front_=obj->back_=this; @@ -407,11 +407,11 @@ private: void del_from_rlist() { -// value_type*& obj(handle::obj); // Required to keep gcc 3.4.2 form barfing +// value_type*& obj(handle::obj); // Required to keep gcc 3.4.2 from barfing assert(obj); obj->runref(); - // If this is the last reversable handle + // If this is the last reversible handle if(obj->front_==obj->back_) { obj->front_=obj->back_=0; @@ -438,20 +438,20 @@ public: //! Constructor that constructs from a pointer to new object rhandle(pointer x):handle(x) { -// value_type*& obj(handle::obj); // Required to keep gcc 3.4.2 form barfing +// value_type*& obj(handle::obj); // Required to keep gcc 3.4.2 from barfing if(obj)add_to_rlist(); } rhandle(const handle &x):handle(x) { -// value_type*& obj(handle::obj); // Required to keep gcc 3.4.2 form barfing +// value_type*& obj(handle::obj); // Required to keep gcc 3.4.2 from barfing if(obj)add_to_rlist(); } //! Default copy constructor rhandle(const rhandle &x):handle(x) { -// value_type*& obj(handle::obj); // Required to keep gcc 3.4.2 form barfing +// value_type*& obj(handle::obj); // Required to keep gcc 3.4.2 from barfing if(obj)add_to_rlist(); } @@ -485,7 +485,7 @@ public: rhandle & operator=(const rhandle &x) { -// value_type*& obj(handle::obj); // Required to keep gcc 3.4.2 form barfing +// value_type*& obj(handle::obj); // Required to keep gcc 3.4.2 from barfing if(x.get()==obj) return *this; @@ -503,7 +503,7 @@ public: rhandle& operator=(const handle &x) { -// value_type*& obj(handle::obj); // Required to keep gcc 3.4.2 form barfing +// value_type*& obj(handle::obj); // Required to keep gcc 3.4.2 from barfing if(x.get()==obj) return *this; @@ -521,7 +521,7 @@ public: rhandle& operator=(value_type* x) { -// value_type*& obj(handle::obj); // Required to keep gcc 3.4.2 form barfing +// value_type*& obj(handle::obj); // Required to keep gcc 3.4.2 from barfing if(x==obj) return *this; @@ -541,7 +541,7 @@ public: void detach() { -// value_type*& obj(handle::obj); // Required to keep gcc 3.4.2 form barfing +// value_type*& obj(handle::obj); // Required to keep gcc 3.4.2 from barfing if(obj)del_from_rlist(); handle::detach(); obj=0; @@ -556,11 +556,11 @@ public: /*! Uses the default constructor */ void spawn() { operator=(handle(new T())); } - //! Returns number of reversable instances + //! Returns number of reversible instances count_type rcount()const { -// value_type*const& obj(handle::obj); // Required to keep gcc 3.4.2 form barfing +// value_type*const& obj(handle::obj); // Required to keep gcc 3.4.2 from barfing return obj?obj->rcount():0; } @@ -568,14 +568,14 @@ public: bool runique()const { -// value_type*& obj(handle::obj); // Required to keep gcc 3.4.2 form barfing +// value_type*& obj(handle::obj); // Required to keep gcc 3.4.2 from barfing assert(obj); return obj->front_==obj->back_; } //! \writeme int replace(const handle &x) { -// value_type*& obj(handle::obj); // Required to keep gcc 3.4.2 form barfing +// value_type*& obj(handle::obj); // Required to keep gcc 3.4.2 from barfing assert(obj); assert(x.get()!=obj); @@ -623,11 +623,6 @@ public: }; // END of template class rhandle - - - - - // ======================================================================== /*! \class loose_handle _handle.h ETL/handle ** \brief Loose Object Handle @@ -763,141 +758,53 @@ public: bool unref() { if(obj && !obj->unref()){ obj=0; return false; } return true; } }; // END of template class loose_handle - - - -template template handle -handle::cast_static(const loose_handle &x) - { return handle(static_cast(x.get())); } - -template template handle -handle::cast_dynamic(const loose_handle &x) - { return handle(dynamic_cast(x.get())); } - -template template handle -handle::cast_const(const loose_handle &x) - { return handle(const_cast(x.get())); } - -template template handle -handle::cast_reinterpret(const loose_handle &x) - { return handle(reinterpret_cast(x.get())); } - - - -template template handle -handle::cast_static(const rhandle &x) - { return handle(static_cast(x.get())); } - -template template handle -handle::cast_dynamic(const rhandle &x) - { return handle(dynamic_cast(x.get())); } - -template template handle -handle::cast_const(const rhandle &x) - { return handle(const_cast(x.get())); } - -template template handle -handle::cast_reinterpret(const rhandle &x) - { return handle(reinterpret_cast(x.get())); } - - - -template template handle -handle::cast_static(U* x) - { return handle(static_cast(x)); } - -template template handle -handle::cast_dynamic(U* x) - { return handle(dynamic_cast(x)); } - -template template handle -handle::cast_const(U* x) - { return handle(const_cast(x)); } - -template template handle -handle::cast_reinterpret(U* x) - { return handle(reinterpret_cast(x)); } - - - - - -template bool -operator==(const handle &lhs,const handle &rhs) - { return (lhs.get()==rhs.get()); } -template bool -operator==(const loose_handle &lhs,const loose_handle &rhs) - { return (lhs.get()==rhs.get()); } -template bool -operator==(const handle &lhs,const loose_handle &rhs) - { return (lhs.get()==rhs.get()); } -template bool -operator==(const loose_handle &lhs,const handle &rhs) - { return (lhs.get()==rhs.get()); } -template bool -operator==(const handle &lhs,const T *rhs) - { return (lhs.get()==rhs); } -template bool -operator==(const loose_handle &lhs,const T *rhs) - { return (lhs.get()==rhs); } -template bool -operator==(const T *lhs,const handle &rhs) - { return (lhs==rhs.get()); } -template bool -operator==(const T *lhs,const loose_handle &rhs) - { return (lhs==rhs.get()); } - - -template bool -operator!=(const handle &lhs,const handle &rhs) - { return (lhs.get()!=rhs.get()); } -template bool -operator!=(const loose_handle &lhs,const loose_handle &rhs) - { return (lhs.get()!=rhs.get()); } -template bool -operator!=(const handle &lhs,const loose_handle &rhs) - { return (lhs.get()!=rhs.get()); } -template bool -operator!=(const loose_handle &lhs,const handle &rhs) - { return (lhs.get()!=rhs.get()); } -template bool -operator!=(const handle &lhs,const T *rhs) - { return (lhs.get()!=rhs); } -template bool -operator!=(const loose_handle &lhs,const T *rhs) - { return (lhs.get()!=rhs); } -template bool -operator!=(const T *lhs,const handle &rhs) - { return (lhs!=rhs.get()); } -template bool -operator!=(const T *lhs,const loose_handle &rhs) - { return (lhs!=rhs.get()); } - - -template bool -operator<(const handle &lhs,const handle &rhs) - { return (lhs.get() bool -operator<(const loose_handle &lhs,const loose_handle &rhs) - { return (lhs.get() bool -operator<(const handle &lhs,const loose_handle &rhs) - { return (lhs.get() bool -operator<(const loose_handle &lhs,const handle &rhs) - { return (lhs.get() bool -operator<(const handle &lhs,const T *rhs) - { return (lhs.get() bool -operator<(const loose_handle &lhs,const T *rhs) - { return (lhs.get() bool -operator<(const T *lhs,const handle &rhs) - { return (lhs bool -operator<(const T *lhs,const loose_handle &rhs) - { return (lhs -> handle<> +template template handle handle::cast_static (const loose_handle& x) { return handle(static_cast (x.get())); } +template template handle handle::cast_dynamic (const loose_handle& x) { return handle(dynamic_cast (x.get())); } +template template handle handle::cast_const (const loose_handle& x) { return handle(const_cast (x.get())); } +template template handle handle::cast_reinterpret(const loose_handle& x) { return handle(reinterpret_cast(x.get())); } + +// cast rhandle_handle<> -> handle<> +template template handle handle::cast_static (const rhandle& x) { return handle(static_cast (x.get())); } +template template handle handle::cast_dynamic (const rhandle& x) { return handle(dynamic_cast (x.get())); } +template template handle handle::cast_const (const rhandle& x) { return handle(const_cast (x.get())); } +template template handle handle::cast_reinterpret(const rhandle& x) { return handle(reinterpret_cast(x.get())); } + +// cast U* -> handle<> +template template handle handle::cast_static (U* x) { return handle(static_cast (x)); } +template template handle handle::cast_dynamic (U* x) { return handle(dynamic_cast (x)); } +template template handle handle::cast_const (U* x) { return handle(const_cast (x)); } +template template handle handle::cast_reinterpret(U* x) { return handle(reinterpret_cast(x)); } + +// operator== for handle<>, loose_handle<> and T* +template bool operator==(const handle & lhs,const handle & rhs) { return (lhs.get()==rhs.get()); } +template bool operator==(const loose_handle& lhs,const loose_handle& rhs) { return (lhs.get()==rhs.get()); } +template bool operator==(const handle & lhs,const loose_handle& rhs) { return (lhs.get()==rhs.get()); } +template bool operator==(const loose_handle& lhs,const handle & rhs) { return (lhs.get()==rhs.get()); } +template bool operator==(const handle& lhs,const T* rhs) { return (lhs.get()==rhs); } +template bool operator==(const loose_handle& lhs,const T* rhs) { return (lhs.get()==rhs); } +template bool operator==(const T* lhs,const handle& rhs) { return (lhs ==rhs.get()); } +template bool operator==(const T* lhs,const loose_handle& rhs) { return (lhs ==rhs.get()); } + +// operator!= for handle<>, loose_handle<> and T* +template bool operator!=(const handle & lhs,const handle & rhs) { return (lhs.get()!=rhs.get()); } +template bool operator!=(const loose_handle& lhs,const loose_handle& rhs) { return (lhs.get()!=rhs.get()); } +template bool operator!=(const handle & lhs,const loose_handle& rhs) { return (lhs.get()!=rhs.get()); } +template bool operator!=(const loose_handle& lhs,const handle & rhs) { return (lhs.get()!=rhs.get()); } +template bool operator!=(const handle& lhs,const T* rhs) { return (lhs.get()!=rhs); } +template bool operator!=(const loose_handle& lhs,const T* rhs) { return (lhs.get()!=rhs); } +template bool operator!=(const T* lhs,const handle& rhs) { return (lhs !=rhs.get()); } +template bool operator!=(const T* lhs,const loose_handle& rhs) { return (lhs !=rhs.get()); } + +// operator< for handle<>, loose_handle<> and T* +template bool operator<(const handle& lhs,const handle& rhs) { return (lhs.get() bool operator<(const loose_handle& lhs,const loose_handle& rhs) { return (lhs.get() bool operator<(const handle& lhs,const loose_handle& rhs) { return (lhs.get() bool operator<(const loose_handle& lhs,const handle& rhs) { return (lhs.get() bool operator<(const handle& lhs,const T* rhs) { return (lhs.get() bool operator<(const loose_handle& lhs,const T* rhs) { return (lhs.get() bool operator<(const T* lhs,const handle& rhs) { return (lhs bool operator<(const T* lhs,const loose_handle& rhs) { return (lhs